summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/vbo/vbo_exec.h7
-rw-r--r--src/mesa/vbo/vbo_exec_array.c6
-rw-r--r--src/mesa/vbo/vbo_exec_draw.c7
-rw-r--r--src/mesa/vbo/vbo_private.h22
-rw-r--r--src/mesa/vbo/vbo_save_draw.c7
5 files changed, 27 insertions, 22 deletions
diff --git a/src/mesa/vbo/vbo_exec.h b/src/mesa/vbo/vbo_exec.h
index f1e3881b1f9..f02f4591fcc 100644
--- a/src/mesa/vbo/vbo_exec.h
+++ b/src/mesa/vbo/vbo_exec.h
@@ -52,13 +52,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#define VBO_VERT_BUFFER_SIZE (1024*64) /* bytes */
-/** Current vertex program mode */
-enum vp_mode {
- VP_NONE, /**< fixed function */
- VP_ARB /**< ARB vertex program or GLSL vertex shader */
-};
-
-
struct vbo_exec_eval1_map {
struct gl_1d_map *map;
GLuint sz;
diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
index d990fdf7a8d..b11da09dd1c 100644
--- a/src/mesa/vbo/vbo_exec_array.c
+++ b/src/mesa/vbo/vbo_exec_array.c
@@ -319,8 +319,8 @@ recalculate_input_bindings(struct gl_context *ctx)
GLbitfield const_inputs = 0x0;
GLuint i;
- switch (get_program_mode(ctx)) {
- case VP_NONE:
+ switch (get_vp_mode(ctx)) {
+ case VP_FF:
/* When no vertex program is active (or the vertex program is generated
* from fixed-function state). We put the material values into the
* generic slots. This is the only situation where material values
@@ -351,7 +351,7 @@ recalculate_input_bindings(struct gl_context *ctx)
}
break;
- case VP_ARB:
+ case VP_SHADER:
/* There are no shaders in OpenGL ES 1.x, so this code path should be
* impossible to reach. The meta code is careful to not use shaders in
* ES1.
diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c
index 653a05ad0f4..5cea7fe8793 100644
--- a/src/mesa/vbo/vbo_exec_draw.c
+++ b/src/mesa/vbo/vbo_exec_draw.c
@@ -185,8 +185,9 @@ vbo_exec_bind_arrays(struct gl_context *ctx)
}
/* Overlay other active attributes */
- switch (get_program_mode(exec->ctx)) {
- case VP_NONE:
+ switch (get_vp_mode(exec->ctx)) {
+ case VP_FF:
+ /* Point the generic attributes at the legacy material values */
for (attr = 0; attr < MAT_ATTRIB_MAX; attr++) {
assert(VERT_ATTRIB_GENERIC(attr) < ARRAY_SIZE(exec->vtx.inputs));
exec->vtx.inputs[VERT_ATTRIB_GENERIC(attr)] =
@@ -194,7 +195,7 @@ vbo_exec_bind_arrays(struct gl_context *ctx)
}
map = vbo->map_vp_none;
break;
- case VP_ARB:
+ case VP_SHADER:
for (attr = 0; attr < VERT_ATTRIB_GENERIC_MAX; attr++) {
assert(VERT_ATTRIB_GENERIC(attr) < ARRAY_SIZE(exec->vtx.inputs));
exec->vtx.inputs[VERT_ATTRIB_GENERIC(attr)] =
diff --git a/src/mesa/vbo/vbo_private.h b/src/mesa/vbo/vbo_private.h
index 353525644a7..d78593c7fa2 100644
--- a/src/mesa/vbo/vbo_private.h
+++ b/src/mesa/vbo/vbo_private.h
@@ -73,18 +73,28 @@ vbo_context(struct gl_context *ctx)
/**
- * Return VP_x token to indicate whether we're running fixed-function
- * vertex transformation, an NV vertex program or ARB vertex program/shader.
+ * Current vertex processing mode: fixed function vs. shader.
+ * In reality, fixed function is probably implemented by a shader but that's
+ * not what we care about here.
+ */
+enum vp_mode {
+ VP_FF, /**< legacy / fixed function */
+ VP_SHADER /**< ARB vertex program or GLSL vertex shader */
+};
+
+
+/**
+ * Get current vertex processing mode (fixed function vs. shader).
*/
static inline enum vp_mode
-get_program_mode( struct gl_context *ctx )
+get_vp_mode( struct gl_context *ctx )
{
if (!ctx->VertexProgram._Current)
- return VP_NONE;
+ return VP_FF;
else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram)
- return VP_NONE;
+ return VP_FF;
else
- return VP_ARB;
+ return VP_SHADER;
}
diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c
index 8cfe10bdc55..60405d54ead 100644
--- a/src/mesa/vbo/vbo_save_draw.c
+++ b/src/mesa/vbo/vbo_save_draw.c
@@ -164,15 +164,16 @@ bind_vertex_list(struct gl_context *ctx,
}
/* Overlay other active attributes */
- switch (get_program_mode(ctx)) {
- case VP_NONE:
+ switch (get_vp_mode(ctx)) {
+ case VP_FF:
+ /* Point the generic attributes at the legacy material values */
for (attr = 0; attr < MAT_ATTRIB_MAX; attr++) {
save->inputs[VERT_ATTRIB_GENERIC(attr)] =
&vbo->currval[VBO_ATTRIB_MAT_FRONT_AMBIENT+attr];
}
map = vbo->map_vp_none;
break;
- case VP_ARB:
+ case VP_SHADER:
for (attr = 0; attr < VERT_ATTRIB_GENERIC_MAX; attr++) {
save->inputs[VERT_ATTRIB_GENERIC(attr)] =
&vbo->currval[VBO_ATTRIB_GENERIC0+attr];