From 14e774929ecebbaf9a9c014ff3b47b68f7064439 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 13 Aug 2020 17:14:58 -0400 Subject: [PATCH] pan/mdg: Identify barrier out-of-order field All barrier types are implied regardless, this is an optimization for out-of-order. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Tomeu Vizoso Part-of: --- src/panfrost/midgard/disassemble.c | 14 ++------------ src/panfrost/midgard/midgard.h | 15 ++++----------- src/panfrost/midgard/midgard_compile.c | 5 ----- 3 files changed, 6 insertions(+), 28 deletions(-) diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c index 4e54f280c84..ac5179edd35 100644 --- a/src/panfrost/midgard/disassemble.c +++ b/src/panfrost/midgard/disassemble.c @@ -1391,18 +1391,8 @@ print_texture_barrier(FILE *fp, uint32_t *word) if (barrier->zero5) fprintf(fp, "/* zero4 = 0x%" PRIx64 " */ ", barrier->zero5); - - /* Control barriers are always implied, so include for obviousness */ - fprintf(fp, " control"); - - if (barrier->buffer) - fprintf(fp, " | buffer"); - - if (barrier->shared) - fprintf(fp, " | shared"); - - if (barrier->stack) - fprintf(fp, " | stack"); + if (barrier->out_of_order) + fprintf(fp, ".ooo%u", barrier->out_of_order); fprintf(fp, "\n"); } diff --git a/src/panfrost/midgard/midgard.h b/src/panfrost/midgard/midgard.h index 0aac96cf6e2..7d9e7e13614 100644 --- a/src/panfrost/midgard/midgard.h +++ b/src/panfrost/midgard/midgard.h @@ -657,9 +657,6 @@ enum mali_sampler_type { MALI_SAMPLER_SIGNED = 0x3, /* isampler */ }; -#define MIDGARD_BARRIER_BUFFER (1 << 0) -#define MIDGARD_BARRIER_SHARED (1 << 1) - typedef struct __attribute__((__packed__)) { @@ -722,10 +719,8 @@ __attribute__((__packed__)) unsigned swizzle : 8; - /* For barriers, control barriers are implied regardless, but these - * bits also enable memory barriers of various types. For regular - * textures, these indicate how many bundles after this texture op may - * be executed in parallel with this op. We may execute only ALU and + /* These indicate how many bundles after this texture op may be + * executed in parallel with this op. We may execute only ALU and * ld/st in parallel (not other textures), and obviously there cannot * be any dependency (the blob appears to forbid even accessing other * channels of a given texture register). */ @@ -801,10 +796,8 @@ __attribute__((__packed__)) unsigned zero2 : 14; unsigned zero3 : 24; - unsigned buffer : 1; - unsigned shared : 1; - unsigned stack : 1; - unsigned zero4 : 5; + unsigned out_of_order : 4; + unsigned zero4 : 4; uint64_t zero5; } midgard_texture_barrier_word; diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 592e4dc70e4..d8d1852f5e2 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -1570,11 +1570,6 @@ emit_control_barrier(compiler_context *ctx) .dest = ~0, .src = { ~0, ~0, ~0, ~0 }, .op = TEXTURE_OP_BARRIER, - .texture = { - /* TODO: optimize */ - .out_of_order = MIDGARD_BARRIER_BUFFER | - MIDGARD_BARRIER_SHARED , - } }; emit_mir_instruction(ctx, ins); -- 2.30.2