Revert "Revert "Implement dirty bits acceleration for VertexArrayGL.""

Should be fixed with the Iterator change.

BUG=angleproject:1040

This reverts commit 5b21ed5fd030d33ae379b8cc493746244d2928b4.

Change-Id: Ibb77775b6b2ce5a49cee7dd81efc62d8c3ba3c62
Reviewed-on: https://chromium-review.googlesource.com/293901
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/gl/ProgramGL.cpp b/src/libANGLE/renderer/gl/ProgramGL.cpp
index bb3571d..ddf7216 100644
--- a/src/libANGLE/renderer/gl/ProgramGL.cpp
+++ b/src/libANGLE/renderer/gl/ProgramGL.cpp
@@ -207,7 +207,7 @@
         // TODO: determine attribute precision
         setShaderAttribute(static_cast<size_t>(i), attributeType, GL_NONE, attributeName, attributeSize, location);
 
-        mActiveAttributeLocations.push_back(location);
+        mActiveAttributesMask.set(location);
     }
 
     return LinkResult(true, gl::Error(GL_NO_ERROR));
@@ -445,7 +445,7 @@
 
     mSamplerUniformMap.clear();
     mSamplerBindings.clear();
-    mActiveAttributeLocations.clear();
+    mActiveAttributesMask.reset();
 }
 
 GLuint ProgramGL::getProgramID() const
@@ -458,9 +458,9 @@
     return mSamplerBindings;
 }
 
-const std::vector<GLuint> &ProgramGL::getActiveAttributeLocations() const
+const gl::AttributesMask &ProgramGL::getActiveAttributesMask() const
 {
-    return mActiveAttributeLocations;
+    return mActiveAttributesMask;
 }
 
 }