From 1db7e6a2611145d997f8b61b270e562824e61b07 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Fri, 24 Feb 2023 02:25:43 -0800 Subject: [PATCH] nir: Support use_scoped_barrier in nir_lower_atomics_to_ssbo Reviewed-by: Faith Ekstrand Acked-by: Rob Clark Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/nir/nir_lower_atomics_to_ssbo.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_lower_atomics_to_ssbo.c b/src/compiler/nir/nir_lower_atomics_to_ssbo.c index 9047aa0ea80..e417f5dc058 100644 --- a/src/compiler/nir/nir_lower_atomics_to_ssbo.c +++ b/src/compiler/nir/nir_lower_atomics_to_ssbo.c @@ -65,7 +65,15 @@ lower_instr(nir_intrinsic_instr *instr, unsigned ssbo_offset, nir_builder *b, un /* Atomic counters are now SSBOs so memoryBarrierAtomicCounter() is now * memoryBarrierBuffer(). */ - instr->intrinsic = nir_intrinsic_memory_barrier_buffer; + if (b->shader->options->use_scoped_barrier) { + instr->intrinsic = nir_intrinsic_scoped_barrier; + nir_intrinsic_set_execution_scope(instr, NIR_SCOPE_NONE); + nir_intrinsic_set_memory_scope(instr, NIR_SCOPE_DEVICE); + nir_intrinsic_set_memory_semantics(instr, NIR_MEMORY_ACQ_REL); + nir_intrinsic_set_memory_modes(instr, nir_var_mem_ssbo); + } else { + instr->intrinsic = nir_intrinsic_memory_barrier_buffer; + } return true; case nir_intrinsic_atomic_counter_inc: