Micro-optimize some validation checks.
Prepares for caching hasMappedBuffer. Also inclines several checks for
faster speed.
Bug: angleproject:2746
Change-Id: I74f9408d7b41e245c3f58d367dd2cc8fbace4a7a
Reviewed-on: https://chromium-review.googlesource.com/1150762
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/VertexArray.cpp b/src/libANGLE/VertexArray.cpp
index 8d933ac..040772a 100644
--- a/src/libANGLE/VertexArray.cpp
+++ b/src/libANGLE/VertexArray.cpp
@@ -486,4 +486,21 @@
return false;
}
+bool VertexArray::hasMappedEnabledArrayBuffer() const
+{
+ // TODO(jmadill): Cache this. http://anglebug.com/2746
+ for (size_t attribIndex : mState.mEnabledAttributesMask)
+ {
+ const VertexAttribute &vertexAttrib = mState.mVertexAttributes[attribIndex];
+ ASSERT(vertexAttrib.enabled);
+ const VertexBinding &vertexBinding = mState.mVertexBindings[vertexAttrib.bindingIndex];
+ gl::Buffer *boundBuffer = vertexBinding.getBuffer().get();
+ if (boundBuffer && boundBuffer->isMapped())
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
} // namespace gl