From f37e43b26f1a38f53a23837dffeae50006a9d0dd Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Tue, 8 Oct 2024 11:49:34 +0200 Subject: [PATCH] vk: don't set scissoring in final OIT subpass If scissoring is enabled, previous framebuffer background isn't drawn outside of scissor region. Fixes blinking in Soul Calibur battle loading screen. Issue #1668 --- core/rend/vulkan/oit/oit_drawer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/rend/vulkan/oit/oit_drawer.cpp b/core/rend/vulkan/oit/oit_drawer.cpp index 091a6029b..2c0220107 100644 --- a/core/rend/vulkan/oit/oit_drawer.cpp +++ b/core/rend/vulkan/oit/oit_drawer.cpp @@ -431,7 +431,6 @@ bool OITDrawer::Draw(const Texture *fogTexture, const Texture *paletteTexture) cmdBuffer.clearAttachments(vk::ClearAttachment(vk::ImageAspectFlagBits::eColor, 0, clear_colors[0]), vk::ClearRect(viewport, 0, 1)); } - SetScissor(cmdBuffer, baseScissor); // Tr modifier volumes if (GetContext()->GetVendorID() != VulkanContext::VENDOR_QUALCOMM) // Adreno bug @@ -442,6 +441,7 @@ bool OITDrawer::Draw(const Texture *fogTexture, const Texture *paletteTexture) DrawModifierVolumes(cmdBuffer, previous_pass.mvo_tr_count, current_pass.mvo_tr_count - previous_pass.mvo_tr_count, pvrrc.global_param_mvo_tr.data()); } + SetScissor(cmdBuffer, viewport); vk::Pipeline pipeline = pipelineManager->GetFinalPipeline(dithering && finalPass); cmdBuffer.bindPipeline(vk::PipelineBindPoint::eGraphics, pipeline); quadBuffer->Bind(cmdBuffer);