Enable the new Vertex Array Object entry points.

TRAC #23392

Signed-off-by: Shannon Woods
Signed-off-by: Geoff Lang
Authored-by: Jamie Madill
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 89672bd..e860dd6 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -9186,8 +9186,16 @@
                 return gl::error(GL_INVALID_OPERATION);
             }
 
-            // glBindVertexArray
-            UNIMPLEMENTED();
+            gl::VertexArray *vao = context->getVertexArray(array);
+
+            if (!vao)
+            {
+                // The default VAO should always exist
+                ASSERT(array != 0);
+                return gl::error(GL_INVALID_OPERATION);
+            }
+
+            context->bindVertexArray(array);
         }
     }
     catch(std::bad_alloc&)
@@ -9211,8 +9219,18 @@
                 return gl::error(GL_INVALID_OPERATION);
             }
 
-            // glDeleteVertexArrays
-            UNIMPLEMENTED();
+            if (n < 0)
+            {
+                return gl::error(GL_INVALID_VALUE);
+            }
+
+            for (int arrayIndex = 0; arrayIndex < n; arrayIndex++)
+            {
+                if (arrays[arrayIndex] != 0)
+                {
+                    context->deleteVertexArray(arrays[arrayIndex]);
+                }
+            }
         }
     }
     catch(std::bad_alloc&)
@@ -9236,8 +9254,15 @@
                 return gl::error(GL_INVALID_OPERATION);
             }
 
-            // glGenVertexArrays
-            UNIMPLEMENTED();
+            if (n < 0)
+            {
+                return gl::error(GL_INVALID_VALUE);
+            }
+
+            for (int arrayIndex = 0; arrayIndex < n; arrayIndex++)
+            {
+                arrays[arrayIndex] = context->createVertexArray();
+            }
         }
     }
     catch(std::bad_alloc&)
@@ -9261,8 +9286,14 @@
                 return gl::error(GL_INVALID_OPERATION, GL_FALSE);
             }
 
-            // glIsVertexArray
-            UNIMPLEMENTED();
+            if (array == 0)
+            {
+                return GL_FALSE;
+            }
+
+            gl::VertexArray *vao = context->getVertexArray(array);
+
+            return (vao != NULL ? GL_TRUE : GL_FALSE);
         }
     }
     catch(std::bad_alloc&)