From 5f5aca7870ead6a35e5c6cd234f526489d3f4b57 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 10 Dec 2017 15:31:14 +1000 Subject: [PATCH] OGL: Fix incorrect usage of glGetTextureSubImage Was causing issues with texture dumping on newer drivers. --- Source/Core/VideoBackends/OGL/OGLTexture.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/OGLTexture.cpp b/Source/Core/VideoBackends/OGL/OGLTexture.cpp index bf1ec266d3..97f7500f71 100644 --- a/Source/Core/VideoBackends/OGL/OGLTexture.cpp +++ b/Source/Core/VideoBackends/OGL/OGLTexture.cpp @@ -427,12 +427,10 @@ void OGLStagingTexture::CopyFromTexture(const AbstractTexture* src, } else { - glActiveTexture(GL_TEXTURE9); - glBindTexture(GL_TEXTURE_2D_ARRAY, gltex->GetRawTexIdentifier()); if (g_ogl_config.bSupportsTextureSubImage) { glGetTextureSubImage( - GL_TEXTURE_2D_ARRAY, src_level, src_rect.left, src_rect.top, src_layer, + gltex->GetRawTexIdentifier(), src_level, src_rect.left, src_rect.top, src_layer, src_rect.GetWidth(), src_rect.GetHeight(), 1, GetGLFormatForTextureFormat(m_config.format), GetGLTypeForTextureFormat(m_config.format), static_cast(m_buffer_size - dst_offset), reinterpret_cast(dst_offset)); @@ -442,11 +440,12 @@ void OGLStagingTexture::CopyFromTexture(const AbstractTexture* src, // TODO: Investigate whether it's faster to use glReadPixels() with a framebuffer, since we're // copying the whole texture, which may waste bandwidth. So we're trading CPU work in creating // the framebuffer for GPU work in copying potentially redundant texels. + glActiveTexture(GL_TEXTURE9); + glBindTexture(GL_TEXTURE_2D_ARRAY, gltex->GetRawTexIdentifier()); glGetTexImage(GL_TEXTURE_2D_ARRAY, src_level, GetGLFormatForTextureFormat(m_config.format), GetGLTypeForTextureFormat(m_config.format), nullptr); + OGLTexture::SetStage(); } - - OGLTexture::SetStage(); } glPixelStorei(GL_PACK_ROW_LENGTH, 0);