From dadb29cf2e21ba6b28a2d9ac62dd4ff13f7df9a2 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 4 Oct 2022 10:15:00 -0700 Subject: [PATCH] turnip: Don't use the dynamic color write enable during non-dynamic. We have the correct merged color write enable state as a local var here, use that instead of the zero cmd->state.color_write_enable. Fixes blending in many traces with ANGLE on turnip. In the process of fixing, clarify the logic a little bit. Fixes: 169e03800d0f ("tu: Implement VK_EXT_color_write_enable") Fixes: #7328 Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index 769fca2f2a5..16afaf32cbf 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -4338,10 +4338,9 @@ tu6_emit_blend(struct tu_cs *cs, struct tu_cmd_buffer *cmd) } } - uint32_t blend_enable_mask = - (cmd->state.logic_op_enabled && cmd->state.rop_reads_dst) ? - color_write_enable : (cmd->state.pipeline_blend_enable & - cmd->state.color_write_enable); + uint32_t blend_enable_mask = color_write_enable; + if (!(cmd->state.logic_op_enabled && cmd->state.rop_reads_dst)) + blend_enable_mask &= cmd->state.pipeline_blend_enable; tu_cs_emit_regs(cs, A6XX_SP_FS_OUTPUT_CNTL1(.mrt = pipeline->blend.num_rts)); tu_cs_emit_regs(cs, A6XX_RB_FS_OUTPUT_CNTL1(.mrt = pipeline->blend.num_rts));