diff options
author | Ian Romanick <[email protected]> | 2014-04-02 18:58:54 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2014-04-11 12:26:01 -0700 |
commit | 625cf8c874950a38e7afb404345611f0fad4d490 (patch) | |
tree | 29ccb5f5923f90fe2891443c3bce4d66c8926b6b /src/glsl/ast_to_hir.cpp | |
parent | 25a66568750c5826a077cbf549de92546c5fc6cf (diff) |
glsl: Propagate explicit binding information from the AST all the way to the linker
Information about the binding was not being properly communicated from
the front-end compiler to the linker. As a result, the linker never
knew that any UBOs had explicit bindings!
Fixes the piglit test arb_shading_language_420pack-binding-layout.
Signed-off-by: Ian Romanick <[email protected]>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76323
Reviewed-by: Kenneth Graunke <[email protected]>
Tested-by: [email protected] [v0]
Cc: "10.1" <[email protected]>
Cc: [email protected]
Diffstat (limited to 'src/glsl/ast_to_hir.cpp')
-rw-r--r-- | src/glsl/ast_to_hir.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 8d55ee31713..1d15e6213e7 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -5316,6 +5316,13 @@ ast_interface_block::hir(exec_list *instructions, earlier->reinit_interface_type(block_type); delete var; } else { + /* Propagate the "binding" keyword into this UBO's fields; + * the UBO declaration itself doesn't get an ir_variable unless it + * has an instance name. This is ugly. + */ + var->data.explicit_binding = this->layout.flags.q.explicit_binding; + var->data.binding = this->layout.binding; + state->symbols->add_variable(var); instructions->push_tail(var); } |