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

Author: Jason Ekstrand <[email protected]>
Date:   Thu Sep  3 00:07:13 2020 -0500

spirv: Access qualifiers are not a bitfield

They're an actual enum.  My bad.

Fixes: de36b5b805be "nir/vtn: Add support for kernel images to SPIRV-to-NIR"
Reviewed-by: Jesse Natalie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6578>

---

 src/compiler/spirv/spirv_to_nir.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/compiler/spirv/spirv_to_nir.c 
b/src/compiler/spirv/spirv_to_nir.c
index 19d26165a5a..783f7ce0b69 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -313,6 +313,22 @@ vtn_push_nir_ssa(struct vtn_builder *b, uint32_t value_id, 
nir_ssa_def *def)
    return vtn_push_ssa_value(b, value_id, ssa);
 }
 
+static enum gl_access_qualifier
+spirv_to_gl_access_qualifier(struct vtn_builder *b,
+                             SpvAccessQualifier access_qualifier)
+{
+   switch (access_qualifier) {
+   case SpvAccessQualifierReadOnly:
+      return ACCESS_NON_WRITEABLE;
+   case SpvAccessQualifierWriteOnly:
+      return ACCESS_NON_READABLE;
+   case SpvAccessQualifierReadWrite:
+      return 0;
+   default:
+      vtn_fail("Invalid image access qualifier");
+   }
+}
+
 static nir_deref_instr *
 vtn_get_image(struct vtn_builder *b, uint32_t value_id)
 {
@@ -5578,11 +5594,8 @@ vtn_emit_kernel_entry_point_wrapper(struct vtn_builder 
*b,
       in_var->data.read_only = true;
       in_var->data.location = i;
       if (param_type->base_type == vtn_base_type_image) {
-         in_var->data.access = 0;
-         if (param_type->access_qualifier & SpvAccessQualifierReadOnly)
-            in_var->data.access |= ACCESS_NON_WRITEABLE;
-         if (param_type->access_qualifier & SpvAccessQualifierWriteOnly)
-            in_var->data.access |= ACCESS_NON_READABLE;
+         in_var->data.access =
+            spirv_to_gl_access_qualifier(b, param_type->access_qualifier);
       }
 
       if (is_by_val)

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to