aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/vbo
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/mesa/vbo')
-rw-r--r--mesalib/src/mesa/vbo/vbo.h1
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_api.c3
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_array.c13
3 files changed, 11 insertions, 6 deletions
diff --git a/mesalib/src/mesa/vbo/vbo.h b/mesalib/src/mesa/vbo/vbo.h
index 26c3d4e0a..9fbb07f3d 100644
--- a/mesalib/src/mesa/vbo/vbo.h
+++ b/mesalib/src/mesa/vbo/vbo.h
@@ -133,6 +133,7 @@ void vbo_set_draw_func(struct gl_context *ctx, vbo_draw_func func);
void vbo_check_buffers_are_unmapped(struct gl_context *ctx);
+void vbo_bind_arrays(struct gl_context *ctx);
void GLAPIENTRY
_es_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a);
diff --git a/mesalib/src/mesa/vbo/vbo_exec_api.c b/mesalib/src/mesa/vbo/vbo_exec_api.c
index 150589bec..5f3ed9d5d 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_api.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_api.c
@@ -570,6 +570,9 @@ static void GLAPIENTRY vbo_exec_Begin( GLenum mode )
return;
}
+ if (ctx->Driver.PrepareExecBegin)
+ ctx->Driver.PrepareExecBegin(ctx);
+
if (ctx->NewState) {
_mesa_update_state( ctx );
diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c
index 18719d5f5..4e4f2c947 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_array.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_array.c
@@ -538,7 +538,7 @@ recalculate_input_bindings(struct gl_context *ctx)
}
}
- for (i = 0; i < MAX_VERTEX_GENERIC_ATTRIBS; i++) {
+ for (i = 1; i < MAX_VERTEX_GENERIC_ATTRIBS; i++) {
if (exec->array.generic_array[i]->Enabled)
inputs[VERT_ATTRIB_GENERIC0 + i] = exec->array.generic_array[i];
else {
@@ -547,6 +547,7 @@ recalculate_input_bindings(struct gl_context *ctx)
}
}
+ inputs[VERT_ATTRIB_GENERIC0] = inputs[0];
ctx->NewState |= _NEW_ARRAY;
break;
}
@@ -562,8 +563,8 @@ recalculate_input_bindings(struct gl_context *ctx)
* Note that this might set the _NEW_ARRAY dirty flag so state validation
* must be done after this call.
*/
-static void
-bind_arrays(struct gl_context *ctx)
+void
+vbo_bind_arrays(struct gl_context *ctx)
{
if (!ctx->Array.RebindArrays) {
return;
@@ -589,7 +590,7 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,
struct vbo_exec_context *exec = &vbo->exec;
struct _mesa_prim prim[2];
- bind_arrays(ctx);
+ vbo_bind_arrays(ctx);
/* Again... because we may have changed the bitmask of per-vertex varying
* attributes. If we regenerate the fixed-function vertex program now
@@ -803,7 +804,7 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode,
return;
}
- bind_arrays( ctx );
+ vbo_bind_arrays( ctx );
/* check for dirty state again */
if (ctx->NewState)
@@ -1128,7 +1129,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
* same index buffer, or if we have to reset the index pointer per
* primitive.
*/
- bind_arrays( ctx );
+ vbo_bind_arrays( ctx );
/* check for dirty state again */
if (ctx->NewState)