The code which scans the index buffer for restart indexes wasn't adding the index buffer offset so we were always starting at offset=0. The offset is usually zero so it wasn't noticed before.
Fixes a failure in the piglit primitive-restart test when testing vertex data + index data in a single VBO. NOTE: This is a candidate for the 8.0 branch. --- src/gallium/auxiliary/draw/draw_pt.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index dbe5e94..2c4edc0 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -368,25 +368,28 @@ draw_pt_arrays_restart(struct draw_context *draw, if (draw->pt.user.elts) { /* indexed prims (draw_elements) */ + const char *elts = + (const char *) draw->pt.user.elts + draw->pt.index_buffer.offset; + cur_start = start; cur_count = 0; switch (draw->pt.user.eltSize) { case 1: { - const ubyte *elt_ub = (const ubyte *) draw->pt.user.elts; + const ubyte *elt_ub = (const ubyte *) elts; PRIM_RESTART_LOOP(elt_ub); } break; case 2: { - const ushort *elt_us = (const ushort *) draw->pt.user.elts; + const ushort *elt_us = (const ushort *) elts; PRIM_RESTART_LOOP(elt_us); } break; case 4: { - const uint *elt_ui = (const uint *) draw->pt.user.elts; + const uint *elt_ui = (const uint *) elts; PRIM_RESTART_LOOP(elt_ui); } break; -- 1.7.3.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev