diff options
author | Anuj Phogat <[email protected]> | 2018-08-09 09:52:39 -0700 |
---|---|---|
committer | Anuj Phogat <[email protected]> | 2018-08-21 12:50:05 -0700 |
commit | 81b74b5d96bce37d586525bce9181592626bf781 (patch) | |
tree | 6a4d9af68d911d981d3cb53a2e5dafe98c792879 /src | |
parent | 482f328f3b2abd88288b54769193aa75d0f406e0 (diff) |
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 <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/intel/vulkan/genX_pipeline.c | 21 |
1 files 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), |