From: Marek Olšák <marek.ol...@amd.com>

Cc: 17.1 <mesa-sta...@lists.freedesktop.org>
---
 src/gallium/drivers/radeonsi/si_state_draw.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c 
b/src/gallium/drivers/radeonsi/si_state_draw.c
index 193187b..a354c69 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -284,21 +284,22 @@ si_get_init_multi_vgt_param(struct si_screen *sscreen,
                /* Bug with tessellation and GS on Bonaire and older 2 SE 
chips. */
                if ((sscreen->b.family == CHIP_TAHITI ||
                     sscreen->b.family == CHIP_PITCAIRN ||
                     sscreen->b.family == CHIP_BONAIRE) &&
                    key->u.uses_gs)
                        partial_vs_wave = true;
 
                /* Needed for 028B6C_DISTRIBUTION_MODE != 0 */
                if (sscreen->has_distributed_tess) {
                        if (key->u.uses_gs) {
-                               partial_es_wave = true;
+                               if (sscreen->b.chip_class <= VI)
+                                       partial_es_wave = true;
 
                                /* GPU hang workaround. */
                                if (sscreen->b.family == CHIP_TONGA ||
                                    sscreen->b.family == CHIP_FIJI ||
                                    sscreen->b.family == CHIP_POLARIS10 ||
                                    sscreen->b.family == CHIP_POLARIS11)
                                        partial_vs_wave = true;
                        } else {
                                partial_vs_wave = true;
                        }
@@ -364,21 +365,21 @@ si_get_init_multi_vgt_param(struct si_screen *sscreen,
                /* Instancing bug on Bonaire. */
                if (sscreen->b.family == CHIP_BONAIRE && ia_switch_on_eoi &&
                    key->u.uses_instancing)
                        partial_vs_wave = true;
 
                /* If the WD switch is false, the IA switch must be false too. 
*/
                assert(wd_switch_on_eop || !ia_switch_on_eop);
        }
 
        /* If SWITCH_ON_EOI is set, PARTIAL_ES_WAVE must be set too. */
-       if (ia_switch_on_eoi)
+       if (sscreen->b.chip_class <= VI && ia_switch_on_eoi)
                partial_es_wave = true;
 
        return S_028AA8_SWITCH_ON_EOP(ia_switch_on_eop) |
                S_028AA8_SWITCH_ON_EOI(ia_switch_on_eoi) |
                S_028AA8_PARTIAL_VS_WAVE_ON(partial_vs_wave) |
                S_028AA8_PARTIAL_ES_WAVE_ON(partial_es_wave) |
                S_028AA8_WD_SWITCH_ON_EOP(sscreen->b.chip_class >= CIK ? 
wd_switch_on_eop : 0) |
                /* The following field was moved to VGT_SHADER_STAGES_EN in 
GFX9. */
                S_028AA8_MAX_PRIMGRP_IN_WAVE(sscreen->b.chip_class == VI ?
                                             max_primgroup_in_wave : 0) |
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to