Module: Mesa Branch: master Commit: 6394680f6b54595d1f2dfac7159d2772090b234e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6394680f6b54595d1f2dfac7159d2772090b234e
Author: Jason Ekstrand <[email protected]> Date: Wed Jul 10 17:55:44 2019 -0500 spirv: Add a warning for ArrayStride on arrays of blocks It's disallowed according to the SPIR-V spec or at least I think that's what the spec says. It's in a section explicitly about explicit layout of things in the StorageBuffer, Uniform, and PushConstant storage classes so it's not 100% clear that it applies with other storage classes. However, it seems like it should apply in general and violating it can trigger (fairly harmless) asserts in NIR. Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]> --- src/compiler/spirv/spirv_to_nir.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 6a9ccfe0f38..ea4aebb767c 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -722,8 +722,15 @@ array_stride_decoration_cb(struct vtn_builder *b, struct vtn_type *type = val->type; if (dec->decoration == SpvDecorationArrayStride) { - vtn_fail_if(dec->operands[0] == 0, "ArrayStride must be non-zero"); - type->stride = dec->operands[0]; + if (vtn_type_contains_block(b, type)) { + vtn_warn("The ArrayStride decoration cannot be applied to an array " + "type which contains a structure type decorated Block " + "or BufferBlock"); + /* Ignore the decoration */ + } else { + vtn_fail_if(dec->operands[0] == 0, "ArrayStride must be non-zero"); + type->stride = dec->operands[0]; + } } } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
