static void d3d9_cg_deinit_progs(void *data) { unsigned i; cg_renderchain_t *cg_data = (cg_renderchain_t*)data; if (!cg_data) return; RARCH_LOG("CG: Destroying programs.\n"); if (cg_data->passes.size() >= 1) { d3d_vertex_buffer_free(NULL, cg_data->passes[0].vertex_decl); for (i = 1; i < cg_data->passes.size(); i++) { if (cg_data->passes[i].tex) d3d_texture_free(cg_data->passes[i].tex); cg_data->passes[i].tex = NULL; d3d_vertex_buffer_free(cg_data->passes[i].vertex_buf, cg_data->passes[i].vertex_decl); if (cg_data->passes[i].fPrg) cgDestroyProgram(cg_data->passes[i].fPrg); if (cg_data->passes[i].vPrg) cgDestroyProgram(cg_data->passes[i].vPrg); } } if (cg_data->fStock) cgDestroyProgram(cg_data->fStock); if (cg_data->vStock) cgDestroyProgram(cg_data->vStock); }
static void d3d9_cg_destroy_resources(void *data) { unsigned i; cg_renderchain_t *cg_data = (cg_renderchain_t*)data; for (i = 0; i < TEXTURES; i++) { if (cg_data->prev.tex[i]) d3d_texture_free(cg_data->prev.tex[i]); if (cg_data->prev.vertex_buf[i]) d3d_vertex_buffer_free(cg_data->prev.vertex_buf[i], NULL); } d3d9_cg_deinit_progs(cg_data); for (i = 0; i < cg_data->luts.size(); i++) { if (cg_data->luts[i].tex) d3d_texture_free(cg_data->luts[i].tex); } cg_data->luts.clear(); if (cg_data->state_tracker) { state_tracker_free(cg_data->state_tracker); cg_data->state_tracker = NULL; } cgD3D9UnloadAllPrograms(); cgD3D9SetDevice(NULL); }
static void xdk_renderchain_clear(void *data) { xdk_renderchain_t *chain = (xdk_renderchain_t*)data; d3d_texture_free(chain->tex); d3d_vertex_buffer_free(chain->vertex_buf, chain->vertex_decl); }
static void cg_d3d9_renderchain_clear(cg_renderchain_t *chain) { unsigned i; for (i = 0; i < TEXTURES; i++) { if (chain->prev.tex[i]) d3d_texture_free(chain->prev.tex[i]); if (chain->prev.vertex_buf[i]) d3d_vertex_buffer_free(chain->prev.vertex_buf[i], NULL); } cg_d3d9_renderchain_clear_passes(chain); for (i = 0; i < chain->luts.size(); i++) { if (chain->luts[i].tex) d3d_texture_free(chain->luts[i].tex); } #if 0 if (chain->tracker) state_tracker_free(chain->tracker); chain->tracker = NULL; #endif chain->luts.clear(); }
static void d3d_free_overlay(d3d_video_t *d3d, overlay_t *overlay) { if (!d3d) return; d3d_texture_free(overlay->tex); d3d_vertex_buffer_free(overlay->vert_buf, NULL); }
static void cg_d3d9_renderchain_clear_passes(cg_renderchain_t *chain) { unsigned i; if (chain->passes.size() == 0) return; d3d_vertex_buffer_free(NULL, chain->passes[0].vertex_decl); for (i = 1; i < chain->passes.size(); i++) { if (chain->passes[i].tex) d3d_texture_free(chain->passes[i].tex); chain->passes[i].tex = NULL; d3d_vertex_buffer_free(chain->passes[i].vertex_buf, chain->passes[i].vertex_decl); renderchain_destroy_shader(chain, i); } }
static void d3d_free_overlay(void *data, overlay_t *overlay) { d3d_video_t *d3d = (d3d_video_t*)data; if (!d3d) return; d3d_texture_free(overlay->tex); d3d_vertex_buffer_free(overlay->vert_buf); }