summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/nir/nir_opt_copy_prop_vars.c13
-rw-r--r--src/compiler/nir/nir_opt_dead_write_vars.c9
2 files changed, 22 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_copy_prop_vars.c b/src/compiler/nir/nir_opt_copy_prop_vars.c
index c4544eac0f2..fdbf62c3599 100644
--- a/src/compiler/nir/nir_opt_copy_prop_vars.c
+++ b/src/compiler/nir/nir_opt_copy_prop_vars.c
@@ -807,6 +807,19 @@ copy_prop_vars_block(struct copy_prop_var_state *state,
nir_var_mem_shared);
break;
+ case nir_intrinsic_memory_barrier_buffer:
+ case nir_intrinsic_memory_barrier_atomic_counter:
+ if (debug) dump_instr(instr);
+
+ apply_barrier_for_modes(copies, nir_var_mem_ssbo);
+ break;
+
+ case nir_intrinsic_memory_barrier_shared:
+ if (debug) dump_instr(instr);
+
+ apply_barrier_for_modes(copies, nir_var_mem_shared);
+ break;
+
case nir_intrinsic_scoped_memory_barrier:
if (debug) dump_instr(instr);
diff --git a/src/compiler/nir/nir_opt_dead_write_vars.c b/src/compiler/nir/nir_opt_dead_write_vars.c
index 201e0847ce9..ffe0de771da 100644
--- a/src/compiler/nir/nir_opt_dead_write_vars.c
+++ b/src/compiler/nir/nir_opt_dead_write_vars.c
@@ -139,6 +139,15 @@ remove_dead_write_vars_local(void *mem_ctx, nir_block *block)
break;
}
+ case nir_intrinsic_memory_barrier_buffer:
+ case nir_intrinsic_memory_barrier_atomic_counter:
+ clear_unused_for_modes(&unused_writes, nir_var_mem_ssbo);
+ break;
+
+ case nir_intrinsic_memory_barrier_shared:
+ clear_unused_for_modes(&unused_writes, nir_var_mem_shared);
+ break;
+
case nir_intrinsic_scoped_memory_barrier: {
if (nir_intrinsic_memory_semantics(intrin) & NIR_MEMORY_RELEASE) {
clear_unused_for_modes(&unused_writes,