Mesa (master): radeonsi: Improve calculation of number of pixel shader interpolants.

Michel Dänzer daenzer at kemper.freedesktop.org
Wed Apr 18 02:02:14 PDT 2012


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

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Apr 18 10:44:03 2012 +0200

radeonsi: Improve calculation of number of pixel shader interpolants.

---

 src/gallium/drivers/radeonsi/evergreen_state.c |   30 +++++------------------
 1 files changed, 7 insertions(+), 23 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/evergreen_state.c b/src/gallium/drivers/radeonsi/evergreen_state.c
index 5048761..99cbbed 100644
--- a/src/gallium/drivers/radeonsi/evergreen_state.c
+++ b/src/gallium/drivers/radeonsi/evergreen_state.c
@@ -1922,21 +1922,13 @@ void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *shader)
 
 	db_shader_control = S_02880C_Z_ORDER(V_02880C_EARLY_Z_THEN_LATE_Z);
 	for (i = 0; i < rshader->ninput; i++) {
-		/* evergreen NUM_INTERP only contains values interpolated into the LDS,
-		   POSITION goes via GPRs from the SC so isn't counted */
-		if (rshader->input[i].name == TGSI_SEMANTIC_POSITION)
-			pos_index = i;
-		else if (rshader->input[i].name == TGSI_SEMANTIC_FACE)
-			face_index = i;
-		else {
-			ninterp++;
-			if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR)
-				have_linear = TRUE;
-			if (rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE)
-				have_perspective = TRUE;
-			if (rshader->input[i].centroid)
-				have_centroid = TRUE;
-		}
+		ninterp++;
+		if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR)
+			have_linear = TRUE;
+		if (rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE)
+			have_perspective = TRUE;
+		if (rshader->input[i].centroid)
+			have_centroid = TRUE;
 	}
 
 	for (i = 0; i < rshader->noutput; i++) {
@@ -1966,14 +1958,6 @@ void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *shader)
 		exports_ps = 2;
 	}
 
-	if (ninterp == 0) {
-		ninterp = 1;
-		have_perspective = TRUE;
-	}
-
-	if (!have_perspective && !have_linear)
-		have_perspective = TRUE;
-
 	spi_ps_in_control = S_0286D8_NUM_INTERP(ninterp);
 
 	spi_baryc_cntl = 0;



More information about the mesa-commit mailing list