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