diff options
| author | Stenzek <stenzek@gmail.com> | 2018-10-04 00:43:48 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2018-10-09 22:00:40 +1000 |
| commit | 2e905455b152129e4efc0e95f104bf65dfdfdf7d (patch) | |
| tree | 64bd5bf1e92c2045830ec69b034d396fb3b03668 /Source/Core/VideoBackends/OGL | |
| parent | 480972612c17912b58d4a3163101baa9735efbf2 (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/VideoBackends/OGL')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/OGLTexture.cpp | 6 |
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); } |
