Use dirty bit for element array buffer
BUG=angleproject:2188
Change-Id: I2b2aced542032c7c263f911ef1516af1d42190cc
Reviewed-on: https://chromium-review.googlesource.com/846346
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/renderer/gl/VertexArrayGL.cpp b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
index 512baa5..25f542f 100644
--- a/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -131,18 +131,15 @@
primitiveRestartEnabled, outIndices);
}
-gl::Error VertexArrayGL::syncElementArrayState(const gl::Context *context) const
+void VertexArrayGL::updateElementArrayBufferBinding(const gl::Context *context) const
{
gl::Buffer *elementArrayBuffer = mState.getElementArrayBuffer().get();
- ASSERT(elementArrayBuffer);
- if (elementArrayBuffer != mAppliedElementArrayBuffer.get())
+ if (elementArrayBuffer != nullptr && elementArrayBuffer != mAppliedElementArrayBuffer.get())
{
const BufferGL *bufferGL = GetImplAs<BufferGL>(elementArrayBuffer);
mStateManager->bindBuffer(gl::BufferBinding::ElementArray, bufferGL->getBufferID());
mAppliedElementArrayBuffer.set(context, elementArrayBuffer);
}
-
- return gl::NoError();
}
gl::Error VertexArrayGL::syncDrawState(const gl::Context *context,
@@ -200,13 +197,7 @@
// Need to check the range of indices if attributes need to be streamed
if (elementArrayBuffer != nullptr)
{
- if (elementArrayBuffer != mAppliedElementArrayBuffer.get())
- {
- const BufferGL *bufferGL = GetImplAs<BufferGL>(elementArrayBuffer);
- mStateManager->bindBuffer(gl::BufferBinding::ElementArray, bufferGL->getBufferID());
- mAppliedElementArrayBuffer.set(context, elementArrayBuffer);
- }
-
+ ASSERT(elementArrayBuffer == mAppliedElementArrayBuffer.get());
// Only compute the index range if the attributes also need to be streamed
if (attributesNeedStreaming)
{
@@ -655,7 +646,7 @@
{
if (dirtyBit == VertexArray::DIRTY_BIT_ELEMENT_ARRAY_BUFFER)
{
- // TODO(jmadill): Element array buffer bindings
+ updateElementArrayBufferBinding(context);
continue;
}