Optimize ValidateDrawAttribs: Part 2.

This moves much of the math into cached values in the VertexAttribute
and VertexBinding.

Bug: angleproject:1391
Change-Id: I1b6c0553bf57fef864c27c5193c7dd7ca9b56f53
Reviewed-on: https://chromium-review.googlesource.com/1008274
Commit-Queue: Jamie Madill <jmadill@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 c8c0370..2f617f2 100644
--- a/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -650,7 +650,7 @@
                                      size_t bindingIndex,
                                      const gl::VertexArray::DirtyBindingBits &dirtyBindingBits)
 {
-    ASSERT(dirtyBindingBits.any());
+    // Dependent state changes in buffers can trigger updates with no dirty bits set.
 
     for (size_t dirtyBit : dirtyBindingBits)
     {