Mesa (master): spirv: Add a guard for OpTypeForwardPointer storage classes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 6 00:40:26 UTC 2020


Module: Mesa
Branch: master
Commit: 2bef02696d40843eee714a619757a1ce87504a95
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2bef02696d40843eee714a619757a1ce87504a95

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Nov  4 12:31:41 2020 -0600

spirv: Add a guard for OpTypeForwardPointer storage classes

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6479>

---

 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);



More information about the mesa-commit mailing list