Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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();
}
Пример #5
0
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);
}
Пример #6
0
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);
   }
}
Пример #7
0
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);
}