Mesa (primitive-restart): draw: restructure code in draw_pt_arrays_restart( )
Brian Paul
brianp at kemper.freedesktop.org
Tue Jul 20 15:08:04 UTC 2010
Module: Mesa
Branch: primitive-restart
Commit: d1ea952e42e1082f2098264ddcd115024e552587
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1ea952e42e1082f2098264ddcd115024e552587
Author: Brian Paul <brianp at vmware.com>
Date: Tue Jul 20 09:07:51 2010 -0600
draw: restructure code in draw_pt_arrays_restart()
---
src/gallium/auxiliary/draw/draw_pt.c | 62 +++++++++++++++++-----------------
1 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c
index 9ebda72..0b04b22 100644
--- a/src/gallium/auxiliary/draw/draw_pt.c
+++ b/src/gallium/auxiliary/draw/draw_pt.c
@@ -321,7 +321,7 @@ draw_print_arrays(struct draw_context *draw, uint prim, int start, uint count)
/**
* For drawing prims with primitive restart enabled.
- * Scan for restart indexes and draw the runs of elements between
+ * Scan for restart indexes and draw the runs of elements/vertices between
* the restarts.
*/
static void
@@ -333,8 +333,36 @@ draw_pt_arrays_restart(struct draw_context *draw, unsigned prim,
assert(draw->primitive_restart);
- /* non-indexed prims */
- if (!draw->pt.user.elts) {
+ if (draw->pt.user.elts) {
+ /* indexed prims (draw_elements) */
+ cur_start = start;
+ cur_count = 0;
+
+ switch (draw->pt.user.eltSize) {
+ case 1:
+ {
+ const ubyte *elt_ub = (const ubyte *) draw->pt.user.elts;
+ PRIM_RESTART_LOOP(elt_ub);
+ }
+ break;
+ case 2:
+ {
+ const ushort *elt_us = (const ushort *) draw->pt.user.elts;
+ PRIM_RESTART_LOOP(elt_us);
+ }
+ break;
+ case 4:
+ {
+ const uint *elt_ui = (const uint *) draw->pt.user.elts;
+ PRIM_RESTART_LOOP(elt_ui);
+ }
+ break;
+ default:
+ assert(0 && "bad eltSize in draw_arrays()");
+ }
+ }
+ else {
+ /* non-indexed prims (draw_arrays) */
cur_start = start;
/* there may be two runs of elements */
@@ -349,34 +377,6 @@ draw_pt_arrays_restart(struct draw_context *draw, unsigned prim,
cur_count = end - cur_start;
if (cur_count > 0)
draw_pt_arrays(draw, prim, cur_start, cur_count);
-
- return;
- }
-
- cur_start = start;
- cur_count = 0;
- switch (draw->pt.user.eltSize) {
- case 1:
- {
- const ubyte *elt_ub = (const ubyte *) draw->pt.user.elts;
- PRIM_RESTART_LOOP(elt_ub);
- }
- break;
- case 2:
- {
- const ushort *elt_us = (const ushort *) draw->pt.user.elts;
- PRIM_RESTART_LOOP(elt_us);
- }
- break;
- case 4:
- {
- const uint *elt_ui = (const uint *) draw->pt.user.elts;
- PRIM_RESTART_LOOP(elt_ui);
- }
- break;
- default:
- assert(0 && "bad eltSize in draw_arrays()");
- return;
}
}
More information about the mesa-commit
mailing list