summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nv04
diff options
context:
space:
mode:
authorYounes Manton <younes.m@gmail.com>2008-07-23 23:35:23 -0400
committerYounes Manton <younes.m@gmail.com>2008-07-23 23:46:45 -0400
commita8da04cb861b8f9caf3acd33f52f64621f0c15e2 (patch)
treebacbfd492330e23f9d670e4319c3f8c07f004153 /src/gallium/drivers/nv04
parentb4d198e47704f3b79c5a61877846172ae9d4b4c0 (diff)
downloadexternal_mesa3d-a8da04cb861b8f9caf3acd33f52f64621f0c15e2.zip
external_mesa3d-a8da04cb861b8f9caf3acd33f52f64621f0c15e2.tar.gz
external_mesa3d-a8da04cb861b8f9caf3acd33f52f64621f0c15e2.tar.bz2
nv all: Copy shader tokens on create, free on delete.
Must copy token stream on shader create, client is allowed to free their copy after creating the state object.
Diffstat (limited to 'src/gallium/drivers/nv04')
-rw-r--r--src/gallium/drivers/nv04/nv04_state.c4
-rw-r--r--src/gallium/drivers/nv04/nv04_state.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/nv04/nv04_state.c b/src/gallium/drivers/nv04/nv04_state.c
index d618465..7e71dee 100644
--- a/src/gallium/drivers/nv04/nv04_state.c
+++ b/src/gallium/drivers/nv04/nv04_state.c
@@ -4,6 +4,7 @@
#include "pipe/p_util.h"
#include "pipe/p_shader_tokens.h"
+#include "tgsi/util/tgsi_parse.h"
#include "nv04_context.h"
#include "nv04_state.h"
@@ -291,7 +292,7 @@ nv04_fp_state_create(struct pipe_context *pipe,
struct nv04_fragment_program *fp;
fp = CALLOC(1, sizeof(struct nv04_fragment_program));
- fp->pipe = cso;
+ fp->pipe.tokens = tgsi_dup_tokens(cso->tokens);
return (void *)fp;
}
@@ -313,6 +314,7 @@ nv04_fp_state_delete(struct pipe_context *pipe, void *hwcso)
struct nv04_fragment_program *fp = hwcso;
nv04_fragprog_destroy(nv04, fp);
+ free((void*)fp->pipe.tokens);
free(fp);
}
diff --git a/src/gallium/drivers/nv04/nv04_state.h b/src/gallium/drivers/nv04/nv04_state.h
index 7487819c..39f7cd1 100644
--- a/src/gallium/drivers/nv04/nv04_state.h
+++ b/src/gallium/drivers/nv04/nv04_state.h
@@ -47,7 +47,7 @@ struct nv04_fragment_program_data {
};
struct nv04_fragment_program {
- const struct pipe_shader_state *pipe;
+ struct pipe_shader_state pipe;
struct tgsi_shader_info info;
boolean translated;