From 4523285e518702ac9be839851765d8d0d2461eca Mon Sep 17 00:00:00 2001 From: Alex Deucher Date: Sun, 12 Dec 2010 22:44:53 -0500 Subject: r600g: fix rendering with a vertex attrib having a zero stride The hardware supports zero stride just fine. This is a port of 2af8a1983180fc0168c1e0e53bcc69ee3d684ea4 from r300g. NOTE: This is a candidate for both the 7.9 and 7.10 branches. Signed-off-by: Alex Deucher --- src/gallium/drivers/r600/r600_state_common.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index c647e77b373..1333808c66f 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -187,11 +187,13 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, rctx->any_user_vbs = TRUE; pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer); + /* The stride of zero means we will be fetching only the first + * vertex, so don't care about max_index. */ + if (!vbo->stride) + continue; + if (vbo->max_index == ~0) { - if (!vbo->stride) - vbo->max_index = 1; - else - vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride; + vbo->max_index = (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride; } max_index = MIN2(vbo->max_index, max_index); } -- cgit v1.2.3