From 2bef02696d40843eee714a619757a1ce87504a95 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 4 Nov 2020 12:31:41 -0600 Subject: [PATCH] spirv: Add a guard for OpTypeForwardPointer storage classes Reviewed-by: Caio Marcelo de Oliveira Filho Part-of: --- src/compiler/spirv/spirv_to_nir.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index f400c3237dd..c22f2b285df 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -1518,6 +1518,12 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode, SpvStorageClass storage_class = w[2]; + vtn_fail_if(opcode == SpvOpTypeForwardPointer && + b->shader->info.stage != MESA_SHADER_KERNEL && + storage_class != SpvStorageClassPhysicalStorageBuffer, + "OpTypeForwardPointer is only allowed in Vulkan with " + "the PhysicalStorageBuffer storage class"); + if (val->value_type == vtn_value_type_invalid) { val->value_type = vtn_value_type_type; val->type = rzalloc(b, struct vtn_type);