ES31: Implement Vertex Attrib Binding on OpenGL

This patch intends to implement Vertex Attrib Binding on OpenGL
back-ends:

1. Add supports for updating vertex attributes by Vertex Attrib
Binding APIs.
2. Refactor the process of updating vertex attribtues in class
VertexArray to make it easier to implement this feature.

BUG=angleproject:1593
TEST=dEQP-GLES31.functional.vertex_attribute_binding.*

Change-Id: I800e61518c552b94b84c415895ad31668b0a84b2
Reviewed-on: https://chromium-review.googlesource.com/510251
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/queryutils.cpp b/src/libANGLE/queryutils.cpp
index 00a0726..2473a66 100644
--- a/src/libANGLE/queryutils.cpp
+++ b/src/libANGLE/queryutils.cpp
@@ -397,10 +397,7 @@
             *params = ConvertFromGLuint<ParamType>(attrib.bindingIndex);
             break;
         case GL_VERTEX_ATTRIB_RELATIVE_OFFSET:
-            // attrib.relativeOffset should not be negative or greater than max GLint
-            ASSERT(attrib.relativeOffset >= 0 &&
-                   attrib.relativeOffset <= std::numeric_limits<GLint>::max());
-            *params = ConvertFromGLint<ParamType>(static_cast<GLint>(attrib.relativeOffset));
+            *params = ConvertFromGLuint<ParamType>(attrib.relativeOffset);
             break;
         default:
             UNREACHABLE();