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

Author: Alyssa Rosenzweig <[email protected]>
Date:   Thu Aug 13 18:38:25 2020 -0400

compiler, nir: Add and set barrier metadata

Useful for determining whether certain optimizations are legal for a
compute shader (e.g. optimizing workgroup size in the driver).

Signed-off-by: Alyssa Rosenzweig <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6312>

---

 src/compiler/nir/nir_gather_info.c | 22 ++++++++++++++++++++++
 src/compiler/shader_info.h         |  4 ++++
 2 files changed, 26 insertions(+)

diff --git a/src/compiler/nir/nir_gather_info.c 
b/src/compiler/nir/nir_gather_info.c
index f8edfbd5a1e..7cc0fb9e590 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -712,6 +712,28 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, 
nir_shader *shader,
       update_memory_written_for_deref(shader, nir_src_as_deref(instr->src[0]));
       break;
 
+   case nir_intrinsic_control_barrier:
+      shader->info.uses_control_barrier = true;
+      break;
+
+   case nir_intrinsic_scoped_barrier:
+      shader->info.uses_control_barrier |=
+         nir_intrinsic_execution_scope(instr) != NIR_SCOPE_NONE;
+
+      shader->info.uses_memory_barrier |=
+         nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE;
+      break;
+
+   case nir_intrinsic_memory_barrier:
+   case nir_intrinsic_group_memory_barrier:
+   case nir_intrinsic_memory_barrier_atomic_counter:
+   case nir_intrinsic_memory_barrier_buffer:
+   case nir_intrinsic_memory_barrier_image:
+   case nir_intrinsic_memory_barrier_shared:
+   case nir_intrinsic_memory_barrier_tcs_patch:
+      shader->info.uses_memory_barrier = true;
+      break;
+
    default:
       break;
    }
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index 7a73dcc8c19..0d7183f96e8 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -226,6 +226,10 @@ typedef struct shader_info {
    /* Whether gl_Layer is viewport-relative */
    bool layer_viewport_relative:1;
 
+   /* Whether explicit barriers are used */
+   bool uses_control_barrier : 1;
+   bool uses_memory_barrier : 1;
+
    union {
       struct {
          /* Which inputs are doubles */

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

Reply via email to