glsl: Propagate explicit binding information from AST to IR.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 18 Jul 2013 22:11:57 +0000 (15:11 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 18 Jul 2013 23:57:24 +0000 (16:57 -0700)
Rather than creating a new "binding" field in ir_variable, we reuse
constant_value since the linker code for handling uniform initializers
uses that.

Since UBOs and samplers can't otherwise have initializers/constant
values, there shouldn't be a conflict.

v2: Propagate the new binding variable around too.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
src/glsl/ast_to_hir.cpp

index 4a04b608bfb9f4cf1e4b76cd16a700d0928e98d7..761c799ed686a145b69a058ebb964962367aca8a 100644 (file)
@@ -2158,8 +2158,11 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
                          "explicit index requires explicit location\n");
    }
 
-   if (qual->flags.q.explicit_binding)
-      validate_binding_qualifier(state, loc, var, qual);
+   if (qual->flags.q.explicit_binding &&
+       validate_binding_qualifier(state, loc, var, qual)) {
+      var->explicit_binding = true;
+      var->binding = qual->binding;
+   }
 
    /* Does the declaration use the deprecated 'attribute' or 'varying'
     * keywords?