void NinePixelShader9_dtor( struct NinePixelShader9 *This ) { DBG("This=%p\n", This); if (This->base.device) { struct pipe_context *pipe = nine_context_get_pipe_multithread(This->base.device); struct nine_shader_variant *var = &This->variant; do { if (var->cso) { if (This->base.device->context.cso_shader.ps == var->cso) pipe->bind_fs_state(pipe, NULL); pipe->delete_fs_state(pipe, var->cso); } var = var->next; } while (var); if (This->ff_cso) { if (This->ff_cso == This->base.device->context.cso_shader.ps) pipe->bind_fs_state(pipe, NULL); pipe->delete_fs_state(pipe, This->ff_cso); } } nine_shader_variants_free(&This->variant); FREE((void *)This->byte_code.tokens); /* const_cast */ NineUnknown_dtor(&This->base); }
void NinePixelShader9_dtor( struct NinePixelShader9 *This ) { DBG("This=%p cso=%p\n", This, This->variant.cso); if (This->base.device) { struct pipe_context *pipe = This->base.device->pipe; struct nine_shader_variant *var = &This->variant; do { if (var->cso) { if (This->base.device->state.cso.ps == var->cso) pipe->bind_fs_state(pipe, NULL); pipe->delete_fs_state(pipe, var->cso); } var = var->next; } while (var); } nine_shader_variants_free(&This->variant); if (This->byte_code.tokens) FREE((void *)This->byte_code.tokens); /* const_cast */ FREE(This->lconstf.data); FREE(This->lconstf.ranges); NineUnknown_dtor(&This->base); }
void NineVertexShader9_dtor( struct NineVertexShader9 *This ) { DBG("This=%p\n", This); if (This->base.device) { struct pipe_context *pipe = This->base.device->pipe; struct nine_shader_variant *var = &This->variant; struct nine_shader_variant_so *var_so = &This->variant_so; do { if (var->cso) { if (This->base.device->state.cso.vs == var->cso) pipe->bind_vs_state(pipe, NULL); pipe->delete_vs_state(pipe, var->cso); } var = var->next; } while (var); while (var_so && var_so->vdecl) { if (var_so->cso) { cso_delete_vertex_shader(This->base.device->cso_sw, var_so->cso ); } var_so = var_so->next; } if (This->ff_cso) { if (This->ff_cso == This->base.device->state.cso.vs) pipe->bind_vs_state(pipe, NULL); pipe->delete_vs_state(pipe, This->ff_cso); } } nine_shader_variants_free(&This->variant); nine_shader_variants_so_free(&This->variant_so); FREE((void *)This->byte_code.tokens); /* const_cast */ FREE(This->lconstf.data); FREE(This->lconstf.ranges); NineUnknown_dtor(&This->base); }