+ /** Index of the batch being filled and about to be submitted. */
+ unsigned next;
+
+ /** Vertex Array objects tracked by glthread independently of Mesa. */
+ struct _mesa_HashTable *VAOs;
+ struct glthread_vao *CurrentVAO;
+ struct glthread_vao *LastLookedUpVAO;
+ struct glthread_vao DefaultVAO;
+ int ClientActiveTexture;
+
+ /** Currently-bound buffer object IDs. */
+ GLuint CurrentArrayBufferName;
+ GLuint CurrentDrawIndirectBufferName;
+};
+
+void _mesa_glthread_init(struct gl_context *ctx);
+void _mesa_glthread_destroy(struct gl_context *ctx);
+
+void _mesa_glthread_restore_dispatch(struct gl_context *ctx, const char *func);
+void _mesa_glthread_disable(struct gl_context *ctx, const char *func);
+void _mesa_glthread_flush_batch(struct gl_context *ctx);
+void _mesa_glthread_finish(struct gl_context *ctx);
+void _mesa_glthread_finish_before(struct gl_context *ctx, const char *func);
+
+void _mesa_glthread_BindBuffer(struct gl_context *ctx, GLenum target,
+ GLuint buffer);
+void _mesa_glthread_DeleteBuffers(struct gl_context *ctx, GLsizei n,
+ const GLuint *buffers);
+
+void _mesa_glthread_BindVertexArray(struct gl_context *ctx, GLuint id);
+void _mesa_glthread_DeleteVertexArrays(struct gl_context *ctx,
+ GLsizei n, const GLuint *ids);
+void _mesa_glthread_GenVertexArrays(struct gl_context *ctx,
+ GLsizei n, GLuint *arrays);
+void _mesa_glthread_ClientState(struct gl_context *ctx, GLuint *vaobj,
+ gl_vert_attrib attrib, bool enable);
+void _mesa_glthread_AttribPointer(struct gl_context *ctx,
+ gl_vert_attrib attrib);