- switch (target) {
- case GL_VERTEX_PROGRAM_ARB: {
- struct st_vertex_program *prog = ST_CALLOC_STRUCT(st_vertex_program);
- return _mesa_init_gl_program(&prog->Base.Base, target, id);
- }
- case GL_FRAGMENT_PROGRAM_ARB: {
- struct st_fragment_program *prog = ST_CALLOC_STRUCT(st_fragment_program);
- return _mesa_init_gl_program(&prog->Base.Base, target, id);
- }
- case GL_GEOMETRY_PROGRAM_NV: {
- struct st_geometry_program *prog = ST_CALLOC_STRUCT(st_geometry_program);
- return _mesa_init_gl_program(&prog->Base.Base, target, id);
- }
- case GL_TESS_CONTROL_PROGRAM_NV: {
- struct st_tessctrl_program *prog = ST_CALLOC_STRUCT(st_tessctrl_program);
- return _mesa_init_gl_program(&prog->Base, target, id);
- }
- case GL_TESS_EVALUATION_PROGRAM_NV: {
- struct st_tesseval_program *prog = ST_CALLOC_STRUCT(st_tesseval_program);
- return _mesa_init_gl_program(&prog->Base.Base, target, id);
- }
- case GL_COMPUTE_PROGRAM_NV: {
- struct st_compute_program *prog = ST_CALLOC_STRUCT(st_compute_program);
- return _mesa_init_gl_program(&prog->Base.Base, target, id);
- }
+ struct st_program *prog;
+
+ switch (stage) {
+ case MESA_SHADER_VERTEX:
+ prog = (struct st_program*)rzalloc(NULL, struct st_vertex_program);
+ break;