Add PrimitiveMode packed GLenum.
Bug: angleproject:2574
Change-Id: I3d7bd7ca0d69a364a611dc04799ea34906fc4a6c
Reviewed-on: https://chromium-review.googlesource.com/1067114
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 9f25a53..97631f0 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -494,24 +494,28 @@
return true;
}
-bool IsCompatibleDrawModeWithGeometryShader(GLenum drawMode,
- GLenum geometryShaderInputPrimitiveType)
+bool IsCompatibleDrawModeWithGeometryShader(PrimitiveMode drawMode,
+ PrimitiveMode geometryShaderInputPrimitiveType)
{
// [EXT_geometry_shader] Section 11.1gs.1, Geometry Shader Input Primitives
- switch (geometryShaderInputPrimitiveType)
+ switch (drawMode)
{
- case GL_POINTS:
- return drawMode == GL_POINTS;
- case GL_LINES:
- return drawMode == GL_LINES || drawMode == GL_LINE_STRIP || drawMode == GL_LINE_LOOP;
- case GL_LINES_ADJACENCY_EXT:
- return drawMode == GL_LINES_ADJACENCY_EXT || drawMode == GL_LINE_STRIP_ADJACENCY_EXT;
- case GL_TRIANGLES:
- return drawMode == GL_TRIANGLES || drawMode == GL_TRIANGLE_FAN ||
- drawMode == GL_TRIANGLE_STRIP;
- case GL_TRIANGLES_ADJACENCY_EXT:
- return drawMode == GL_TRIANGLES_ADJACENCY_EXT ||
- drawMode == GL_TRIANGLE_STRIP_ADJACENCY_EXT;
+ case PrimitiveMode::Points:
+ return geometryShaderInputPrimitiveType == PrimitiveMode::Points;
+ case PrimitiveMode::Lines:
+ case PrimitiveMode::LineStrip:
+ case PrimitiveMode::LineLoop:
+ return geometryShaderInputPrimitiveType == PrimitiveMode::Lines;
+ case PrimitiveMode::LinesAdjacency:
+ case PrimitiveMode::LineStripAdjacency:
+ return geometryShaderInputPrimitiveType == PrimitiveMode::LinesAdjacency;
+ case PrimitiveMode::Triangles:
+ case PrimitiveMode::TriangleFan:
+ case PrimitiveMode::TriangleStrip:
+ return geometryShaderInputPrimitiveType == PrimitiveMode::Triangles;
+ case PrimitiveMode::TrianglesAdjacency:
+ case PrimitiveMode::TriangleStripAdjacency:
+ return geometryShaderInputPrimitiveType == PrimitiveMode::TrianglesAdjacency;
default:
UNREACHABLE();
return false;
@@ -635,8 +639,8 @@
}
bool ValidateTransformFeedbackPrimitiveMode(const Context *context,
- GLenum transformFeedbackPrimitiveMode,
- GLenum renderPrimitiveMode)
+ PrimitiveMode transformFeedbackPrimitiveMode,
+ PrimitiveMode renderPrimitiveMode)
{
ASSERT(context);
@@ -649,17 +653,18 @@
}
// [GL_EXT_geometry_shader] Table 12.1gs
- switch (transformFeedbackPrimitiveMode)
+ switch (renderPrimitiveMode)
{
- case GL_POINTS:
- return renderPrimitiveMode == GL_POINTS;
- case GL_TRIANGLES:
- return renderPrimitiveMode == GL_TRIANGLES ||
- renderPrimitiveMode == GL_TRIANGLE_STRIP ||
- renderPrimitiveMode == GL_TRIANGLE_FAN;
- case GL_LINES:
- return renderPrimitiveMode == GL_LINES || renderPrimitiveMode == GL_LINE_LOOP ||
- renderPrimitiveMode == GL_LINE_STRIP;
+ case PrimitiveMode::Points:
+ return transformFeedbackPrimitiveMode == PrimitiveMode::Points;
+ case PrimitiveMode::Lines:
+ case PrimitiveMode::LineStrip:
+ case PrimitiveMode::LineLoop:
+ return transformFeedbackPrimitiveMode == PrimitiveMode::Lines;
+ case PrimitiveMode::Triangles:
+ case PrimitiveMode::TriangleFan:
+ case PrimitiveMode::TriangleStrip:
+ return transformFeedbackPrimitiveMode == PrimitiveMode::Triangles;
default:
UNREACHABLE();
return false;
@@ -667,7 +672,7 @@
}
bool ValidateDrawElementsInstancedBase(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLsizei count,
GLenum type,
const GLvoid *indices,
@@ -688,7 +693,7 @@
}
bool ValidateDrawArraysInstancedBase(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLint first,
GLsizei count,
GLsizei primcount)
@@ -2616,25 +2621,25 @@
return true;
}
-bool ValidateDrawBase(Context *context, GLenum mode, GLsizei count)
+bool ValidateDrawBase(Context *context, PrimitiveMode mode, GLsizei count)
{
const Extensions &extensions = context->getExtensions();
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:
+ case PrimitiveMode::Points:
+ case PrimitiveMode::Lines:
+ case PrimitiveMode::LineLoop:
+ case PrimitiveMode::LineStrip:
+ case PrimitiveMode::Triangles:
+ case PrimitiveMode::TriangleStrip:
+ case PrimitiveMode::TriangleFan:
break;
- case GL_LINES_ADJACENCY_EXT:
- case GL_LINE_STRIP_ADJACENCY_EXT:
- case GL_TRIANGLES_ADJACENCY_EXT:
- case GL_TRIANGLE_STRIP_ADJACENCY_EXT:
+ case PrimitiveMode::LinesAdjacency:
+ case PrimitiveMode::LineStripAdjacency:
+ case PrimitiveMode::TrianglesAdjacency:
+ case PrimitiveMode::TriangleStripAdjacency:
if (!extensions.geometryShader)
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(), GeometryShaderExtensionNotEnabled);
@@ -2861,7 +2866,7 @@
}
bool ValidateDrawArraysCommon(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLint first,
GLsizei count,
GLsizei primcount)
@@ -2920,7 +2925,7 @@
}
bool ValidateDrawArraysInstancedANGLE(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLint first,
GLsizei count,
GLsizei primcount)
@@ -2939,7 +2944,7 @@
return ValidateDrawInstancedANGLE(context);
}
-bool ValidateDrawElementsBase(Context *context, GLenum mode, GLenum type)
+bool ValidateDrawElementsBase(Context *context, PrimitiveMode mode, GLenum type)
{
switch (type)
{
@@ -2990,7 +2995,7 @@
}
bool ValidateDrawElementsCommon(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLsizei count,
GLenum type,
const void *indices,
@@ -3164,7 +3169,7 @@
}
bool ValidateDrawElementsInstancedCommon(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLsizei count,
GLenum type,
const void *indices,
@@ -3174,7 +3179,7 @@
}
bool ValidateDrawElementsInstancedANGLE(Context *context,
- GLenum mode,
+ PrimitiveMode mode,
GLsizei count,
GLenum type,
const void *indices,