iris: Wa_14016820455 for GFX_VERx10 == 12.5
authorZhang, Jianxun <jianxun.zhang@intel.com>
Tue, 10 May 2022 19:55:13 +0000 (12:55 -0700)
committerMarge Bot <emma+marge@anholt.net>
Wed, 22 Jun 2022 22:22:50 +0000 (22:22 +0000)
Reprogram SF CLIP viewport pointer by not skipping its
dirty flag bit.

Many thanks to Lin, Shuicheng <shuicheng.lin@intel.com>,
Jerez Plata, Francisco <francisco.jerez.plata@intel.com>,
Graunke, Kenneth W <kenneth.w.graunke@intel.com>,
and others for their great help.

Signed-off-by: Zhang, Jianxun <jianxun.zhang@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17171>

src/gallium/drivers/iris/iris_blorp.c

index a0af9d6..2a43ca8 100644 (file)
@@ -353,8 +353,15 @@ iris_blorp_exec_render(struct blorp_batch *blorp_batch,
                          IRIS_DIRTY_LINE_STIPPLE |
                          IRIS_ALL_DIRTY_FOR_COMPUTE |
                          IRIS_DIRTY_SCISSOR_RECT |
-                         IRIS_DIRTY_VF |
-                         IRIS_DIRTY_SF_CL_VIEWPORT);
+                         IRIS_DIRTY_VF);
+   /* Wa_14016820455
+    * On Gfx 12.5 platforms, the SF_CL_VIEWPORT pointer can be invalidated
+    * likely by a read cache invalidation when clipping is disabled, so we
+    * don't skip its dirty bit here, in order to reprogram it.
+    */
+   if (GFX_VERx10 != 125)
+      skip_bits |= IRIS_DIRTY_SF_CL_VIEWPORT;
+
    uint64_t skip_stage_bits = (IRIS_ALL_STAGE_DIRTY_FOR_COMPUTE |
                                IRIS_STAGE_DIRTY_UNCOMPILED_VS |
                                IRIS_STAGE_DIRTY_UNCOMPILED_TCS |