intel: Drop Gen11 WaBTPPrefetchDisable workaround
This isn't needed on production Icelake hardware. Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Acked-by: Jason Ekstrand <jason@jlekstrand.net> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3250> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3250>
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user