Mesa (master): glsl: avoid redundant state changes in _mesa_use_program()

Brian Paul brianp at kemper.freedesktop.org
Wed Oct 28 02:11:04 UTC 2009


Module: Mesa
Branch: master
Commit: b44304efdee562b294e542ea0e47d6c758816ee8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b44304efdee562b294e542ea0e47d6c758816ee8

Author: Brian Paul <brianp at vmware.com>
Date:   Tue Oct 27 20:09:33 2009 -0600

glsl: avoid redundant state changes in _mesa_use_program()

---

 src/mesa/shader/shader_api.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index 30fa58e..453cd39 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -1547,8 +1547,6 @@ _mesa_use_program(GLcontext *ctx, GLuint program)
       return;
    }
 
-   FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS);
-
    if (program) {
       shProg = _mesa_lookup_shader_program_err(ctx, program, "glUseProgram");
       if (!shProg) {
@@ -1569,7 +1567,10 @@ _mesa_use_program(GLcontext *ctx, GLuint program)
       shProg = NULL;
    }
 
-   _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, shProg);
+   if (ctx->Shader.CurrentProgram != shProg) {
+      FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS);
+      _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, shProg);
+   }
 }
 
 




More information about the mesa-commit mailing list