[Mesa-dev] [PATCH] vbo: Set FLUSH_UPDATE_CURRENT when setting vertex attibutes

Kristian Høgsberg krh at bitplanet.net
Mon Sep 13 09:00:59 PDT 2010


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



More information about the mesa-dev mailing list