glsl: Only set ir_variable::constant_value for const-decorated variables
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 7 Oct 2015 19:52:58 +0000 (12:52 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 12 Oct 2015 17:15:13 +0000 (10:15 -0700)
Right now we're also setting for uniforms, and that doesn't seem to hurt
things.  The next patch will make general global variables in GLSL ES,
and those definitely should not have constant_value set!

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
src/glsl/ast_to_hir.cpp

index fdded1e5819ee64fce11da9599b70222abd0849f..0f05cea5e289794ef7f20b7726d8ca29d14994c9 100644 (file)
@@ -3249,17 +3249,20 @@ process_initializer(ir_variable *var, ast_declaration *decl,
                                 decl->identifier);
                if (var->type->is_numeric()) {
                   /* Reduce cascading errors. */
-                  var->constant_value = ir_constant::zero(state, var->type);
+                  var->constant_value = type->qualifier.flags.q.constant
+                     ? ir_constant::zero(state, var->type) : NULL;
                }
             }
          } else {
             rhs = constant_value;
-            var->constant_value = constant_value;
+            var->constant_value = type->qualifier.flags.q.constant
+               ? constant_value : NULL;
          }
       } else {
          if (var->type->is_numeric()) {
             /* Reduce cascading errors. */
-            var->constant_value = ir_constant::zero(state, var->type);
+            var->constant_value = type->qualifier.flags.q.constant
+               ? ir_constant::zero(state, var->type) : NULL;
          }
       }
    }