Implement queries and enums for buffer mapping.

GetBufferPointerv, GetBufferParameteri64v, and new values
for GetBufferParameteriv.

BUG=angle:565

Change-Id: I179a3193987b2bff1b0628e47f6a0d627541b0cf
Reviewed-on: https://chromium-review.googlesource.com/188203
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/validationES.cpp b/src/libGLESv2/validationES.cpp
index b2883f2..5ed852c 100644
--- a/src/libGLESv2/validationES.cpp
+++ b/src/libGLESv2/validationES.cpp
@@ -94,6 +94,27 @@
     }
 }
 
+bool ValidBufferParameter(const Context *context, GLenum pname)
+{
+    switch (pname)
+    {
+      case GL_BUFFER_USAGE:
+      case GL_BUFFER_SIZE:
+        return true;
+
+      // GL_BUFFER_MAP_POINTER is a special case, and may only be
+      // queried with GetBufferPointerv
+      case GL_BUFFER_ACCESS_FLAGS:
+      case GL_BUFFER_MAPPED:
+      case GL_BUFFER_MAP_OFFSET:
+      case GL_BUFFER_MAP_LENGTH:
+        return (context->getClientVersion() >= 3);
+
+      default:
+        return false;
+    }
+}
+
 bool ValidMipLevel(const Context *context, GLenum target, GLint level)
 {
     int maxLevel = 0;