On Tue, Oct 28, 2014 at 3:17 PM, Kristian Høgsberg <k...@bitplanet.net> wrote: > This flag signals that we have a SIMD8 VS shader so we can set up the > corresponding state accordingly. This boils down to setting > the BDW+ SIMD8 enable bit in 3DSTATE_VS and making UBO and pull > constant buffers use dword pitch. > > Signed-off-by: Kristian Høgsberg <k...@bitplanet.net> > --- > src/mesa/drivers/dri/i965/brw_context.h | 5 ++++- > src/mesa/drivers/dri/i965/brw_defines.h | 2 ++ > src/mesa/drivers/dri/i965/brw_gs_surface_state.c | 2 +- > src/mesa/drivers/dri/i965/brw_vs_surface_state.c | 10 ++++++++-- > src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 7 ++++--- > src/mesa/drivers/dri/i965/gen8_vs_state.c | 2 ++ > 6 files changed, 21 insertions(+), 7 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.h > b/src/mesa/drivers/dri/i965/brw_context.h > index eb37e75..e7cd30f 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.h > +++ b/src/mesa/drivers/dri/i965/brw_context.h > @@ -543,6 +543,8 @@ struct brw_vec4_prog_data { > * is the size of the URB entry used for output. > */ > GLuint urb_entry_size; > + > + bool simd8;
brw_vec4_prog_data is going to be the prog_data struct for SIMD8 vertex shaders? :\ brw_gs_prog_data, which inherits brw_vec4_prog_data, has /** * Dispatch mode, can be any of: * GEN7_GS_DISPATCH_MODE_DUAL_OBJECT * GEN7_GS_DISPATCH_MODE_DUAL_INSTANCE * GEN7_GS_DISPATCH_MODE_SINGLE */ int dispatch_mode; Maybe it shouldn't hold the values of the things in the comment directly (since they're things like 2<<11) but shouldn't we pull this field out and have an enum or something? > }; > > > @@ -1599,7 +1601,8 @@ brw_update_sol_surface(struct brw_context *brw, > void brw_upload_ubo_surfaces(struct brw_context *brw, > struct gl_shader *shader, > struct brw_stage_state *stage_state, > - struct brw_stage_prog_data *prog_data); > + struct brw_stage_prog_data *prog_data, > + bool dword_pitch); > void brw_upload_abo_surfaces(struct brw_context *brw, > struct gl_shader_program *prog, > struct brw_stage_state *stage_state, > diff --git a/src/mesa/drivers/dri/i965/brw_defines.h > b/src/mesa/drivers/dri/i965/brw_defines.h > index bc7304b..aabb89b 100644 > --- a/src/mesa/drivers/dri/i965/brw_defines.h > +++ b/src/mesa/drivers/dri/i965/brw_defines.h > @@ -1686,6 +1686,8 @@ enum brw_message_target { > # define GEN6_VS_STATISTICS_ENABLE (1 << 10) > # define GEN6_VS_CACHE_DISABLE (1 << 1) > # define GEN6_VS_ENABLE (1 << 0) > +/* Gen8+ DW7 */ > +# define GEN8_VS_SIMD8_ENABLE (1 << 2) > /* Gen8+ DW8 */ > # define GEN8_VS_URB_ENTRY_OUTPUT_OFFSET_SHIFT 21 > # define GEN8_VS_URB_OUTPUT_LENGTH_SHIFT 16 > diff --git a/src/mesa/drivers/dri/i965/brw_gs_surface_state.c > b/src/mesa/drivers/dri/i965/brw_gs_surface_state.c > index 2c2ba56..42cdddb 100644 > --- a/src/mesa/drivers/dri/i965/brw_gs_surface_state.c > +++ b/src/mesa/drivers/dri/i965/brw_gs_surface_state.c > @@ -77,7 +77,7 @@ brw_upload_gs_ubo_surfaces(struct brw_context *brw) > > /* CACHE_NEW_GS_PROG */ > brw_upload_ubo_surfaces(brw, prog->_LinkedShaders[MESA_SHADER_GEOMETRY], > - &brw->gs.base, &brw->gs.prog_data->base.base); > + &brw->gs.base, &brw->gs.prog_data->base.base, > false); > } > > const struct brw_tracked_state brw_gs_ubo_surfaces = { > diff --git a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c > b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c > index 1cc96cf..24bc06d 100644 > --- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c > +++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c > @@ -112,6 +112,7 @@ static void > brw_upload_vs_pull_constants(struct brw_context *brw) > { > struct brw_stage_state *stage_state = &brw->vs.base; > + bool dword_pitch; I can't figure out the name of this variable. In most any context I would imagine 'dword_pitch' is an integer. What does this mean, and can we name it something more descriptive? _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev