diff options
Diffstat (limited to 'mesalib/src/mesa/vbo')
-rw-r--r-- | mesalib/src/mesa/vbo/vbo.h | 1 | ||||
-rw-r--r-- | mesalib/src/mesa/vbo/vbo_exec_api.c | 3 | ||||
-rw-r--r-- | mesalib/src/mesa/vbo/vbo_exec_array.c | 13 |
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) |