From 81b74b5d96bce37d586525bce9181592626bf781 Mon Sep 17 00:00:00 2001 From: Anuj Phogat Date: Thu, 9 Aug 2018 09:52:39 -0700 Subject: [PATCH] anv/icl: Disable binding table prefetching Gen 11 workarounds table #2056 WABTPPrefetchDisable suggests to disable prefetching of binding tables for ICLLP A0 and B0 steppings. We have a similar patch for i965 driver in Mesa commit a5889d70. Signed-off-by: Anuj Phogat Reviewed-by: Kenneth Graunke --- src/intel/vulkan/genX_pipeline.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 03a68ab0bf3..022f324606e 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -1136,7 +1136,11 @@ emit_3dstate_vs(struct anv_pipeline *pipeline) #endif vs.VectorMaskEnable = false; vs.SamplerCount = get_sampler_count(vs_bin); - vs.BindingTableEntryCount = get_binding_table_entry_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.FloatingPointMode = IEEE754; vs.IllegalOpcodeExceptionEnable = false; vs.SoftwareExceptionEnable = false; @@ -1187,7 +1191,8 @@ emit_3dstate_hs_te_ds(struct anv_pipeline *pipeline, hs.KernelStartPointer = tcs_bin->kernel.offset; hs.SamplerCount = get_sampler_count(tcs_bin); - hs.BindingTableEntryCount = get_binding_table_entry_count(tcs_bin); + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ + hs.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(tcs_bin); hs.MaximumNumberofThreads = devinfo->max_tcs_threads - 1; hs.IncludeVertexHandles = true; hs.InstanceCount = tcs_prog_data->instances - 1; @@ -1237,7 +1242,8 @@ emit_3dstate_hs_te_ds(struct anv_pipeline *pipeline, ds.KernelStartPointer = tes_bin->kernel.offset; ds.SamplerCount = get_sampler_count(tes_bin); - ds.BindingTableEntryCount = get_binding_table_entry_count(tes_bin); + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ + ds.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(tes_bin); ds.MaximumNumberofThreads = devinfo->max_tes_threads - 1; ds.ComputeWCoordinateEnable = @@ -1294,7 +1300,8 @@ emit_3dstate_gs(struct anv_pipeline *pipeline) gs.SingleProgramFlow = false; gs.VectorMaskEnable = false; gs.SamplerCount = get_sampler_count(gs_bin); - gs.BindingTableEntryCount = get_binding_table_entry_count(gs_bin); + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ + gs.BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(gs_bin); gs.IncludeVertexHandles = gs_prog_data->base.include_vue_handles; gs.IncludePrimitiveID = gs_prog_data->include_primitive_id; @@ -1535,7 +1542,8 @@ emit_3dstate_ps(struct anv_pipeline *pipeline, ps.SingleProgramFlow = false; ps.VectorMaskEnable = true; ps.SamplerCount = get_sampler_count(fs_bin); - ps.BindingTableEntryCount = get_binding_table_entry_count(fs_bin); + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ + ps.BindingTableEntryCount = GEN_GEN == 11 ? 0 : 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 ? @@ -1866,7 +1874,8 @@ compute_pipeline_create( .KernelStartPointer = cs_bin->kernel.offset, .SamplerCount = get_sampler_count(cs_bin), - .BindingTableEntryCount = get_binding_table_entry_count(cs_bin), + /* Gen 11 workarounds table #2056 WABTPPrefetchDisable */ + .BindingTableEntryCount = GEN_GEN == 11 ? 0 : get_binding_table_entry_count(cs_bin), .BarrierEnable = cs_prog_data->uses_barrier, .SharedLocalMemorySize = encode_slm_size(GEN_GEN, cs_prog_data->base.total_shared), -- 2.30.2