Permalink
Browse files

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.
  • Loading branch information...
stenzek committed Oct 3, 2018
1 parent 4809726 commit 2e905455b152129e4efc0e95f104bf65dfdfdf7d
Showing with 6 additions and 0 deletions.
  1. +6 −0 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);
}

0 comments on commit 2e90545

Please sign in to comment.