gallium: in st_program_string_notify() free shader tokens.
authorBrian <brian.paul@tungstengraphics.com>
Fri, 14 Mar 2008 16:19:19 +0000 (10:19 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 14 Mar 2008 16:23:56 +0000 (10:23 -0600)
When the shader instructions change, free the TGSI tokens.  This signals the
state tracker to recompile the shader.  Fixes a regression caused by recent
shader/state-tracker changes.

src/mesa/state_tracker/st_cb_program.c

index 4dc76f19b10abb0814a2af4455aff8fd3a59f5ec..0a62e20e0c6262f1ca285d2243ab062f3ceac457 100644 (file)
@@ -178,6 +178,11 @@ static void st_program_string_notify( GLcontext *ctx,
 
       stfp->param_state = stfp->Base.Base.Parameters->StateFlags;
 
+      if (stfp->state.tokens) {
+         FREE((void *) stfp->state.tokens);
+         stfp->state.tokens = NULL;
+      }
+
       if (st->fp == stfp)
         st->dirty.st |= ST_NEW_FRAGMENT_PROGRAM;
    }
@@ -201,6 +206,11 @@ static void st_program_string_notify( GLcontext *ctx,
 
       stvp->param_state = stvp->Base.Base.Parameters->StateFlags;
 
+      if (stvp->state.tokens) {
+         FREE((void *) stvp->state.tokens);
+         stvp->state.tokens = NULL;
+      }
+
       if (st->vp == stvp)
         st->dirty.st |= ST_NEW_VERTEX_PROGRAM;
    }