diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index e172c8c..26f9e4f 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -3234,7 +3234,8 @@
         <glx handcode="true"/>
     </function>
 
-    <function name="InterleavedArrays" deprecated="3.1">
+    <function name="InterleavedArrays" deprecated="3.1" marshal="async"
+              marshal_call_after="_mesa_glthread_InterleavedArrays(ctx, format, stride, pointer);">
         <param name="format" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <param name="pointer" type="const GLvoid *"/>
diff --git a/src/mesa/main/glthread.h b/src/mesa/main/glthread.h
index b07169e..76cb411 100644
--- a/src/mesa/main/glthread.h
+++ b/src/mesa/main/glthread.h
@@ -244,5 +244,7 @@
                                      bool set_default);
 void _mesa_glthread_PopClientAttrib(struct gl_context *ctx);
 void _mesa_glthread_ClientAttribDefault(struct gl_context *ctx, GLbitfield mask);
+void _mesa_glthread_InterleavedArrays(struct gl_context *ctx, GLenum format,
+                                      GLsizei stride, const GLvoid *pointer);
 
 #endif /* _GLTHREAD_H*/
diff --git a/src/mesa/main/glthread_varray.c b/src/mesa/main/glthread_varray.c
index 1771882..4250cf0 100644
--- a/src/mesa/main/glthread_varray.c
+++ b/src/mesa/main/glthread_varray.c
@@ -646,3 +646,54 @@
    glthread->CurrentVAO = &glthread->DefaultVAO;
    _mesa_glthread_reset_vao(glthread->CurrentVAO);
 }
+
+void
+_mesa_glthread_InterleavedArrays(struct gl_context *ctx, GLenum format,
+                                 GLsizei stride, const GLvoid *pointer)
+{
+   struct gl_interleaved_layout layout;
+   unsigned tex = VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture);
+
+   if (stride < 0 || !_mesa_get_interleaved_layout(format, &layout))
+      return;
+
+   if (!stride)
+      stride = layout.defstride;
+
+   _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_EDGEFLAG, false);
+   _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_COLOR_INDEX, false);
+   /* XXX also disable secondary color and generic arrays? */
+
+   /* Texcoords */
+   if (layout.tflag) {
+      _mesa_glthread_ClientState(ctx, NULL, tex, true);
+      _mesa_glthread_AttribPointer(ctx, tex, layout.tcomps, GL_FLOAT, stride,
+                                   (GLubyte *) pointer + layout.toffset);
+   } else {
+      _mesa_glthread_ClientState(ctx, NULL, tex, false);
+   }
+
+   /* Color */
+   if (layout.cflag) {
+      _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_COLOR0, true);
+      _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0, layout.ccomps,
+                                   layout.ctype, stride,
+                                   (GLubyte *) pointer + layout.coffset);
+   } else {
+      _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_COLOR0, false);
+   }
+
+   /* Normals */
+   if (layout.nflag) {
+      _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_NORMAL, true);
+      _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL, 3, GL_FLOAT,
+                                   stride, (GLubyte *) pointer + layout.noffset);
+   } else {
+      _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_NORMAL, false);
+   }
+
+   /* Vertices */
+   _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_POS, true);
+   _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS, layout.vcomps, GL_FLOAT,
+                                stride, (GLubyte *) pointer + layout.voffset);
+}
