summaryrefslogtreecommitdiffstats
path: root/src/mesa/program
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/program')
-rw-r--r--src/mesa/program/ir_to_mesa.cpp17
-rw-r--r--src/mesa/program/program.h18
2 files changed, 19 insertions, 16 deletions
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 7988248bb83..f6c229c7dc5 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -2799,26 +2799,11 @@ get_mesa_program(struct gl_context *ctx,
ir_instruction **mesa_instruction_annotation;
int i;
struct gl_program *prog;
- GLenum target;
+ GLenum target = _mesa_shader_stage_to_program(shader->Stage);
const char *target_string = _mesa_shader_stage_to_string(shader->Stage);
struct gl_shader_compiler_options *options =
&ctx->ShaderCompilerOptions[shader->Stage];
- switch (shader->Stage) {
- case MESA_SHADER_VERTEX:
- target = GL_VERTEX_PROGRAM_ARB;
- break;
- case MESA_SHADER_FRAGMENT:
- target = GL_FRAGMENT_PROGRAM_ARB;
- break;
- case MESA_SHADER_GEOMETRY:
- target = GL_GEOMETRY_PROGRAM_NV;
- break;
- default:
- assert(!"should not be reached");
- return NULL;
- }
-
validate_ir_tree(shader->ir);
prog = ctx->Driver.NewProgram(ctx, target, shader_program->Name);
diff --git a/src/mesa/program/program.h b/src/mesa/program/program.h
index 4015b4c202b..0e350cd6f86 100644
--- a/src/mesa/program/program.h
+++ b/src/mesa/program/program.h
@@ -207,6 +207,24 @@ _mesa_program_enum_to_shader_stage(GLenum v)
}
}
+
+static inline GLenum
+_mesa_shader_stage_to_program(gl_shader_stage stage)
+{
+ switch (stage) {
+ case MESA_SHADER_VERTEX:
+ return GL_VERTEX_PROGRAM_ARB;
+ case MESA_SHADER_FRAGMENT:
+ return GL_FRAGMENT_PROGRAM_ARB;
+ case MESA_SHADER_GEOMETRY:
+ return GL_GEOMETRY_PROGRAM_NV;
+ }
+
+ assert(!"Unexpected shader stage in _mesa_shader_stage_to_program");
+ return GL_VERTEX_PROGRAM_ARB;
+}
+
+
static inline GLenum
_mesa_program_index_to_target(GLuint i)
{