[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