From 1440d2a6833902d9c966fe8ad7db46a7f787391c Mon Sep 17 00:00:00 2001 From: Samuel Iglesias Gonsalvez Date: Mon, 21 Sep 2015 09:09:11 +0200 Subject: glsl: Add unsized array support to glsl_type::std140_size() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Kristian Høgsberg --- src/glsl/glsl_types.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/glsl') diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index b4525eb9cf2..07d72489057 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -1351,7 +1351,7 @@ glsl_type::std140_size(bool row_major) const * rounded up to the next multiple of the base alignment of the * structure. */ - if (this->is_record()) { + if (this->is_record() || this->is_interface()) { unsigned size = 0; unsigned max_align = 0; @@ -1367,6 +1367,11 @@ glsl_type::std140_size(bool row_major) const const struct glsl_type *field_type = this->fields.structure[i].type; unsigned align = field_type->std140_base_alignment(field_row_major); + + /* Ignore unsized arrays when calculating size */ + if (field_type->is_unsized_array()) + continue; + size = glsl_align(size, align); size += field_type->std140_size(field_row_major); -- cgit v1.2.3