[Mesa-dev] [PATCH 1/5] radeonsi: move VGT_GS_MODE to the VS state

Marek Olšák maraeo at gmail.com
Tue Aug 11 16:02:41 PDT 2015


From: Marek Olšák <marek.olsak at 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



More information about the mesa-dev mailing list