From e9d72ea65dd34164f67f30d77f3f6513bb6395a4 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 25 Jul 2025 12:02:48 +0100 Subject: [PATCH] vtn: set ACCESS_ATOMIC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann Reviewed-by: Georg Lehmann Part-of: --- src/compiler/spirv/spirv_to_nir.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index a44788b91b5..e66ee3e8c97 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -4095,6 +4095,8 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode, scope = vtn_constant_uint(b, w[4]); semantics = vtn_constant_uint(b, w[5]); access |= ACCESS_COHERENT; + if (opcode == SpvOpAtomicLoad) + access |= ACCESS_ATOMIC; break; case SpvOpAtomicStore: @@ -4102,7 +4104,7 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode, image = *res_val->image; scope = vtn_constant_uint(b, w[2]); semantics = vtn_constant_uint(b, w[3]); - access |= ACCESS_COHERENT; + access |= ACCESS_COHERENT | ACCESS_ATOMIC; break; case SpvOpImageQuerySizeLod: @@ -4594,6 +4596,8 @@ vtn_handle_atomics(struct vtn_builder *b, SpvOp opcode, if (ptr->mode != vtn_variable_mode_workgroup) access |= ACCESS_COHERENT; + if (op == nir_intrinsic_load_deref || op == nir_intrinsic_store_deref) + access |= ACCESS_ATOMIC; if (ptr->access & ACCESS_NON_UNIFORM) access |= ACCESS_NON_UNIFORM;