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

The VS will want to select GS scenario A here (VS with PrimitiveID).
---
 src/gallium/drivers/radeonsi/si_state_shaders.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 854cf1e..19efbbf 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -314,6 +314,12 @@ static void si_shader_vs(struct si_shader *shader)
        if (pm4 == NULL)
                return;
 
+       /* If this is the GS copy shader, the GS state writes this register.
+        * Otherwise, the VS state writes it.
+        */
+       if (!shader->is_gs_copy_shader)
+               si_pm4_set_reg(pm4, R_028A40_VGT_GS_MODE, 0);
+
        va = shader->bo->gpu_address;
        si_pm4_add_bo(pm4, shader->bo, RADEON_USAGE_READ, 
RADEON_PRIO_SHADER_DATA);
 
@@ -1293,8 +1299,6 @@ static void si_update_vgt_shader_config(struct si_context 
*sctx)
                }
 
                si_pm4_set_reg(*pm4, R_028B54_VGT_SHADER_STAGES_EN, stages);
-               if (!sctx->gs_shader)
-                       si_pm4_set_reg(*pm4, R_028A40_VGT_GS_MODE, 0);
        }
        si_pm4_bind_state(sctx, vgt_shader_config, *pm4);
 }
-- 
2.1.4

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

Reply via email to