From 693393975915e937d75fac06ccbc9e0402e39a28 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Wed, 8 Oct 2025 02:27:48 -0700 Subject: [PATCH] panvk: fix to clear FPK with incompatible blend modes When there's only blend mode updates (e.g. CB_BLEND_EQUATIONS not covered by fs_user_dirty check), we have to set dcd0_dirty for the relevant CB updates. Otherwise, we might miss to clear FPK. On the other hand, this also optimizes to set FPK in the reverse mutation, so that new draws no longer depending on the previous tile buffer can benefit from FPK. Cc: mesa-stable Reviewed-by: Lars-Ivar Hesselberg Simonsen Part-of: (cherry picked from commit 98a6825d350c414a9a553c269c082e96eb5a559e) --- .pick_status.json | 2 +- src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index d45a4c6d4b2..c75635a5cbf 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3024,7 +3024,7 @@ "description": "panvk: fix to clear FPK with incompatible blend modes", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index bcf3909d51d..73532cc7b1a 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -1885,6 +1885,10 @@ prepare_dcd(struct panvk_cmd_buffer *cmdbuf, dyn_gfx_state_dirty(cmdbuf, DS_STENCIL_TEST_ENABLE) || dyn_gfx_state_dirty(cmdbuf, DS_STENCIL_OP) || dyn_gfx_state_dirty(cmdbuf, DS_STENCIL_WRITE_MASK) || + /* fpk enablement depends on vk_color_blend_attachment_state */ + dyn_gfx_state_dirty(cmdbuf, CB_BLEND_ENABLES) || + dyn_gfx_state_dirty(cmdbuf, CB_BLEND_EQUATIONS) || + dyn_gfx_state_dirty(cmdbuf, CB_WRITE_MASKS) || /* line mode needs primitive topology */ dyn_gfx_state_dirty(cmdbuf, IA_PRIMITIVE_TOPOLOGY) || dyn_gfx_state_dirty(cmdbuf, INPUT_ATTACHMENT_MAP) ||