From 880f7ca6bb9df5bdb4e3765697ffdf60b59d68f3 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 24 Sep 2020 10:25:48 +1000 Subject: [PATCH] FramebufferManager: Fix EFB readbacks with MSAA on Regression from #8827. --- Source/Core/VideoCommon/FramebufferManager.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/Core/VideoCommon/FramebufferManager.cpp b/Source/Core/VideoCommon/FramebufferManager.cpp index c989f9d5c8..edf4e5427e 100644 --- a/Source/Core/VideoCommon/FramebufferManager.cpp +++ b/Source/Core/VideoCommon/FramebufferManager.cpp @@ -258,8 +258,8 @@ AbstractTexture* FramebufferManager::ResolveEFBColorTexture(const MathUtil::Rect AbstractTexture* FramebufferManager::ResolveEFBDepthTexture(const MathUtil::Rectangle& region, bool force_r32f) { - if (!IsEFBMultisampled() || !force_r32f || - m_efb_depth_texture->GetFormat() == AbstractTextureFormat::R32F) + if (!IsEFBMultisampled() && + (!force_r32f || m_efb_depth_texture->GetFormat() == AbstractTextureFormat::D32F)) { return m_efb_depth_texture.get(); } @@ -271,7 +271,8 @@ AbstractTexture* FramebufferManager::ResolveEFBDepthTexture(const MathUtil::Rect m_efb_depth_texture->FinishedRendering(); g_renderer->BeginUtilityDrawing(); g_renderer->SetAndDiscardFramebuffer(m_efb_depth_resolve_framebuffer.get()); - g_renderer->SetPipeline(m_efb_depth_resolve_pipeline.get()); + g_renderer->SetPipeline(IsEFBMultisampled() ? m_efb_depth_resolve_pipeline.get() : + m_efb_depth_cache.copy_pipeline.get()); g_renderer->SetTexture(0, m_efb_depth_texture.get()); g_renderer->SetSamplerState(0, RenderState::GetPointSamplerState()); g_renderer->SetViewportAndScissor(clamped_region);