From 7a9c0fc0d778dd8ea6ed2c94efbe1374f9535a00 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Wed, 1 Jan 2020 17:38:01 -0800 Subject: [PATCH] intel: Drop Gen11 WaBTPPrefetchDisable workaround This isn't needed on production Icelake hardware. Reviewed-by: Anuj Phogat Acked-by: Jason Ekstrand Tested-by: Marge Bot Part-of: --- src/gallium/drivers/iris/iris_state.c | 14 ++--------- src/intel/blorp/blorp_genX_exec.h | 7 ------ src/intel/vulkan/genX_pipeline.c | 24 ++++++------------- src/mesa/drivers/dri/i965/genX_state_upload.c | 14 +---------- 4 files changed, 10 insertions(+), 49 deletions(-) diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index c4b7393419a..4fb36e7e680 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -4111,17 +4111,9 @@ KSP(const struct iris_compiled_shader *shader) return iris_bo_offset_from_base_address(res->bo) + shader->assembly.offset; } -/* Gen11 workaround table #2056 WABTPPrefetchDisable suggests to disable - * prefetching of binding tables in A0 and B0 steppings. XXX: Revisit - * this WA on C0 stepping. - * - * TODO: Fill out SamplerCount for prefetching? - */ - #define INIT_THREAD_DISPATCH_FIELDS(pkt, prefix, stage) \ pkt.KernelStartPointer = KSP(shader); \ - pkt.BindingTableEntryCount = GEN_GEN == 11 ? 0 : \ - shader->bt.size_bytes / 4; \ + pkt.BindingTableEntryCount = shader->bt.size_bytes / 4; \ pkt.FloatingPointMode = prog_data->use_alt_mode; \ \ pkt.DispatchGRFStartRegisterForURBData = \ @@ -4288,9 +4280,7 @@ iris_store_fs_state(struct iris_context *ice, iris_pack_command(GENX(3DSTATE_PS), ps_state, ps) { ps.VectorMaskEnable = true; - // XXX: WABTPPrefetchDisable, see above, drop at C0 - ps.BindingTableEntryCount = GEN_GEN == 11 ? 0 : - shader->bt.size_bytes / 4; + ps.BindingTableEntryCount = shader->bt.size_bytes / 4; ps.FloatingPointMode = prog_data->use_alt_mode; ps.MaximumNumberofThreadsPerPSD = 64 - (GEN_GEN == 8 ? 2 : 1); diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h index 53ff4f9a74c..c1fc0892893 100644 --- a/src/intel/blorp/blorp_genX_exec.h +++ b/src/intel/blorp/blorp_genX_exec.h @@ -772,13 +772,6 @@ 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; - /* SAMPLER_STATE prefetching is broken on Gen11 - WA_1606682166 */ if (GEN_GEN == 11) ps.SamplerCount = 0; diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 6c7ed9d7f96..b0bb1838cf2 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -1516,11 +1516,7 @@ emit_3dstate_vs(struct anv_pipeline *pipeline) * programming 0xB000[30] to '1'. */ vs.SamplerCount = GEN_GEN == 11 ? 0 : get_sampler_count(vs_bin); - /* Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to - * disable prefetching of binding tables on A0 and B0 steppings. - * TODO: Revisit this WA on newer steppings. - */ - vs.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(vs_bin); + vs.BindingTableEntryCount = get_binding_table_entry_count(vs_bin); vs.FloatingPointMode = IEEE754; vs.IllegalOpcodeExceptionEnable = false; vs.SoftwareExceptionEnable = false; @@ -1592,8 +1588,7 @@ emit_3dstate_hs_te_ds(struct anv_pipeline *pipeline, hs.KernelStartPointer = tcs_bin->kernel.offset; /* WA_1606682166 */ hs.SamplerCount = GEN_GEN == 11 ? 0 : get_sampler_count(tcs_bin); - /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ - hs.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(tcs_bin); + hs.BindingTableEntryCount = get_binding_table_entry_count(tcs_bin); hs.MaximumNumberofThreads = devinfo->max_tcs_threads - 1; hs.IncludeVertexHandles = true; hs.InstanceCount = tcs_prog_data->instances - 1; @@ -1648,8 +1643,7 @@ emit_3dstate_hs_te_ds(struct anv_pipeline *pipeline, ds.KernelStartPointer = tes_bin->kernel.offset; /* WA_1606682166 */ ds.SamplerCount = GEN_GEN == 11 ? 0 : get_sampler_count(tes_bin); - /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ - ds.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(tes_bin); + ds.BindingTableEntryCount = get_binding_table_entry_count(tes_bin); ds.MaximumNumberofThreads = devinfo->max_tes_threads - 1; ds.ComputeWCoordinateEnable = @@ -1707,8 +1701,7 @@ emit_3dstate_gs(struct anv_pipeline *pipeline) gs.VectorMaskEnable = false; /* WA_1606682166 */ gs.SamplerCount = GEN_GEN == 11 ? 0 : get_sampler_count(gs_bin); - /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ - gs.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(gs_bin); + gs.BindingTableEntryCount = get_binding_table_entry_count(gs_bin); gs.IncludeVertexHandles = gs_prog_data->base.include_vue_handles; gs.IncludePrimitiveID = gs_prog_data->include_primitive_id; @@ -1943,8 +1936,7 @@ emit_3dstate_ps(struct anv_pipeline *pipeline, ps.VectorMaskEnable = GEN_GEN >= 8; /* WA_1606682166 */ ps.SamplerCount = GEN_GEN == 11 ? 0 : get_sampler_count(fs_bin); - /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ - ps.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(fs_bin); + ps.BindingTableEntryCount = get_binding_table_entry_count(fs_bin); ps.PushConstantEnable = wm_prog_data->base.nr_params > 0 || wm_prog_data->base.ubo_ranges[0].length; ps.PositionXYOffsetSelect = wm_prog_data->uses_pos_offset ? @@ -2314,12 +2306,10 @@ compute_pipeline_create( .KernelStartPointer = cs_bin->kernel.offset, /* WA_1606682166 */ .SamplerCount = GEN_GEN == 11 ? 0 : get_sampler_count(cs_bin), - /* Gen 11 workarounds table #2056 WABTPPrefetchDisable - * - * We add 1 because the CS indirect parameters buffer isn't accounted + /* We add 1 because the CS indirect parameters buffer isn't accounted * for in bind_map.surface_count. */ - .BindingTableEntryCount = GEN_GEN == 11 ? 0 : 1 + MIN2(cs_bin->bind_map.surface_count, 30), + .BindingTableEntryCount = 1 + MIN2(cs_bin->bind_map.surface_count, 30), .BarrierEnable = cs_prog_data->uses_barrier, .SharedLocalMemorySize = encode_slm_size(GEN_GEN, cs_prog_data->base.total_shared), diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c index 01f9d198104..d617b78dc63 100644 --- a/src/mesa/drivers/dri/i965/genX_state_upload.c +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c @@ -2101,13 +2101,7 @@ static const struct brw_tracked_state genX(wm_state) = { 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. \ - * 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; \ \ @@ -3877,13 +3871,7 @@ genX(upload_ps)(struct brw_context *brw) 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 - * 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; + ps.BindingTableEntryCount = prog_data->base.binding_table.size_bytes / 4; if (prog_data->base.use_alt_mode) ps.FloatingPointMode = Alternate; -- 2.30.2