- switch( prog->Target ) {
- case GL_VERTEX_PROGRAM_ARB:
- {
- struct st_vertex_program *stvp = (struct st_vertex_program *) prog;
- st_release_vp_variants( st, stvp );
-
- if (stvp->glsl_to_tgsi)
- free_glsl_to_tgsi_visitor(stvp->glsl_to_tgsi);
- }
- break;
- case MESA_GEOMETRY_PROGRAM:
- {
- struct st_geometry_program *stgp =
- (struct st_geometry_program *) prog;
-
- st_release_gp_variants(st, stgp);
-
- if (stgp->glsl_to_tgsi)
- free_glsl_to_tgsi_visitor(stgp->glsl_to_tgsi);
-
- if (stgp->tgsi.tokens) {
- st_free_tokens((void *) stgp->tgsi.tokens);
- stgp->tgsi.tokens = NULL;
- }
- }
- break;
- case GL_FRAGMENT_PROGRAM_ARB:
- {
- struct st_fragment_program *stfp =
- (struct st_fragment_program *) prog;
-
- st_release_fp_variants(st, stfp);
-
- if (stfp->glsl_to_tgsi)
- free_glsl_to_tgsi_visitor(stfp->glsl_to_tgsi);
- }
- break;
- default:
- assert(0); /* problem */
- }