intel/blorp: Use WA helpers for depth pipecontrol
Instead of unconditionally emitting a pipe control on gfx11+, use the workaround helpers for workarounds 1408224581 and 14014097488. Also, add a check for workaround 14016712196, which is also impacted. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29922>
This commit is contained in:
@@ -1307,6 +1307,8 @@ blorp_emit_depth_stencil_config(struct blorp_batch *batch,
|
||||
const struct blorp_params *params)
|
||||
{
|
||||
const struct isl_device *isl_dev = batch->blorp->isl_dev;
|
||||
const struct intel_device_info *devinfo =
|
||||
batch->blorp->compiler->brw->devinfo;
|
||||
|
||||
uint32_t *dw = blorp_emit_dwords(batch, isl_dev->ds.size / 4);
|
||||
if (dw == NULL)
|
||||
@@ -1358,21 +1360,24 @@ blorp_emit_depth_stencil_config(struct blorp_batch *batch,
|
||||
|
||||
isl_emit_depth_stencil_hiz_s(isl_dev, dw, &info);
|
||||
|
||||
#if GFX_VER >= 11
|
||||
/* Wa_1408224581
|
||||
*
|
||||
* Workaround: Gfx12LP Astep only An additional pipe control with
|
||||
* post-sync = store dword operation would be required.( w/a is to
|
||||
* have an additional pipe control after the stencil state whenever
|
||||
* the surface state bits of this state is changing).
|
||||
*
|
||||
* This also seems sufficient to handle Wa_14014097488.
|
||||
*/
|
||||
blorp_emit(batch, GENX(PIPE_CONTROL), pc) {
|
||||
pc.PostSyncOperation = WriteImmediateData;
|
||||
pc.Address = blorp_get_workaround_address(batch);
|
||||
if (intel_needs_workaround(devinfo, 1408224581) ||
|
||||
intel_needs_workaround(devinfo, 14014097488) ||
|
||||
intel_needs_workaround(devinfo, 14016712196)) {
|
||||
/* Wa_1408224581
|
||||
*
|
||||
* Workaround: Gfx12LP Astep only An additional pipe control with
|
||||
* post-sync = store dword operation would be required.( w/a is to
|
||||
* have an additional pipe control after the stencil state whenever
|
||||
* the surface state bits of this state is changing).
|
||||
*
|
||||
* This also seems sufficient to handle Wa_14014097488 and
|
||||
* Wa_14016712196.
|
||||
*/
|
||||
blorp_emit(batch, GENX(PIPE_CONTROL), pc) {
|
||||
pc.PostSyncOperation = WriteImmediateData;
|
||||
pc.Address = blorp_get_workaround_address(batch);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Emits the Optimized HiZ sequence specified in the BDW+ PRMs. The
|
||||
|
Reference in New Issue
Block a user