From d447a4888fe0089c0c3589ea68daf400e866de2a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 28 Jan 2020 17:24:48 -0500 Subject: [PATCH] vbo: move GLvertexformat initialization into a template header file for reuse Reviewed-by: Kristian H. Kristensen Part-of: --- src/mesa/Makefile.sources | 1 + src/mesa/meson.build | 1 + src/mesa/vbo/vbo_exec_api.c | 184 +++------------------------------- src/mesa/vbo/vbo_init_tmp.h | 191 ++++++++++++++++++++++++++++++++++++ 4 files changed, 205 insertions(+), 172 deletions(-) create mode 100644 src/mesa/vbo/vbo_init_tmp.h diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources index b65ada9b9f3..2d302c40d51 100644 --- a/src/mesa/Makefile.sources +++ b/src/mesa/Makefile.sources @@ -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 \ diff --git a/src/mesa/meson.build b/src/mesa/meson.build index bc165572c26..06b38fbe3b6 100644 --- a/src/mesa/meson.build +++ b/src/mesa/meson.build @@ -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', diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index bcab3f05342..4ab09c01fdd 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -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 index 00000000000..dcc6797461a --- /dev/null +++ b/src/mesa/vbo/vbo_init_tmp.h @@ -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); -- 2.30.2