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