#include "main/errors.h"
-#include "main/imports.h"
+#include "util/imports.h"
#include "main/image.h"
#include "main/bufferobj.h"
#include "main/macros.h"
if (ctx->Array._PrimitiveRestart) {
unsigned index_size = info->index_size;
- info->restart_index =
- _mesa_primitive_restart_index(ctx, index_size);
+ info->restart_index = ctx->Array._RestartIndex[index_size - 1];
/* Enable primitive restart only when the restart index can have an
* effect. This is required for correctness in radeonsi GFX8 support.
GLboolean index_bounds_valid,
GLuint min_index,
GLuint max_index,
+ GLuint num_instances,
+ GLuint base_instance,
struct gl_transform_feedback_object *tfb_vertcount,
unsigned stream)
{
info.indirect = NULL;
info.count_from_stream_output = NULL;
info.restart_index = 0;
+ info.start_instance = base_instance;
+ info.instance_count = num_instances;
if (ib) {
struct gl_buffer_object *bufobj = ib->obj;
nr_prims);
}
- info.index_size = ib->index_size;
+ info.index_size = 1 << ib->index_size_shift;
info.min_index = min_index;
info.max_index = max_index;
- if (_mesa_is_bufferobj(bufobj)) {
+ if (bufobj) {
/* indices are in a real VBO */
info.has_user_indices = false;
info.index.resource = st_buffer_object(bufobj)->buffer;
if (!info.index.resource)
return;
- start = pointer_to_offset(ib->ptr) / info.index_size;
+ start = pointer_to_offset(ib->ptr) >> ib->index_size_shift;
} else {
/* indices are in user space memory */
info.has_user_indices = true;
info.mode = translate_prim(ctx, prims[i].mode);
info.start = start + prims[i].start;
- info.start_instance = prims[i].base_instance;
- info.instance_count = prims[i].num_instances;
info.index_bias = prims[i].basevertex;
info.drawid = prims[i].draw_id;
if (!ib) {
struct gl_buffer_object *bufobj = ib->obj;
/* indices are always in a real VBO */
- assert(_mesa_is_bufferobj(bufobj));
+ assert(bufobj);
- info.index_size = ib->index_size;
+ info.index_size = 1 << ib->index_size_shift;
info.index.resource = st_buffer_object(bufobj)->buffer;
- info.start = pointer_to_offset(ib->ptr) / info.index_size;
+ info.start = pointer_to_offset(ib->ptr) >> ib->index_size_shift;
/* Primitive restart is not handled by the VBO module in this case. */
setup_primitive_restart(ctx, &info);