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:
+13
-3
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user