From 9dd9e0200d8e9d3fa23d34da03d77edd1e5b65f8 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 16 Feb 2021 14:18:10 -0500 Subject: [PATCH] pan/bi: Implement barriers Only control barriers are meaningful upon a closer read. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bifrost_compile.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index 29eade9ffc3..4d1c91c416a 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -756,6 +756,20 @@ 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_to(b, bi_null()); + break; + case nir_intrinsic_global_atomic_exchange: bi_emit_axchg(b, instr, BI_SEG_NONE); break;