brw_batch_emit(brw, GENX(3DSTATE_VF), vf) {
if (ctx->Array._PrimitiveRestart[brw->ib.ib->index_size_shift] && brw->ib.ib) {
vf.IndexedDrawCutIndexEnable = true;
- vf.CutIndex = ctx->Array._RestartIndex[brw->ib.index_size - 1];
+ vf.CutIndex = ctx->Array._RestartIndex[brw->ib.ib->index_size_shift];
}
}
}
ctx->Array._RestartIndex[0] = restart_index[0];
ctx->Array._RestartIndex[1] = restart_index[1];
- ctx->Array._RestartIndex[3] = restart_index[2];
+ ctx->Array._RestartIndex[2] = restart_index[2];
/* Enable primitive restart only when the restart index can have an
* effect. This is required for correctness in AMD GFX8 support.
GLboolean PrimitiveRestartFixedIndex;
GLboolean _PrimitiveRestart[3]; /**< Enable indexed by index_size_shift. */
GLuint RestartIndex;
- GLuint _RestartIndex[4]; /**< Restart indices for index_size - 1. */
+ GLuint _RestartIndex[3]; /**< Restart indices indexed by index_size_shift. */
/*@}*/
/* GL_ARB_vertex_buffer_object */
info.index.user = ib->ptr;
}
- info.restart_index = ctx->Array._RestartIndex[info.index_size - 1];
+ info.restart_index = ctx->Array._RestartIndex[ib->index_size_shift];
info.primitive_restart = ctx->Array._PrimitiveRestart[ib->index_size_shift];
}
else {
info.index.resource = st_buffer_object(bufobj)->buffer;
draw.start = pointer_to_offset(ib->ptr) >> ib->index_size_shift;
- info.restart_index = ctx->Array._RestartIndex[info.index_size - 1];
+ info.restart_index = ctx->Array._RestartIndex[ib->index_size_shift];
info.primitive_restart = ctx->Array._PrimitiveRestart[ib->index_size_shift];
}
index_size, ~0);
info.primitive_restart = ctx->Array._PrimitiveRestart[ib->index_size_shift];
- info.restart_index = ctx->Array._RestartIndex[index_size - 1];
+ info.restart_index = ctx->Array._RestartIndex[ib->index_size_shift];
} else {
info.index_size = 0;
info.has_user_indices = false;
{
const GLboolean restart = ctx->Array._PrimitiveRestart[ib->index_size_shift];
const GLuint restartIndex =
- ctx->Array._RestartIndex[(1 << ib->index_size_shift) - 1];
+ ctx->Array._RestartIndex[ib->index_size_shift];
const char *indices;
GLintptr offset = 0;
GLuint sub_prim_num;
GLuint end_index;
GLuint sub_end_index;
- GLuint restart_index = ctx->Array._RestartIndex[(1 << ib->index_size_shift) - 1];
+ GLuint restart_index = ctx->Array._RestartIndex[ib->index_size_shift];
struct _mesa_prim temp_prim;
GLboolean map_ib = ib->obj && !ib->obj->Mappings[MAP_INTERNAL].Pointer;
const void *ptr;
* then we call PrimitiveRestartNV and return.
*/
if (ctx->Array._PrimitiveRestart[index_size_shift] &&
- elt == ctx->Array._RestartIndex[(1 << index_size_shift) - 1]) {
+ elt == ctx->Array._RestartIndex[index_size_shift]) {
CALL_PrimitiveRestartNV(ctx->CurrentServerDispatch, ());
return;
}