Module: Mesa Branch: master Commit: d1d05c0f85daf3445d9b4c9cebb3940e6a251fa6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1d05c0f85daf3445d9b4c9cebb3940e6a251fa6
Author: Timothy Arceri <[email protected]> Date: Thu Mar 12 19:52:47 2015 +1100 glsl: add AoA support for linking interface blocks with unsized members Reviewed-by: Ian Romanick <[email protected]> --- src/glsl/ir.cpp | 4 ++-- src/glsl/linker.cpp | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp index 4c22843..8933b23 100644 --- a/src/glsl/ir.cpp +++ b/src/glsl/ir.cpp @@ -1689,8 +1689,8 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name, if (type->is_interface()) this->init_interface_type(type); - else if (type->is_array() && type->fields.array->is_interface()) - this->init_interface_type(type->fields.array); + else if (type->without_array()->is_interface()) + this->init_interface_type(type->without_array()); } } diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index c15034b..25ca928 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -1387,8 +1387,10 @@ public: virtual ir_visitor_status visit(ir_variable *var) { + const glsl_type *type_without_array; fixup_type(&var->type, var->data.max_array_access, var->data.from_ssbo_unsized_array); + type_without_array = var->type->without_array(); if (var->type->is_interface()) { if (interface_contains_unsized_arrays(var->type)) { const glsl_type *new_type = @@ -1398,11 +1400,10 @@ public: var->type = new_type; var->change_interface_type(new_type); } - } else if (var->type->is_array() && - var->type->fields.array->is_interface()) { - if (interface_contains_unsized_arrays(var->type->fields.array)) { + } else if (type_without_array->is_interface()) { + if (interface_contains_unsized_arrays(type_without_array)) { const glsl_type *new_type = - resize_interface_members(var->type->fields.array, + resize_interface_members(type_without_array, var->get_max_ifc_array_access(), var->is_in_shader_storage_block()); var->change_interface_type(new_type); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
