Mesa (master): r300g: fix draw_vbo splitting on r3xx-r4xx
Marek Olšák
mareko at kemper.freedesktop.org
Wed Jun 8 23:26:59 UTC 2011
Module: Mesa
Branch: master
Commit: 578d4539ba72a9f52e0cb3f615bb04bf9407b574
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=578d4539ba72a9f52e0cb3f615bb04bf9407b574
Author: Marek Olšák <maraeo at gmail.com>
Date: Thu Jun 9 00:50:29 2011 +0200
r300g: fix draw_vbo splitting on r3xx-r4xx
NOTE: This is a candidate for the 7.10 branch.
---
src/gallium/drivers/r300/r300_render.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index 479503f..d9399d7 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -673,10 +673,11 @@ static void r300_draw_elements(struct r300_context *r300,
indices3);
} else {
do {
- if (indexSize == 2 && (start & 1))
- short_count = MIN2(count, 65535);
- else
- short_count = MIN2(count, 65534);
+ /* The maximum must be divisible by 4 and 3,
+ * so that quad and triangle lists are split correctly.
+ *
+ * Strips, loops, and fans won't work. */
+ short_count = MIN2(count, 65532);
r300_emit_draw_elements(r300, indexBuffer, indexSize,
info->min_index, info->max_index,
@@ -722,7 +723,11 @@ static void r300_draw_arrays(struct r300_context *r300,
r300_emit_draw_arrays(r300, info->mode, count);
} else {
do {
- short_count = MIN2(count, 65535);
+ /* The maximum must be divisible by 4 and 3,
+ * so that quad and triangle lists are split correctly.
+ *
+ * Strips, loops, and fans won't work. */
+ short_count = MIN2(count, 65532);
r300_emit_draw_arrays(r300, info->mode, short_count);
start += short_count;
More information about the mesa-commit
mailing list