const struct _mesa_index_buffer *ib;
GLuint min_index;
GLuint max_index;
+ GLuint num_instances;
+ GLuint base_instance;
tnl_draw_func draw;
const struct split_limits *limits;
ib.count = split->max_index - split->min_index + 1;
ib.ptr = (const void *)((const char *)ib.ptr +
- split->min_index * ib.index_size);
+ (split->min_index << ib.index_size_shift));
/* Rebase the primitives to save index buffer entries. */
for (i = 0; i < split->dstprim_nr; i++)
!split->ib,
split->min_index,
split->max_index,
- NULL, 0, NULL);
+ split->num_instances,
+ split->base_instance);
split->dstprim_nr = 0;
split->min_index = ~0;
outprim->end = (nr == remaining && prim->end);
outprim->start = prim->start + j;
outprim->count = nr;
- outprim->num_instances = prim->num_instances;
- outprim->base_instance = prim->base_instance;
update_index_bounds(split, outprim);
elts[j] = prim->start + j;
ib.count = count;
- ib.index_size = 4;
- ib.obj = split->ctx->Shared->NullBufferObj;
+ ib.index_size_shift = 2;
+ ib.obj = NULL;
ib.ptr = elts;
tmpprim = *prim;
- tmpprim.indexed = 1;
tmpprim.start = 0;
tmpprim.count = count;
- tmpprim.num_instances = 1;
- tmpprim.base_instance = 0;
flush_vertex(split);
const struct _mesa_prim *prim,
GLuint nr_prims,
const struct _mesa_index_buffer *ib,
- GLuint min_index,
- GLuint max_index,
+ GLuint num_instances,
+ GLuint base_instance,
tnl_draw_func draw,
const struct split_limits *limits)
{
/* Empty interval, makes calculations simpler. */
split.min_index = ~0;
split.max_index = 0;
+ split.num_instances = num_instances;
+ split.base_instance = base_instance;
split.draw = draw;
split.limits = limits;
split_prims(&split);
}
-
-