st/mesa: fix all_varyings_in_vbos() regression

Fixes regression from d631c19db4.
See http://bugs.freedesktop.org/show_bug.cgi?id=38626
This commit is contained in:
Brian Paul 2011-06-24 10:41:42 -06:00
parent c0c0bb6cb1
commit d91dc4a356

View file

@ -233,6 +233,22 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
}
/**
* This is very similar to vbo_all_varyings_in_vbos() but we test
* the stride. See bug 38626.
*/
static GLboolean
all_varyings_in_vbos(const struct gl_client_array *arrays[])
{
GLuint i;
for (i = 0; i < VERT_ATTRIB_MAX; i++)
if (arrays[i]->StrideB && !_mesa_is_bufferobj(arrays[i]->BufferObj))
return GL_FALSE;
return GL_TRUE;
}
/**
* Examine the active arrays to determine if we have interleaved
@ -648,7 +664,7 @@ st_draw_vbo(struct gl_context *ctx,
if (ib) {
/* Gallium probably doesn't want this in some cases. */
if (!index_bounds_valid)
if (!vbo_all_varyings_in_vbos(arrays))
if (!all_varyings_in_vbos(arrays))
vbo_get_minmax_index(ctx, prims, ib, &min_index, &max_index);
for (i = 0; i < nr_prims; i++) {