From bf74553878ee4495b684fecb80ca31a567e79c63 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 24 May 2020 16:11:10 +1000 Subject: FramebufferManager: Copy to color format for depth readbacks on GLES glReadPixels() with depth formats is not supported. Should fix broken EFB access on GLES. --- Source/Core/VideoCommon/FramebufferManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/FramebufferManager.cpp') diff --git a/Source/Core/VideoCommon/FramebufferManager.cpp b/Source/Core/VideoCommon/FramebufferManager.cpp index de3ca7457d..0aeb691362 100644 --- a/Source/Core/VideoCommon/FramebufferManager.cpp +++ b/Source/Core/VideoCommon/FramebufferManager.cpp @@ -513,7 +513,8 @@ bool FramebufferManager::CreateReadbackFramebuffer() // Since we can't partially copy from a depth buffer directly to the staging texture in D3D, we // use an intermediate buffer to avoid copying the whole texture. - if ((IsUsingTiledEFBCache() && !g_ActiveConfig.backend_info.bSupportsPartialDepthCopies) || + if (!g_ActiveConfig.backend_info.bSupportsDepthReadback || + (IsUsingTiledEFBCache() && !g_ActiveConfig.backend_info.bSupportsPartialDepthCopies) || !AbstractTexture::IsCompatibleDepthAndColorFormats(m_efb_depth_texture->GetFormat(), GetEFBDepthCopyFormat()) || g_renderer->GetEFBScale() != 1) @@ -577,7 +578,8 @@ void FramebufferManager::PopulateEFBCache(bool depth, u32 tile_index) // buffer directly to a staging texture (must be the whole resource). const bool force_intermediate_copy = depth && - ((!g_ActiveConfig.backend_info.bSupportsPartialDepthCopies && IsUsingTiledEFBCache()) || + (!g_ActiveConfig.backend_info.bSupportsDepthReadback || + (!g_ActiveConfig.backend_info.bSupportsPartialDepthCopies && IsUsingTiledEFBCache()) || !AbstractTexture::IsCompatibleDepthAndColorFormats(m_efb_depth_texture->GetFormat(), GetEFBDepthCopyFormat())); -- cgit v1.2.3