From ee98ce11429a55a0d5b0633f2618abf54b1acc16 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 25 Mar 2026 12:27:49 +0800 Subject: [PATCH] pvr: fix dirty tracking for stencil ops The dirty state of stencil ops is not checked when deciding whether to rebuild the ISP state, although the values are part of the ISP state (the 27:16 bits of ISPB word). Add MESA_VK_DYNAMIC_DS_STENCIL_OP to the condition for rebuilding ISP control registers. Fixes GLCTS tests when running on top of Zink: dEQP-GLES2.functional.fragment_ops.stencil.zero_stencil_fail Fixes: 88f1fad3f768 ("pvr: Use common pipeline & dynamic state frameworks") Signed-off-by: Icenowy Zheng Reviewed-by: Simon Perretta (cherry picked from commit ee031d67b48f6ab656b681803a3c663ee6c7cc52) Part-of: --- .pick_status.json | 2 +- src/imagination/vulkan/pvr_arch_cmd_buffer.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index a64b1061f92..cda6e043b6e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1434,7 +1434,7 @@ "description": "pvr: fix dirty tracking for stencil ops", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "88f1fad3f76837c1d968a8636bf157e1e1e28b2b", "notes": null diff --git a/src/imagination/vulkan/pvr_arch_cmd_buffer.c b/src/imagination/vulkan/pvr_arch_cmd_buffer.c index 1559863b878..68943d818df 100644 --- a/src/imagination/vulkan/pvr_arch_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_arch_cmd_buffer.c @@ -7810,6 +7810,7 @@ static inline bool pvr_ppp_dynamic_state_isp_faces_and_control_dirty( BITSET_TEST(dynamic_dirty, MESA_VK_DYNAMIC_DS_STENCIL_COMPARE_MASK) || BITSET_TEST(dynamic_dirty, MESA_VK_DYNAMIC_DS_STENCIL_REFERENCE) || BITSET_TEST(dynamic_dirty, MESA_VK_DYNAMIC_DS_STENCIL_WRITE_MASK) || + BITSET_TEST(dynamic_dirty, MESA_VK_DYNAMIC_DS_STENCIL_OP) || BITSET_TEST(dynamic_dirty, MESA_VK_DYNAMIC_RS_DEPTH_BIAS_ENABLE) || BITSET_TEST(dynamic_dirty, MESA_VK_DYNAMIC_RS_LINE_WIDTH) || BITSET_TEST(dynamic_dirty,