From ba18799ca12628f2346a3bb0f28dc5124c66072a Mon Sep 17 00:00:00 2001 From: Icecream95 Date: Mon, 21 Feb 2022 16:54:50 +1300 Subject: [PATCH] pan/bi: Don't assign slots for the blend second source Another instruction might write to the second source, and then an INSTR_INVALID_ENC fault will be raised because the tuple will write to and read from the register at the same time. Fixes: 795638767d1 ("pan/bi: Use fused dual source blending") Part-of: --- src/panfrost/bifrost/bi_pack.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/panfrost/bifrost/bi_pack.c b/src/panfrost/bifrost/bi_pack.c index 58a8cb823e2..239d2f619cf 100644 --- a/src/panfrost/bifrost/bi_pack.c +++ b/src/panfrost/bifrost/bi_pack.c @@ -120,6 +120,12 @@ bi_assign_slots(bi_tuple *now, bi_tuple *prev) if (now->add) { bi_foreach_src(now->add, src) { + /* This is not a real source, we shouldn't assign a + * slot for it. + */ + if (now->add->op == BI_OPCODE_BLEND && src == 4) + continue; + if (!(src == 0 && read_dreg)) bi_assign_slot_read(&now->regs, (now->add)->src[src]); }