Reviewed-by: Marta Lofstedt <marta.lofst...@intel.com> > -----Original Message----- > From: Francisco Jerez [mailto:curroje...@riseup.net] > Sent: Monday, January 18, 2016 9:37 PM > To: mesa-dev@lists.freedesktop.org > Cc: Lofstedt, Marta; Justen, Jordan L > Subject: [PATCH 2/2] i965: Implement compute sampler state atom. > > Fixes a number of GLES31 CTS failures and hangs on various hardware: > > ES31-CTS.texture_gather.plain-gather-depth-2d > ES31-CTS.texture_gather.plain-gather-depth-2darray > ES31-CTS.texture_gather.plain-gather-depth-cube > ES31-CTS.texture_gather.offset-gather-depth-2d > ES31-CTS.texture_gather.offset-gather-depth-2darray > ES31- > CTS.layout_binding.sampler2D_layout_binding_texture_ComputeShader > ES31- > CTS.layout_binding.sampler2DArray_layout_binding_texture_ComputeShad > er > ES31-CTS.explicit_uniform_location.uniform-loc-types-samplers > ES31-CTS.compute_shader.resources-texture > > Some of them were actually passing by luck on some generations even > though we weren't uploading sampler state tables explicitly for the compute > stage, most likely because they relied on the cached sampler state left from > previous rendering to be close enough. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92589 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93312 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93325 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93407 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93725 > Reported-by: Marta Lofstedt <marta.lofst...@intel.com> > --- > src/mesa/drivers/dri/i965/brw_context.h | 2 +- > src/mesa/drivers/dri/i965/brw_sampler_state.c | 20 > ++++++++++++++++++++ > src/mesa/drivers/dri/i965/brw_state.h | 1 + > src/mesa/drivers/dri/i965/brw_state_upload.c | 2 ++ > 4 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.h > b/src/mesa/drivers/dri/i965/brw_context.h > index b80db00..2a29dfe 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.h > +++ b/src/mesa/drivers/dri/i965/brw_context.h > @@ -1264,7 +1264,7 @@ struct brw_context > > int num_atoms[BRW_NUM_PIPELINES]; > const struct brw_tracked_state render_atoms[76]; > - const struct brw_tracked_state compute_atoms[10]; > + const struct brw_tracked_state compute_atoms[11]; > > /* If (INTEL_DEBUG & DEBUG_BATCH) */ > struct { > diff --git a/src/mesa/drivers/dri/i965/brw_sampler_state.c > b/src/mesa/drivers/dri/i965/brw_sampler_state.c > index 24798a5..c20a028 100644 > --- a/src/mesa/drivers/dri/i965/brw_sampler_state.c > +++ b/src/mesa/drivers/dri/i965/brw_sampler_state.c > @@ -693,3 +693,23 @@ const struct brw_tracked_state brw_tes_samplers = > { > }, > .emit = brw_upload_tes_samplers, > }; > + > +static void > +brw_upload_cs_samplers(struct brw_context *brw) { > + /* BRW_NEW_COMPUTE_PROGRAM */ > + struct gl_program *cs = (struct gl_program *) brw->compute_program; > + if (!cs) > + return; > + > + brw_upload_sampler_state_table(brw, cs, &brw->cs.base); } > + > +const struct brw_tracked_state brw_cs_samplers = { > + .dirty = { > + .mesa = _NEW_TEXTURE, > + .brw = BRW_NEW_BATCH | > + BRW_NEW_COMPUTE_PROGRAM, > + }, > + .emit = brw_upload_cs_samplers, > +}; > diff --git a/src/mesa/drivers/dri/i965/brw_state.h > b/src/mesa/drivers/dri/i965/brw_state.h > index 7d61b7c..f44ccd6 100644 > --- a/src/mesa/drivers/dri/i965/brw_state.h > +++ b/src/mesa/drivers/dri/i965/brw_state.h > @@ -75,6 +75,7 @@ extern const struct brw_tracked_state > brw_vs_samplers; extern const struct brw_tracked_state > brw_tcs_samplers; extern const struct brw_tracked_state > brw_tes_samplers; extern const struct brw_tracked_state > brw_gs_samplers; > +extern const struct brw_tracked_state brw_cs_samplers; > extern const struct brw_tracked_state brw_vs_ubo_surfaces; extern const > struct brw_tracked_state brw_vs_abo_surfaces; extern const struct > brw_tracked_state brw_vs_image_surfaces; diff --git > a/src/mesa/drivers/dri/i965/brw_state_upload.c > b/src/mesa/drivers/dri/i965/brw_state_upload.c > index 876e130..ee75ca8 100644 > --- a/src/mesa/drivers/dri/i965/brw_state_upload.c > +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c > @@ -282,6 +282,7 @@ static const struct brw_tracked_state > *gen7_compute_atoms[] = > &brw_cs_abo_surfaces, > &brw_texture_surfaces, > &brw_cs_work_groups_surface, > + &brw_cs_samplers, > &brw_cs_state, > }; > > @@ -396,6 +397,7 @@ static const struct brw_tracked_state > *gen8_compute_atoms[] = > &brw_cs_abo_surfaces, > &brw_texture_surfaces, > &brw_cs_work_groups_surface, > + &brw_cs_samplers, > &brw_cs_state, > }; > > -- > 2.7.0
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev