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 <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6321>
This commit is contained in:
Alyssa Rosenzweig 2020-08-13 17:14:58 -04:00 committed by Marge Bot
parent af97331aba
commit 14e774929e
3 changed files with 6 additions and 28 deletions

View file

@ -1391,18 +1391,8 @@ print_texture_barrier(FILE *fp, uint32_t *word)
if (barrier->zero5) if (barrier->zero5)
fprintf(fp, "/* zero4 = 0x%" PRIx64 " */ ", barrier->zero5); fprintf(fp, "/* zero4 = 0x%" PRIx64 " */ ", barrier->zero5);
if (barrier->out_of_order)
/* Control barriers are always implied, so include for obviousness */ fprintf(fp, ".ooo%u", barrier->out_of_order);
fprintf(fp, " control");
if (barrier->buffer)
fprintf(fp, " | buffer");
if (barrier->shared)
fprintf(fp, " | shared");
if (barrier->stack)
fprintf(fp, " | stack");
fprintf(fp, "\n"); fprintf(fp, "\n");
} }

View file

@ -657,9 +657,6 @@ enum mali_sampler_type {
MALI_SAMPLER_SIGNED = 0x3, /* isampler */ MALI_SAMPLER_SIGNED = 0x3, /* isampler */
}; };
#define MIDGARD_BARRIER_BUFFER (1 << 0)
#define MIDGARD_BARRIER_SHARED (1 << 1)
typedef struct typedef struct
__attribute__((__packed__)) __attribute__((__packed__))
{ {
@ -722,10 +719,8 @@ __attribute__((__packed__))
unsigned swizzle : 8; unsigned swizzle : 8;
/* For barriers, control barriers are implied regardless, but these /* These indicate how many bundles after this texture op may be
* bits also enable memory barriers of various types. For regular * executed in parallel with this op. We may execute only ALU and
* textures, 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 * ld/st in parallel (not other textures), and obviously there cannot
* be any dependency (the blob appears to forbid even accessing other * be any dependency (the blob appears to forbid even accessing other
* channels of a given texture register). */ * channels of a given texture register). */
@ -801,10 +796,8 @@ __attribute__((__packed__))
unsigned zero2 : 14; unsigned zero2 : 14;
unsigned zero3 : 24; unsigned zero3 : 24;
unsigned buffer : 1; unsigned out_of_order : 4;
unsigned shared : 1; unsigned zero4 : 4;
unsigned stack : 1;
unsigned zero4 : 5;
uint64_t zero5; uint64_t zero5;
} midgard_texture_barrier_word; } midgard_texture_barrier_word;

View file

@ -1570,11 +1570,6 @@ emit_control_barrier(compiler_context *ctx)
.dest = ~0, .dest = ~0,
.src = { ~0, ~0, ~0, ~0 }, .src = { ~0, ~0, ~0, ~0 },
.op = TEXTURE_OP_BARRIER, .op = TEXTURE_OP_BARRIER,
.texture = {
/* TODO: optimize */
.out_of_order = MIDGARD_BARRIER_BUFFER |
MIDGARD_BARRIER_SHARED ,
}
}; };
emit_mir_instruction(ctx, ins); emit_mir_instruction(ctx, ins);