diff options
| author | Keith Whitwell <keithw@vmware.com> | 2010-03-10 08:29:27 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2010-03-10 08:29:27 +0000 | 
| commit | 155fbcb0ed85c6452cbedd2317f201100fe698ab (patch) | |
| tree | 15e8a2662b1341bd07cebb9cd3624bc4ed42d020 /src/mesa/state_tracker | |
| parent | 9a8342ebcd83a2022b3c9b9539c5b15ac56d6440 (diff) | |
| parent | eeaa0861bfc98a06ceec269801271b7453c4fcbd (diff) | |
Merge commit 'origin/master' into gallium-sw-api-2
Diffstat (limited to 'src/mesa/state_tracker')
| -rw-r--r-- | src/mesa/state_tracker/st_cb_bitmap.c | 4 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_cb_clear.c | 5 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_cb_drawpixels.c | 4 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_context.c | 8 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_context.h | 3 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_draw.c | 7 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_draw_feedback.c | 1 | 
7 files changed, 27 insertions, 5 deletions
diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c index 0332d4dbdf..f326601c3b 100644 --- a/src/mesa/state_tracker/st_cb_bitmap.c +++ b/src/mesa/state_tracker/st_cb_bitmap.c @@ -440,6 +440,7 @@ draw_bitmap_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,     cso_save_viewport(cso);     cso_save_fragment_shader(cso);     cso_save_vertex_shader(cso); +   cso_save_vertex_elements(cso);     /* rasterizer state: just scissor */     st->bitmap.rasterizer.scissor = ctx->Scissor.Enabled; @@ -490,6 +491,8 @@ draw_bitmap_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,        cso_set_viewport(cso, &vp);     } +   cso_set_vertex_elements(cso, 3, st->velems_util_draw); +     /* convert Z from [0,1] to [-1,-1] to match viewport Z scale/bias */     z = z * 2.0 - 1.0; @@ -509,6 +512,7 @@ draw_bitmap_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,     cso_restore_viewport(cso);     cso_restore_fragment_shader(cso);     cso_restore_vertex_shader(cso); +   cso_restore_vertex_elements(cso);  } diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 9e66eed363..de86062fc4 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -213,6 +213,7 @@ clear_with_quad(GLcontext *ctx,     cso_save_clip(st->cso_context);     cso_save_fragment_shader(st->cso_context);     cso_save_vertex_shader(st->cso_context); +   cso_save_vertex_elements(st->cso_context);     /* blend state: RGBA masking */     { @@ -264,6 +265,8 @@ clear_with_quad(GLcontext *ctx,        cso_set_depth_stencil_alpha(st->cso_context, &depth_stencil);     } +   cso_set_vertex_elements(st->cso_context, 2, st->velems_util_draw); +     cso_set_rasterizer(st->cso_context, &st->clear.raster);     /* viewport state: viewport matching window dims */ @@ -297,6 +300,8 @@ clear_with_quad(GLcontext *ctx,     cso_restore_clip(st->cso_context);     cso_restore_fragment_shader(st->cso_context);     cso_restore_vertex_shader(st->cso_context); +   cso_restore_vertex_elements(st->cso_context); +  } diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 98453321f8..c609435a15 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -529,6 +529,7 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,     cso_save_sampler_textures(cso);     cso_save_fragment_shader(cso);     cso_save_vertex_shader(cso); +   cso_save_vertex_elements(cso);     /* rasterizer state: just scissor */     { @@ -581,6 +582,8 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,        cso_set_viewport(cso, &vp);     } +   cso_set_vertex_elements(cso, 3, st->velems_util_draw); +     /* texture state: */     if (st->pixel_xfer.pixelmap_enabled) {        struct pipe_texture *textures[2]; @@ -615,6 +618,7 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,     cso_restore_sampler_textures(cso);     cso_restore_fragment_shader(cso);     cso_restore_vertex_shader(cso); +   cso_restore_vertex_elements(cso);  } diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index de8beaf5e2..0358a70726 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -141,6 +141,14 @@ st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe )     for (i = 0; i < PIPE_MAX_SAMPLERS; i++)        st->state.sampler_list[i] = &st->state.samplers[i]; +   for (i = 0; i < 3; i++) { +      memset(&st->velems_util_draw[i], 0, sizeof(struct pipe_vertex_element)); +      st->velems_util_draw[i].src_offset = i * 4 * sizeof(float); +      st->velems_util_draw[i].instance_divisor = 0; +      st->velems_util_draw[i].vertex_buffer_index = 0; +      st->velems_util_draw[i].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; +   } +     /* we want all vertex data to be placed in buffer objects */     vbo_use_buffer_objects(ctx); diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index 045c029c30..6622361a7e 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -174,6 +174,9 @@ struct st_context        unsigned vbuf_slot;     } clear; +   /** used for anything using util_draw_vertex_buffer */ +   struct pipe_vertex_element velems_util_draw[3]; +     void *passthrough_fs;  /**< simple pass-through frag shader */     struct gen_mipmap_state *gen_mipmap; diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 32b9a473cf..8a6e1ed466 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -57,6 +57,7 @@  #include "pipe/p_defines.h"  #include "util/u_inlines.h"  #include "util/u_format.h" +#include "cso_cache/cso_context.h"  static GLuint double_types[4] = { @@ -368,7 +369,6 @@ setup_interleaved_attribs(GLcontext *ctx,           (unsigned) (arrays[mesaAttr]->Ptr - offset0);        velements[attr].instance_divisor = 0;        velements[attr].vertex_buffer_index = 0; -      velements[attr].nr_components = arrays[mesaAttr]->Size;        velements[attr].src_format =           st_pipe_vertex_format(arrays[mesaAttr]->Type,                                 arrays[mesaAttr]->Size, @@ -458,7 +458,6 @@ setup_non_interleaved_attribs(GLcontext *ctx,        vbuffer[attr].max_index = max_index;        velements[attr].instance_divisor = 0;        velements[attr].vertex_buffer_index = attr; -      velements[attr].nr_components = arrays[mesaAttr]->Size;        velements[attr].src_format           = st_pipe_vertex_format(arrays[mesaAttr]->Type,                                   arrays[mesaAttr]->Size, @@ -564,6 +563,7 @@ st_draw_vbo(GLcontext *ctx,     (void) check_uniforms;  #endif +   memset(velements, 0, sizeof(struct pipe_vertex_element) * vpv->num_inputs);     /*      * Setup the vbuffer[] and velements[] arrays.      */ @@ -596,14 +596,13 @@ st_draw_vbo(GLcontext *ctx,        for (i = 0; i < num_velements; i++) {           printf("vlements[%d].vbuffer_index = %u\n", i, velements[i].vertex_buffer_index);           printf("vlements[%d].src_offset = %u\n", i, velements[i].src_offset); -         printf("vlements[%d].nr_comps = %u\n", i, velements[i].nr_components);           printf("vlements[%d].format = %s\n", i, util_format_name(velements[i].src_format));        }     }  #endif     pipe->set_vertex_buffers(pipe, num_vbuffers, vbuffer); -   pipe->set_vertex_elements(pipe, num_velements, velements); +   cso_set_vertex_elements(ctx->st->cso_context, num_velements, velements);     if (num_vbuffers == 0 || num_velements == 0)        return; diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index 087f2f22bb..26a5b3fcd6 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -178,7 +178,6 @@ st_feedback_draw_vbo(GLcontext *ctx,        vbuffers[attr].max_index = max_index;        velements[attr].instance_divisor = 0;        velements[attr].vertex_buffer_index = attr; -      velements[attr].nr_components = arrays[mesaAttr]->Size;        velements[attr].src_format =            st_pipe_vertex_format(arrays[mesaAttr]->Type,                                 arrays[mesaAttr]->Size,  | 
