vbo: move GLvertexformat initialization into a template header file for reuse
authorMarek Olšák <marek.olsak@amd.com>
Tue, 28 Jan 2020 22:24:48 +0000 (17:24 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 4 Feb 2020 20:11:58 +0000 (15:11 -0500)
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3611>

src/mesa/Makefile.sources
src/mesa/meson.build
src/mesa/vbo/vbo_exec_api.c
src/mesa/vbo/vbo_init_tmp.h [new file with mode: 0644]

index b65ada9b9f30c4dd3e83978c0f2883484edf0b59..2d302c40d51942213eafbfb3bdf9248751a5138e 100644 (file)
@@ -412,6 +412,7 @@ VBO_FILES = \
        vbo/vbo_exec_eval.c \
        vbo/vbo_exec.h \
        vbo/vbo.h \
+       vbo/vbo_init_tmp.h \
        vbo/vbo_minmax_index.c \
        vbo/vbo_noop.c \
        vbo/vbo_noop.h \
index bc165572c262a3c0161af5cf1b324c267de18ef3..06b38fbe3b6303602207ce70be4664a9c4f68b6e 100644 (file)
@@ -337,6 +337,7 @@ files_libmesa_common = files(
   'vbo/vbo_exec_eval.c',
   'vbo/vbo_exec.h',
   'vbo/vbo.h',
+  'vbo/vbo_init_tmp.h',
   'vbo/vbo_minmax_index.c',
   'vbo/vbo_noop.c',
   'vbo/vbo_noop.h',
index bcab3f05342d2c0519c1a7d226dda26cd99799e2..4ab09c01fdd6eb12d875746bf5e5d92fd1f3df3b 100644 (file)
@@ -537,7 +537,7 @@ do {                                                                    \
 
 #undef ERROR
 #define ERROR(err) _mesa_error(ctx, err, __func__)
-#define TAG(x) vbo_##x
+#define TAG(x) vbo_exec_##x
 
 #include "vbo_attrib_tmp.h"
 
@@ -548,7 +548,7 @@ do {                                                                    \
  * this may be a (partial) no-op.
  */
 static void GLAPIENTRY
-vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params)
+vbo_exec_Materialfv(GLenum face, GLenum pname, const GLfloat *params)
 {
    GLbitfield updateMats;
    GET_CURRENT_CONTEXT(ctx);
@@ -950,172 +950,12 @@ vbo_exec_vtxfmt_init(struct vbo_exec_context *exec)
    struct gl_context *ctx = exec->ctx;
    GLvertexformat *vfmt = &exec->vtxfmt;
 
-   vfmt->ArrayElement = _ae_ArrayElement;
+#define NAME_AE(x) _ae_##x
+#define NAME_CALLLIST(x) _mesa_##x
+#define NAME(x) vbo_exec_##x
+#define NAME_ES(x) _es_##x
 
-   vfmt->Begin = vbo_exec_Begin;
-   vfmt->End = vbo_exec_End;
-   vfmt->PrimitiveRestartNV = vbo_exec_PrimitiveRestartNV;
-
-   vfmt->CallList = _mesa_CallList;
-   vfmt->CallLists = _mesa_CallLists;
-
-   vfmt->EvalCoord1f = vbo_exec_EvalCoord1f;
-   vfmt->EvalCoord1fv = vbo_exec_EvalCoord1fv;
-   vfmt->EvalCoord2f = vbo_exec_EvalCoord2f;
-   vfmt->EvalCoord2fv = vbo_exec_EvalCoord2fv;
-   vfmt->EvalPoint1 = vbo_exec_EvalPoint1;
-   vfmt->EvalPoint2 = vbo_exec_EvalPoint2;
-
-   /* from attrib_tmp.h:
-    */
-   vfmt->Color3f = vbo_Color3f;
-   vfmt->Color3fv = vbo_Color3fv;
-   vfmt->Color4f = vbo_Color4f;
-   vfmt->Color4fv = vbo_Color4fv;
-   vfmt->FogCoordfEXT = vbo_FogCoordfEXT;
-   vfmt->FogCoordfvEXT = vbo_FogCoordfvEXT;
-   vfmt->MultiTexCoord1fARB = vbo_MultiTexCoord1f;
-   vfmt->MultiTexCoord1fvARB = vbo_MultiTexCoord1fv;
-   vfmt->MultiTexCoord2fARB = vbo_MultiTexCoord2f;
-   vfmt->MultiTexCoord2fvARB = vbo_MultiTexCoord2fv;
-   vfmt->MultiTexCoord3fARB = vbo_MultiTexCoord3f;
-   vfmt->MultiTexCoord3fvARB = vbo_MultiTexCoord3fv;
-   vfmt->MultiTexCoord4fARB = vbo_MultiTexCoord4f;
-   vfmt->MultiTexCoord4fvARB = vbo_MultiTexCoord4fv;
-   vfmt->Normal3f = vbo_Normal3f;
-   vfmt->Normal3fv = vbo_Normal3fv;
-   vfmt->SecondaryColor3fEXT = vbo_SecondaryColor3fEXT;
-   vfmt->SecondaryColor3fvEXT = vbo_SecondaryColor3fvEXT;
-   vfmt->TexCoord1f = vbo_TexCoord1f;
-   vfmt->TexCoord1fv = vbo_TexCoord1fv;
-   vfmt->TexCoord2f = vbo_TexCoord2f;
-   vfmt->TexCoord2fv = vbo_TexCoord2fv;
-   vfmt->TexCoord3f = vbo_TexCoord3f;
-   vfmt->TexCoord3fv = vbo_TexCoord3fv;
-   vfmt->TexCoord4f = vbo_TexCoord4f;
-   vfmt->TexCoord4fv = vbo_TexCoord4fv;
-   vfmt->Vertex2f = vbo_Vertex2f;
-   vfmt->Vertex2fv = vbo_Vertex2fv;
-   vfmt->Vertex3f = vbo_Vertex3f;
-   vfmt->Vertex3fv = vbo_Vertex3fv;
-   vfmt->Vertex4f = vbo_Vertex4f;
-   vfmt->Vertex4fv = vbo_Vertex4fv;
-
-   if (ctx->API == API_OPENGLES2) {
-      vfmt->VertexAttrib1fARB = _es_VertexAttrib1f;
-      vfmt->VertexAttrib1fvARB = _es_VertexAttrib1fv;
-      vfmt->VertexAttrib2fARB = _es_VertexAttrib2f;
-      vfmt->VertexAttrib2fvARB = _es_VertexAttrib2fv;
-      vfmt->VertexAttrib3fARB = _es_VertexAttrib3f;
-      vfmt->VertexAttrib3fvARB = _es_VertexAttrib3fv;
-      vfmt->VertexAttrib4fARB = _es_VertexAttrib4f;
-      vfmt->VertexAttrib4fvARB = _es_VertexAttrib4fv;
-   } else {
-      vfmt->VertexAttrib1fARB = vbo_VertexAttrib1fARB;
-      vfmt->VertexAttrib1fvARB = vbo_VertexAttrib1fvARB;
-      vfmt->VertexAttrib2fARB = vbo_VertexAttrib2fARB;
-      vfmt->VertexAttrib2fvARB = vbo_VertexAttrib2fvARB;
-      vfmt->VertexAttrib3fARB = vbo_VertexAttrib3fARB;
-      vfmt->VertexAttrib3fvARB = vbo_VertexAttrib3fvARB;
-      vfmt->VertexAttrib4fARB = vbo_VertexAttrib4fARB;
-      vfmt->VertexAttrib4fvARB = vbo_VertexAttrib4fvARB;
-   }
-
-   /* Note that VertexAttrib4fNV is used from dlist.c and api_arrayelt.c so
-    * they can have a single entrypoint for updating any of the legacy
-    * attribs.
-    */
-   vfmt->VertexAttrib1fNV = vbo_VertexAttrib1fNV;
-   vfmt->VertexAttrib1fvNV = vbo_VertexAttrib1fvNV;
-   vfmt->VertexAttrib2fNV = vbo_VertexAttrib2fNV;
-   vfmt->VertexAttrib2fvNV = vbo_VertexAttrib2fvNV;
-   vfmt->VertexAttrib3fNV = vbo_VertexAttrib3fNV;
-   vfmt->VertexAttrib3fvNV = vbo_VertexAttrib3fvNV;
-   vfmt->VertexAttrib4fNV = vbo_VertexAttrib4fNV;
-   vfmt->VertexAttrib4fvNV = vbo_VertexAttrib4fvNV;
-
-   /* integer-valued */
-   vfmt->VertexAttribI1i = vbo_VertexAttribI1i;
-   vfmt->VertexAttribI2i = vbo_VertexAttribI2i;
-   vfmt->VertexAttribI3i = vbo_VertexAttribI3i;
-   vfmt->VertexAttribI4i = vbo_VertexAttribI4i;
-   vfmt->VertexAttribI2iv = vbo_VertexAttribI2iv;
-   vfmt->VertexAttribI3iv = vbo_VertexAttribI3iv;
-   vfmt->VertexAttribI4iv = vbo_VertexAttribI4iv;
-
-   /* unsigned integer-valued */
-   vfmt->VertexAttribI1ui = vbo_VertexAttribI1ui;
-   vfmt->VertexAttribI2ui = vbo_VertexAttribI2ui;
-   vfmt->VertexAttribI3ui = vbo_VertexAttribI3ui;
-   vfmt->VertexAttribI4ui = vbo_VertexAttribI4ui;
-   vfmt->VertexAttribI2uiv = vbo_VertexAttribI2uiv;
-   vfmt->VertexAttribI3uiv = vbo_VertexAttribI3uiv;
-   vfmt->VertexAttribI4uiv = vbo_VertexAttribI4uiv;
-
-   vfmt->Materialfv = vbo_Materialfv;
-
-   vfmt->EdgeFlag = vbo_EdgeFlag;
-   vfmt->Indexf = vbo_Indexf;
-   vfmt->Indexfv = vbo_Indexfv;
-
-   /* ARB_vertex_type_2_10_10_10_rev */
-   vfmt->VertexP2ui = vbo_VertexP2ui;
-   vfmt->VertexP2uiv = vbo_VertexP2uiv;
-   vfmt->VertexP3ui = vbo_VertexP3ui;
-   vfmt->VertexP3uiv = vbo_VertexP3uiv;
-   vfmt->VertexP4ui = vbo_VertexP4ui;
-   vfmt->VertexP4uiv = vbo_VertexP4uiv;
-
-   vfmt->TexCoordP1ui = vbo_TexCoordP1ui;
-   vfmt->TexCoordP1uiv = vbo_TexCoordP1uiv;
-   vfmt->TexCoordP2ui = vbo_TexCoordP2ui;
-   vfmt->TexCoordP2uiv = vbo_TexCoordP2uiv;
-   vfmt->TexCoordP3ui = vbo_TexCoordP3ui;
-   vfmt->TexCoordP3uiv = vbo_TexCoordP3uiv;
-   vfmt->TexCoordP4ui = vbo_TexCoordP4ui;
-   vfmt->TexCoordP4uiv = vbo_TexCoordP4uiv;
-
-   vfmt->MultiTexCoordP1ui = vbo_MultiTexCoordP1ui;
-   vfmt->MultiTexCoordP1uiv = vbo_MultiTexCoordP1uiv;
-   vfmt->MultiTexCoordP2ui = vbo_MultiTexCoordP2ui;
-   vfmt->MultiTexCoordP2uiv = vbo_MultiTexCoordP2uiv;
-   vfmt->MultiTexCoordP3ui = vbo_MultiTexCoordP3ui;
-   vfmt->MultiTexCoordP3uiv = vbo_MultiTexCoordP3uiv;
-   vfmt->MultiTexCoordP4ui = vbo_MultiTexCoordP4ui;
-   vfmt->MultiTexCoordP4uiv = vbo_MultiTexCoordP4uiv;
-
-   vfmt->NormalP3ui = vbo_NormalP3ui;
-   vfmt->NormalP3uiv = vbo_NormalP3uiv;
-
-   vfmt->ColorP3ui = vbo_ColorP3ui;
-   vfmt->ColorP3uiv = vbo_ColorP3uiv;
-   vfmt->ColorP4ui = vbo_ColorP4ui;
-   vfmt->ColorP4uiv = vbo_ColorP4uiv;
-
-   vfmt->SecondaryColorP3ui = vbo_SecondaryColorP3ui;
-   vfmt->SecondaryColorP3uiv = vbo_SecondaryColorP3uiv;
-
-   vfmt->VertexAttribP1ui = vbo_VertexAttribP1ui;
-   vfmt->VertexAttribP1uiv = vbo_VertexAttribP1uiv;
-   vfmt->VertexAttribP2ui = vbo_VertexAttribP2ui;
-   vfmt->VertexAttribP2uiv = vbo_VertexAttribP2uiv;
-   vfmt->VertexAttribP3ui = vbo_VertexAttribP3ui;
-   vfmt->VertexAttribP3uiv = vbo_VertexAttribP3uiv;
-   vfmt->VertexAttribP4ui = vbo_VertexAttribP4ui;
-   vfmt->VertexAttribP4uiv = vbo_VertexAttribP4uiv;
-
-   vfmt->VertexAttribL1d = vbo_VertexAttribL1d;
-   vfmt->VertexAttribL2d = vbo_VertexAttribL2d;
-   vfmt->VertexAttribL3d = vbo_VertexAttribL3d;
-   vfmt->VertexAttribL4d = vbo_VertexAttribL4d;
-
-   vfmt->VertexAttribL1dv = vbo_VertexAttribL1dv;
-   vfmt->VertexAttribL2dv = vbo_VertexAttribL2dv;
-   vfmt->VertexAttribL3dv = vbo_VertexAttribL3dv;
-   vfmt->VertexAttribL4dv = vbo_VertexAttribL4dv;
-
-   vfmt->VertexAttribL1ui64ARB = vbo_VertexAttribL1ui64ARB;
-   vfmt->VertexAttribL1ui64vARB = vbo_VertexAttribL1ui64vARB;
+#include "vbo_init_tmp.h"
 }
 
 
@@ -1307,28 +1147,28 @@ vbo_reset_all_attr(struct vbo_exec_context *exec)
 void GLAPIENTRY
 _es_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
 {
-   vbo_Color4f(r, g, b, a);
+   vbo_exec_Color4f(r, g, b, a);
 }
 
 
 void GLAPIENTRY
 _es_Normal3f(GLfloat x, GLfloat y, GLfloat z)
 {
-   vbo_Normal3f(x, y, z);
+   vbo_exec_Normal3f(x, y, z);
 }
 
 
 void GLAPIENTRY
 _es_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
 {
-   vbo_MultiTexCoord4f(target, s, t, r, q);
+   vbo_exec_MultiTexCoord4f(target, s, t, r, q);
 }
 
 
 void GLAPIENTRY
 _es_Materialfv(GLenum face, GLenum pname, const GLfloat *params)
 {
-   vbo_Materialfv(face, pname, params);
+   vbo_exec_Materialfv(face, pname, params);
 }
 
 
@@ -1338,7 +1178,7 @@ _es_Materialf(GLenum face, GLenum pname, GLfloat param)
    GLfloat p[4];
    p[0] = param;
    p[1] = p[2] = p[3] = 0.0F;
-   vbo_Materialfv(face, pname, p);
+   vbo_exec_Materialfv(face, pname, p);
 }
 
 
diff --git a/src/mesa/vbo/vbo_init_tmp.h b/src/mesa/vbo/vbo_init_tmp.h
new file mode 100644 (file)
index 0000000..dcc6797
--- /dev/null
@@ -0,0 +1,191 @@
+/**************************************************************************
+ *
+ * Copyright 2020 Advanced Micro Devices, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+vfmt->ArrayElement = NAME_AE(ArrayElement);
+
+vfmt->Begin = NAME(Begin);
+vfmt->End = NAME(End);
+vfmt->PrimitiveRestartNV = NAME(PrimitiveRestartNV);
+
+vfmt->CallList = NAME_CALLLIST(CallList);
+vfmt->CallLists = NAME_CALLLIST(CallLists);
+
+vfmt->EvalCoord1f = NAME(EvalCoord1f);
+vfmt->EvalCoord1fv = NAME(EvalCoord1fv);
+vfmt->EvalCoord2f = NAME(EvalCoord2f);
+vfmt->EvalCoord2fv = NAME(EvalCoord2fv);
+vfmt->EvalPoint1 = NAME(EvalPoint1);
+vfmt->EvalPoint2 = NAME(EvalPoint2);
+
+vfmt->Color3f = NAME(Color3f);
+vfmt->Color3fv = NAME(Color3fv);
+vfmt->Color4f = NAME(Color4f);
+vfmt->Color4fv = NAME(Color4fv);
+vfmt->FogCoordfEXT = NAME(FogCoordfEXT);
+vfmt->FogCoordfvEXT = NAME(FogCoordfvEXT);
+vfmt->MultiTexCoord1fARB = NAME(MultiTexCoord1f);
+vfmt->MultiTexCoord1fvARB = NAME(MultiTexCoord1fv);
+vfmt->MultiTexCoord2fARB = NAME(MultiTexCoord2f);
+vfmt->MultiTexCoord2fvARB = NAME(MultiTexCoord2fv);
+vfmt->MultiTexCoord3fARB = NAME(MultiTexCoord3f);
+vfmt->MultiTexCoord3fvARB = NAME(MultiTexCoord3fv);
+vfmt->MultiTexCoord4fARB = NAME(MultiTexCoord4f);
+vfmt->MultiTexCoord4fvARB = NAME(MultiTexCoord4fv);
+vfmt->Normal3f = NAME(Normal3f);
+vfmt->Normal3fv = NAME(Normal3fv);
+vfmt->SecondaryColor3fEXT = NAME(SecondaryColor3fEXT);
+vfmt->SecondaryColor3fvEXT = NAME(SecondaryColor3fvEXT);
+vfmt->TexCoord1f = NAME(TexCoord1f);
+vfmt->TexCoord1fv = NAME(TexCoord1fv);
+vfmt->TexCoord2f = NAME(TexCoord2f);
+vfmt->TexCoord2fv = NAME(TexCoord2fv);
+vfmt->TexCoord3f = NAME(TexCoord3f);
+vfmt->TexCoord3fv = NAME(TexCoord3fv);
+vfmt->TexCoord4f = NAME(TexCoord4f);
+vfmt->TexCoord4fv = NAME(TexCoord4fv);
+vfmt->Vertex2f = NAME(Vertex2f);
+vfmt->Vertex2fv = NAME(Vertex2fv);
+vfmt->Vertex3f = NAME(Vertex3f);
+vfmt->Vertex3fv = NAME(Vertex3fv);
+vfmt->Vertex4f = NAME(Vertex4f);
+vfmt->Vertex4fv = NAME(Vertex4fv);
+
+if (ctx->API == API_OPENGLES2) {
+   vfmt->VertexAttrib1fARB = NAME_ES(VertexAttrib1f);
+   vfmt->VertexAttrib1fvARB = NAME_ES(VertexAttrib1fv);
+   vfmt->VertexAttrib2fARB = NAME_ES(VertexAttrib2f);
+   vfmt->VertexAttrib2fvARB = NAME_ES(VertexAttrib2fv);
+   vfmt->VertexAttrib3fARB = NAME_ES(VertexAttrib3f);
+   vfmt->VertexAttrib3fvARB = NAME_ES(VertexAttrib3fv);
+   vfmt->VertexAttrib4fARB = NAME_ES(VertexAttrib4f);
+   vfmt->VertexAttrib4fvARB = NAME_ES(VertexAttrib4fv);
+} else {
+   vfmt->VertexAttrib1fARB = NAME(VertexAttrib1fARB);
+   vfmt->VertexAttrib1fvARB = NAME(VertexAttrib1fvARB);
+   vfmt->VertexAttrib2fARB = NAME(VertexAttrib2fARB);
+   vfmt->VertexAttrib2fvARB = NAME(VertexAttrib2fvARB);
+   vfmt->VertexAttrib3fARB = NAME(VertexAttrib3fARB);
+   vfmt->VertexAttrib3fvARB = NAME(VertexAttrib3fvARB);
+   vfmt->VertexAttrib4fARB = NAME(VertexAttrib4fARB);
+   vfmt->VertexAttrib4fvARB = NAME(VertexAttrib4fvARB);
+}
+
+/* Note that VertexAttrib4fNV is used from dlist.c and api_arrayelt.c so
+ * they can have a single entrypoint for updating any of the legacy
+ * attribs.
+ */
+vfmt->VertexAttrib1fNV = NAME(VertexAttrib1fNV);
+vfmt->VertexAttrib1fvNV = NAME(VertexAttrib1fvNV);
+vfmt->VertexAttrib2fNV = NAME(VertexAttrib2fNV);
+vfmt->VertexAttrib2fvNV = NAME(VertexAttrib2fvNV);
+vfmt->VertexAttrib3fNV = NAME(VertexAttrib3fNV);
+vfmt->VertexAttrib3fvNV = NAME(VertexAttrib3fvNV);
+vfmt->VertexAttrib4fNV = NAME(VertexAttrib4fNV);
+vfmt->VertexAttrib4fvNV = NAME(VertexAttrib4fvNV);
+
+/* integer-valued */
+vfmt->VertexAttribI1i = NAME(VertexAttribI1i);
+vfmt->VertexAttribI2i = NAME(VertexAttribI2i);
+vfmt->VertexAttribI3i = NAME(VertexAttribI3i);
+vfmt->VertexAttribI4i = NAME(VertexAttribI4i);
+vfmt->VertexAttribI2iv = NAME(VertexAttribI2iv);
+vfmt->VertexAttribI3iv = NAME(VertexAttribI3iv);
+vfmt->VertexAttribI4iv = NAME(VertexAttribI4iv);
+
+/* unsigned integer-valued */
+vfmt->VertexAttribI1ui = NAME(VertexAttribI1ui);
+vfmt->VertexAttribI2ui = NAME(VertexAttribI2ui);
+vfmt->VertexAttribI3ui = NAME(VertexAttribI3ui);
+vfmt->VertexAttribI4ui = NAME(VertexAttribI4ui);
+vfmt->VertexAttribI2uiv = NAME(VertexAttribI2uiv);
+vfmt->VertexAttribI3uiv = NAME(VertexAttribI3uiv);
+vfmt->VertexAttribI4uiv = NAME(VertexAttribI4uiv);
+
+vfmt->Materialfv = NAME(Materialfv);
+
+vfmt->EdgeFlag = NAME(EdgeFlag);
+vfmt->Indexf = NAME(Indexf);
+vfmt->Indexfv = NAME(Indexfv);
+
+/* ARB_vertex_type_2_10_10_10_rev */
+vfmt->VertexP2ui = NAME(VertexP2ui);
+vfmt->VertexP2uiv = NAME(VertexP2uiv);
+vfmt->VertexP3ui = NAME(VertexP3ui);
+vfmt->VertexP3uiv = NAME(VertexP3uiv);
+vfmt->VertexP4ui = NAME(VertexP4ui);
+vfmt->VertexP4uiv = NAME(VertexP4uiv);
+
+vfmt->TexCoordP1ui = NAME(TexCoordP1ui);
+vfmt->TexCoordP1uiv = NAME(TexCoordP1uiv);
+vfmt->TexCoordP2ui = NAME(TexCoordP2ui);
+vfmt->TexCoordP2uiv = NAME(TexCoordP2uiv);
+vfmt->TexCoordP3ui = NAME(TexCoordP3ui);
+vfmt->TexCoordP3uiv = NAME(TexCoordP3uiv);
+vfmt->TexCoordP4ui = NAME(TexCoordP4ui);
+vfmt->TexCoordP4uiv = NAME(TexCoordP4uiv);
+
+vfmt->MultiTexCoordP1ui = NAME(MultiTexCoordP1ui);
+vfmt->MultiTexCoordP1uiv = NAME(MultiTexCoordP1uiv);
+vfmt->MultiTexCoordP2ui = NAME(MultiTexCoordP2ui);
+vfmt->MultiTexCoordP2uiv = NAME(MultiTexCoordP2uiv);
+vfmt->MultiTexCoordP3ui = NAME(MultiTexCoordP3ui);
+vfmt->MultiTexCoordP3uiv = NAME(MultiTexCoordP3uiv);
+vfmt->MultiTexCoordP4ui = NAME(MultiTexCoordP4ui);
+vfmt->MultiTexCoordP4uiv = NAME(MultiTexCoordP4uiv);
+
+vfmt->NormalP3ui = NAME(NormalP3ui);
+vfmt->NormalP3uiv = NAME(NormalP3uiv);
+
+vfmt->ColorP3ui = NAME(ColorP3ui);
+vfmt->ColorP3uiv = NAME(ColorP3uiv);
+vfmt->ColorP4ui = NAME(ColorP4ui);
+vfmt->ColorP4uiv = NAME(ColorP4uiv);
+
+vfmt->SecondaryColorP3ui = NAME(SecondaryColorP3ui);
+vfmt->SecondaryColorP3uiv = NAME(SecondaryColorP3uiv);
+
+vfmt->VertexAttribP1ui = NAME(VertexAttribP1ui);
+vfmt->VertexAttribP1uiv = NAME(VertexAttribP1uiv);
+vfmt->VertexAttribP2ui = NAME(VertexAttribP2ui);
+vfmt->VertexAttribP2uiv = NAME(VertexAttribP2uiv);
+vfmt->VertexAttribP3ui = NAME(VertexAttribP3ui);
+vfmt->VertexAttribP3uiv = NAME(VertexAttribP3uiv);
+vfmt->VertexAttribP4ui = NAME(VertexAttribP4ui);
+vfmt->VertexAttribP4uiv = NAME(VertexAttribP4uiv);
+
+vfmt->VertexAttribL1d = NAME(VertexAttribL1d);
+vfmt->VertexAttribL2d = NAME(VertexAttribL2d);
+vfmt->VertexAttribL3d = NAME(VertexAttribL3d);
+vfmt->VertexAttribL4d = NAME(VertexAttribL4d);
+
+vfmt->VertexAttribL1dv = NAME(VertexAttribL1dv);
+vfmt->VertexAttribL2dv = NAME(VertexAttribL2dv);
+vfmt->VertexAttribL3dv = NAME(VertexAttribL3dv);
+vfmt->VertexAttribL4dv = NAME(VertexAttribL4dv);
+
+vfmt->VertexAttribL1ui64ARB = NAME(VertexAttribL1ui64ARB);
+vfmt->VertexAttribL1ui64vARB = NAME(VertexAttribL1ui64vARB);