mesa: don't draw arrays if vertex position array is not enabled
authorBrian Paul <brianp@vmware.com>
Mon, 2 Mar 2009 19:27:16 +0000 (12:27 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 2 Mar 2009 19:27:16 +0000 (12:27 -0700)
For regular GL, we must have vertex positions in order to draw.  But ES2
doesn't have that requirement (positions can be computed from any array
of data).

See bug 19911.

src/mesa/main/api_validate.c

index 5c8955d7c8df8968d5c2d6c82b8d881dafb9eab8..42d1e579e08a8244f798bd13dcb7d7776f0fbbcb 100644 (file)
@@ -87,11 +87,20 @@ check_valid_to_render(GLcontext *ctx, char *function)
       return GL_FALSE;
    }
 
-   /* Always need vertex positions, unless a vertex program is in use */
-   if (!ctx->VertexProgram._Current &&
-       !ctx->Array.ArrayObj->Vertex.Enabled &&
+#if FEATURE_es2_glsl
+   /* For ES2, we can draw if any vertex array is enabled (and we should
+    * always have a vertex program/shader).
+    */
+   if (ctx->Array.ArrayObj->_Enabled == 0x0 || !ctx->VertexProgram._Current)
+      return GL_FALSE;
+#else
+   /* For regular OpenGL, only draw if we have vertex positions (regardless
+    * of whether or not we have a vertex program/shader).
+    */
+   if (!ctx->Array.ArrayObj->Vertex.Enabled &&
        !ctx->Array.ArrayObj->VertexAttrib[0].Enabled)
       return GL_FALSE;
+#endif
 
    return GL_TRUE;
 }