glsl: set stage flag for structs and arrays in resource list

This fixes the remaining failing tests in:
ES31-CTS.program_interface_query.uniform-types

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
Timothy Arceri
2015-07-04 15:43:15 +10:00
parent 1b2b0e42ce
commit 75a96cedf7
+13 -3
View File
@@ -3129,9 +3129,19 @@ build_stageref(struct gl_shader_program *shProg, const char *name)
*/
foreach_in_list(ir_instruction, node, sh->ir) {
ir_variable *var = node->as_variable();
if (var && strcmp(var->name, name) == 0) {
stages |= (1 << i);
break;
if (var) {
unsigned baselen = strlen(var->name);
if (strncmp(var->name, name, baselen) == 0) {
/* Check for exact name matches but also check for arrays and
* structs.
*/
if (name[baselen] == '\0' ||
name[baselen] == '[' ||
name[baselen] == '.') {
stages |= (1 << i);
break;
}
}
}
}
}