panfrost: Use NIR scoped barriers instead of memory barriers

Now both GLSL and SPIR-V will produce the scoped barriers, so no
need to handle the old ones.

Control barriers are still present in some cases, so keep that
for now.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3339>
This commit is contained in:
Caio Oliveira
2023-02-26 22:02:49 -08:00
committed by Marge Bot
parent 901bc6d53c
commit 91fa939763
4 changed files with 4 additions and 20 deletions
-9
View File
@@ -1640,15 +1640,6 @@ bi_emit_intrinsic(bi_builder *b, nir_intrinsic_instr *instr)
bi_emit_store(b, instr, BI_SEG_WLS);
break;
/* Blob doesn't seem to do anything for memory barriers, note +BARRIER
* is illegal in fragment shaders */
case nir_intrinsic_memory_barrier:
case nir_intrinsic_memory_barrier_buffer:
case nir_intrinsic_memory_barrier_image:
case nir_intrinsic_memory_barrier_shared:
case nir_intrinsic_group_memory_barrier:
break;
case nir_intrinsic_control_barrier:
assert(b->shader->stage != MESA_SHADER_FRAGMENT);
bi_barrier(b);
+2
View File
@@ -92,6 +92,8 @@ static const nir_shader_compiler_options bifrost_nir_options = {
.force_indirect_unrolling =
(nir_var_shader_in | nir_var_shader_out | nir_var_function_temp),
.force_indirect_unrolling_sampler = true,
.use_scoped_barrier = true,
};
#endif
-11
View File
@@ -2103,17 +2103,6 @@ emit_intrinsic(compiler_context *ctx, nir_intrinsic_instr *instr)
emit_special(ctx, instr, 97);
break;
/* Midgard doesn't seem to want special handling, though we do need to
* take care when scheduling to avoid incorrect reordering.
*/
case nir_intrinsic_memory_barrier:
case nir_intrinsic_memory_barrier_buffer:
case nir_intrinsic_memory_barrier_image:
case nir_intrinsic_memory_barrier_shared:
case nir_intrinsic_group_memory_barrier:
schedule_barrier(ctx);
break;
case nir_intrinsic_control_barrier:
schedule_barrier(ctx);
emit_control_barrier(ctx);
+2
View File
@@ -101,6 +101,8 @@ static const nir_shader_compiler_options midgard_nir_options = {
.force_indirect_unrolling =
(nir_var_shader_in | nir_var_shader_out | nir_var_function_temp),
.force_indirect_unrolling_sampler = true,
.use_scoped_barrier = true,
};
#endif