[Mesa-dev] [PATCH 2/2] i965: Implement compute sampler state atom.
Lofstedt, Marta
marta.lofstedt at intel.com
Tue Jan 19 04:16:47 PST 2016
Reviewed-by: Marta Lofstedt <marta.lofstedt at intel.com>
> -----Original Message-----
> From: Francisco Jerez [mailto:currojerez at riseup.net]
> Sent: Monday, January 18, 2016 9:37 PM
> To: mesa-dev at 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.lofstedt at 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
More information about the mesa-dev
mailing list