mesa: add EXT_dsa glMultiTexCoordPointerEXT function

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
diff --git a/src/mapi/glapi/gen/EXT_direct_state_access.xml b/src/mapi/glapi/gen/EXT_direct_state_access.xml
index d6e61b2..155b2ad 100644
--- a/src/mapi/glapi/gen/EXT_direct_state_access.xml
+++ b/src/mapi/glapi/gen/EXT_direct_state_access.xml
@@ -633,6 +633,14 @@
       <param name="param" type="GLint *" />
    </function>
 
+   <function name="MultiTexCoordPointerEXT">
+      <param name="texunit" type="GLenum" />
+      <param name="size" type="GLint" />
+      <param name="type" type="GLenum" />
+      <param name="stride" type="GLsizei" />
+      <param name="pointer" type="const GLvoid *" />
+   </function>
+
    <!-- OpenGL 1.3 -->
 
    <function name="MatrixLoadTransposefEXT" offset="assign">
diff --git a/src/mapi/glapi/gen/static_data.py b/src/mapi/glapi/gen/static_data.py
index 4c54bf5..b184fd8 100644
--- a/src/mapi/glapi/gen/static_data.py
+++ b/src/mapi/glapi/gen/static_data.py
@@ -1550,6 +1550,7 @@
     "GetMultiTexGendvEXT": 1514,
     "GetMultiTexGenfvEXT": 1515,
     "GetMultiTexGenivEXT": 1516,
+    "MultiTexCoordPointerEXT": 1517,
 }
 
 functions = [
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index d1bc68b..4f8a40b 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -1056,7 +1056,7 @@
    { "glCopyTextureSubImage3DEXT", 12, -1 },
    /* GL_EXT_direct_state_access - GL 1.2.1 */
    { "glBindMultiTextureEXT", 12, -1 },
-   //{ "glMultiTexCoordPointerEXT", 12, -1 },
+   { "glMultiTexCoordPointerEXT", 12, -1 },
    { "glMultiTexEnvfEXT", 12, -1 },
    { "glMultiTexEnvfvEXT", 12, -1 },
    { "glMultiTexEnviEXT", 12, -1 },
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index fad0c22..61b2bf3 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -1674,6 +1674,32 @@
 
 
 void GLAPIENTRY
+_mesa_MultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type,
+                              GLsizei stride, const GLvoid *ptr)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   const GLint sizeMin = 1;
+   const GLuint unit = texunit - GL_TEXTURE0;
+
+   GLenum format = GL_RGBA;
+   const GLbitfield legalTypes = (SHORT_BIT | INT_BIT |
+                                  HALF_BIT | FLOAT_BIT | DOUBLE_BIT |
+                                  UNSIGNED_INT_2_10_10_10_REV_BIT |
+                                  INT_2_10_10_10_REV_BIT);
+
+   if (!validate_array_and_format(ctx, "glMultiTexCoordPointerEXT",
+                                  VERT_ATTRIB_TEX(unit), legalTypes,
+                                  sizeMin, 4, size, type, stride,
+                                  GL_FALSE, GL_FALSE, GL_FALSE, format, ptr,
+                                  ctx->Array.VAO))
+      return;
+
+   update_array(ctx, VERT_ATTRIB_TEX(unit), format, 4, size, type,
+                stride, GL_FALSE, GL_FALSE, GL_FALSE, ptr);
+}
+
+
+void GLAPIENTRY
 _mesa_EdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *ptr)
 {
    (void) count;
diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h
index 2831720..1d1ce51 100644
--- a/src/mesa/main/varray.h
+++ b/src/mesa/main/varray.h
@@ -142,7 +142,9 @@
 extern void GLAPIENTRY
 _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride,
                       const GLvoid *ptr);
-
+extern void GLAPIENTRY
+_mesa_MultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type,
+                              GLsizei stride, const GLvoid *ptr);
 
 extern void GLAPIENTRY
 _mesa_EdgeFlagPointer_no_error(GLsizei stride, const GLvoid *ptr);