Apply the pixel pack state before ReadPixels in FramebufferGL.

This ensures that the PBO is bound because it does not have a dirty bit
yet.

BUG=angleproject:1149
BUG=angleproject:885

Change-Id: Iad96abc4dec4e6ac8187975c7638dfd7f18951e7
Reviewed-on: https://chromium-review.googlesource.com/296963
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/renderer/gl/FramebufferGL.cpp b/src/libANGLE/renderer/gl/FramebufferGL.cpp
index 300980b..ae2a617 100644
--- a/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -241,11 +241,10 @@
 
 gl::Error FramebufferGL::readPixels(const gl::State &state, const gl::Rectangle &area, GLenum format, GLenum type, GLvoid *pixels) const
 {
+    // TODO: don't sync the pixel pack state here once the dirty bits contain the pixel pack buffer
+    // binding
     const gl::PixelPackState &packState = state.getPackState();
-    if (packState.pixelBuffer.get() != nullptr)
-    {
-        UNIMPLEMENTED();
-    }
+    mStateManager->setPixelPackState(packState);
 
     mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, mFramebufferID);
     mFunctions->readPixels(area.x, area.y, area.width, area.height, format, type, pixels);