diff options
author | Topi Pohjolainen <[email protected]> | 2018-05-30 07:46:08 -0400 |
---|---|---|
committer | Anuj Phogat <[email protected]> | 2018-07-27 11:05:04 -0700 |
commit | a5889d70f2074201ceaeac4f96a9a0c0b1f68a31 (patch) | |
tree | ee4fe6173ec581dd219731c8d84bdd393cc0aef3 | |
parent | 1d71981b274ecfb9764b360772be7e9bcc868484 (diff) |
i965/icl: Disable binding table prefetching
Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to
disable prefetching of binding tables for ICLLP A0 and B0
steppings. It fixes multiple gpu hangs in
ext_framebuffer_multisample* tests on ICLLP B0 h/w.
Anuj: Add comments and commit message.
Add gen 11 checks in the code.
Signed-off-by: Anuj Phogat <[email protected]>
Reviewed-by: Rafael Antognolli <[email protected]>
-rw-r--r-- | src/intel/blorp/blorp_genX_exec.h | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/genX_state_upload.c | 14 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h index 8bd9174b677..50341ab0ecf 100644 --- a/src/intel/blorp/blorp_genX_exec.h +++ b/src/intel/blorp/blorp_genX_exec.h @@ -762,6 +762,13 @@ blorp_emit_ps_config(struct blorp_batch *batch, ps.BindingTableEntryCount = 1; } + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to + * disable prefetching of binding tables on A0 and B0 steppings. + * TODO: Revisit this WA on C0 stepping. + */ + if (GEN_GEN == 11) + ps.BindingTableEntryCount = 0; + if (prog_data) { ps._8PixelDispatchEnable = prog_data->dispatch_8; ps._16PixelDispatchEnable = prog_data->dispatch_16; diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c index 672035c36ef..2c7188e0b3c 100644 --- a/src/mesa/drivers/dri/i965/genX_state_upload.c +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c @@ -2165,7 +2165,13 @@ static const struct brw_tracked_state genX(wm_state) = { pkt.KernelStartPointer = KSP(brw, stage_state->prog_offset); \ pkt.SamplerCount = \ 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. \ + * TODO: Revisit this WA on C0 stepping. \ + */ \ pkt.BindingTableEntryCount = \ + GEN_GEN == 11 ? \ + 0 : \ stage_prog_data->binding_table.size_bytes / 4; \ pkt.FloatingPointMode = stage_prog_data->use_alt_mode; \ \ @@ -3965,7 +3971,13 @@ genX(upload_ps)(struct brw_context *brw) DIV_ROUND_UP(CLAMP(stage_state->sampler_count, 0, 16), 4); /* BRW_NEW_FS_PROG_DATA */ - ps.BindingTableEntryCount = prog_data->base.binding_table.size_bytes / 4; + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to disable + * prefetching of binding tables in A0 and B0 steppings. + * TODO: Revisit this workaround on C0 stepping. + */ + ps.BindingTableEntryCount = GEN_GEN == 11 ? + 0 : + prog_data->base.binding_table.size_bytes / 4; if (prog_data->base.use_alt_mode) ps.FloatingPointMode = Alternate; |