summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/cso_cache/cso_context.h
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2008-04-24 11:52:37 -0600
committerBrian Paul <brian.paul@tungstengraphics.com>2008-04-24 12:15:05 -0600
commitf2c31257167f85df276322be1b8523064e8b66a9 (patch)
tree2f74009aed28f5e7ef132060960b9f593e3ae296 /src/gallium/auxiliary/cso_cache/cso_context.h
parent35dc003c6a0845a96934f9c222bd57bb62e0a62f (diff)
gallium: added cso_delete_vertex_fragment_shader() functions
The state tracker now uses these functions to free shaders, rather than the pipe->delete_vs/fs-state() functions. Before, we could get in a situation where we free() a shader and happen to alloc() a new one at the same address. The cso_set_vertex/fragment_shader() function would no-op the state change since the pointers were the same. This led to problems elsewhere, of course. The new delete functions null-out the CSO's current shader pointers.
Diffstat (limited to 'src/gallium/auxiliary/cso_cache/cso_context.h')
-rw-r--r--src/gallium/auxiliary/cso_cache/cso_context.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.h b/src/gallium/auxiliary/cso_cache/cso_context.h
index 0405944132..cb46f71d51 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.h
+++ b/src/gallium/auxiliary/cso_cache/cso_context.h
@@ -99,16 +99,22 @@ void cso_restore_sampler_textures( struct cso_context *cso );
*/
enum pipe_error cso_set_fragment_shader_handle(struct cso_context *ctx,
void *handle );
+void cso_delete_fragment_shader(struct cso_context *ctx, void *handle );
+/*
enum pipe_error cso_set_fragment_shader( struct cso_context *cso,
const struct pipe_shader_state *shader );
+*/
void cso_save_fragment_shader(struct cso_context *cso);
void cso_restore_fragment_shader(struct cso_context *cso);
enum pipe_error cso_set_vertex_shader_handle(struct cso_context *ctx,
void *handle );
+void cso_delete_vertex_shader(struct cso_context *ctx, void *handle );
+/*
enum pipe_error cso_set_vertex_shader( struct cso_context *cso,
const struct pipe_shader_state *shader );
+*/
void cso_save_vertex_shader(struct cso_context *cso);
void cso_restore_vertex_shader(struct cso_context *cso);