mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
draw: fix primitive restart bug by using the index buffer offset
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.
This commit is contained in:
parent
93ea5cd80b
commit
1609efb418
1 changed files with 6 additions and 3 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue