summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-10-04 00:43:48 +1000
committerStenzek <stenzek@gmail.com>2018-10-09 22:00:40 +1000
commit2e905455b152129e4efc0e95f104bf65dfdfdf7d (patch)
tree64bd5bf1e92c2045830ec69b034d396fb3b03668 /Source/Core
parent480972612c17912b58d4a3163101baa9735efbf2 (diff)
OGL: Disable scissor test when calling glBlitFramebuffer()
glBlitFramebuffer() does not bypass the scissor test, which meant that part of texture copies (e.g. XFB) could have been clipped when running under OpenGL ES, as glCopyImageSubData() is not supported.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/VideoBackends/OGL/OGLTexture.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/OGL/OGLTexture.cpp b/Source/Core/VideoBackends/OGL/OGLTexture.cpp
index 5399a11d04..1efb650eeb 100644
--- a/Source/Core/VideoBackends/OGL/OGLTexture.cpp
+++ b/Source/Core/VideoBackends/OGL/OGLTexture.cpp
@@ -234,6 +234,9 @@ void OGLTexture::BlitFramebuffer(OGLTexture* srcentry, const MathUtil::Rectangle
dst_layer);
}
+ // glBlitFramebuffer is still affected by the scissor test, which is enabled by default.
+ glDisable(GL_SCISSOR_TEST);
+
glBlitFramebuffer(src_rect.left, src_rect.top, src_rect.right, src_rect.bottom, dst_rect.left,
dst_rect.top, dst_rect.right, dst_rect.bottom, GL_COLOR_BUFFER_BIT, GL_NEAREST);
@@ -252,6 +255,9 @@ void OGLTexture::BlitFramebuffer(OGLTexture* srcentry, const MathUtil::Rectangle
0);
}
+ // The default state for the scissor test is enabled. We don't need to do a full state
+ // restore, as the framebuffer and scissor test are the only things we changed.
+ glEnable(GL_SCISSOR_TEST);
FramebufferManager::SetFramebuffer(0);
}