Sync pixel pack state before glReadPixels in FramebufferGL.
Fixes conformance/reading/read-pixels-pack-alignment.html
BUG=angleproject:885
Change-Id: I48f1598d9a67f3980d2ff86307eb107ec7506776
Reviewed-on: https://chromium-review.googlesource.com/275691
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/gl/FramebufferGL.cpp b/src/libANGLE/renderer/gl/FramebufferGL.cpp
index 732275b..37ebe78 100644
--- a/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -258,13 +258,11 @@
gl::Error FramebufferGL::readPixels(const gl::State &state, const gl::Rectangle &area, GLenum format, GLenum type, GLvoid *pixels) const
{
const gl::PixelPackState &packState = state.getPackState();
-
- // TODO: set pack state
- if (packState.rowLength != 0 || packState.skipRows != 0 || packState.skipPixels != 0)
+ if (packState.pixelBuffer.get() != nullptr)
{
UNIMPLEMENTED();
- return gl::Error(GL_INVALID_OPERATION, "invalid pixel store parameters in readPixels");
}
+ mStateManager->setPixelPackState(packState.alignment, packState.rowLength, packState.skipRows, packState.skipPixels);
mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, mFramebufferID);
mFunctions->readPixels(area.x, area.y, area.width, area.height, format, type, pixels);