st/mesa: Fix an incorrect user vertex buffer reference
authorThomas Hellstrom <thellstrom@vmware.com>
Mon, 7 Mar 2011 10:24:43 +0000 (11:24 +0100)
committerMarek Olšák <maraeo@gmail.com>
Tue, 8 Mar 2011 21:15:50 +0000 (22:15 +0100)
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@vmware.com>
src/mesa/state_tracker/st_draw.c

index d6e67b7fb85f2a3ba7f7c7e394230c985bddd4f9..40afa4362922494e3d54dc57f2f8e5c7b7d07763 100644 (file)
@@ -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);