nir: Move nir_lower_mediump_outputs from ir3
[mesa.git] / src / compiler / nir / nir_opt_dead_write_vars.c
index 6c0539e492eac4335e81c168ca9c87c87166b2cb..6bd20db07ca8defb836318c7712e584fb6481531 100644 (file)
@@ -122,7 +122,8 @@ remove_dead_write_vars_local(void *mem_ctx, nir_block *block)
                                                 nir_var_shader_temp |
                                                 nir_var_function_temp |
                                                 nir_var_mem_ssbo |
-                                                nir_var_shared);
+                                                nir_var_mem_shared |
+                                                nir_var_mem_global);
          continue;
       }
 
@@ -131,11 +132,33 @@ remove_dead_write_vars_local(void *mem_ctx, nir_block *block)
 
       nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
       switch (intrin->intrinsic) {
-      case nir_intrinsic_barrier:
+      case nir_intrinsic_control_barrier:
       case nir_intrinsic_memory_barrier: {
          clear_unused_for_modes(&unused_writes, nir_var_shader_out |
                                                 nir_var_mem_ssbo |
-                                                nir_var_shared);
+                                                nir_var_mem_shared |
+                                                nir_var_mem_global);
+         break;
+      }
+
+      case nir_intrinsic_memory_barrier_buffer:
+         clear_unused_for_modes(&unused_writes, nir_var_mem_ssbo |
+                                                nir_var_mem_global);
+         break;
+
+      case nir_intrinsic_memory_barrier_shared:
+         clear_unused_for_modes(&unused_writes, nir_var_mem_shared);
+         break;
+
+      case nir_intrinsic_memory_barrier_tcs_patch:
+         clear_unused_for_modes(&unused_writes, nir_var_shader_out);
+         break;
+
+      case nir_intrinsic_scoped_memory_barrier: {
+         if (nir_intrinsic_memory_semantics(intrin) & NIR_MEMORY_RELEASE) {
+            clear_unused_for_modes(&unused_writes,
+                                   nir_intrinsic_memory_modes(intrin));
+         }
          break;
       }