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