mesa: In core profile, refuse to draw unless a VAO is bound.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 20 Mar 2014 18:53:16 +0000 (11:53 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 25 Mar 2014 22:13:49 +0000 (15:13 -0700)
Core profile requires a non-default VAO to be bound.  Currently, calls
to glVertexAttribPointer raise INVALID_OPERATION unless a VAO is bound,
and we never actually get any vertex data set.  Trying to draw without
any vertex data can only cause problems.  In i965, it causes a crash.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76400
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: mesa-stable@lists.freedesktop.org
src/mesa/main/api_validate.c

index efc3a2b4be410067a9146e7d1f6bf2744f5eaf5d..8f0b1998dad966e86fce5584bec377062c062215 100644 (file)
@@ -125,8 +125,11 @@ check_valid_to_render(struct gl_context *ctx, const char *function)
         return GL_FALSE;
       break;
 
-   case API_OPENGL_COMPAT:
    case API_OPENGL_CORE:
+      if (ctx->Array.VAO == ctx->Array.DefaultVAO)
+         return GL_FALSE;
+      /* fallthrough */
+   case API_OPENGL_COMPAT:
       {
          const struct gl_shader_program *vsProg =
             ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX];