[Mesa-dev] [PATCH] st/mesa: Fix an incorrect user vertex buffer reference

José Fonseca jfonseca at vmware.com
Mon Mar 7 04:25:12 PST 2011


Nice catch.

Jose

On Mon, 2011-03-07 at 02:24 -0800, Thomas Hellstrom wrote:
> st->user_vb[attr] was always pointing to the same user vb, regardless
> of the value of attr. Together with reverting the temporary workaround
> for bug 34378, and a fix in the svga driver, this fixes googleearth on svga.
> 
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> ---
>  src/mesa/state_tracker/st_draw.c |    6 ++----
>  1 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
> index d6e67b7..40afa43 100644
> --- a/src/mesa/state_tracker/st_draw.c
> +++ b/src/mesa/state_tracker/st_draw.c
> @@ -429,7 +429,7 @@ setup_non_interleaved_attribs(struct gl_context *ctx,
>           vbuffer[attr].buffer_offset = 0;
>  
>           /* Track user vertex buffers. */
> -         pipe_resource_reference(&st->user_vb[attr], vbuffer->buffer);
> +         pipe_resource_reference(&st->user_vb[attr], vbuffer[attr].buffer);
>           st->user_vb_stride[attr] = stride;
>           st->num_user_vbs = MAX2(st->num_user_vbs, attr+1);
>        }
> @@ -632,10 +632,8 @@ st_draw_vbo(struct gl_context *ctx,
>     struct pipe_index_buffer ibuffer;
>     struct pipe_draw_info info;
>     unsigned i, num_instances = 1;
> -   GLboolean new_array = GL_TRUE;
> -   /* Fix this (Bug 34378):
>     GLboolean new_array =
> -         st->dirty.st && (st->dirty.mesa & (_NEW_ARRAY | _NEW_PROGRAM)) != 0;*/
> +         st->dirty.st && (st->dirty.mesa & (_NEW_ARRAY | _NEW_PROGRAM)) != 0;
>  
>     /* Mesa core state should have been validated already */
>     assert(ctx->NewState == 0x0);




More information about the mesa-dev mailing list