summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaio Marcelo de Oliveira Filho <[email protected]>2019-07-03 12:47:53 -0700
committerCaio Marcelo de Oliveira Filho <[email protected]>2019-07-15 16:18:46 -0700
commit026cfa10995ff3316476fa19507fa27adc531de5 (patch)
tree52086d86b7c0e83471b94a90140bdc29dd1a4f10
parent329799257b6a44aaeabee200664e2bb552f473fe (diff)
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 <[email protected]>
-rw-r--r--src/compiler/spirv/spirv_to_nir.c2
1 files changed, 1 insertions, 1 deletions
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;