mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
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 <caio.oliveira@intel.com>
This commit is contained in:
parent
f07f516c56
commit
6394680f6b
1 changed files with 9 additions and 2 deletions
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue