diff options
author | Tilman Sauerbeck <[email protected]> | 2010-10-23 13:33:18 +0200 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2010-10-24 12:55:18 +1000 |
commit | ccb9be105602edaaff196046e324c8cb4a12fe0a (patch) | |
tree | 86fcdc69d602f64938471a513be399a781fa1f10 /src/gallium | |
parent | 9612b482e2c8e994709bcaab79185224b4d76670 (diff) |
r600g: Added r600_pipe_shader_destroy().
Not yet complete.
Signed-off-by: Tilman Sauerbeck <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 11 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_state.c | 6 |
3 files changed, 16 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index b0bd2659de9..0bfa7afeadc 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -208,6 +208,7 @@ void r600_init_context_resource_functions(struct r600_pipe_context *r600); /* r600_shader.c */ int r600_pipe_shader_update(struct pipe_context *ctx, struct r600_pipe_shader *shader); int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *shader, const struct tgsi_token *tokens); +void r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader); int r600_find_vs_semantic_index(struct r600_shader *vs, struct r600_shader *ps, int id); diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 0dd416c0d83..a4e052c23a3 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -338,6 +338,17 @@ int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *s return 0; } +void +r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_bc_cf *cf, *next_cf; + + r600_bo_reference(rctx->radeon, &shader->bo, NULL); + + /* FIXME: is there more stuff to free? */ +} + /* * tgsi -> r600 shader */ diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index f5601a5effa..d496051948f 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -1095,7 +1095,8 @@ static void r600_delete_ps_shader(struct pipe_context *ctx, void *state) if (rctx->ps_shader == shader) { rctx->ps_shader = NULL; } - /* TODO proper delete */ + + r600_pipe_shader_destroy(ctx, shader); free(shader); } @@ -1107,7 +1108,8 @@ static void r600_delete_vs_shader(struct pipe_context *ctx, void *state) if (rctx->vs_shader == shader) { rctx->vs_shader = NULL; } - /* TODO proper delete */ + + r600_pipe_shader_destroy(ctx, shader); free(shader); } |