[Mesa-dev] [PATCH 1/3] glsl: build stageref mask using IR, not symbol table

Tapani Pälli tapani.palli at intel.com
Mon Jun 29 05:35:43 PDT 2015


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 at intel.com>
---
 src/glsl/linker.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 4a726d4..9be48f0 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -2591,9 +2591,14 @@ build_stageref(struct gl_shader_program *shProg, const char *name)
       struct gl_shader *sh = shProg->_LinkedShaders[i];
       if (!sh)
          continue;
-      ir_variable *var = sh->symbols->get_variable(name);
-      if (var)
-         stages |= (1 << i);
+
+      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;
 }
-- 
2.1.0



More information about the mesa-dev mailing list