anv: disable preemption on 3DPRIMITIVE on gfx12

To workaround a push constant corruption issue.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5963
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5662
Cc: mesa-stable
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15753>
(cherry picked from commit 88f77aa811)
This commit is contained in:
Lionel Landwerlin 2022-04-05 15:35:57 +03:00 committed by Dylan Baker
parent b239f3b4c3
commit e73ac543f3
3 changed files with 8 additions and 1 deletions

View file

@ -36,7 +36,7 @@
"description": "anv: disable preemption on 3DPRIMITIVE on gfx12",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"because_sha": null
},
{

View file

@ -7201,7 +7201,9 @@
<value name="Mid-cmdbuffer Preemption" value="0"/>
<value name="Object Level Preemption" value="1"/>
</field>
<field name="Disable Preemption and High Priority Pausing due to 3DPRIMITIVE Command" start="10" end="10" type="bool"/>
<field name="Replay Mode Mask" start="16" end="16" type="bool"/>
<field name="Disable Preemption and High Priority Pausing due to 3DPRIMITIVE Command Mask" start="26" end="26" type="bool"/>
</register>
<register name="CS_DEBUG_MODE2" length="1" num="0x20d8">

View file

@ -262,6 +262,11 @@ init_render_queue_state(struct anv_queue *queue)
anv_batch_write_reg(&batch, GENX(CS_CHICKEN1), cc1) {
cc1.ReplayMode = MidcmdbufferPreemption;
cc1.ReplayModeMask = true;
#if GFX_VERx10 == 120
cc1.DisablePreemptionandHighPriorityPausingdueto3DPRIMITIVECommand = true;
cc1.DisablePreemptionandHighPriorityPausingdueto3DPRIMITIVECommandMask = true;
#endif
}
#if GFX_VERx10 < 125