+static void
+update_primitive_restart(struct gl_context *ctx)
+{
+ struct glthread_state *glthread = &ctx->GLThread;
+
+ glthread->_PrimitiveRestart = glthread->PrimitiveRestart ||
+ glthread->PrimitiveRestartFixedIndex;
+ glthread->_RestartIndex[0] =
+ _mesa_get_prim_restart_index(glthread->PrimitiveRestartFixedIndex,
+ glthread->RestartIndex, 1);
+ glthread->_RestartIndex[1] =
+ _mesa_get_prim_restart_index(glthread->PrimitiveRestartFixedIndex,
+ glthread->RestartIndex, 2);
+ glthread->_RestartIndex[3] =
+ _mesa_get_prim_restart_index(glthread->PrimitiveRestartFixedIndex,
+ glthread->RestartIndex, 4);
+}
+
+void
+_mesa_glthread_set_prim_restart(struct gl_context *ctx, GLenum cap, bool value)
+{
+ switch (cap) {
+ case GL_PRIMITIVE_RESTART:
+ ctx->GLThread.PrimitiveRestart = value;
+ break;
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX:
+ ctx->GLThread.PrimitiveRestartFixedIndex = value;
+ break;
+ }
+
+ update_primitive_restart(ctx);
+}
+
+void
+_mesa_glthread_PrimitiveRestartIndex(struct gl_context *ctx, GLuint index)
+{
+ ctx->GLThread.RestartIndex = index;
+ update_primitive_restart(ctx);
+}
+