From 16c0a3a9720c03c3d5cbfd66e2db63014dfc4f19 Mon Sep 17 00:00:00 2001 From: Vadim Girlin Date: Wed, 2 Nov 2011 11:50:59 +0400 Subject: [PATCH] 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 Signed-off-by: Alex Deucher --- src/gallium/drivers/r600/r600_shader.c | 9 ++++++--- 1 file 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; } -- 2.7.4