[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