Move draw call primitive type check to the API.

A part of a larger refactoring to clean up the draw call
validation.

BUG=angle:571

Change-Id: I0b220d68c04524a81ca11dc58e10c90e458cabde
Reviewed-on: https://chromium-review.googlesource.com/203771
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/libGLESv2/validationES.cpp b/src/libGLESv2/validationES.cpp
index ef516d5..48520d5 100644
--- a/src/libGLESv2/validationES.cpp
+++ b/src/libGLESv2/validationES.cpp
@@ -1290,8 +1290,22 @@
     return true;
 }
 
-static bool ValidateDrawBase(const gl::Context *context, GLsizei count)
+static bool ValidateDrawBase(const gl::Context *context, GLenum mode, GLsizei count)
 {
+    switch (mode)
+    {
+      case GL_POINTS:
+      case GL_LINES:
+      case GL_LINE_LOOP:
+      case GL_LINE_STRIP:
+      case GL_TRIANGLES:
+      case GL_TRIANGLE_STRIP:
+      case GL_TRIANGLE_FAN:
+        break;
+      default:
+        return gl::error(GL_INVALID_ENUM, false);
+    }
+
     if (count < 0)
     {
         return gl::error(GL_INVALID_VALUE, false);
@@ -1347,7 +1361,7 @@
         return gl::error(GL_INVALID_OPERATION, false);
     }
 
-    if (!ValidateDrawBase(context, count))
+    if (!ValidateDrawBase(context, mode, count))
     {
         return false;
     }
@@ -1408,7 +1422,7 @@
         return gl::error(GL_INVALID_OPERATION, false);
     }
 
-    if (!ValidateDrawBase(context, count))
+    if (!ValidateDrawBase(context, mode, count))
     {
         return false;
     }