summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2016-10-07 12:53:55 +0200
committerNicolai Hähnle <nicolai.haehnle@amd.com>2016-10-07 18:05:36 +0200
commit5a261de1a8c2c40c6e262c4c7a27dfc0ec6ce16b (patch)
tree89379e4c3aa1aacd08c579dd1fd1ff818bf47554
parent1481af9552f9f6295570995be545bf13a3e9f3a6 (diff)
tgsi/scan: fix num_inputs/num_outputs for shaders with overlapping arrays
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_scan.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index c7745ceba6..85ab3292f7 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -401,12 +401,9 @@ scan_declaration(struct tgsi_shader_info *info,
info->input_cylindrical_wrap[reg] = (ubyte)fulldecl->Interp.CylindricalWrap;
/* Vertex shaders can have inputs with holes between them. */
- if (info->processor == PIPE_SHADER_VERTEX)
- info->num_inputs = MAX2(info->num_inputs, reg + 1);
- else {
- info->num_inputs++;
+ info->num_inputs = MAX2(info->num_inputs, reg + 1);
+ if (info->processor != PIPE_SHADER_VERTEX)
assert(reg < info->num_inputs);
- }
if (semName == TGSI_SEMANTIC_PRIMID)
info->uses_primid = TRUE;
@@ -456,7 +453,7 @@ scan_declaration(struct tgsi_shader_info *info,
else if (file == TGSI_FILE_OUTPUT) {
info->output_semantic_name[reg] = (ubyte) semName;
info->output_semantic_index[reg] = (ubyte) semIndex;
- info->num_outputs++;
+ info->num_outputs = MAX2(info->num_outputs, reg + 1);
assert(reg < info->num_outputs);
if (semName == TGSI_SEMANTIC_COLOR)