From 8ae66521e34fcc33b6f93158bcfd5caf4c9169e1 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Fri, 6 Mar 2026 14:46:51 +0800 Subject: [PATCH] [Fix] (MG_Backend/DirectVulkan/VkRenderPassManager): early return when there's an active render pass that is compatible --- .../DirectVulkan/Renderer/VkRenderPassManager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderPassManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderPassManager.cpp index 78aa05c0..e4d43bff 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderPassManager.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VkRenderPassManager.cpp @@ -95,8 +95,12 @@ namespace MobileGL::MG_Backend::DirectVulkan { RenderPassEntry& VkRenderPassManager::GetOrCreateRenderPass(const MG_State::GLState::FramebufferObject& fbo, Uint32 swapchainImageIndex) { // retrieve from cache first - auto hash = ComputeHash(fbo, swapchainImageIndex, true); + auto* activeRenderPass = GetActiveRenderPass(); auto compatibilityHash = ComputeHash(fbo, swapchainImageIndex, false); + if (activeRenderPass != nullptr && activeRenderPass->CompatibleWith(compatibilityHash)) { + return *activeRenderPass; + } + auto hash = ComputeHash(fbo, swapchainImageIndex, true); auto it = m_renderPasses.find(hash); if (it != m_renderPasses.end()) return it->second;