Split pixelBuffer from pack/unpack state
This will refactor will help use packed enums for buffer targets.
BUG=angleproject:2169
Change-Id: Ie7ed3e105f89457c67027e6598d7e29503ad355c
Reviewed-on: https://chromium-review.googlesource.com/745181
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/gl/FramebufferGL.cpp b/src/libANGLE/renderer/gl/FramebufferGL.cpp
index b2ff033..620de74 100644
--- a/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -429,8 +429,8 @@
return gl::NoError();
}
- PixelPackState packState;
- packState.copyFrom(context, context->getGLState().getPackState());
+ PixelPackState packState = context->getGLState().getPackState();
+ const gl::Buffer *packBuffer = context->getGLState().getTargetBuffer(GL_PIXEL_PACK_BUFFER);
nativegl::ReadPixelsFormat readPixelsFormat =
nativegl::GetReadPixelsFormat(mFunctions, mWorkarounds, format, type);
@@ -440,7 +440,7 @@
mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, mFramebufferID);
bool useOverlappingRowsWorkaround = mWorkarounds.packOverlappingRowsSeparatelyPackBuffer &&
- packState.pixelBuffer.get() && packState.rowLength != 0 &&
+ packBuffer && packState.rowLength != 0 &&
packState.rowLength < area.width;
GLubyte *pixels = reinterpret_cast<GLubyte *>(ptrOrOffset);
@@ -479,9 +479,9 @@
gl::ErrorOrResult<bool> useLastRowPaddingWorkaround = false;
if (mWorkarounds.packLastRowSeparatelyForPaddingInclusion)
{
- useLastRowPaddingWorkaround =
- ShouldApplyLastRowPaddingWorkaround(gl::Extents(area.width, area.height, 1),
- packState, readFormat, readType, false, pixels);
+ useLastRowPaddingWorkaround = ShouldApplyLastRowPaddingWorkaround(
+ gl::Extents(area.width, area.height, 1), packState, packBuffer, readFormat,
+ readType, false, pixels);
}
if (useLastRowPaddingWorkaround.isError())
@@ -495,7 +495,6 @@
}
}
- packState.pixelBuffer.set(context, nullptr);
return retVal;
}
@@ -837,7 +836,6 @@
const gl::PixelPackState &pack,
GLubyte *pixels) const
{
-
const gl::InternalFormat &glFormat = gl::GetInternalFormatInfo(format, type);
GLuint rowBytes = 0;
@@ -847,10 +845,8 @@
ANGLE_TRY_RESULT(glFormat.computeSkipBytes(rowBytes, 0, pack, false), skipBytes);
gl::PixelPackState directPack;
- directPack.pixelBuffer.set(context, pack.pixelBuffer.get());
directPack.alignment = 1;
mStateManager->setPixelPackState(directPack);
- directPack.pixelBuffer.set(context, nullptr);
pixels += skipBytes;
for (GLint y = area.y; y < area.y + area.height; ++y)
@@ -888,10 +884,8 @@
ANGLE_TRY_RESULT(glFormat.computeSkipBytes(rowBytes, 0, pack, false), skipBytes);
gl::PixelPackState directPack;
- directPack.pixelBuffer.set(context, pack.pixelBuffer.get());
directPack.alignment = 1;
mStateManager->setPixelPackState(directPack);
- directPack.pixelBuffer.set(context, nullptr);
pixels += skipBytes + (area.height - 1) * rowBytes;
mFunctions->readPixels(area.x, area.y + area.height - 1, area.width, 1, format, type,