[Mesa-dev] [PATCH] i965/icl: Disable prefetching of sampler state entries

Kenneth Graunke kenneth at whitecape.org
Mon Oct 29 20:28:41 UTC 2018


On Wednesday, October 24, 2018 11:33:53 AM PDT Anuj Phogat wrote:
> From: Topi Pohjolainen <topi.pohjolainen at intel.com>
> 
> In the same spirit as commit a5889d70f2074201ceaeac4f96a9a0c0b1f68a31
> "i965/icl: Disable binding table prefetching". Fixes some 110+
> intermittent piglit failures with tex-miplevel-selection variants.
> 
> WA_1606682166:
> Incorrect TDL's SSP address shift in SARB for 16:6 & 18:8 modes.
> Disable the Sampler state prefetch functionality in the SARB by
> programming 0xB000[30] to '1'. This is to be done at boot time and
> the feature must remain disabled permanently.
> 
> Anuj: Set SamplerCount = 0 for vs, gs, hs, ds and wm units as well.
> 
> Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> Cc: Mark Janes <mark.a.janes at intel.com>
> ---
> Latest kernel from drm-tip  do have this workaround implemented
> but we're seeing few deqp regressions with that kernel. I'm
> adding this workaround to Mesa to make some progress in ICL
> testing on CI. We can always revert the patch when we don't
> need it anymore.
> ---
>  src/mesa/drivers/dri/i965/genX_state_upload.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c
> index 740cb0c4d2e..319800934d5 100644
> --- a/src/mesa/drivers/dri/i965/genX_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
> @@ -2004,7 +2004,8 @@ genX(upload_wm)(struct brw_context *brw)
>        if (wm_prog_data->base.use_alt_mode)
>           wm.FloatingPointMode = FLOATING_POINT_MODE_Alternate;
>  
> -      wm.SamplerCount = GEN_GEN == 5 ?
> +      /* WA_1606682166 */
> +      wm.SamplerCount = (GEN_GEN == 5 || GEN_GEN == 11) ?
>           0 : DIV_ROUND_UP(stage_state->sampler_count, 4);
>  
>        wm.BindingTableEntryCount =
> @@ -2166,7 +2167,10 @@ static const struct brw_tracked_state genX(wm_state) = {
>  
>  #define INIT_THREAD_DISPATCH_FIELDS(pkt, prefix) \
>     pkt.KernelStartPointer = KSP(brw, stage_state->prog_offset);           \
> +   /* WA_1606682166 */                                                    \
>     pkt.SamplerCount       =                                               \
> +      GEN_GEN == 11 ?                                                     \
> +      0 :                                                                 \

     pkt.SamplerCount       = GEN_GEN == 11 ? 0 :                           \

>        DIV_ROUND_UP(CLAMP(stage_state->sampler_count, 0, 16), 4);          \
>     /* Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to     \
>      * disable prefetching of binding tables in A0 and B0 steppings.       \
> @@ -3977,8 +3981,13 @@ genX(upload_ps)(struct brw_context *brw)
>         */
>        ps.VectorMaskEnable = GEN_GEN >= 8;
>  
> -      ps.SamplerCount =
> -         DIV_ROUND_UP(CLAMP(stage_state->sampler_count, 0, 16), 4);
> +   /* WA_1606682166:
> +    * "Incorrect TDL's SSP address shift in SARB for 16:6 & 18:8 modes.
> +    * Disable the Sampler state prefetch functionality in the SARB by
> +    * programming 0xB000[30] to '1'."
> +    */

Indentation

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

> +      ps.SamplerCount = GEN_GEN == 11 ?
> +         0 : DIV_ROUND_UP(CLAMP(stage_state->sampler_count, 0, 16), 4);
>  
>        /* BRW_NEW_FS_PROG_DATA */
>        /* Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to disable
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181029/89a391f2/attachment.sig>


More information about the mesa-dev mailing list