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;
}