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);