Mesa (7.10): r600g: fix rendering with a vertex attrib having a zero stride

Alex Deucher agd5f at kemper.freedesktop.org
Wed Dec 29 16:25:00 UTC 2010


Module: Mesa
Branch: 7.10
Commit: 747279c21cabef8c55842d5b8ca04f0f63e53c2d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=747279c21cabef8c55842d5b8ca04f0f63e53c2d

Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Sun Dec 12 22:44:53 2010 -0500

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 <alexdeucher at gmail.com>

---

 src/gallium/drivers/r600/r600_state_common.c |   10 ++++++----
 1 files 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 c647e77..1333808 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);
 	}




More information about the mesa-commit mailing list