From 87e35102ddf3593ba4d06297eba5784a12a6ed0e Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 26 Aug 2020 09:44:12 -0400 Subject: [PATCH] panfrost: Emit explicit REPLACE for disabled colour writeout Likewise zero for Bifrost. Avoids UB behaviour in next commit. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_cmdstream.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 5cadab71d13..259478f0ada 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -436,10 +436,18 @@ panfrost_emit_blend(struct panfrost_batch *batch, void *rts, struct bifrost_blend_rt *brts = rts; - /* Disable blending for depth-only on Bifrost */ + /* Disable blending for depth-only */ - if (rt_count == 0 && dev->quirks & IS_BIFROST) - brts[0].unk2 = 0x3; + if (rt_count == 0) { + if (dev->quirks & IS_BIFROST) { + memset(brts, 0, sizeof(*brts)); + brts[0].unk2 = 0x3; + } else { + pan_pack(rts, MIDGARD_BLEND_OPAQUE, cfg) { + cfg.equation = 0xf0122122; /* Replace */ + } + } + } for (unsigned i = 0; i < rt_count; ++i) { struct mali_blend_flags_packed flags = {}; @@ -461,6 +469,7 @@ panfrost_emit_blend(struct panfrost_batch *batch, void *rts, } if (dev->quirks & IS_BIFROST) { + memset(brts + i, 0, sizeof(brts[i])); brts[i].flags = flags.opaque[0]; if (blend[i].is_shader) { -- 2.30.2