diff options
author | Timothy Arceri <[email protected]> | 2015-09-18 22:51:40 +1000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2015-10-15 20:44:33 +1100 |
commit | 261a434996079b29a476a3c67e1e580cf3db76ba (patch) | |
tree | 3e3343600bc463355cb94a2788f09644175d9a20 /src | |
parent | 176e6930e6c24dfce7cc730faa2612d27689a4df (diff) |
glsl: add std140 layout support for AoA
Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/glsl_types.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index 575ff0e1c2b..27934478e2d 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -1330,8 +1330,8 @@ glsl_type::std140_size(bool row_major) const unsigned int array_len; if (this->is_array()) { - element_type = this->fields.array; - array_len = this->length; + element_type = this->without_array(); + array_len = this->arrays_of_arrays_size(); } else { element_type = this; array_len = 1; @@ -1364,12 +1364,13 @@ glsl_type::std140_size(bool row_major) const * the array are laid out in order, according to rule (9). */ if (this->is_array()) { - if (this->fields.array->is_record()) { - return this->length * this->fields.array->std140_size(row_major); + if (this->without_array()->is_record()) { + return this->arrays_of_arrays_size() * + this->without_array()->std140_size(row_major); } else { - unsigned element_base_align = - this->fields.array->std140_base_alignment(row_major); - return this->length * MAX2(element_base_align, 16); + unsigned element_base_align = + this->without_array()->std140_base_alignment(row_major); + return this->arrays_of_arrays_size() * MAX2(element_base_align, 16); } } |