void trace_texture_destroy(struct trace_texture *tr_tex) { struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen); trace_screen_remove_from_list(tr_scr, textures, tr_tex); pipe_texture_reference(&tr_tex->texture, NULL); FREE(tr_tex); }
void trace_surface_destroy(struct trace_surface *tr_surf) { struct trace_screen *tr_scr = trace_screen(tr_surf->base.texture->screen); trace_screen_remove_from_list(tr_scr, surfaces, tr_surf); pipe_texture_reference(&tr_surf->base.texture, NULL); pipe_surface_reference(&tr_surf->surface, NULL); FREE(tr_surf); }
void trace_transfer_destroy(struct trace_transfer *tr_trans) { struct trace_screen *tr_scr = trace_screen(tr_trans->base.texture->screen); struct pipe_screen *screen = tr_trans->transfer->texture->screen; trace_screen_remove_from_list(tr_scr, transfers, tr_trans); pipe_texture_reference(&tr_trans->base.texture, NULL); screen->tex_transfer_destroy(tr_trans->transfer); FREE(tr_trans); }
static INLINE void trace_context_destroy(struct pipe_context *_pipe) { struct trace_screen *tr_scr = trace_screen(_pipe->screen); struct trace_context *tr_ctx = trace_context(_pipe); struct pipe_context *pipe = tr_ctx->pipe; trace_dump_call_begin("pipe_context", "destroy"); trace_dump_arg(ptr, pipe); trace_dump_call_end(); trace_screen_remove_from_list(tr_scr, contexts, tr_ctx); pipe->destroy(pipe); FREE(tr_ctx); }
void trace_shader_destroy(struct trace_context *tr_ctx, struct trace_shader *tr_shdr) { trace_screen_remove_from_list(tr_ctx, shaders, tr_shdr); if (tr_shdr->replaced) { if (tr_shdr->type == TRACE_SHADER_FRAGMENT) tr_ctx->pipe->delete_fs_state(tr_ctx->pipe, tr_shdr->replaced); else if (tr_shdr->type == TRACE_SHADER_VERTEX) tr_ctx->pipe->delete_vs_state(tr_ctx->pipe, tr_shdr->replaced); else assert(0); } FREE(tr_shdr->replaced_tokens); FREE(tr_shdr->tokens); FREE(tr_shdr); }