Instead of using symbol table, build mask by inspecting IR. This
change is required by further patches to move resource list creation
to happen later when symbol table does not exist anymore.
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
struct gl_shader *sh = shProg->_LinkedShaders[i];
if (!sh)
continue;
- ir_variable *var = sh->symbols->get_variable(name);
- if (var)
- stages |= (1 << i);
+
+ /* Shader symbol table may contain variables that have
+ * been optimized away. Search IR for the variable instead.
+ */
+ 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;
+ }
+ }
}
return stages;
}