From 09bb8602f336e02da930eae15a2d56986ff418f3 Mon Sep 17 00:00:00 2001 From: Icecream95 Date: Wed, 18 Aug 2021 10:49:54 +1200 Subject: [PATCH] pan/bi: Don't set dependencies for +BLEND in blend shaders The dependency wait should already have been done in the fragment shader. Part-of: --- src/panfrost/bifrost/bi_schedule.c | 32 +++++++++++++++++------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/panfrost/bifrost/bi_schedule.c b/src/panfrost/bifrost/bi_schedule.c index fd3c750a872..d974d4a98f1 100644 --- a/src/panfrost/bifrost/bi_schedule.c +++ b/src/panfrost/bifrost/bi_schedule.c @@ -1629,21 +1629,25 @@ bi_schedule_clause(bi_context *ctx, bi_block *block, struct bi_worklist st, uint bi_message_type_for_instr(tuple->add); clause->message = tuple->add; - switch (tuple->add->op) { - case BI_OPCODE_ATEST: - clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_DEPTH); - break; - case BI_OPCODE_LD_TILE: - case BI_OPCODE_ST_TILE: - if (!ctx->inputs->is_blend) + /* We don't need to set dependencies for blend shaders + * because the BLEND instruction in the fragment + * shader should have already done the wait */ + if (!ctx->inputs->is_blend) { + switch (tuple->add->op) { + case BI_OPCODE_ATEST: + clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_DEPTH); + break; + case BI_OPCODE_LD_TILE: + case BI_OPCODE_ST_TILE: clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_COLOUR); - break; - case BI_OPCODE_BLEND: - clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_DEPTH); - clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_COLOUR); - break; - default: - break; + break; + case BI_OPCODE_BLEND: + clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_DEPTH); + clause->dependencies |= (1 << BIFROST_SLOT_ELDEST_COLOUR); + break; + default: + break; + } } }