From e232b8e5ec0f7cf0547df513cb5c073a019ba805 Mon Sep 17 00:00:00 2001 From: IndecisiveTurtle <47210458+raphaelthegreat@users.noreply.github.com> Date: Fri, 18 Jul 2025 15:28:29 +0300 Subject: [PATCH] vk_rasterizer: Improve stencil clears --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index c5f894b10..c3e221739 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1211,11 +1211,13 @@ void Rasterizer::UpdateDepthStencilState() const { } : front_ops; dynamic_state.SetStencilOps(front_ops, back_ops); + const bool stencil_clear = regs.depth_render_control.stencil_clear_enable; const auto front = regs.stencil_ref_front; const auto back = regs.depth_control.backface_enable ? regs.stencil_ref_back : regs.stencil_ref_front; dynamic_state.SetStencilReferences(front.stencil_test_val, back.stencil_test_val); - dynamic_state.SetStencilWriteMasks(front.stencil_write_mask, back.stencil_write_mask); + dynamic_state.SetStencilWriteMasks(!stencil_clear ? front.stencil_write_mask.Value() : 0U, + !stencil_clear ? back.stencil_write_mask.Value() : 0U); dynamic_state.SetStencilCompareMasks(front.stencil_mask, back.stencil_mask); } }