Mesa (master): st/mesa: improved draw_range_elements code
Brian Paul
brianp at kemper.freedesktop.org
Fri Feb 12 22:46:30 UTC 2010
Module: Mesa
Branch: master
Commit: ff37205f93eaf888e12c6587b8c7cd17d890c4e0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff37205f93eaf888e12c6587b8c7cd17d890c4e0
Author: Brian Paul <brianp at vmware.com>
Date: Fri Feb 12 15:40:57 2010 -0700
st/mesa: improved draw_range_elements code
Don't use pipe->draw_range_elements() if min_index=max_index=~0 since
that doesn't provide any useful info.
Also, implement the loop around pipe->draw_range_elements() when
nr_prims > 1.
---
src/mesa/state_tracker/st_draw.c | 16 +++++++---------
1 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index e1dcb15..34df4d4 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -645,20 +645,18 @@ st_draw_vbo(GLcontext *ctx,
}
/* draw */
- if (nr_prims == 1 && pipe->draw_range_elements != NULL) {
- i = 0;
-
+ if (pipe->draw_range_elements && min_index != ~0 && max_index != ~0) {
/* XXX: exercise temporary path to pass min/max directly
* through to driver & draw module. These interfaces still
* need a bit of work...
*/
- prim = translate_prim( ctx, prims[i].mode );
+ for (i = 0; i < nr_prims; i++) {
+ prim = translate_prim( ctx, prims[i].mode );
- pipe->draw_range_elements(pipe, indexBuf, indexSize,
- min_index,
- max_index,
- prim,
- prims[i].start + indexOffset, prims[i].count);
+ pipe->draw_range_elements(pipe, indexBuf, indexSize,
+ min_index, max_index, prim,
+ prims[i].start + indexOffset, prims[i].count);
+ }
}
else {
for (i = 0; i < nr_prims; i++) {
More information about the mesa-commit
mailing list