Mesa (master): radeonsi: only preload VertexID for the GS copy shader

Marek Olšák mareko at kemper.freedesktop.org
Tue Feb 24 20:26:24 UTC 2015


Module: Mesa
Branch: master
Commit: 53494371547392f3b9a836cdda66b5a1fdc9fda2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=53494371547392f3b9a836cdda66b5a1fdc9fda2

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Feb 22 15:11:49 2015 +0100

radeonsi: only preload VertexID for the GS copy shader

The copy shader doesn't use any other preloaded VGPRs.

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>

---

 src/gallium/drivers/radeonsi/si_state_shaders.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 5b46336..0a2ff2a 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -159,12 +159,14 @@ static void si_shader_vs(struct si_shader *shader)
 	va = shader->bo->gpu_address;
 	si_pm4_add_bo(pm4, shader->bo, RADEON_USAGE_READ, RADEON_PRIO_SHADER_DATA);
 
-	vgpr_comp_cnt = shader->uses_instanceid ? 3 : 0;
-
-	if (shader->is_gs_copy_shader)
+	if (shader->is_gs_copy_shader) {
+		vgpr_comp_cnt = 0; /* only VertexID is needed for GS-COPY. */
 		num_user_sgprs = SI_GSCOPY_NUM_USER_SGPR;
-	else
+	} else if (shader->selector->type == PIPE_SHADER_VERTEX) {
+		vgpr_comp_cnt = shader->uses_instanceid ? 3 : 0;
 		num_user_sgprs = SI_VS_NUM_USER_SGPR;
+	} else
+		assert(0);
 
 	num_sgprs = shader->num_sgprs;
 	if (num_user_sgprs > num_sgprs) {




More information about the mesa-commit mailing list