void st_destroy_pbo_helpers(struct st_context *st) { unsigned i; if (st->pbo.upload_fs) { cso_delete_fragment_shader(st->cso_context, st->pbo.upload_fs); st->pbo.upload_fs = NULL; } for (i = 0; i < ARRAY_SIZE(st->pbo.download_fs); ++i) { if (st->pbo.download_fs[i]) { cso_delete_fragment_shader(st->cso_context, st->pbo.download_fs[i]); st->pbo.download_fs[i] = NULL; } } if (st->pbo.gs) { cso_delete_geometry_shader(st->cso_context, st->pbo.gs); st->pbo.gs = NULL; } if (st->pbo.vs) { cso_delete_vertex_shader(st->cso_context, st->pbo.vs); st->pbo.vs = NULL; } }
/** * Delete a geometry program variant. Note the caller must unlink * the variant from the linked list. */ static void delete_gp_variant(struct st_context *st, struct st_gp_variant *gpv) { if (gpv->driver_shader) cso_delete_geometry_shader(st->cso_context, gpv->driver_shader); free(gpv); }
/** * Free per-context state for glClear. */ void st_destroy_clear(struct st_context *st) { if (st->clear.fs) { cso_delete_fragment_shader(st->cso_context, st->clear.fs); st->clear.fs = NULL; } if (st->clear.vs) { cso_delete_vertex_shader(st->cso_context, st->clear.vs); st->clear.vs = NULL; } if (st->clear.vs_layered) { cso_delete_vertex_shader(st->cso_context, st->clear.vs_layered); st->clear.vs_layered = NULL; } if (st->clear.gs_layered) { cso_delete_geometry_shader(st->cso_context, st->clear.gs_layered); st->clear.gs_layered = NULL; } }