From: Kenneth Graunke Date: Thu, 18 Jul 2013 22:11:57 +0000 (-0700) Subject: glsl: Propagate explicit binding information from AST to IR. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d4375fc0166a2ca50c4786ea93b5a5ccdbc8eaf7;p=mesa.git 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 --- diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 4a04b608bfb..761c799ed68 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?