diff options
-rw-r--r-- | src/compiler/nir/nir_opt_copy_prop_vars.c | 13 | ||||
-rw-r--r-- | src/compiler/nir/nir_opt_dead_write_vars.c | 9 |
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, |