Mesa (master): spirv: Fix stride calculation when lowering Workgroup to offsets

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jul 15 23:21:01 UTC 2019


Module: Mesa
Branch: master
Commit: 026cfa10995ff3316476fa19507fa27adc531de5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=026cfa10995ff3316476fa19507fa27adc531de5

Author: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Date:   Wed Jul  3 12:47:53 2019 -0700

spirv: Fix stride calculation when lowering Workgroup to offsets

Use alignment to calculate the stride associated with the pointer
types.  That stride is used when the pointers are casted to arrays.

Note that size alone is not sufficient, e.g. struct { vec2 a; vec1 b;
} will have element an element size of 12 bytes, but the stride needs
to be 16 bytes to respect the 8 byte alignment.

Fixes: 050eb6389a8 "spirv: Ignore ArrayStride in OpPtrAccessChain for Workgroup"
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/compiler/spirv/spirv_to_nir.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 3e88e54ab84..ebefd4d7bf5 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -1406,7 +1406,7 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
             val->type->align = align;
 
             /* Override any ArrayStride previously set. */
-            val->type->stride = size;
+            val->type->stride = vtn_align_u32(size, align);
          }
       }
       break;




More information about the mesa-commit mailing list