summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cb_program.c
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-01-16 13:14:19 +1100
committerBen Skeggs <skeggsb@gmail.com>2008-01-16 13:14:19 +1100
commit3119e9a14b66fcfb08fcc3563602273dd2e1893c (patch)
tree74ff685faec3430b66d70522b6ed717f57e54f00 /src/mesa/state_tracker/st_cb_program.c
parent9de335f5807553bc9251931ba3e80c4b454b5818 (diff)
parent587e2becc237bc1c900a1c0ba114a1a0192690ff (diff)
Merge branch 'upstream-gallium-0.1' into darktama-gallium-0.1
Conflicts: src/mesa/pipe/Makefile
Diffstat (limited to 'src/mesa/state_tracker/st_cb_program.c')
-rw-r--r--src/mesa/state_tracker/st_cb_program.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/mesa/state_tracker/st_cb_program.c b/src/mesa/state_tracker/st_cb_program.c
index aed6b1ee97..f1f33fb0dd 100644
--- a/src/mesa/state_tracker/st_cb_program.c
+++ b/src/mesa/state_tracker/st_cb_program.c
@@ -39,6 +39,9 @@
#include "shader/programopt.h"
#include "shader/shader_api.h"
+#include "pipe/cso_cache/cso_cache.h"
+#include "pipe/draw/draw_context.h"
+
#include "st_context.h"
#include "st_program.h"
#include "st_atom_shader.h"
@@ -181,17 +184,22 @@ static void st_program_string_notify( GLcontext *ctx,
stvp->serialNo++;
- if (stvp->vs) {
- /* free the TGSI code */
- // cso_delete(stfp->vs);
- stvp->vs = NULL;
+ if (stvp->cso) {
+ /* free the CSO data */
+ st->pipe->delete_vs_state(st->pipe, stvp->cso->data);
+ FREE((void *) stvp->cso);
+ stvp->cso = NULL;
+ }
+
+ if (stvp->draw_shader) {
+ draw_delete_vertex_shader(st->draw, stvp->draw_shader);
+ stvp->draw_shader = NULL;
}
stvp->param_state = stvp->Base.Base.Parameters->StateFlags;
if (st->vp == stvp)
st->dirty.st |= ST_NEW_VERTEX_PROGRAM;
-
}
}