[Mesa-dev] [PATCH] vbo: Set FLUSH_UPDATE_CURRENT when setting vertex attibutes
keith whitwell
keith.whitwell at gmail.com
Mon Sep 13 15:26:14 PDT 2010
Hey Kristian,
The first question is whether this is necessary - from vague memory I
have an idea that current attributes need not be updated by vertex
buffer rendering - ie. it's optional/implementation-dependent.
I assume you're concerned with the case where you have something like
// ctx->Current.Color is xyz
glDrawArrays();
// has ctx->Current.Color been updated??
But assuming I'm wrong about that & we really do want to make
DrawArrays set the current values, the patch looks good...
Keith
2010/9/13 Kristian Høgsberg <krh at bitplanet.net>:
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list