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

Reply via email to