diff options
author | Paul Berry <[email protected]> | 2013-09-25 14:07:37 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-10-09 16:49:48 -0700 |
commit | 15e05b999b779dc48a8e768184b9c69e859c203b (patch) | |
tree | c671c33943fe7fc9f06e3873ac811fad05b9a64b /src/glsl/ir.h | |
parent | 45e46b2e371e59f11f19b9169aa79ce2b1dffd6f (diff) |
glsl: Modify array_sizing_visitor to handle unnamed interface blocks.
We were already setting the array size of unsized arrays that appeared
inside unnamed interface blocks, but we weren't updating
ir_variable::interface_type to reflect the new array size, causing
bogus link errors.
This patch causes array_sizing_visitor to keep track of all the
unnamed interface types it sees, and the ir_variables corresponding to
each one. After the visitor runs, a new function,
fixup_unnamed_interface_types(), adjusts each unnamed interface type
to correctly correspond with the array sizes in the ir_variables.
Fixes piglit tests:
- spec/glsl-1.50/execution/unsized-in-unnamed-interface-block-gs
- spec/glsl-1.50/execution/unsized-in-unnamed-interface-block-multiple
Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r-- | src/glsl/ir.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 2a0afada1ea..0f8e9a15d96 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -406,8 +406,8 @@ public: /** * Change this->interface_type on a variable that previously had a - * different interface_type. This is used during linking to set the size - * of arrays in interface blocks. + * different, but compatible, interface_type. This is used during linking + * to set the size of arrays in interface blocks. */ void change_interface_type(const struct glsl_type *type) { |