OSDN Git Service

radeonsi: add a tess+GS hang workaround for VI dGPUs
authorMarek Olšák <marek.olsak@amd.com>
Tue, 29 Nov 2016 20:19:52 +0000 (21:19 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 14 Dec 2016 19:03:11 +0000 (19:03 +0000)
ported from Vulkan

Cc: 13.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
(cherry picked from commit a816c7fe07bf16325c11bc692486ffb6d1e8b670)

src/gallium/drivers/radeonsi/si_state_draw.c

index 592d9b9..6bbe36d 100644 (file)
@@ -292,10 +292,18 @@ static unsigned si_get_ia_multi_vgt_param(struct si_context *sctx,
 
                /* Needed for 028B6C_DISTRIBUTION_MODE != 0 */
                if (sctx->screen->has_distributed_tess) {
-                       if (sctx->gs_shader.cso)
+                       if (sctx->gs_shader.cso) {
                                partial_es_wave = true;
-                       else
+
+                               /* GPU hang workaround. */
+                               if (sctx->b.family == CHIP_TONGA ||
+                                   sctx->b.family == CHIP_FIJI ||
+                                   sctx->b.family == CHIP_POLARIS10 ||
+                                   sctx->b.family == CHIP_POLARIS11)
+                                       partial_vs_wave = true;
+                       } else {
                                partial_vs_wave = true;
+                       }
                }
        }