spirv: Add a guard for OpTypeForwardPointer storage classes

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6479>
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index f400c32..c22f2b2 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -1518,6 +1518,12 @@
 
       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);