[Mesa-dev] [PATCH 04/20] mesa/es: Validate primitive modes in Mesa code rather than the ES wrapper

Ian Romanick idr at freedesktop.org
Fri Aug 24 08:46:48 PDT 2012


From: Ian Romanick <ian.d.romanick at intel.com>

v2: Add proper core-profile filtering.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
 src/mesa/main/APIspec.xml    |   40 ----------------------------------------
 src/mesa/main/api_validate.c |    7 +++++--
 2 files changed, 5 insertions(+), 42 deletions(-)

diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml
index 34e41b4..6df4b92 100644
--- a/src/mesa/main/APIspec.xml
+++ b/src/mesa/main/APIspec.xml
@@ -1196,16 +1196,6 @@
 		<param name="first" type="GLint"/>
 		<param name="count" type="GLsizei"/>
 	</proto>
-
-	<desc name="mode">
-		<value name="GL_POINTS"/>
-		<value name="GL_LINES"/>
-		<value name="GL_LINE_LOOP"/>
-		<value name="GL_LINE_STRIP"/>
-		<value name="GL_TRIANGLES"/>
-		<value name="GL_TRIANGLE_STRIP"/>
-		<value name="GL_TRIANGLE_FAN"/>
-	</desc>
 </template>
 
 <template name="DrawElements">
@@ -1216,16 +1206,6 @@
 		<param name="type" type="GLenum"/>
 		<param name="indices" type="const GLvoid *"/>
 	</proto>
-
-	<desc name="mode">
-		<value name="GL_POINTS"/>
-		<value name="GL_LINES"/>
-		<value name="GL_LINE_LOOP"/>
-		<value name="GL_LINE_STRIP"/>
-		<value name="GL_TRIANGLES"/>
-		<value name="GL_TRIANGLE_STRIP"/>
-		<value name="GL_TRIANGLE_FAN"/>
-	</desc>
 </template>
 
 <template name="EnableClientState">
@@ -2179,16 +2159,6 @@
 		<param name="count" type="const GLsizei *"/>
 		<param name="primcount" type="GLsizei"/>
 	</proto>
-
-	<desc name="mode">
-		<value name="GL_POINTS"/>
-		<value name="GL_LINES"/>
-		<value name="GL_LINE_LOOP"/>
-		<value name="GL_LINE_STRIP"/>
-		<value name="GL_TRIANGLES"/>
-		<value name="GL_TRIANGLE_STRIP"/>
-		<value name="GL_TRIANGLE_FAN"/>
-	</desc>
 </template>
 
 <template name="MultiDrawElements">
@@ -2200,16 +2170,6 @@
 		<param name="indices" type="const GLvoid **"/>
 		<param name="primcount" type="GLsizei"/>
 	</proto>
-
-	<desc name="mode">
-		<value name="GL_POINTS"/>
-		<value name="GL_LINES"/>
-		<value name="GL_LINE_LOOP"/>
-		<value name="GL_LINE_STRIP"/>
-		<value name="GL_TRIANGLES"/>
-		<value name="GL_TRIANGLE_STRIP"/>
-		<value name="GL_TRIANGLE_FAN"/>
-	</desc>
 </template>
 
 <template name="EGLImageTargetTexture2D">
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 7706263..53b9b19 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -219,16 +219,19 @@ _mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name)
    case GL_TRIANGLES:
    case GL_TRIANGLE_STRIP:
    case GL_TRIANGLE_FAN:
+      valid_enum = true;
+      break;
    case GL_QUADS:
    case GL_QUAD_STRIP:
    case GL_POLYGON:
-      valid_enum = true;
+      valid_enum = (ctx->API == API_OPENGL);
       break;
    case GL_LINES_ADJACENCY:
    case GL_LINE_STRIP_ADJACENCY:
    case GL_TRIANGLES_ADJACENCY:
    case GL_TRIANGLE_STRIP_ADJACENCY:
-      valid_enum = (ctx->Extensions.ARB_geometry_shader4);
+      valid_enum = _mesa_is_desktop_gl(ctx)
+         && ctx->Extensions.ARB_geometry_shader4;
       break;
    default:
       valid_enum = false;
-- 
1.7.6.5



More information about the mesa-dev mailing list