예제 #1
0
/* Delete fragment shader state. */
static void r300_delete_fs_state(struct pipe_context* pipe, void* shader)
{
    struct r300_fragment_shader* fs = (struct r300_fragment_shader*)shader;
    rc_constants_destroy(&fs->code.constants);
    FREE((void*)fs->state.tokens);
    FREE(shader);
}
예제 #2
0
static void freeFragProgCache(GLcontext *ctx, struct r300_fragment_program_cont *cache)
{
    struct r300_fragment_program *tmp, *fp = cache->progs;

    while (fp) {
        tmp = fp->next;
        rc_constants_destroy(&fp->code.constants);
        _mesa_free(fp);
        fp = tmp;
    }
}
예제 #3
0
static void freeVertProgCache(GLcontext *ctx, struct r300_vertex_program_cont *cache)
{
    struct r300_vertex_program *tmp, *vp = cache->progs;

    while (vp) {
        tmp = vp->next;
        rc_constants_destroy(&vp->code.constants);
        _mesa_reference_vertprog(ctx, &vp->Base, NULL);
        _mesa_free(vp);
        vp = tmp;
    }
}
예제 #4
0
static void r300_delete_vs_state(struct pipe_context* pipe, void* shader)
{
    struct r300_context* r300 = r300_context(pipe);

    if (r300_screen(pipe->screen)->caps->has_tcl) {
        struct r300_vertex_shader* vs = (struct r300_vertex_shader*)shader;

        rc_constants_destroy(&vs->code.constants);
        draw_delete_vertex_shader(r300->draw, vs->draw);
        FREE((void*)vs->state.tokens);
        FREE(shader);
    } else {
        draw_delete_vertex_shader(r300->draw,
                (struct draw_vertex_shader*)shader);
    }
}
예제 #5
0
void rc_destroy(struct radeon_compiler * c)
{
	rc_constants_destroy(&c->Program.Constants);
	memory_pool_destroy(&c->Pool);
	free(c->ErrorMsg);
}