Mesa (master): r300g: fixup 0 stride buffer properly.

Dave Airlie airlied at kemper.freedesktop.org
Sun Apr 18 08:54:10 UTC 2010


Module: Mesa
Branch: master
Commit: 851edfe3c9d24d2678a17a8fc74c31fbea0343c2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=851edfe3c9d24d2678a17a8fc74c31fbea0343c2

Author: Dave Airlie <airlied at redhat.com>
Date:   Sun Apr 18 18:49:27 2010 +1000

r300g: fixup 0 stride buffer properly.

Just set the max index to 1, this lets doom3 run and seems correct,
though it would be better to just emit a constant like SVGA does.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/r300/r300_state.c |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 371e52d..1c31826 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -1192,14 +1192,13 @@ static void r300_set_vertex_buffers(struct pipe_context* pipe,
         }
 
         if (vbo->max_index == ~0) {
-            /* Bogus value from broken state tracker; hax it. */
-	    /* TODO - more hax - fixes doom3 from almos on irc */
-	    if (!vbo->stride) {
-		fprintf(stderr, "r300: got a VBO with stride 0 fixing up to stide 4\n");
-		vbo->stride = 4;
-	    }
-            vbo->max_index =
-                (vbo->buffer->width0 - vbo->buffer_offset) / vbo->stride;
+	    /* if no VBO stride then only one vertex value so max index is 1 */
+	    /* should think about converting to VS constants like svga does */
+	    if (!vbo->stride)
+		vbo->max_index = 1;
+ 	    else
+            	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