r300g: hack around issue with doom3 and 0 stride
authorDave Airlie <airlied@redhat.com>
Sat, 10 Apr 2010 22:04:37 +0000 (08:04 +1000)
committerDave Airlie <airlied@redhat.com>
Sat, 10 Apr 2010 22:08:49 +0000 (08:08 +1000)
This is most likely a bug in the mesa state tracker, but do the quick hack
for now to avoid the divide by 0.

reported and hack generated by almos on #radeon

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r300/r300_state.c

index 52b89104b99935bfbd4773b22de1ccb37add81ac..30f1df7bf663a186ed7c7eecf9c72a91bb86355a 100644 (file)
@@ -1146,6 +1146,11 @@ 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;
         }