gallium/tgsi: add helper tgsi_get_interp_mode
[mesa.git] / src / mesa / state_tracker / st_cb_program.c
index 37674c3edeaf52692c9a13d80ea2f0e5b7aee4be..f01e1374ebf1ee31490ac739d766588f22fd183e 100644 (file)
  * fragment program.
  */
 static struct gl_program *
-st_new_program(struct gl_context *ctx, GLenum target, GLuint id,
+st_new_program(struct gl_context *ctx, gl_shader_stage stage, GLuint id,
                bool is_arb_asm)
 {
-   switch (target) {
-   case GL_VERTEX_PROGRAM_ARB: {
-      struct st_vertex_program *prog = rzalloc(NULL, struct st_vertex_program);
-      return _mesa_init_gl_program(&prog->Base.Base, target, id, is_arb_asm);
-   }
-   case GL_TESS_CONTROL_PROGRAM_NV:
-   case GL_TESS_EVALUATION_PROGRAM_NV:
-   case GL_GEOMETRY_PROGRAM_NV:
-   case GL_FRAGMENT_PROGRAM_ARB:
-   case GL_COMPUTE_PROGRAM_NV: {
-      struct st_program *prog = rzalloc(NULL, struct st_program);
-      return _mesa_init_gl_program(&prog->Base, target, id, is_arb_asm);
-   }
+   struct st_program *prog;
+
+   switch (stage) {
+   case MESA_SHADER_VERTEX:
+      prog = (struct st_program*)rzalloc(NULL, struct st_vertex_program);
+      break;
    default:
-      assert(0);
-      return NULL;
+      prog = rzalloc(NULL, struct st_program);
+      break;
    }
+
+   return _mesa_init_gl_program(&prog->Base, stage, id, is_arb_asm);
 }
 
 
@@ -146,7 +141,7 @@ st_program_string_notify( struct gl_context *ctx,
 static struct gl_program *
 st_new_ati_fs(struct gl_context *ctx, struct ati_fragment_shader *curProg)
 {
-   struct gl_program *prog = ctx->Driver.NewProgram(ctx, GL_FRAGMENT_PROGRAM_ARB,
+   struct gl_program *prog = ctx->Driver.NewProgram(ctx, MESA_SHADER_FRAGMENT,
          curProg->Id, true);
    struct st_program *stfp = (struct st_program *)prog;
    stfp->ati_fs = curProg;