Sync scissor state before calling BlitFramebuffer.
Now passes:
* dEQP-GLES3.functional.fragment_ops.scissor.framebuffer_blit_center
* dEQP-GLES3.functional.fragment_ops.scissor.framebuffer_blit_corner
* dEQP-GLES3.functional.fragment_ops.scissor.framebuffer_blit_none
BUG=angleproject:885
Change-Id: Ifec2995562c684b3a4b287619c9bf7a25512b1fd
Reviewed-on: https://chromium-review.googlesource.com/302384
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/Framebuffer.cpp b/src/libANGLE/Framebuffer.cpp
index afc1630..731689c 100644
--- a/src/libANGLE/Framebuffer.cpp
+++ b/src/libANGLE/Framebuffer.cpp
@@ -611,9 +611,17 @@
return Error(GL_NO_ERROR);
}
-Error Framebuffer::blit(const gl::State &state, const gl::Rectangle &sourceArea, const gl::Rectangle &destArea,
- GLbitfield mask, GLenum filter, const gl::Framebuffer *sourceFramebuffer)
+Error Framebuffer::blit(Context *context,
+ const gl::Rectangle &sourceArea,
+ const gl::Rectangle &destArea,
+ GLbitfield mask,
+ GLenum filter,
+ const gl::Framebuffer *sourceFramebuffer)
{
+ // Sync blit state
+ const State &state = context->getState();
+ context->syncRendererState(state.blitStateBitMask());
+
return mImpl->blit(state, sourceArea, destArea, mask, filter, sourceFramebuffer);
}