From d4375fc0166a2ca50c4786ea93b5a5ccdbc8eaf7 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 18 Jul 2013 15:11:57 -0700 Subject: [PATCH] glsl: Propagate explicit binding information from AST to IR. 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 Reviewed-by: Paul Berry --- src/glsl/ast_to_hir.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 4a04b60..761c799 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -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? -- 2.7.4