Mesa (master): r600g: take into account PSIZE output for spi mapping

Alex Deucher agd5f at kemper.freedesktop.org
Wed Nov 2 13:49:26 UTC 2011


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

Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Wed Nov  2 11:50:59 2011 +0400

r600g: take into account PSIZE output for spi mapping

Skip PSIZE and POSITION when counting VS outputs.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=42435

Tested without regressions on evergreen.

NOTE: this is a candidate for the 7.11 branch.

Signed-off-by: Vadim Girlin <vadimgirlin at gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

---

 src/gallium/drivers/r600/r600_shader.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index e193996..350ba3c 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -62,12 +62,15 @@ int r600_find_vs_semantic_index(struct r600_shader *vs,
 				struct r600_shader *ps, int id)
 {
 	struct r600_shader_io *input = &ps->input[id];
+	int index = 0;
 
 	for (int i = 0; i < vs->noutput; i++) {
 		if (input->name == vs->output[i].name &&
-			input->sid == vs->output[i].sid) {
-			return i - 1;
-		}
+				input->sid == vs->output[i].sid)
+			return index;
+		else if (vs->output[i].name != TGSI_SEMANTIC_POSITION &&
+				 vs->output[i].name != TGSI_SEMANTIC_PSIZE)
+			index++;
 	}
 	return 0;
 }




More information about the mesa-commit mailing list