Add dirty bits for the pixel pack and unpack buffer
BUG=605775
Change-Id: Ifb7eee94a395a9e9f5a5c1d6c0f05299162264a9
Reviewed-on: https://chromium-review.googlesource.com/340115
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 61bb172..683ec18 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -232,6 +232,7 @@
mTexImageDirtyBits.set(State::DIRTY_BIT_UNPACK_SKIP_IMAGES);
mTexImageDirtyBits.set(State::DIRTY_BIT_UNPACK_SKIP_ROWS);
mTexImageDirtyBits.set(State::DIRTY_BIT_UNPACK_SKIP_PIXELS);
+ mTexImageDirtyBits.set(State::DIRTY_BIT_UNPACK_BUFFER_BINDING);
// No dirty objects.
// Readpixels uses the pack state and read FBO
@@ -240,6 +241,7 @@
mReadPixelsDirtyBits.set(State::DIRTY_BIT_PACK_ROW_LENGTH);
mReadPixelsDirtyBits.set(State::DIRTY_BIT_PACK_SKIP_ROWS);
mReadPixelsDirtyBits.set(State::DIRTY_BIT_PACK_SKIP_PIXELS);
+ mReadPixelsDirtyBits.set(State::DIRTY_BIT_PACK_BUFFER_BINDING);
mReadPixelsDirtyObjects.set(State::DIRTY_OBJECT_READ_FRAMEBUFFER);
mClearDirtyBits.set(State::DIRTY_BIT_RASTERIZER_DISCARD_ENABLED);
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index fb7d125..a1d2752 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -1069,11 +1069,13 @@
void State::setPixelPackBufferBinding(Buffer *buffer)
{
mPack.pixelBuffer.set(buffer);
+ mDirtyBits.set(DIRTY_BIT_PACK_BUFFER_BINDING);
}
void State::setPixelUnpackBufferBinding(Buffer *buffer)
{
mUnpack.pixelBuffer.set(buffer);
+ mDirtyBits.set(DIRTY_BIT_UNPACK_BUFFER_BINDING);
}
Buffer *State::getTargetBuffer(GLenum target) const
diff --git a/src/libANGLE/State.h b/src/libANGLE/State.h
index 2d9d655..727da3e 100644
--- a/src/libANGLE/State.h
+++ b/src/libANGLE/State.h
@@ -319,11 +319,13 @@
DIRTY_BIT_UNPACK_SKIP_IMAGES,
DIRTY_BIT_UNPACK_SKIP_ROWS,
DIRTY_BIT_UNPACK_SKIP_PIXELS,
+ DIRTY_BIT_UNPACK_BUFFER_BINDING,
DIRTY_BIT_PACK_ALIGNMENT,
DIRTY_BIT_PACK_REVERSE_ROW_ORDER,
DIRTY_BIT_PACK_ROW_LENGTH,
DIRTY_BIT_PACK_SKIP_ROWS,
DIRTY_BIT_PACK_SKIP_PIXELS,
+ DIRTY_BIT_PACK_BUFFER_BINDING,
DIRTY_BIT_DITHER_ENABLED,
DIRTY_BIT_GENERATE_MIPMAP_HINT,
DIRTY_BIT_SHADER_DERIVATIVE_HINT,
diff --git a/src/libANGLE/renderer/gl/StateManagerGL.cpp b/src/libANGLE/renderer/gl/StateManagerGL.cpp
index c48281a..7b84e55 100644
--- a/src/libANGLE/renderer/gl/StateManagerGL.cpp
+++ b/src/libANGLE/renderer/gl/StateManagerGL.cpp
@@ -1460,6 +1460,10 @@
// TODO(jmadill): split this
setPixelUnpackState(state.getUnpackState());
break;
+ case gl::State::DIRTY_BIT_UNPACK_BUFFER_BINDING:
+ // TODO(jmadill): split this
+ setPixelUnpackState(state.getUnpackState());
+ break;
case gl::State::DIRTY_BIT_PACK_ALIGNMENT:
// TODO(jmadill): split this
setPixelPackState(state.getPackState());
@@ -1480,6 +1484,10 @@
// TODO(jmadill): split this
setPixelPackState(state.getPackState());
break;
+ case gl::State::DIRTY_BIT_PACK_BUFFER_BINDING:
+ // TODO(jmadill): split this
+ setPixelPackState(state.getPackState());
+ break;
case gl::State::DIRTY_BIT_DITHER_ENABLED:
// TODO(jmadill): implement this
break;