Module: Mesa
Branch: main
Commit: bc2828a436ada4b1264cb92fe2d50c8b833d83be
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc2828a436ada4b1264cb92fe2d50c8b833d83be

Author: Corentin Noël <[email protected]>
Date:   Wed Jun 14 17:00:22 2023 +0200

compiler: Allow the explicit_stride of aoa types to be zero

The explicit stride doesn't have to be defined to aoa and therefore can be
zero in some cases, like in arrays of arrays of uniform blocks.

Resolves crash with spec@arb_gl_spirv@execution@[email protected]_test piglit 
test for virgl.

Signed-off-by: Corentin Noël <[email protected]>
Reviewed-by: Alejandro Piñeiro <[email protected]>
Acked-by: Gert Wollny <[email protected]>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23648>

---

 src/compiler/glsl_types.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp
index 64dd8caa71f..3929b95f500 100644
--- a/src/compiler/glsl_types.cpp
+++ b/src/compiler/glsl_types.cpp
@@ -2445,7 +2445,7 @@ glsl_type::explicit_size(bool align_to_stride) const
 
       assert(this->length > 0);
       unsigned elem_size = align_to_stride ? this->explicit_stride : 
this->fields.array->explicit_size();
-      assert(this->explicit_stride >= elem_size);
+      assert(this->explicit_stride == 0 || this->explicit_stride >= elem_size);
 
       return this->explicit_stride * (this->length - 1) + elem_size;
    } else if (this->is_matrix()) {

Reply via email to