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

Author: Caio Oliveira <[email protected]>
Date:   Fri Feb 24 02:25:43 2023 -0800

nir: Support use_scoped_barrier in nir_lower_atomics_to_ssbo

Reviewed-by: Faith Ekstrand <[email protected]>
Acked-by: Rob Clark <[email protected]>
Reviewed-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3339>

---

 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:

Reply via email to