diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2016-10-07 12:53:55 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2016-10-07 18:05:36 +0200 |
commit | 5a261de1a8c2c40c6e262c4c7a27dfc0ec6ce16b (patch) | |
tree | 89379e4c3aa1aacd08c579dd1fd1ff818bf47554 | |
parent | 1481af9552f9f6295570995be545bf13a3e9f3a6 (diff) |
tgsi/scan: fix num_inputs/num_outputs for shaders with overlapping arrays
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_scan.c | 9 |
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) |