nir/lower_atomics: set ACCESS_COHERENT

The lack of ACCESS_COHERENT was probably fine, the worst it would do would
add a pointless iteration after loading an out-of-date value.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37417>
This commit is contained in:
Rhys Perry 2025-08-05 12:35:01 +01:00 committed by Marge Bot
parent e819160705
commit 810d4ff299

View file

@ -53,7 +53,8 @@ build_atomic(nir_builder *b, nir_intrinsic_instr *intr)
intr->src[1].ssa,
.align_mul = intr->def.bit_size / 8,
.align_offset = 0,
.offset_shift = nir_intrinsic_offset_shift(intr));
.offset_shift = nir_intrinsic_offset_shift(intr),
.access = ACCESS_COHERENT);
break;
case nir_intrinsic_shared_atomic:
load = nir_load_shared(b, 1, intr->def.bit_size,
@ -62,9 +63,8 @@ build_atomic(nir_builder *b, nir_intrinsic_instr *intr)
.align_offset = 0);
break;
case nir_intrinsic_global_atomic:
load = nir_load_global(b, intr->src[0].ssa,
intr->def.bit_size / 8,
1, intr->def.bit_size);
load = nir_build_load_global(b, 1, intr->def.bit_size, intr->src[0].ssa,
.access = ACCESS_COHERENT);
break;
default:
UNREACHABLE("unsupported atomic type");