Module: Mesa
Branch: main
Commit: fe560aeb12516e766335d416ba749b7572637274
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe560aeb12516e766335d416ba749b7572637274

Author: Qiang Yu <[email protected]>
Date:   Wed Feb  9 09:40:22 2022 +0800

radeonsi: workaround Specviewperf13 Catia hang on GFX9

The root cause is unknown but PAL always update IA_MULTI_VGT_PARAM
whenever primitive type change.

cc: mesa-stable

Reviewed-by: Marek Olšák <[email protected]>
Singed-off-by: Qiang Yu <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14944>

---

 src/gallium/drivers/radeonsi/si_state_draw.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp 
b/src/gallium/drivers/radeonsi/si_state_draw.cpp
index 114b53fa5fa..ce1836af8fa 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.cpp
+++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp
@@ -1186,7 +1186,9 @@ static void si_emit_ia_multi_vgt_param(struct si_context 
*sctx,
           min_vertex_count);
 
    /* Draw state. */
-   if (ia_multi_vgt_param != sctx->last_multi_vgt_param) {
+   if (ia_multi_vgt_param != sctx->last_multi_vgt_param ||
+       /* Workaround for SpecviewPerf13 Catia hang on GFX9. */
+       (GFX_VERSION == GFX9 && prim != sctx->last_prim)) {
       radeon_begin(cs);
 
       if (GFX_VERSION == GFX9)

Reply via email to