compiler: Handle nested arrays correctly for computing CL size/alignment
authorJesse Natalie <jenatali@microsoft.com>
Thu, 1 Dec 2022 19:09:44 +0000 (11:09 -0800)
committerJesse Natalie <jenatali@microsoft.com>
Fri, 2 Dec 2022 17:52:44 +0000 (09:52 -0800)
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20111>

src/compiler/glsl_types.cpp

index ded90a59c28cd0572311bd68744cd0ecaed4fce7..2bc7d1d74459acdc1597c85c8631212a84602dcd 100644 (file)
@@ -3333,7 +3333,7 @@ glsl_type::cl_alignment() const
    if (this->is_scalar() || this->is_vector())
       return this->cl_size();
    else if (this->is_array())
-      return this->without_array()->cl_alignment();
+      return this->fields.array->cl_alignment();
    else if (this->is_struct()) {
       /* Packed Structs are 0x1 aligned despite their size. */
       if (this->packed)
@@ -3356,7 +3356,7 @@ glsl_type::cl_size() const
       return util_next_power_of_two(this->vector_elements) *
              explicit_type_scalar_byte_size(this);
    } else if (this->is_array()) {
-      unsigned size = this->without_array()->cl_size();
+      unsigned size = this->fields.array->cl_size();
       return size * this->length;
    } else if (this->is_struct()) {
       unsigned size = 0;