Setting constant vertex attributes with glDrawArrays() doesn't work right because the last attribute isn't copied to ctx->Current. Typically, only the last attribute doesn't get set, since vbo_exec_wrap_upgrade_vertex() ends up getting called when setting a new attribute, and it will copy all previously set attributes to Current. --- src/mesa/vbo/vbo_exec_api.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
I'm not too familiar with this code, so I'd appreciate if somebody who knows the vbo code better could take a quick look. Kristian diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 9df75a8..90c3dd4 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -359,6 +359,9 @@ static void vbo_exec_fixup_vertex( GLcontext *ctx, do { \ struct vbo_exec_context *exec = &vbo_context(ctx)->exec; \ \ + /* FLUSH_UPDATE_CURRENT needs to be set manually */ \ + exec->ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ + \ if (exec->vtx.active_sz[A] != N) \ vbo_exec_fixup_vertex(ctx, A, N); \ \ -- 1.7.2.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev