mesa: do state validation in _mesa_valid_to_render()
authorBrian Paul <brianp@vmware.com>
Fri, 29 Jan 2010 15:38:11 +0000 (08:38 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 29 Jan 2010 15:38:11 +0000 (08:38 -0700)
...rather than checking/validating before all the calls to
_mesa_valid_to_render() and valid_to_render().

The next patch will actually fix some bugs...

(cherry picked from commit 23eda89ec89e2bd5bc26077bd56e8d6b5d4040d4)

src/mesa/main/api_validate.c
src/mesa/main/context.c

index e71e5a6ce867c529d508d5ab148069771e7fb0d7..013048bbc1694eb8e0ea201221cdd6e4e307f589 100644 (file)
@@ -190,9 +190,6 @@ _mesa_validate_DrawElements(GLcontext *ctx,
       return GL_FALSE;
    }
 
-   if (ctx->NewState)
-      _mesa_update_state(ctx);
-
    if (!check_valid_to_render(ctx, "glDrawElements"))
       return GL_FALSE;
 
@@ -254,9 +251,6 @@ _mesa_validate_DrawRangeElements(GLcontext *ctx, GLenum mode,
       return GL_FALSE;
    }
 
-   if (ctx->NewState)
-      _mesa_update_state(ctx);
-
    if (!check_valid_to_render(ctx, "glDrawRangeElements"))
       return GL_FALSE;
 
@@ -304,9 +298,6 @@ _mesa_validate_DrawArrays(GLcontext *ctx,
       return GL_FALSE;
    }
 
-   if (ctx->NewState)
-      _mesa_update_state(ctx);
-
    if (!check_valid_to_render(ctx, "glDrawArrays"))
       return GL_FALSE;
 
index a570506d57b34ef2783f26ca6919439697bbcc34..eb6bc8e4369e234f02cd9b10a7818780bdc2dff7 100644 (file)
@@ -1578,6 +1578,10 @@ _mesa_set_mvp_with_dp4( GLcontext *ctx,
 GLboolean
 _mesa_valid_to_render(GLcontext *ctx, const char *where)
 {
+   /* This depends on having up to date derived state (shaders) */
+   if (ctx->NewState)
+      _mesa_update_state(ctx);
+
    if (ctx->Shader.CurrentProgram) {
       /* using shaders */
       if (!ctx->Shader.CurrentProgram->LinkStatus) {