[Mesa-dev] [PATCH 4/7] nir/algebraic: Fail to compile of a variable is used in a replace but not the search

Jason Ekstrand jason at jlekstrand.net
Thu Jan 29 12:50:19 PST 2015


---
 src/glsl/nir/nir_algebraic.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/glsl/nir/nir_algebraic.py b/src/glsl/nir/nir_algebraic.py
index f9b246d..75436f4 100644
--- a/src/glsl/nir/nir_algebraic.py
+++ b/src/glsl/nir/nir_algebraic.py
@@ -34,13 +34,18 @@ class VarSet(object):
    def __init__(self):
       self.names = {}
       self.ids = itertools.count()
+      self.immutable = False;
 
    def __getitem__(self, name):
       if name not in self.names:
+         assert not self.immutable, "Unknown replacement variable: " + name
          self.names[name] = self.ids.next()
 
       return self.names[name]
 
+   def lock(self):
+      self.immutable = True
+
 class Value(object):
    @staticmethod
    def create(val, name_base, varset):
@@ -138,6 +143,8 @@ class SearchAndReplace(object):
       else:
          self.search = Expression(search, "search{0}".format(self.id), varset)
 
+      varset.lock()
+
       if isinstance(replace, Value):
          self.replace = replace
       else:
-- 
2.2.2



More information about the mesa-dev mailing list