]> git.cworth.org Git - apitrace/blob - glapi.py
Fix GL prototypes on MacOSX.
[apitrace] / glapi.py
1 ##########################################################################
2 #
3 # Copyright 2008-2010 VMware, Inc.
4 # All Rights Reserved.
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
23 #
24 ##########################################################################/
25
26
27 """GL API description.
28
29 Most of these were automatically generated with the apigen/glspec.py script
30 from Khronos OpenGL spec files, and then manually edited to cover the corner
31 cases correctly.
32
33 """
34
35
36 import platform
37
38 from stdapi import *
39 from glenum import *
40
41
42 GLboolean = Alias("GLboolean", Bool)
43 GLvoid = Alias("GLvoid", Void)
44 GLbyte = Alias("GLbyte", SChar)
45 GLshort = Alias("GLshort", Short)
46 GLint = Alias("GLint", Int)
47 GLubyte = Alias("GLubyte", UChar)
48 GLushort = Alias("GLushort", UShort)
49 GLuint = Alias("GLuint", UInt)
50 GLsizei = Alias("GLsizei", Int)
51 GLfloat = Alias("GLfloat", Float)
52 GLclampf = Alias("GLclampf", Float)
53 GLdouble = Alias("GLdouble", Double)
54 GLclampd = Alias("GLclampd", Double)
55
56 GLchar = Alias("GLchar", SChar)
57 GLcharARB = Alias("GLcharARB", SChar)
58 GLintptr = Alias("GLintptr", Int)
59 GLsizeiptr = Alias("GLsizeiptr", Int)
60 GLintptrARB = Alias("GLintptrARB", Int)
61 GLsizeiptrARB = Alias("GLsizeiptrARB", Int)
62 GLhandleARB = Alias("GLhandleARB", UInt)
63 GLhalfARB = Alias("GLhalfARB", UShort)
64 GLhalfNV = Alias("GLhalfNV", UShort)
65 GLint64 = Alias("GLint64", Int64)
66 GLuint64 = Alias("GLuint64", UInt64)
67 GLint64EXT = Alias("GLint64EXT", Int64)
68 GLuint64EXT = Alias("GLuint64EXT", UInt64)
69 GLDEBUGPROCARB = Opaque("GLDEBUGPROCARB")
70
71 GLstring = String("GLchar *")
72 GLstringARB = String("GLcharARB *")
73
74 GLlist = Handle("list", GLuint)
75 GLtexture = Handle("texture", GLuint)
76 GLbuffer = Handle("buffer", GLuint)
77 GLquery = Handle("query", GLuint)
78 GLfenceNV = Handle("fenceNV", GLuint)
79 GLprogram = Handle("program", GLuint)
80 GLshader = Handle("shader", GLuint)
81 GLlocation = Handle("location", GLint, key=('program', GLuint))
82 GLlocationARB = Handle("locationARB", GLint)
83 GLprogramARB = Handle("programARB", GLuint)
84 GLprogramEXT = Handle("programEXT", GLuint)
85 GLprogramNV = Handle("programNV", GLuint)
86 GLframebuffer = Handle("framebuffer", GLuint)
87 GLrenderbuffer = Handle("renderbuffer", GLuint)
88 GLfragmentShaderATI = Handle("fragmentShaderATI", GLuint)
89 GLvertexArray = Handle("vertexArrayAPPLE", GLuint)
90 GLregion = Handle("region", GLuint)
91
92 # Some functions take GLenum disguised as GLint.  Apple noticed and fixed it in
93 # the gl.h header.  Regardless, C++ typechecking rules force the wrappers to
94 # match the prototype precisely.
95 if platform.system() == 'Darwin':
96     GLenum_int = GLenum
97 else:
98     GLenum_int = Alias("GLint", GLenum)
99
100 GLsync_ = Opaque("GLsync")
101 GLsync = Handle("sync", GLsync_)
102
103
104 def GlFunction(*args, **kwargs):
105     kwargs.setdefault('call', 'APIENTRY')
106     return Function(*args, **kwargs)
107
108
109 glapi = API('GL')
110
111
112 glapi.add_functions([
113     # GL_VERSION_1_0
114     GlFunction(Void, "glCullFace", [(GLenum, "mode")]),
115     GlFunction(Void, "glFrontFace", [(GLenum, "mode")]),
116     GlFunction(Void, "glHint", [(GLenum, "target"), (GLenum, "mode")]),
117     GlFunction(Void, "glLineWidth", [(GLfloat, "width")]),
118     GlFunction(Void, "glPointSize", [(GLfloat, "size")]),
119     GlFunction(Void, "glPolygonMode", [(GLenum, "face"), (GLenum, "mode")]),
120     GlFunction(Void, "glScissor", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
121     GlFunction(Void, "glTexParameterf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
122     GlFunction(Void, "glTexParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLfloat, "__glTexParameterfv_size(pname)")), "params")]),
123     GlFunction(Void, "glTexParameteri", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
124     GlFunction(Void, "glTexParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLint, "__glTexParameteriv_size(pname)")), "params")]),
125     GlFunction(Void, "glTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage1D_size(format, type, width, border)"), "pixels")]),
126     GlFunction(Void, "glTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage2D_size(format, type, width, height, border)"), "pixels")]),
127     GlFunction(Void, "glDrawBuffer", [(GLenum, "mode")]),
128     GlFunction(Void, "glClear", [(GLbitfield_attrib, "mask")]),
129     GlFunction(Void, "glClearColor", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
130     GlFunction(Void, "glClearStencil", [(GLint, "s")]),
131     GlFunction(Void, "glClearDepth", [(GLclampd, "depth")]),
132     GlFunction(Void, "glStencilMask", [(GLuint, "mask")]),
133     GlFunction(Void, "glColorMask", [(GLboolean, "red"), (GLboolean, "green"), (GLboolean, "blue"), (GLboolean, "alpha")]),
134     GlFunction(Void, "glDepthMask", [(GLboolean, "flag")]),
135     GlFunction(Void, "glDisable", [(GLenum, "cap")]),
136     GlFunction(Void, "glEnable", [(GLenum, "cap")]),
137     GlFunction(Void, "glFinish", []),
138     GlFunction(Void, "glFlush", []),
139     GlFunction(Void, "glBlendFunc", [(GLenum, "sfactor"), (GLenum, "dfactor")]),
140     GlFunction(Void, "glLogicOp", [(GLenum, "opcode")]),
141     GlFunction(Void, "glStencilFunc", [(GLenum, "func"), (GLint, "ref"), (GLuint, "mask")]),
142     GlFunction(Void, "glStencilOp", [(GLenum, "fail"), (GLenum, "zfail"), (GLenum, "zpass")]),
143     GlFunction(Void, "glDepthFunc", [(GLenum, "func")]),
144     GlFunction(Void, "glPixelStoref", [(GLenum, "pname"), (GLfloat, "param")]),
145     GlFunction(Void, "glPixelStorei", [(GLenum, "pname"), (GLint, "param")]),
146     GlFunction(Void, "glReadBuffer", [(GLenum, "mode")]),
147     GlFunction(Void, "glReadPixels", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), Out(OpaquePointer(GLvoid), "pixels")], sideeffects=False),
148     GlFunction(Void, "glGetBooleanv", [(GLenum, "pname"), Out(Array(GLboolean, "__glGetBooleanv_size(pname)"), "params")], sideeffects=False),
149     GlFunction(Void, "glGetDoublev", [(GLenum, "pname"), Out(Array(GLdouble, "__glGetDoublev_size(pname)"), "params")], sideeffects=False),
150     GlFunction(GLenum_error, "glGetError", [], sideeffects=False),
151     GlFunction(Void, "glGetFloatv", [(GLenum, "pname"), Out(Array(GLfloat, "__glGetFloatv_size(pname)"), "params")], sideeffects=False),
152     GlFunction(Void, "glGetIntegerv", [(GLenum, "pname"), Out(Array(GLint, "__glGetIntegerv_size(pname)"), "params")], sideeffects=False),
153     GlFunction(Alias("const GLubyte *", CString), "glGetString", [(GLenum, "name")], sideeffects=False),
154     GlFunction(Void, "glGetTexImage", [(GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaquePointer(GLvoid), "pixels")], sideeffects=False),
155     GlFunction(Void, "glGetTexParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexParameterfv_size(pname)"), "params")], sideeffects=False),
156     GlFunction(Void, "glGetTexParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexParameteriv_size(pname)"), "params")], sideeffects=False),
157     GlFunction(Void, "glGetTexLevelParameterfv", [(GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexLevelParameterfv_size(pname)"), "params")], sideeffects=False),
158     GlFunction(Void, "glGetTexLevelParameteriv", [(GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexLevelParameteriv_size(pname)"), "params")], sideeffects=False),
159     GlFunction(GLboolean, "glIsEnabled", [(GLenum, "cap")]),
160     GlFunction(Void, "glDepthRange", [(GLclampd, "zNear"), (GLclampd, "zFar")]),
161     GlFunction(Void, "glViewport", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
162
163     # GL_VERSION_1_0_DEPRECATED
164     GlFunction(Void, "glNewList", [(GLlist, "list"), (GLenum, "mode")]),
165     GlFunction(Void, "glEndList", []),
166     GlFunction(Void, "glCallList", [(GLlist, "list")]),
167     GlFunction(Void, "glCallLists", [(GLsizei, "n"), (GLenum, "type"), (Blob(Const(GLvoid), "__glCallLists_size(n, type)"), "lists")]),
168     GlFunction(Void, "glDeleteLists", [(GLlist, "list"), (GLsizei, "range")]),
169     GlFunction(Handle("list", GLuint, "range"), "glGenLists", [(GLsizei, "range")]),
170     GlFunction(Void, "glListBase", [(GLuint, "base")]),
171     GlFunction(Void, "glBegin", [(GLenum_mode, "mode")]),
172     GlFunction(Void, "glBitmap", [(GLsizei, "width"), (GLsizei, "height"), (GLfloat, "xorig"), (GLfloat, "yorig"), (GLfloat, "xmove"), (GLfloat, "ymove"), (Blob(Const(GLubyte), "__glBitmap_size(width, height)"), "bitmap")]),
173     GlFunction(Void, "glColor3b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
174     GlFunction(Void, "glColor3bv", [(Const(Array(GLbyte, "3")), "v")]),
175     GlFunction(Void, "glColor3d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
176     GlFunction(Void, "glColor3dv", [(Const(Array(GLdouble, "3")), "v")]),
177     GlFunction(Void, "glColor3f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
178     GlFunction(Void, "glColor3fv", [(Const(Array(GLfloat, "3")), "v")]),
179     GlFunction(Void, "glColor3i", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
180     GlFunction(Void, "glColor3iv", [(Const(Array(GLint, "3")), "v")]),
181     GlFunction(Void, "glColor3s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
182     GlFunction(Void, "glColor3sv", [(Const(Array(GLshort, "3")), "v")]),
183     GlFunction(Void, "glColor3ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
184     GlFunction(Void, "glColor3ubv", [(Const(Array(GLubyte, "3")), "v")]),
185     GlFunction(Void, "glColor3ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
186     GlFunction(Void, "glColor3uiv", [(Const(Array(GLuint, "3")), "v")]),
187     GlFunction(Void, "glColor3us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
188     GlFunction(Void, "glColor3usv", [(Const(Array(GLushort, "3")), "v")]),
189     GlFunction(Void, "glColor4b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue"), (GLbyte, "alpha")]),
190     GlFunction(Void, "glColor4bv", [(Const(Array(GLbyte, "4")), "v")]),
191     GlFunction(Void, "glColor4d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue"), (GLdouble, "alpha")]),
192     GlFunction(Void, "glColor4dv", [(Const(Array(GLdouble, "4")), "v")]),
193     GlFunction(Void, "glColor4f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue"), (GLfloat, "alpha")]),
194     GlFunction(Void, "glColor4fv", [(Const(Array(GLfloat, "4")), "v")]),
195     GlFunction(Void, "glColor4i", [(GLint, "red"), (GLint, "green"), (GLint, "blue"), (GLint, "alpha")]),
196     GlFunction(Void, "glColor4iv", [(Const(Array(GLint, "4")), "v")]),
197     GlFunction(Void, "glColor4s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue"), (GLshort, "alpha")]),
198     GlFunction(Void, "glColor4sv", [(Const(Array(GLshort, "4")), "v")]),
199     GlFunction(Void, "glColor4ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue"), (GLubyte, "alpha")]),
200     GlFunction(Void, "glColor4ubv", [(Const(Array(GLubyte, "4")), "v")]),
201     GlFunction(Void, "glColor4ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue"), (GLuint, "alpha")]),
202     GlFunction(Void, "glColor4uiv", [(Const(Array(GLuint, "4")), "v")]),
203     GlFunction(Void, "glColor4us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue"), (GLushort, "alpha")]),
204     GlFunction(Void, "glColor4usv", [(Const(Array(GLushort, "4")), "v")]),
205     GlFunction(Void, "glEdgeFlag", [(GLboolean, "flag")]),
206     GlFunction(Void, "glEdgeFlagv", [(Const(Pointer(GLboolean)), "flag")]),
207     GlFunction(Void, "glEnd", []),
208     GlFunction(Void, "glIndexd", [(GLdouble, "c")]),
209     GlFunction(Void, "glIndexdv", [(Const(Pointer(GLdouble)), "c")]),
210     GlFunction(Void, "glIndexf", [(GLfloat, "c")]),
211     GlFunction(Void, "glIndexfv", [(Const(Pointer(GLfloat)), "c")]),
212     GlFunction(Void, "glIndexi", [(GLint, "c")]),
213     GlFunction(Void, "glIndexiv", [(Const(Pointer(GLint)), "c")]),
214     GlFunction(Void, "glIndexs", [(GLshort, "c")]),
215     GlFunction(Void, "glIndexsv", [(Const(Pointer(GLshort)), "c")]),
216     GlFunction(Void, "glNormal3b", [(GLbyte, "nx"), (GLbyte, "ny"), (GLbyte, "nz")]),
217     GlFunction(Void, "glNormal3bv", [(Const(Array(GLbyte, "3")), "v")]),
218     GlFunction(Void, "glNormal3d", [(GLdouble, "nx"), (GLdouble, "ny"), (GLdouble, "nz")]),
219     GlFunction(Void, "glNormal3dv", [(Const(Array(GLdouble, "3")), "v")]),
220     GlFunction(Void, "glNormal3f", [(GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz")]),
221     GlFunction(Void, "glNormal3fv", [(Const(Array(GLfloat, "3")), "v")]),
222     GlFunction(Void, "glNormal3i", [(GLint, "nx"), (GLint, "ny"), (GLint, "nz")]),
223     GlFunction(Void, "glNormal3iv", [(Const(Array(GLint, "3")), "v")]),
224     GlFunction(Void, "glNormal3s", [(GLshort, "nx"), (GLshort, "ny"), (GLshort, "nz")]),
225     GlFunction(Void, "glNormal3sv", [(Const(Array(GLshort, "3")), "v")]),
226     GlFunction(Void, "glRasterPos2d", [(GLdouble, "x"), (GLdouble, "y")]),
227     GlFunction(Void, "glRasterPos2dv", [(Const(Array(GLdouble, "2")), "v")]),
228     GlFunction(Void, "glRasterPos2f", [(GLfloat, "x"), (GLfloat, "y")]),
229     GlFunction(Void, "glRasterPos2fv", [(Const(Array(GLfloat, "2")), "v")]),
230     GlFunction(Void, "glRasterPos2i", [(GLint, "x"), (GLint, "y")]),
231     GlFunction(Void, "glRasterPos2iv", [(Const(Array(GLint, "2")), "v")]),
232     GlFunction(Void, "glRasterPos2s", [(GLshort, "x"), (GLshort, "y")]),
233     GlFunction(Void, "glRasterPos2sv", [(Const(Array(GLshort, "2")), "v")]),
234     GlFunction(Void, "glRasterPos3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
235     GlFunction(Void, "glRasterPos3dv", [(Const(Array(GLdouble, "3")), "v")]),
236     GlFunction(Void, "glRasterPos3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
237     GlFunction(Void, "glRasterPos3fv", [(Const(Array(GLfloat, "3")), "v")]),
238     GlFunction(Void, "glRasterPos3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
239     GlFunction(Void, "glRasterPos3iv", [(Const(Array(GLint, "3")), "v")]),
240     GlFunction(Void, "glRasterPos3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
241     GlFunction(Void, "glRasterPos3sv", [(Const(Array(GLshort, "3")), "v")]),
242     GlFunction(Void, "glRasterPos4d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
243     GlFunction(Void, "glRasterPos4dv", [(Const(Array(GLdouble, "4")), "v")]),
244     GlFunction(Void, "glRasterPos4f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
245     GlFunction(Void, "glRasterPos4fv", [(Const(Array(GLfloat, "4")), "v")]),
246     GlFunction(Void, "glRasterPos4i", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
247     GlFunction(Void, "glRasterPos4iv", [(Const(Array(GLint, "4")), "v")]),
248     GlFunction(Void, "glRasterPos4s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
249     GlFunction(Void, "glRasterPos4sv", [(Const(Array(GLshort, "4")), "v")]),
250     GlFunction(Void, "glRectd", [(GLdouble, "x1"), (GLdouble, "y1"), (GLdouble, "x2"), (GLdouble, "y2")]),
251     GlFunction(Void, "glRectdv", [(Const(Array(GLdouble, "2")), "v1"), (Const(Array(GLdouble, "2")), "v2")]),
252     GlFunction(Void, "glRectf", [(GLfloat, "x1"), (GLfloat, "y1"), (GLfloat, "x2"), (GLfloat, "y2")]),
253     GlFunction(Void, "glRectfv", [(Const(Array(GLfloat, "2")), "v1"), (Const(Array(GLfloat, "2")), "v2")]),
254     GlFunction(Void, "glRecti", [(GLint, "x1"), (GLint, "y1"), (GLint, "x2"), (GLint, "y2")]),
255     GlFunction(Void, "glRectiv", [(Const(Array(GLint, "2")), "v1"), (Const(Array(GLint, "2")), "v2")]),
256     GlFunction(Void, "glRects", [(GLshort, "x1"), (GLshort, "y1"), (GLshort, "x2"), (GLshort, "y2")]),
257     GlFunction(Void, "glRectsv", [(Const(Array(GLshort, "2")), "v1"), (Const(Array(GLshort, "2")), "v2")]),
258     GlFunction(Void, "glTexCoord1d", [(GLdouble, "s")]),
259     GlFunction(Void, "glTexCoord1dv", [(Const(Pointer(GLdouble)), "v")]),
260     GlFunction(Void, "glTexCoord1f", [(GLfloat, "s")]),
261     GlFunction(Void, "glTexCoord1fv", [(Const(Pointer(GLfloat)), "v")]),
262     GlFunction(Void, "glTexCoord1i", [(GLint, "s")]),
263     GlFunction(Void, "glTexCoord1iv", [(Const(Pointer(GLint)), "v")]),
264     GlFunction(Void, "glTexCoord1s", [(GLshort, "s")]),
265     GlFunction(Void, "glTexCoord1sv", [(Const(Pointer(GLshort)), "v")]),
266     GlFunction(Void, "glTexCoord2d", [(GLdouble, "s"), (GLdouble, "t")]),
267     GlFunction(Void, "glTexCoord2dv", [(Const(Array(GLdouble, "2")), "v")]),
268     GlFunction(Void, "glTexCoord2f", [(GLfloat, "s"), (GLfloat, "t")]),
269     GlFunction(Void, "glTexCoord2fv", [(Const(Array(GLfloat, "2")), "v")]),
270     GlFunction(Void, "glTexCoord2i", [(GLint, "s"), (GLint, "t")]),
271     GlFunction(Void, "glTexCoord2iv", [(Const(Array(GLint, "2")), "v")]),
272     GlFunction(Void, "glTexCoord2s", [(GLshort, "s"), (GLshort, "t")]),
273     GlFunction(Void, "glTexCoord2sv", [(Const(Array(GLshort, "2")), "v")]),
274     GlFunction(Void, "glTexCoord3d", [(GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
275     GlFunction(Void, "glTexCoord3dv", [(Const(Array(GLdouble, "3")), "v")]),
276     GlFunction(Void, "glTexCoord3f", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
277     GlFunction(Void, "glTexCoord3fv", [(Const(Array(GLfloat, "3")), "v")]),
278     GlFunction(Void, "glTexCoord3i", [(GLint, "s"), (GLint, "t"), (GLint, "r")]),
279     GlFunction(Void, "glTexCoord3iv", [(Const(Array(GLint, "3")), "v")]),
280     GlFunction(Void, "glTexCoord3s", [(GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
281     GlFunction(Void, "glTexCoord3sv", [(Const(Array(GLshort, "3")), "v")]),
282     GlFunction(Void, "glTexCoord4d", [(GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
283     GlFunction(Void, "glTexCoord4dv", [(Const(Array(GLdouble, "4")), "v")]),
284     GlFunction(Void, "glTexCoord4f", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
285     GlFunction(Void, "glTexCoord4fv", [(Const(Array(GLfloat, "4")), "v")]),
286     GlFunction(Void, "glTexCoord4i", [(GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
287     GlFunction(Void, "glTexCoord4iv", [(Const(Array(GLint, "4")), "v")]),
288     GlFunction(Void, "glTexCoord4s", [(GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
289     GlFunction(Void, "glTexCoord4sv", [(Const(Array(GLshort, "4")), "v")]),
290     GlFunction(Void, "glVertex2d", [(GLdouble, "x"), (GLdouble, "y")]),
291     GlFunction(Void, "glVertex2dv", [(Const(Array(GLdouble, "2")), "v")]),
292     GlFunction(Void, "glVertex2f", [(GLfloat, "x"), (GLfloat, "y")]),
293     GlFunction(Void, "glVertex2fv", [(Const(Array(GLfloat, "2")), "v")]),
294     GlFunction(Void, "glVertex2i", [(GLint, "x"), (GLint, "y")]),
295     GlFunction(Void, "glVertex2iv", [(Const(Array(GLint, "2")), "v")]),
296     GlFunction(Void, "glVertex2s", [(GLshort, "x"), (GLshort, "y")]),
297     GlFunction(Void, "glVertex2sv", [(Const(Array(GLshort, "2")), "v")]),
298     GlFunction(Void, "glVertex3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
299     GlFunction(Void, "glVertex3dv", [(Const(Array(GLdouble, "3")), "v")]),
300     GlFunction(Void, "glVertex3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
301     GlFunction(Void, "glVertex3fv", [(Const(Array(GLfloat, "3")), "v")]),
302     GlFunction(Void, "glVertex3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
303     GlFunction(Void, "glVertex3iv", [(Const(Array(GLint, "3")), "v")]),
304     GlFunction(Void, "glVertex3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
305     GlFunction(Void, "glVertex3sv", [(Const(Array(GLshort, "3")), "v")]),
306     GlFunction(Void, "glVertex4d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
307     GlFunction(Void, "glVertex4dv", [(Const(Array(GLdouble, "4")), "v")]),
308     GlFunction(Void, "glVertex4f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
309     GlFunction(Void, "glVertex4fv", [(Const(Array(GLfloat, "4")), "v")]),
310     GlFunction(Void, "glVertex4i", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
311     GlFunction(Void, "glVertex4iv", [(Const(Array(GLint, "4")), "v")]),
312     GlFunction(Void, "glVertex4s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
313     GlFunction(Void, "glVertex4sv", [(Const(Array(GLshort, "4")), "v")]),
314     GlFunction(Void, "glClipPlane", [(GLenum, "plane"), (Const(Array(GLdouble, "4")), "equation")]),
315     GlFunction(Void, "glColorMaterial", [(GLenum, "face"), (GLenum, "mode")]),
316     GlFunction(Void, "glFogf", [(GLenum, "pname"), (GLfloat, "param")]),
317     GlFunction(Void, "glFogfv", [(GLenum, "pname"), (Const(Array(GLfloat, "__glFogfv_size(pname)")), "params")]),
318     GlFunction(Void, "glFogi", [(GLenum, "pname"), (GLint, "param")]),
319     GlFunction(Void, "glFogiv", [(GLenum, "pname"), (Const(Array(GLint, "__glFogiv_size(pname)")), "params")]),
320     GlFunction(Void, "glLightf", [(GLenum, "light"), (GLenum, "pname"), (GLfloat, "param")]),
321     GlFunction(Void, "glLightfv", [(GLenum, "light"), (GLenum, "pname"), (Const(Array(GLfloat, "__glLightfv_size(pname)")), "params")]),
322     GlFunction(Void, "glLighti", [(GLenum, "light"), (GLenum, "pname"), (GLint, "param")]),
323     GlFunction(Void, "glLightiv", [(GLenum, "light"), (GLenum, "pname"), (Const(Array(GLint, "__glLightiv_size(pname)")), "params")]),
324     GlFunction(Void, "glLightModelf", [(GLenum, "pname"), (GLfloat, "param")]),
325     GlFunction(Void, "glLightModelfv", [(GLenum, "pname"), (Const(Array(GLfloat, "__glLightModelfv_size(pname)")), "params")]),
326     GlFunction(Void, "glLightModeli", [(GLenum, "pname"), (GLint, "param")]),
327     GlFunction(Void, "glLightModeliv", [(GLenum, "pname"), (Const(Array(GLint, "__glLightModeliv_size(pname)")), "params")]),
328     GlFunction(Void, "glLineStipple", [(GLint, "factor"), (GLushort, "pattern")]),
329     GlFunction(Void, "glMaterialf", [(GLenum, "face"), (GLenum, "pname"), (GLfloat, "param")]),
330     GlFunction(Void, "glMaterialfv", [(GLenum, "face"), (GLenum, "pname"), (Const(Array(GLfloat, "__glMaterialfv_size(pname)")), "params")]),
331     GlFunction(Void, "glMateriali", [(GLenum, "face"), (GLenum, "pname"), (GLint, "param")]),
332     GlFunction(Void, "glMaterialiv", [(GLenum, "face"), (GLenum, "pname"), (Const(Array(GLint, "__glMaterialiv_size(pname)")), "params")]),
333     GlFunction(Void, "glPolygonStipple", [(Const(Array(GLubyte, "__glPolygonStipple_size()")), "mask")]),
334     GlFunction(Void, "glShadeModel", [(GLenum, "mode")]),
335     GlFunction(Void, "glTexEnvf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
336     GlFunction(Void, "glTexEnvfv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLfloat, "__glTexEnvfv_size(pname)")), "params")]),
337     GlFunction(Void, "glTexEnvi", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
338     GlFunction(Void, "glTexEnviv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLint, "__glTexEnviv_size(pname)")), "params")]),
339     GlFunction(Void, "glTexGend", [(GLenum, "coord"), (GLenum, "pname"), (GLdouble, "param")]),
340     GlFunction(Void, "glTexGendv", [(GLenum, "coord"), (GLenum, "pname"), (Const(Array(GLdouble, "__glTexGendv_size(pname)")), "params")]),
341     GlFunction(Void, "glTexGenf", [(GLenum, "coord"), (GLenum, "pname"), (GLfloat, "param")]),
342     GlFunction(Void, "glTexGenfv", [(GLenum, "coord"), (GLenum, "pname"), (Const(Array(GLfloat, "__glTexGenfv_size(pname)")), "params")]),
343     GlFunction(Void, "glTexGeni", [(GLenum, "coord"), (GLenum, "pname"), (GLint, "param")]),
344     GlFunction(Void, "glTexGeniv", [(GLenum, "coord"), (GLenum, "pname"), (Const(Array(GLint, "__glTexGeniv_size(pname)")), "params")]),
345     GlFunction(Void, "glFeedbackBuffer", [(GLsizei, "size"), (GLenum, "type"), Out(Array(GLfloat, "size"), "buffer")]),
346     GlFunction(Void, "glSelectBuffer", [(GLsizei, "size"), Out(Array(GLuint, "size"), "buffer")]),
347     GlFunction(GLint, "glRenderMode", [(GLenum, "mode")]),
348     GlFunction(Void, "glInitNames", []),
349     GlFunction(Void, "glLoadName", [(GLuint, "name")]),
350     GlFunction(Void, "glPassThrough", [(GLfloat, "token")]),
351     GlFunction(Void, "glPopName", []),
352     GlFunction(Void, "glPushName", [(GLuint, "name")]),
353     GlFunction(Void, "glClearAccum", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue"), (GLfloat, "alpha")]),
354     GlFunction(Void, "glClearIndex", [(GLfloat, "c")]),
355     GlFunction(Void, "glIndexMask", [(GLuint, "mask")]),
356     GlFunction(Void, "glAccum", [(GLenum, "op"), (GLfloat, "value")]),
357     GlFunction(Void, "glPopAttrib", []),
358     GlFunction(Void, "glPushAttrib", [(GLbitfield_attrib, "mask")]),
359     GlFunction(Void, "glMap1d", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "stride"), (GLint, "order"), (Const(OpaquePointer(GLdouble)), "points")]),
360     GlFunction(Void, "glMap1f", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "stride"), (GLint, "order"), (Const(OpaquePointer(GLfloat)), "points")]),
361     GlFunction(Void, "glMap2d", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (Const(OpaquePointer(GLdouble)), "points")]),
362     GlFunction(Void, "glMap2f", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (Const(OpaquePointer(GLfloat)), "points")]),
363     GlFunction(Void, "glMapGrid1d", [(GLint, "un"), (GLdouble, "u1"), (GLdouble, "u2")]),
364     GlFunction(Void, "glMapGrid1f", [(GLint, "un"), (GLfloat, "u1"), (GLfloat, "u2")]),
365     GlFunction(Void, "glMapGrid2d", [(GLint, "un"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "vn"), (GLdouble, "v1"), (GLdouble, "v2")]),
366     GlFunction(Void, "glMapGrid2f", [(GLint, "un"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "vn"), (GLfloat, "v1"), (GLfloat, "v2")]),
367     GlFunction(Void, "glEvalCoord1d", [(GLdouble, "u")]),
368     GlFunction(Void, "glEvalCoord1dv", [(Const(Pointer(GLdouble)), "u")]),
369     GlFunction(Void, "glEvalCoord1f", [(GLfloat, "u")]),
370     GlFunction(Void, "glEvalCoord1fv", [(Const(Pointer(GLfloat)), "u")]),
371     GlFunction(Void, "glEvalCoord2d", [(GLdouble, "u"), (GLdouble, "v")]),
372     GlFunction(Void, "glEvalCoord2dv", [(Const(Array(GLdouble, "2")), "u")]),
373     GlFunction(Void, "glEvalCoord2f", [(GLfloat, "u"), (GLfloat, "v")]),
374     GlFunction(Void, "glEvalCoord2fv", [(Const(Array(GLfloat, "2")), "u")]),
375     GlFunction(Void, "glEvalMesh1", [(GLenum, "mode"), (GLint, "i1"), (GLint, "i2")]),
376     GlFunction(Void, "glEvalPoint1", [(GLint, "i")]),
377     GlFunction(Void, "glEvalMesh2", [(GLenum, "mode"), (GLint, "i1"), (GLint, "i2"), (GLint, "j1"), (GLint, "j2")]),
378     GlFunction(Void, "glEvalPoint2", [(GLint, "i"), (GLint, "j")]),
379     GlFunction(Void, "glAlphaFunc", [(GLenum, "func"), (GLclampf, "ref")]),
380     GlFunction(Void, "glPixelZoom", [(GLfloat, "xfactor"), (GLfloat, "yfactor")]),
381     GlFunction(Void, "glPixelTransferf", [(GLenum, "pname"), (GLfloat, "param")]),
382     GlFunction(Void, "glPixelTransferi", [(GLenum, "pname"), (GLint, "param")]),
383     GlFunction(Void, "glPixelMapfv", [(GLenum, "map"), (GLsizei, "mapsize"), (Const(Array(GLfloat, "mapsize")), "values")]),
384     GlFunction(Void, "glPixelMapuiv", [(GLenum, "map"), (GLsizei, "mapsize"), (Const(Array(GLuint, "mapsize")), "values")]),
385     GlFunction(Void, "glPixelMapusv", [(GLenum, "map"), (GLsizei, "mapsize"), (Const(Array(GLushort, "mapsize")), "values")]),
386     GlFunction(Void, "glCopyPixels", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "type")]),
387     GlFunction(Void, "glDrawPixels", [(GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glDrawPixels_size(format, type, width, height)"), "pixels")]),
388     GlFunction(Void, "glGetClipPlane", [(GLenum, "plane"), Out(Array(GLdouble, "4"), "equation")], sideeffects=False),
389     GlFunction(Void, "glGetLightfv", [(GLenum, "light"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetLightfv_size(pname)"), "params")], sideeffects=False),
390     GlFunction(Void, "glGetLightiv", [(GLenum, "light"), (GLenum, "pname"), Out(Array(GLint, "__glGetLightiv_size(pname)"), "params")], sideeffects=False),
391     GlFunction(Void, "glGetMapdv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLdouble), "v")], sideeffects=False),
392     GlFunction(Void, "glGetMapfv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLfloat), "v")], sideeffects=False),
393     GlFunction(Void, "glGetMapiv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLint), "v")], sideeffects=False),
394     GlFunction(Void, "glGetMaterialfv", [(GLenum, "face"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetMaterialfv_size(pname)"), "params")], sideeffects=False),
395     GlFunction(Void, "glGetMaterialiv", [(GLenum, "face"), (GLenum, "pname"), Out(Array(GLint, "__glGetMaterialiv_size(pname)"), "params")], sideeffects=False),
396     GlFunction(Void, "glGetPixelMapfv", [(GLenum, "map"), Out(Pointer(GLfloat), "values")], sideeffects=False),
397     GlFunction(Void, "glGetPixelMapuiv", [(GLenum, "map"), Out(Pointer(GLuint), "values")], sideeffects=False),
398     GlFunction(Void, "glGetPixelMapusv", [(GLenum, "map"), Out(Pointer(GLushort), "values")], sideeffects=False),
399     GlFunction(Void, "glGetPolygonStipple", [Out(OpaquePointer(GLubyte), "mask")], sideeffects=False),
400     GlFunction(Void, "glGetTexEnvfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexEnvfv_size(pname)"), "params")], sideeffects=False),
401     GlFunction(Void, "glGetTexEnviv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexEnviv_size(pname)"), "params")], sideeffects=False),
402     GlFunction(Void, "glGetTexGendv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLdouble, "__glGetTexGendv_size(pname)"), "params")], sideeffects=False),
403     GlFunction(Void, "glGetTexGenfv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexGenfv_size(pname)"), "params")], sideeffects=False),
404     GlFunction(Void, "glGetTexGeniv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexGeniv_size(pname)"), "params")], sideeffects=False),
405     GlFunction(GLboolean, "glIsList", [(GLuint, "list")]),
406     GlFunction(Void, "glFrustum", [(GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
407     GlFunction(Void, "glLoadIdentity", []),
408     GlFunction(Void, "glLoadMatrixf", [(Const(Array(GLfloat, "16")), "m")]),
409     GlFunction(Void, "glLoadMatrixd", [(Const(Array(GLdouble, "16")), "m")]),
410     GlFunction(Void, "glMatrixMode", [(GLenum, "mode")]),
411     GlFunction(Void, "glMultMatrixf", [(Const(Array(GLfloat, "16")), "m")]),
412     GlFunction(Void, "glMultMatrixd", [(Const(Array(GLdouble, "16")), "m")]),
413     GlFunction(Void, "glOrtho", [(GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
414     GlFunction(Void, "glPopMatrix", []),
415     GlFunction(Void, "glPushMatrix", []),
416     GlFunction(Void, "glRotated", [(GLdouble, "angle"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
417     GlFunction(Void, "glRotatef", [(GLfloat, "angle"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
418     GlFunction(Void, "glScaled", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
419     GlFunction(Void, "glScalef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
420     GlFunction(Void, "glTranslated", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
421     GlFunction(Void, "glTranslatef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
422
423     # GL_VERSION_1_1
424     GlFunction(Void, "glDrawArrays", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
425     GlFunction(Void, "glDrawElements", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "indices")]),
426     GlFunction(Void, "glGetPointerv", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
427     GlFunction(Void, "glPolygonOffset", [(GLfloat, "factor"), (GLfloat, "units")]),
428     GlFunction(Void, "glCopyTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
429     GlFunction(Void, "glCopyTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
430     GlFunction(Void, "glCopyTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
431     GlFunction(Void, "glCopyTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
432     GlFunction(Void, "glTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage1D_size(format, type, width)"), "pixels")]),
433     GlFunction(Void, "glTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage2D_size(format, type, width, height)"), "pixels")]),
434     GlFunction(Void, "glBindTexture", [(GLenum, "target"), (GLtexture, "texture")]),
435     GlFunction(Void, "glDeleteTextures", [(GLsizei, "n"), (Const(Array(GLtexture, "n")), "textures")]),
436     GlFunction(Void, "glGenTextures", [(GLsizei, "n"), Out(Array(GLtexture, "n"), "textures")]),
437     GlFunction(GLboolean, "glIsTexture", [(GLtexture, "texture")]),
438
439     # GL_VERSION_1_1_DEPRECATED
440     GlFunction(Void, "glArrayElement", [(GLint, "i")]),
441     GlFunction(Void, "glColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
442     GlFunction(Void, "glDisableClientState", [(GLenum, "array")]),
443     GlFunction(Void, "glEdgeFlagPointer", [(GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
444     GlFunction(Void, "glEnableClientState", [(GLenum, "array")]),
445     GlFunction(Void, "glIndexPointer", [(GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
446     GlFunction(Void, "glInterleavedArrays", [(GLenum, "format"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
447     GlFunction(Void, "glNormalPointer", [(GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
448     GlFunction(Void, "glTexCoordPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
449     GlFunction(Void, "glVertexPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
450     GlFunction(GLboolean, "glAreTexturesResident", [(GLsizei, "n"), (Const(Array(GLtexture, "n")), "textures"), Out(Array(GLboolean, "n"), "residences")]),
451     GlFunction(Void, "glPrioritizeTextures", [(GLsizei, "n"), (Const(Array(GLtexture, "n")), "textures"), (Const(Array(GLclampf, "n")), "priorities")]),
452     GlFunction(Void, "glIndexub", [(GLubyte, "c")]),
453     GlFunction(Void, "glIndexubv", [(Const(Pointer(GLubyte)), "c")]),
454     GlFunction(Void, "glPopClientAttrib", []),
455     GlFunction(Void, "glPushClientAttrib", [(GLbitfield_client_attrib, "mask")]),
456
457     # GL_VERSION_1_2
458     GlFunction(Void, "glBlendColor", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
459     GlFunction(Void, "glBlendEquation", [(GLenum, "mode")]),
460     GlFunction(Void, "glDrawRangeElements", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "indices")]),
461     GlFunction(Void, "glTexImage3D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage3D_size(format, type, width, height, depth, border)"), "pixels")]),
462     GlFunction(Void, "glTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage3D_size(format, type, width, height, depth)"), "pixels")]),
463     GlFunction(Void, "glCopyTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
464
465     # GL_VERSION_1_2_DEPRECATED
466     GlFunction(Void, "glColorTable", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "table")]),
467     GlFunction(Void, "glColorTableParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLfloat, "__glColorTableParameterfv_size(pname)")), "params")]),
468     GlFunction(Void, "glColorTableParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLint, "__glColorTableParameteriv_size(pname)")), "params")]),
469     GlFunction(Void, "glCopyColorTable", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
470     GlFunction(Void, "glGetColorTable", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (OpaquePointer(GLvoid), "table")], sideeffects=False),
471     GlFunction(Void, "glGetColorTableParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetColorTableParameterfv_size(pname)"), "params")], sideeffects=False),
472     GlFunction(Void, "glGetColorTableParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetColorTableParameteriv_size(pname)"), "params")], sideeffects=False),
473     GlFunction(Void, "glColorSubTable", [(GLenum, "target"), (GLsizei, "start"), (GLsizei, "count"), (GLenum, "format"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "data")]),
474     GlFunction(Void, "glCopyColorSubTable", [(GLenum, "target"), (GLsizei, "start"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
475     GlFunction(Void, "glConvolutionFilter1D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "image")]),
476     GlFunction(Void, "glConvolutionFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "image")]),
477     GlFunction(Void, "glConvolutionParameterf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "params")]),
478     GlFunction(Void, "glConvolutionParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLfloat, "__glConvolutionParameterfv_size(pname)")), "params")]),
479     GlFunction(Void, "glConvolutionParameteri", [(GLenum, "target"), (GLenum, "pname"), (GLint, "params")]),
480     GlFunction(Void, "glConvolutionParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Const(Array(GLint, "__glConvolutionParameteriv_size(pname)")), "params")]),
481     GlFunction(Void, "glCopyConvolutionFilter1D", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
482     GlFunction(Void, "glCopyConvolutionFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
483     GlFunction(Void, "glGetConvolutionFilter", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (OpaquePointer(GLvoid), "image")], sideeffects=False),
484     GlFunction(Void, "glGetConvolutionParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetConvolutionParameterfv_size(pname)"), "params")], sideeffects=False),
485     GlFunction(Void, "glGetConvolutionParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetConvolutionParameteriv_size(pname)"), "params")], sideeffects=False),
486     GlFunction(Void, "glGetSeparableFilter", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (OpaquePointer(GLvoid), "row"), (OpaquePointer(GLvoid), "column"), (OpaquePointer(GLvoid), "span")], sideeffects=False),
487     GlFunction(Void, "glSeparableFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "row"), (Const(OpaquePointer(GLvoid)), "column")]),
488     GlFunction(Void, "glGetHistogram", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (OpaquePointer(GLvoid), "values")], sideeffects=False),
489     GlFunction(Void, "glGetHistogramParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetHistogramParameterfv_size(pname)"), "params")], sideeffects=False),
490     GlFunction(Void, "glGetHistogramParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetHistogramParameteriv_size(pname)"), "params")], sideeffects=False),
491     GlFunction(Void, "glGetMinmax", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (OpaquePointer(GLvoid), "values")], sideeffects=False),
492     GlFunction(Void, "glGetMinmaxParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetMinmaxParameterfv_size(pname)"), "params")], sideeffects=False),
493     GlFunction(Void, "glGetMinmaxParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetMinmaxParameteriv_size(pname)"), "params")], sideeffects=False),
494     GlFunction(Void, "glHistogram", [(GLenum, "target"), (GLsizei, "width"), (GLenum, "internalformat"), (GLboolean, "sink")]),
495     GlFunction(Void, "glMinmax", [(GLenum, "target"), (GLenum, "internalformat"), (GLboolean, "sink")]),
496     GlFunction(Void, "glResetHistogram", [(GLenum, "target")]),
497     GlFunction(Void, "glResetMinmax", [(GLenum, "target")]),
498
499     # GL_VERSION_1_3
500     GlFunction(Void, "glActiveTexture", [(GLenum, "texture")]),
501     GlFunction(Void, "glSampleCoverage", [(GLclampf, "value"), (GLboolean, "invert")]),
502     GlFunction(Void, "glCompressedTexImage3D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "data")]),
503     GlFunction(Void, "glCompressedTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "data")]),
504     GlFunction(Void, "glCompressedTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "data")]),
505     GlFunction(Void, "glCompressedTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "data")]),
506     GlFunction(Void, "glCompressedTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "data")]),
507     GlFunction(Void, "glCompressedTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "data")]),
508     GlFunction(Void, "glGetCompressedTexImage", [(GLenum, "target"), (GLint, "level"), Out(OpaquePointer(GLvoid), "img")], sideeffects=False),
509
510     # GL_VERSION_1_3_DEPRECATED
511     GlFunction(Void, "glClientActiveTexture", [(GLenum, "texture")]),
512     GlFunction(Void, "glMultiTexCoord1d", [(GLenum, "target"), (GLdouble, "s")]),
513     GlFunction(Void, "glMultiTexCoord1dv", [(GLenum, "target"), (Const(Pointer(GLdouble)), "v")]),
514     GlFunction(Void, "glMultiTexCoord1f", [(GLenum, "target"), (GLfloat, "s")]),
515     GlFunction(Void, "glMultiTexCoord1fv", [(GLenum, "target"), (Const(Pointer(GLfloat)), "v")]),
516     GlFunction(Void, "glMultiTexCoord1i", [(GLenum, "target"), (GLint, "s")]),
517     GlFunction(Void, "glMultiTexCoord1iv", [(GLenum, "target"), (Const(Pointer(GLint)), "v")]),
518     GlFunction(Void, "glMultiTexCoord1s", [(GLenum, "target"), (GLshort, "s")]),
519     GlFunction(Void, "glMultiTexCoord1sv", [(GLenum, "target"), (Const(Pointer(GLshort)), "v")]),
520     GlFunction(Void, "glMultiTexCoord2d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t")]),
521     GlFunction(Void, "glMultiTexCoord2dv", [(GLenum, "target"), (Const(Array(GLdouble, "2")), "v")]),
522     GlFunction(Void, "glMultiTexCoord2f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t")]),
523     GlFunction(Void, "glMultiTexCoord2fv", [(GLenum, "target"), (Const(Array(GLfloat, "2")), "v")]),
524     GlFunction(Void, "glMultiTexCoord2i", [(GLenum, "target"), (GLint, "s"), (GLint, "t")]),
525     GlFunction(Void, "glMultiTexCoord2iv", [(GLenum, "target"), (Const(Array(GLint, "2")), "v")]),
526     GlFunction(Void, "glMultiTexCoord2s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t")]),
527     GlFunction(Void, "glMultiTexCoord2sv", [(GLenum, "target"), (Const(Array(GLshort, "2")), "v")]),
528     GlFunction(Void, "glMultiTexCoord3d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
529     GlFunction(Void, "glMultiTexCoord3dv", [(GLenum, "target"), (Const(Array(GLdouble, "3")), "v")]),
530     GlFunction(Void, "glMultiTexCoord3f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
531     GlFunction(Void, "glMultiTexCoord3fv", [(GLenum, "target"), (Const(Array(GLfloat, "3")), "v")]),
532     GlFunction(Void, "glMultiTexCoord3i", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r")]),
533     GlFunction(Void, "glMultiTexCoord3iv", [(GLenum, "target"), (Const(Array(GLint, "3")), "v")]),
534     GlFunction(Void, "glMultiTexCoord3s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
535     GlFunction(Void, "glMultiTexCoord3sv", [(GLenum, "target"), (Const(Array(GLshort, "3")), "v")]),
536     GlFunction(Void, "glMultiTexCoord4d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
537     GlFunction(Void, "glMultiTexCoord4dv", [(GLenum, "target"), (Const(Array(GLdouble, "4")), "v")]),
538     GlFunction(Void, "glMultiTexCoord4f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
539     GlFunction(Void, "glMultiTexCoord4fv", [(GLenum, "target"), (Const(Array(GLfloat, "4")), "v")]),
540     GlFunction(Void, "glMultiTexCoord4i", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
541     GlFunction(Void, "glMultiTexCoord4iv", [(GLenum, "target"), (Const(Array(GLint, "4")), "v")]),
542     GlFunction(Void, "glMultiTexCoord4s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
543     GlFunction(Void, "glMultiTexCoord4sv", [(GLenum, "target"), (Const(Array(GLshort, "4")), "v")]),
544     GlFunction(Void, "glLoadTransposeMatrixf", [(Const(Array(GLfloat, "16")), "m")]),
545     GlFunction(Void, "glLoadTransposeMatrixd", [(Const(Array(GLdouble, "16")), "m")]),
546     GlFunction(Void, "glMultTransposeMatrixf", [(Const(Array(GLfloat, "16")), "m")]),
547     GlFunction(Void, "glMultTransposeMatrixd", [(Const(Array(GLdouble, "16")), "m")]),
548
549     # GL_VERSION_1_4
550     GlFunction(Void, "glBlendFuncSeparate", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
551     GlFunction(Void, "glMultiDrawArrays", [(GLenum_mode, "mode"), (Const(Array(GLint, "primcount")), "first"), (Const(Array(GLsizei, "primcount")), "count"), (GLsizei, "primcount")]),
552     GlFunction(Void, "glMultiDrawElements", [(GLenum_mode, "mode"), (Const(Array(GLsizei, "primcount")), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount")]),
553     GlFunction(Void, "glPointParameterf", [(GLenum, "pname"), (GLfloat, "param")]),
554     GlFunction(Void, "glPointParameterfv", [(GLenum, "pname"), (Const(Array(GLfloat, "__glPointParameterfv_size(pname)")), "params")]),
555     GlFunction(Void, "glPointParameteri", [(GLenum, "pname"), (GLint, "param")]),
556     GlFunction(Void, "glPointParameteriv", [(GLenum, "pname"), (Const(Array(GLint, "__glPointParameteriv_size(pname)")), "params")]),
557
558     # GL_VERSION_1_4_DEPRECATED
559     GlFunction(Void, "glFogCoordf", [(GLfloat, "coord")]),
560     GlFunction(Void, "glFogCoordfv", [(Const(Pointer(GLfloat)), "coord")]),
561     GlFunction(Void, "glFogCoordd", [(GLdouble, "coord")]),
562     GlFunction(Void, "glFogCoorddv", [(Const(Pointer(GLdouble)), "coord")]),
563     GlFunction(Void, "glFogCoordPointer", [(GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
564     GlFunction(Void, "glSecondaryColor3b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
565     GlFunction(Void, "glSecondaryColor3bv", [(Const(Array(GLbyte, "3")), "v")]),
566     GlFunction(Void, "glSecondaryColor3d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
567     GlFunction(Void, "glSecondaryColor3dv", [(Const(Array(GLdouble, "3")), "v")]),
568     GlFunction(Void, "glSecondaryColor3f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
569     GlFunction(Void, "glSecondaryColor3fv", [(Const(Array(GLfloat, "3")), "v")]),
570     GlFunction(Void, "glSecondaryColor3i", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
571     GlFunction(Void, "glSecondaryColor3iv", [(Const(Array(GLint, "3")), "v")]),
572     GlFunction(Void, "glSecondaryColor3s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
573     GlFunction(Void, "glSecondaryColor3sv", [(Const(Array(GLshort, "3")), "v")]),
574     GlFunction(Void, "glSecondaryColor3ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
575     GlFunction(Void, "glSecondaryColor3ubv", [(Const(Array(GLubyte, "3")), "v")]),
576     GlFunction(Void, "glSecondaryColor3ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
577     GlFunction(Void, "glSecondaryColor3uiv", [(Const(Array(GLuint, "3")), "v")]),
578     GlFunction(Void, "glSecondaryColor3us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
579     GlFunction(Void, "glSecondaryColor3usv", [(Const(Array(GLushort, "3")), "v")]),
580     GlFunction(Void, "glSecondaryColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
581     GlFunction(Void, "glWindowPos2d", [(GLdouble, "x"), (GLdouble, "y")]),
582     GlFunction(Void, "glWindowPos2dv", [(Const(Array(GLdouble, "2")), "v")]),
583     GlFunction(Void, "glWindowPos2f", [(GLfloat, "x"), (GLfloat, "y")]),
584     GlFunction(Void, "glWindowPos2fv", [(Const(Array(GLfloat, "2")), "v")]),
585     GlFunction(Void, "glWindowPos2i", [(GLint, "x"), (GLint, "y")]),
586     GlFunction(Void, "glWindowPos2iv", [(Const(Array(GLint, "2")), "v")]),
587     GlFunction(Void, "glWindowPos2s", [(GLshort, "x"), (GLshort, "y")]),
588     GlFunction(Void, "glWindowPos2sv", [(Const(Array(GLshort, "2")), "v")]),
589     GlFunction(Void, "glWindowPos3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
590     GlFunction(Void, "glWindowPos3dv", [(Const(Array(GLdouble, "3")), "v")]),
591     GlFunction(Void, "glWindowPos3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
592     GlFunction(Void, "glWindowPos3fv", [(Const(Array(GLfloat, "3")), "v")]),
593     GlFunction(Void, "glWindowPos3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
594     GlFunction(Void, "glWindowPos3iv", [(Const(Array(GLint, "3")), "v")]),
595     GlFunction(Void, "glWindowPos3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
596     GlFunction(Void, "glWindowPos3sv", [(Const(Array(GLshort, "3")), "v")]),
597
598     # GL_VERSION_1_5
599     GlFunction(Void, "glGenQueries", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
600     GlFunction(Void, "glDeleteQueries", [(GLsizei, "n"), (Const(Array(GLquery, "n")), "ids")]),
601     GlFunction(GLboolean, "glIsQuery", [(GLquery, "id")]),
602     GlFunction(Void, "glBeginQuery", [(GLenum, "target"), (GLquery, "id")]),
603     GlFunction(Void, "glEndQuery", [(GLenum, "target")]),
604     GlFunction(Void, "glGetQueryiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "pname"), "params")], sideeffects=False),
605     GlFunction(Void, "glGetQueryObjectiv", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLint, "pname"), "params")], sideeffects=False),
606     GlFunction(Void, "glGetQueryObjectuiv", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLuint, "pname"), "params")], sideeffects=False),
607     GlFunction(Void, "glBindBuffer", [(GLenum, "target"), (GLbuffer, "buffer")]),
608     GlFunction(Void, "glDeleteBuffers", [(GLsizei, "n"), (Const(Array(GLbuffer, "n")), "buffer")]),
609     GlFunction(Void, "glGenBuffers", [(GLsizei, "n"), Out(Array(GLbuffer, "n"), "buffer")]),
610     GlFunction(GLboolean, "glIsBuffer", [(GLbuffer, "buffer")]),
611     GlFunction(Void, "glBufferData", [(GLenum, "target"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
612     GlFunction(Void, "glBufferSubData", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data")]),
613     GlFunction(Void, "glGetBufferSubData", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size"), Out(Blob(GLvoid, "size"), "data")], sideeffects=False),
614     GlFunction(OpaquePointer(GLvoid), "glMapBuffer", [(GLenum, "target"), (GLenum, "access")]),
615     GlFunction(GLboolean, "glUnmapBuffer", [(GLenum, "target")]),
616     GlFunction(Void, "glGetBufferParameteriv", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
617     GlFunction(Void, "glGetBufferPointerv", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
618
619     # GL_VERSION_2_0
620     GlFunction(Void, "glBlendEquationSeparate", [(GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
621     GlFunction(Void, "glDrawBuffers", [(GLsizei, "n"), (Const(Array(GLenum, "n")), "bufs")]),
622     GlFunction(Void, "glStencilOpSeparate", [(GLenum, "face"), (GLenum, "sfail"), (GLenum, "dpfail"), (GLenum, "dppass")]),
623     GlFunction(Void, "glStencilFuncSeparate", [(GLenum, "face"), (GLenum, "func"), (GLint, "ref"), (GLuint, "mask")]),
624     GlFunction(Void, "glStencilMaskSeparate", [(GLenum, "face"), (GLuint, "mask")]),
625     GlFunction(Void, "glAttachShader", [(GLprogram, "program"), (GLshader, "shader")]),
626     GlFunction(Void, "glBindAttribLocation", [(GLprogram, "program"), (GLuint, "index"), (Const(GLstring), "name")]),
627     GlFunction(Void, "glCompileShader", [(GLshader, "shader")]),
628     GlFunction(GLprogram, "glCreateProgram", []),
629     GlFunction(GLshader, "glCreateShader", [(GLenum, "type")]),
630     GlFunction(Void, "glDeleteProgram", [(GLprogram, "program")]),
631     GlFunction(Void, "glDeleteShader", [(GLshader, "shader")]),
632     GlFunction(Void, "glDetachShader", [(GLprogram, "program"), (GLshader, "shader")]),
633     GlFunction(Void, "glDisableVertexAttribArray", [(GLuint, "index")]),
634     GlFunction(Void, "glEnableVertexAttribArray", [(GLuint, "index")]),
635     GlFunction(Void, "glGetActiveAttrib", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
636     GlFunction(Void, "glGetActiveUniform", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
637     GlFunction(Void, "glGetAttachedShaders", [(GLprogram, "program"), (GLsizei, "maxCount"), Out(Pointer(GLsizei), "count"), Out(Array(GLuint, "maxCount"), "obj")], sideeffects=False),
638     GlFunction(GLint, "glGetAttribLocation", [(GLprogram, "program"), (Const(GLstring), "name")], sideeffects=False),
639     GlFunction(Void, "glGetProgramiv", [(GLprogram, "program"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
640     GlFunction(Void, "glGetProgramInfoLog", [(GLprogram, "program"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
641     GlFunction(Void, "glGetShaderiv", [(GLshader, "shader"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
642     GlFunction(Void, "glGetShaderInfoLog", [(GLshader, "shader"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
643     GlFunction(Void, "glGetShaderSource", [(GLshader, "shader"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(String("GLchar *", "*length"), "source")], sideeffects=False),
644     GlFunction(GLlocation, "glGetUniformLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
645     GlFunction(Void, "glGetUniformfv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
646     GlFunction(Void, "glGetUniformiv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
647     GlFunction(Void, "glGetVertexAttribdv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
648     GlFunction(Void, "glGetVertexAttribfv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
649     GlFunction(Void, "glGetVertexAttribiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "4"), "params")], sideeffects=False),
650     GlFunction(Void, "glGetVertexAttribPointerv", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
651     GlFunction(GLboolean, "glIsProgram", [(GLprogram, "program")]),
652     GlFunction(GLboolean, "glIsShader", [(GLshader, "shader")]),
653     GlFunction(Void, "glLinkProgram", [(GLprogram, "program")]),
654     GlFunction(Void, "glShaderSource", [(GLshader, "shader"), (GLsizei, "count"), (Const(Array(Const(GLstringARB), "count")), "string"), (Const(Array(GLint, "count")), "length")]),
655     GlFunction(Void, "glUseProgram", [(GLprogram, "program")]),
656     GlFunction(Void, "glUniform1f", [(GLlocation, "location"), (GLfloat, "v0")]),
657     GlFunction(Void, "glUniform2f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
658     GlFunction(Void, "glUniform3f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
659     GlFunction(Void, "glUniform4f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
660     GlFunction(Void, "glUniform1i", [(GLlocation, "location"), (GLint, "v0")]),
661     GlFunction(Void, "glUniform2i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
662     GlFunction(Void, "glUniform3i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
663     GlFunction(Void, "glUniform4i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
664     GlFunction(Void, "glUniform1fv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count")), "value")]),
665     GlFunction(Void, "glUniform2fv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count*2")), "value")]),
666     GlFunction(Void, "glUniform3fv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count*3")), "value")]),
667     GlFunction(Void, "glUniform4fv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "value")]),
668     GlFunction(Void, "glUniform1iv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLint, "count")), "value")]),
669     GlFunction(Void, "glUniform2iv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLint, "count*2")), "value")]),
670     GlFunction(Void, "glUniform3iv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLint, "count*3")), "value")]),
671     GlFunction(Void, "glUniform4iv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLint, "count*4")), "value")]),
672     GlFunction(Void, "glUniformMatrix2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*2*2")), "value")]),
673     GlFunction(Void, "glUniformMatrix3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*3*3")), "value")]),
674     GlFunction(Void, "glUniformMatrix4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*4*4")), "value")]),
675     GlFunction(Void, "glValidateProgram", [(GLprogram, "program")]),
676     GlFunction(Void, "glVertexAttrib1d", [(GLuint, "index"), (GLdouble, "x")]),
677     GlFunction(Void, "glVertexAttrib1dv", [(GLuint, "index"), (Const(Pointer(GLdouble)), "v")]),
678     GlFunction(Void, "glVertexAttrib1f", [(GLuint, "index"), (GLfloat, "x")]),
679     GlFunction(Void, "glVertexAttrib1fv", [(GLuint, "index"), (Const(Pointer(GLfloat)), "v")]),
680     GlFunction(Void, "glVertexAttrib1s", [(GLuint, "index"), (GLshort, "x")]),
681     GlFunction(Void, "glVertexAttrib1sv", [(GLuint, "index"), (Const(Pointer(GLshort)), "v")]),
682     GlFunction(Void, "glVertexAttrib2d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
683     GlFunction(Void, "glVertexAttrib2dv", [(GLuint, "index"), (Const(Array(GLdouble, "2")), "v")]),
684     GlFunction(Void, "glVertexAttrib2f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
685     GlFunction(Void, "glVertexAttrib2fv", [(GLuint, "index"), (Const(Array(GLfloat, "2")), "v")]),
686     GlFunction(Void, "glVertexAttrib2s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
687     GlFunction(Void, "glVertexAttrib2sv", [(GLuint, "index"), (Const(Array(GLshort, "2")), "v")]),
688     GlFunction(Void, "glVertexAttrib3d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
689     GlFunction(Void, "glVertexAttrib3dv", [(GLuint, "index"), (Const(Array(GLdouble, "3")), "v")]),
690     GlFunction(Void, "glVertexAttrib3f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
691     GlFunction(Void, "glVertexAttrib3fv", [(GLuint, "index"), (Const(Array(GLfloat, "3")), "v")]),
692     GlFunction(Void, "glVertexAttrib3s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
693     GlFunction(Void, "glVertexAttrib3sv", [(GLuint, "index"), (Const(Array(GLshort, "3")), "v")]),
694     GlFunction(Void, "glVertexAttrib4Nbv", [(GLuint, "index"), (Const(Array(GLbyte, "4")), "v")]),
695     GlFunction(Void, "glVertexAttrib4Niv", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
696     GlFunction(Void, "glVertexAttrib4Nsv", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
697     GlFunction(Void, "glVertexAttrib4Nub", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
698     GlFunction(Void, "glVertexAttrib4Nubv", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
699     GlFunction(Void, "glVertexAttrib4Nuiv", [(GLuint, "index"), (Const(Array(GLuint, "4")), "v")]),
700     GlFunction(Void, "glVertexAttrib4Nusv", [(GLuint, "index"), (Const(Array(GLushort, "4")), "v")]),
701     GlFunction(Void, "glVertexAttrib4bv", [(GLuint, "index"), (Const(Array(GLbyte, "4")), "v")]),
702     GlFunction(Void, "glVertexAttrib4d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
703     GlFunction(Void, "glVertexAttrib4dv", [(GLuint, "index"), (Const(Array(GLdouble, "4")), "v")]),
704     GlFunction(Void, "glVertexAttrib4f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
705     GlFunction(Void, "glVertexAttrib4fv", [(GLuint, "index"), (Const(Array(GLfloat, "4")), "v")]),
706     GlFunction(Void, "glVertexAttrib4iv", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
707     GlFunction(Void, "glVertexAttrib4s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
708     GlFunction(Void, "glVertexAttrib4sv", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
709     GlFunction(Void, "glVertexAttrib4ubv", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
710     GlFunction(Void, "glVertexAttrib4uiv", [(GLuint, "index"), (Const(Array(GLuint, "4")), "v")]),
711     GlFunction(Void, "glVertexAttrib4usv", [(GLuint, "index"), (Const(Array(GLushort, "4")), "v")]),
712     GlFunction(Void, "glVertexAttribPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
713
714     # GL_VERSION_2_1
715     GlFunction(Void, "glUniformMatrix2x3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "2*3")), "value")]),
716     GlFunction(Void, "glUniformMatrix3x2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "3*2")), "value")]),
717     GlFunction(Void, "glUniformMatrix2x4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "2*4")), "value")]),
718     GlFunction(Void, "glUniformMatrix4x2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "4*2")), "value")]),
719     GlFunction(Void, "glUniformMatrix3x4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "3*4")), "value")]),
720     GlFunction(Void, "glUniformMatrix4x3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "4*3")), "value")]),
721
722     # GL_VERSION_3_0
723     GlFunction(Void, "glColorMaski", [(GLuint, "index"), (GLboolean, "r"), (GLboolean, "g"), (GLboolean, "b"), (GLboolean, "a")]),
724     GlFunction(Void, "glGetBooleani_v", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLboolean, "__glGetBooleani_v_size(target)"), "data")], sideeffects=False),
725     GlFunction(Void, "glGetIntegeri_v", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLint, "__glGetIntegeri_v_size(target)"), "data")], sideeffects=False),
726     GlFunction(Void, "glEnablei", [(GLenum, "target"), (GLuint, "index")]),
727     GlFunction(Void, "glDisablei", [(GLenum, "target"), (GLuint, "index")]),
728     GlFunction(GLboolean, "glIsEnabledi", [(GLenum, "target"), (GLuint, "index")]),
729     GlFunction(Void, "glBeginTransformFeedback", [(GLenum, "primitiveMode")]),
730     GlFunction(Void, "glEndTransformFeedback", []),
731     GlFunction(Void, "glBindBufferRange", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
732     GlFunction(Void, "glBindBufferBase", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer")]),
733     GlFunction(Void, "glTransformFeedbackVaryings", [(GLuint, "program"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "varyings"), (GLenum, "bufferMode")]),
734     GlFunction(Void, "glGetTransformFeedbackVarying", [(GLuint, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(OpaqueArray(GLchar, "__glGetTransformFeedbackVarying_size(length)"), "name")], sideeffects=False),
735     GlFunction(Void, "glClampColor", [(GLenum, "target"), (GLenum, "clamp")]),
736     GlFunction(Void, "glBeginConditionalRender", [(GLuint, "id"), (GLenum, "mode")]),
737     GlFunction(Void, "glEndConditionalRender", []),
738     GlFunction(Void, "glVertexAttribIPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
739     GlFunction(Void, "glGetVertexAttribIiv", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
740     GlFunction(Void, "glGetVertexAttribIuiv", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLuint), "params")], sideeffects=False),
741     GlFunction(Void, "glVertexAttribI1i", [(GLuint, "index"), (GLint, "x")]),
742     GlFunction(Void, "glVertexAttribI2i", [(GLuint, "index"), (GLint, "x"), (GLint, "y")]),
743     GlFunction(Void, "glVertexAttribI3i", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
744     GlFunction(Void, "glVertexAttribI4i", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
745     GlFunction(Void, "glVertexAttribI1ui", [(GLuint, "index"), (GLuint, "x")]),
746     GlFunction(Void, "glVertexAttribI2ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y")]),
747     GlFunction(Void, "glVertexAttribI3ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z")]),
748     GlFunction(Void, "glVertexAttribI4ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
749     GlFunction(Void, "glVertexAttribI1iv", [(GLuint, "index"), (Const(Pointer(GLint)), "v")]),
750     GlFunction(Void, "glVertexAttribI2iv", [(GLuint, "index"), (Const(Array(GLint, "2")), "v")]),
751     GlFunction(Void, "glVertexAttribI3iv", [(GLuint, "index"), (Const(Array(GLint, "3")), "v")]),
752     GlFunction(Void, "glVertexAttribI4iv", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
753     GlFunction(Void, "glVertexAttribI1uiv", [(GLuint, "index"), (Const(Pointer(GLuint)), "v")]),
754     GlFunction(Void, "glVertexAttribI2uiv", [(GLuint, "index"), (Const(Array(GLuint, "2")), "v")]),
755     GlFunction(Void, "glVertexAttribI3uiv", [(GLuint, "index"), (Const(Array(GLuint, "3")), "v")]),
756     GlFunction(Void, "glVertexAttribI4uiv", [(GLuint, "index"), (Const(Array(GLuint, "4")), "v")]),
757     GlFunction(Void, "glVertexAttribI4bv", [(GLuint, "index"), (Const(Array(GLbyte, "4")), "v")]),
758     GlFunction(Void, "glVertexAttribI4sv", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
759     GlFunction(Void, "glVertexAttribI4ubv", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
760     GlFunction(Void, "glVertexAttribI4usv", [(GLuint, "index"), (Const(Array(GLushort, "4")), "v")]),
761     GlFunction(Void, "glGetUniformuiv", [(GLuint, "program"), (GLlocation, "location"), Out(OpaqueArray(GLuint, "__glGetUniformuiv_size(program, location)"), "params")], sideeffects=False),
762     GlFunction(Void, "glBindFragDataLocation", [(GLuint, "program"), (GLuint, "color"), (Const(OpaqueArray(GLchar, "__glBindFragDataLocation_size(name)")), "name")]),
763     GlFunction(GLint, "glGetFragDataLocation", [(GLuint, "program"), (Const(OpaqueArray(GLchar, "__glGetFragDataLocation_size(name)")), "name")], sideeffects=False),
764     GlFunction(Void, "glUniform1ui", [(GLlocation, "location"), (GLuint, "v0")]),
765     GlFunction(Void, "glUniform2ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
766     GlFunction(Void, "glUniform3ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
767     GlFunction(Void, "glUniform4ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
768     GlFunction(Void, "glUniform1uiv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count")), "value")]),
769     GlFunction(Void, "glUniform2uiv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*2")), "value")]),
770     GlFunction(Void, "glUniform3uiv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*3")), "value")]),
771     GlFunction(Void, "glUniform4uiv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*4")), "value")]),
772     GlFunction(Void, "glTexParameterIiv", [(GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glTexParameterIiv_size(pname)")), "params")]),
773     GlFunction(Void, "glTexParameterIuiv", [(GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLuint, "__glTexParameterIuiv_size(pname)")), "params")]),
774     GlFunction(Void, "glGetTexParameterIiv", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTexParameterIiv_size(pname)"), "params")], sideeffects=False),
775     GlFunction(Void, "glGetTexParameterIuiv", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetTexParameterIuiv_size(pname)"), "params")], sideeffects=False),
776     GlFunction(Void, "glClearBufferiv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Const(OpaqueArray(GLint, "__glClearBufferiv_size(buffer)")), "value")]),
777     GlFunction(Void, "glClearBufferuiv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Const(OpaqueArray(GLuint, "__glClearBufferuiv_size(buffer)")), "value")]),
778     GlFunction(Void, "glClearBufferfv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Const(OpaqueArray(GLfloat, "__glClearBufferfv_size(buffer)")), "value")]),
779     GlFunction(Void, "glClearBufferfi", [(GLenum, "buffer"), (GLint, "drawbuffer"), (GLfloat, "depth"), (GLint, "stencil")]),
780     GlFunction(CString, "glGetStringi", [(GLenum, "name"), (GLuint, "index")], sideeffects=False),
781
782     # GL_VERSION_3_1
783     GlFunction(Void, "glDrawArraysInstanced", [(GLenum, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount")]),
784     GlFunction(Void, "glDrawElementsInstanced", [(GLenum, "mode"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glDrawElementsInstanced_size(count, type)")), "indices"), (GLsizei, "primcount")]),
785     GlFunction(Void, "glTexBuffer", [(GLenum, "target"), (GLenum, "internalformat"), (GLuint, "buffer")]),
786     GlFunction(Void, "glPrimitiveRestartIndex", [(GLuint, "index")]),
787
788     # GL_VERSION_3_2
789     GlFunction(Void, "glGetInteger64i_v", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLint64, "__glGetInteger64i_v_size(target)"), "data")], sideeffects=False),
790     GlFunction(Void, "glGetBufferParameteri64v", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetBufferParameteri64v_size(pname)"), "params")], sideeffects=False),
791     GlFunction(Void, "glFramebufferTexture", [(GLenum, "target"), (GLenum, "attachment"), (GLuint, "texture"), (GLint, "level")]),
792
793     # GL_VERSION_3_3
794     GlFunction(Void, "glVertexAttribDivisor", [(GLuint, "index"), (GLuint, "divisor")]),
795
796     # GL_VERSION_4_0
797     GlFunction(Void, "glMinSampleShading", [(GLclampf, "value")]),
798     GlFunction(Void, "glBlendEquationi", [(GLuint, "buf"), (GLenum, "mode")]),
799     GlFunction(Void, "glBlendEquationSeparatei", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
800     GlFunction(Void, "glBlendFunci", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
801     GlFunction(Void, "glBlendFuncSeparatei", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
802
803     # GL_ARB_multitexture
804     GlFunction(Void, "glActiveTextureARB", [(GLenum, "texture")]),
805     GlFunction(Void, "glClientActiveTextureARB", [(GLenum, "texture")]),
806     GlFunction(Void, "glMultiTexCoord1dARB", [(GLenum, "target"), (GLdouble, "s")]),
807     GlFunction(Void, "glMultiTexCoord1dvARB", [(GLenum, "target"), (Const(Pointer(GLdouble)), "v")]),
808     GlFunction(Void, "glMultiTexCoord1fARB", [(GLenum, "target"), (GLfloat, "s")]),
809     GlFunction(Void, "glMultiTexCoord1fvARB", [(GLenum, "target"), (Const(Pointer(GLfloat)), "v")]),
810     GlFunction(Void, "glMultiTexCoord1iARB", [(GLenum, "target"), (GLint, "s")]),
811     GlFunction(Void, "glMultiTexCoord1ivARB", [(GLenum, "target"), (Const(Pointer(GLint)), "v")]),
812     GlFunction(Void, "glMultiTexCoord1sARB", [(GLenum, "target"), (GLshort, "s")]),
813     GlFunction(Void, "glMultiTexCoord1svARB", [(GLenum, "target"), (Const(Pointer(GLshort)), "v")]),
814     GlFunction(Void, "glMultiTexCoord2dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t")]),
815     GlFunction(Void, "glMultiTexCoord2dvARB", [(GLenum, "target"), (Const(Array(GLdouble, "2")), "v")]),
816     GlFunction(Void, "glMultiTexCoord2fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t")]),
817     GlFunction(Void, "glMultiTexCoord2fvARB", [(GLenum, "target"), (Const(Array(GLfloat, "2")), "v")]),
818     GlFunction(Void, "glMultiTexCoord2iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t")]),
819     GlFunction(Void, "glMultiTexCoord2ivARB", [(GLenum, "target"), (Const(Array(GLint, "2")), "v")]),
820     GlFunction(Void, "glMultiTexCoord2sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t")]),
821     GlFunction(Void, "glMultiTexCoord2svARB", [(GLenum, "target"), (Const(Array(GLshort, "2")), "v")]),
822     GlFunction(Void, "glMultiTexCoord3dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
823     GlFunction(Void, "glMultiTexCoord3dvARB", [(GLenum, "target"), (Const(Array(GLdouble, "3")), "v")]),
824     GlFunction(Void, "glMultiTexCoord3fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
825     GlFunction(Void, "glMultiTexCoord3fvARB", [(GLenum, "target"), (Const(Array(GLfloat, "3")), "v")]),
826     GlFunction(Void, "glMultiTexCoord3iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r")]),
827     GlFunction(Void, "glMultiTexCoord3ivARB", [(GLenum, "target"), (Const(Array(GLint, "3")), "v")]),
828     GlFunction(Void, "glMultiTexCoord3sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
829     GlFunction(Void, "glMultiTexCoord3svARB", [(GLenum, "target"), (Const(Array(GLshort, "3")), "v")]),
830     GlFunction(Void, "glMultiTexCoord4dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
831     GlFunction(Void, "glMultiTexCoord4dvARB", [(GLenum, "target"), (Const(Array(GLdouble, "4")), "v")]),
832     GlFunction(Void, "glMultiTexCoord4fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
833     GlFunction(Void, "glMultiTexCoord4fvARB", [(GLenum, "target"), (Const(Array(GLfloat, "4")), "v")]),
834     GlFunction(Void, "glMultiTexCoord4iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
835     GlFunction(Void, "glMultiTexCoord4ivARB", [(GLenum, "target"), (Const(Array(GLint, "4")), "v")]),
836     GlFunction(Void, "glMultiTexCoord4sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
837     GlFunction(Void, "glMultiTexCoord4svARB", [(GLenum, "target"), (Const(Array(GLshort, "4")), "v")]),
838
839     # GL_ARB_transpose_matrix
840     GlFunction(Void, "glLoadTransposeMatrixfARB", [(Const(Array(GLfloat, "16")), "m")]),
841     GlFunction(Void, "glLoadTransposeMatrixdARB", [(Const(Array(GLdouble, "16")), "m")]),
842     GlFunction(Void, "glMultTransposeMatrixfARB", [(Const(Array(GLfloat, "16")), "m")]),
843     GlFunction(Void, "glMultTransposeMatrixdARB", [(Const(Array(GLdouble, "16")), "m")]),
844
845     # GL_ARB_multisample
846     GlFunction(Void, "glSampleCoverageARB", [(GLclampf, "value"), (GLboolean, "invert")]),
847
848     # GL_ARB_texture_compression
849     GlFunction(Void, "glCompressedTexImage3DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Const(OpaquePointer(Void)), "data")]),
850     GlFunction(Void, "glCompressedTexImage2DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Const(OpaquePointer(Void)), "data")]),
851     GlFunction(Void, "glCompressedTexImage1DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Const(OpaquePointer(Void)), "data")]),
852     GlFunction(Void, "glCompressedTexSubImage3DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(OpaquePointer(Void)), "data")]),
853     GlFunction(Void, "glCompressedTexSubImage2DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(OpaquePointer(Void)), "data")]),
854     GlFunction(Void, "glCompressedTexSubImage1DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(OpaquePointer(Void)), "data")]),
855     GlFunction(Void, "glGetCompressedTexImageARB", [(GLenum, "target"), (GLint, "level"), Out(OpaquePointer(GLvoid), "img")], sideeffects=False),
856
857     # GL_ARB_point_parameters
858     GlFunction(Void, "glPointParameterfARB", [(GLenum, "pname"), (GLfloat, "param")]),
859     GlFunction(Void, "glPointParameterfvARB", [(GLenum, "pname"), (Const(Array(GLfloat, "__glPointParameterfvARB_size(pname)")), "params")]),
860
861     # GL_ARB_vertex_blend
862     GlFunction(Void, "glWeightbvARB", [(GLint, "size"), (Const(Array(GLbyte, "size")), "weights")]),
863     GlFunction(Void, "glWeightsvARB", [(GLint, "size"), (Const(Array(GLshort, "size")), "weights")]),
864     GlFunction(Void, "glWeightivARB", [(GLint, "size"), (Const(Array(GLint, "size")), "weights")]),
865     GlFunction(Void, "glWeightfvARB", [(GLint, "size"), (Const(Array(GLfloat, "size")), "weights")]),
866     GlFunction(Void, "glWeightdvARB", [(GLint, "size"), (Const(Array(GLdouble, "size")), "weights")]),
867     GlFunction(Void, "glWeightubvARB", [(GLint, "size"), (Const(Array(GLubyte, "size")), "weights")]),
868     GlFunction(Void, "glWeightusvARB", [(GLint, "size"), (Const(Array(GLushort, "size")), "weights")]),
869     GlFunction(Void, "glWeightuivARB", [(GLint, "size"), (Const(Array(GLuint, "size")), "weights")]),
870     GlFunction(Void, "glWeightPointerARB", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
871     GlFunction(Void, "glVertexBlendARB", [(GLint, "count")]),
872
873     # GL_ARB_matrix_palette
874     GlFunction(Void, "glCurrentPaletteMatrixARB", [(GLint, "index")]),
875     GlFunction(Void, "glMatrixIndexubvARB", [(GLint, "size"), (Const(Array(GLubyte, "size")), "indices")]),
876     GlFunction(Void, "glMatrixIndexusvARB", [(GLint, "size"), (Const(Array(GLushort, "size")), "indices")]),
877     GlFunction(Void, "glMatrixIndexuivARB", [(GLint, "size"), (Const(Array(GLuint, "size")), "indices")]),
878     GlFunction(Void, "glMatrixIndexPointerARB", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
879
880     # GL_ARB_window_pos
881     GlFunction(Void, "glWindowPos2dARB", [(GLdouble, "x"), (GLdouble, "y")]),
882     GlFunction(Void, "glWindowPos2dvARB", [(Const(Array(GLdouble, "2")), "v")]),
883     GlFunction(Void, "glWindowPos2fARB", [(GLfloat, "x"), (GLfloat, "y")]),
884     GlFunction(Void, "glWindowPos2fvARB", [(Const(Array(GLfloat, "2")), "v")]),
885     GlFunction(Void, "glWindowPos2iARB", [(GLint, "x"), (GLint, "y")]),
886     GlFunction(Void, "glWindowPos2ivARB", [(Const(Array(GLint, "2")), "v")]),
887     GlFunction(Void, "glWindowPos2sARB", [(GLshort, "x"), (GLshort, "y")]),
888     GlFunction(Void, "glWindowPos2svARB", [(Const(Array(GLshort, "2")), "v")]),
889     GlFunction(Void, "glWindowPos3dARB", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
890     GlFunction(Void, "glWindowPos3dvARB", [(Const(Array(GLdouble, "3")), "v")]),
891     GlFunction(Void, "glWindowPos3fARB", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
892     GlFunction(Void, "glWindowPos3fvARB", [(Const(Array(GLfloat, "3")), "v")]),
893     GlFunction(Void, "glWindowPos3iARB", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
894     GlFunction(Void, "glWindowPos3ivARB", [(Const(Array(GLint, "3")), "v")]),
895     GlFunction(Void, "glWindowPos3sARB", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
896     GlFunction(Void, "glWindowPos3svARB", [(Const(Array(GLshort, "3")), "v")]),
897
898     # GL_ARB_vertex_program
899     GlFunction(Void, "glVertexAttrib1dARB", [(GLuint, "index"), (GLdouble, "x")]),
900     GlFunction(Void, "glVertexAttrib1dvARB", [(GLuint, "index"), (Const(Pointer(GLdouble)), "v")]),
901     GlFunction(Void, "glVertexAttrib1fARB", [(GLuint, "index"), (GLfloat, "x")]),
902     GlFunction(Void, "glVertexAttrib1fvARB", [(GLuint, "index"), (Const(Pointer(GLfloat)), "v")]),
903     GlFunction(Void, "glVertexAttrib1sARB", [(GLuint, "index"), (GLshort, "x")]),
904     GlFunction(Void, "glVertexAttrib1svARB", [(GLuint, "index"), (Const(Pointer(GLshort)), "v")]),
905     GlFunction(Void, "glVertexAttrib2dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
906     GlFunction(Void, "glVertexAttrib2dvARB", [(GLuint, "index"), (Const(Array(GLdouble, "2")), "v")]),
907     GlFunction(Void, "glVertexAttrib2fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
908     GlFunction(Void, "glVertexAttrib2fvARB", [(GLuint, "index"), (Const(Array(GLfloat, "2")), "v")]),
909     GlFunction(Void, "glVertexAttrib2sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
910     GlFunction(Void, "glVertexAttrib2svARB", [(GLuint, "index"), (Const(Array(GLshort, "2")), "v")]),
911     GlFunction(Void, "glVertexAttrib3dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
912     GlFunction(Void, "glVertexAttrib3dvARB", [(GLuint, "index"), (Const(Array(GLdouble, "3")), "v")]),
913     GlFunction(Void, "glVertexAttrib3fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
914     GlFunction(Void, "glVertexAttrib3fvARB", [(GLuint, "index"), (Const(Array(GLfloat, "3")), "v")]),
915     GlFunction(Void, "glVertexAttrib3sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
916     GlFunction(Void, "glVertexAttrib3svARB", [(GLuint, "index"), (Const(Array(GLshort, "3")), "v")]),
917     GlFunction(Void, "glVertexAttrib4NbvARB", [(GLuint, "index"), (Const(Array(GLbyte, "4")), "v")]),
918     GlFunction(Void, "glVertexAttrib4NivARB", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
919     GlFunction(Void, "glVertexAttrib4NsvARB", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
920     GlFunction(Void, "glVertexAttrib4NubARB", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
921     GlFunction(Void, "glVertexAttrib4NubvARB", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
922     GlFunction(Void, "glVertexAttrib4NuivARB", [(GLuint, "index"), (Const(Array(GLuint, "4")), "v")]),
923     GlFunction(Void, "glVertexAttrib4NusvARB", [(GLuint, "index"), (Const(Array(GLushort, "4")), "v")]),
924     GlFunction(Void, "glVertexAttrib4bvARB", [(GLuint, "index"), (Const(Array(GLbyte, "4")), "v")]),
925     GlFunction(Void, "glVertexAttrib4dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
926     GlFunction(Void, "glVertexAttrib4dvARB", [(GLuint, "index"), (Const(Array(GLdouble, "4")), "v")]),
927     GlFunction(Void, "glVertexAttrib4fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
928     GlFunction(Void, "glVertexAttrib4fvARB", [(GLuint, "index"), (Const(Array(GLfloat, "4")), "v")]),
929     GlFunction(Void, "glVertexAttrib4ivARB", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
930     GlFunction(Void, "glVertexAttrib4sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
931     GlFunction(Void, "glVertexAttrib4svARB", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
932     GlFunction(Void, "glVertexAttrib4ubvARB", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
933     GlFunction(Void, "glVertexAttrib4uivARB", [(GLuint, "index"), (Const(Array(GLuint, "4")), "v")]),
934     GlFunction(Void, "glVertexAttrib4usvARB", [(GLuint, "index"), (Const(Array(GLushort, "4")), "v")]),
935     GlFunction(Void, "glVertexAttribPointerARB", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
936     GlFunction(Void, "glEnableVertexAttribArrayARB", [(GLuint, "index")]),
937     GlFunction(Void, "glDisableVertexAttribArrayARB", [(GLuint, "index")]),
938     GlFunction(Void, "glProgramStringARB", [(GLenum, "target"), (GLenum, "format"), (GLsizei, "len"), (String("const void *", "len"), "string")]),
939     GlFunction(Void, "glBindProgramARB", [(GLenum, "target"), (GLprogramARB, "program")]),
940     GlFunction(Void, "glDeleteProgramsARB", [(GLsizei, "n"), (Const(Array(GLprogramARB, "n")), "programs")]),
941     GlFunction(Void, "glGenProgramsARB", [(GLsizei, "n"), Out(Array(GLprogramARB, "n"), "programs")]),
942     GlFunction(Void, "glProgramEnvParameter4dARB", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
943     GlFunction(Void, "glProgramEnvParameter4dvARB", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLdouble, "4")), "params")]),
944     GlFunction(Void, "glProgramEnvParameter4fARB", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
945     GlFunction(Void, "glProgramEnvParameter4fvARB", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLfloat, "4")), "params")]),
946     GlFunction(Void, "glProgramLocalParameter4dARB", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
947     GlFunction(Void, "glProgramLocalParameter4dvARB", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLdouble, "4")), "params")]),
948     GlFunction(Void, "glProgramLocalParameter4fARB", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
949     GlFunction(Void, "glProgramLocalParameter4fvARB", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLfloat, "4")), "params")]),
950     GlFunction(Void, "glGetProgramEnvParameterdvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
951     GlFunction(Void, "glGetProgramEnvParameterfvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
952     GlFunction(Void, "glGetProgramLocalParameterdvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
953     GlFunction(Void, "glGetProgramLocalParameterfvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
954     GlFunction(Void, "glGetProgramivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
955     GlFunction(Void, "glGetProgramStringARB", [(GLenum, "target"), (GLenum, "pname"), Out(OpaquePointer(GLvoid), "string")], sideeffects=False),
956     GlFunction(Void, "glGetVertexAttribdvARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
957     GlFunction(Void, "glGetVertexAttribfvARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
958     GlFunction(Void, "glGetVertexAttribivARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "4"), "params")], sideeffects=False),
959     GlFunction(Void, "glGetVertexAttribPointervARB", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
960     GlFunction(GLboolean, "glIsProgramARB", [(GLprogramARB, "program")]),
961
962     # GL_ARB_vertex_buffer_object
963     GlFunction(Void, "glBindBufferARB", [(GLenum, "target"), (GLbuffer, "buffer")]),
964     GlFunction(Void, "glDeleteBuffersARB", [(GLsizei, "n"), (Const(Array(GLbuffer, "n")), "buffers")]),
965     GlFunction(Void, "glGenBuffersARB", [(GLsizei, "n"), Out(Array(GLbuffer, "n"), "buffers")]),
966     GlFunction(GLboolean, "glIsBufferARB", [(GLbuffer, "buffer")]),
967     GlFunction(Void, "glBufferDataARB", [(GLenum, "target"), (GLsizeiptrARB, "size"), (Const(Blob(GLvoid, "size")), "data"), (GLenum, "usage")]),
968     GlFunction(Void, "glBufferSubDataARB", [(GLenum, "target"), (GLintptrARB, "offset"), (GLsizeiptrARB, "size"), (Const(Blob(GLvoid, "size")), "data")]),
969     GlFunction(Void, "glGetBufferSubDataARB", [(GLenum, "target"), (GLintptrARB, "offset"), (GLsizeiptrARB, "size"), Out(Blob(GLvoid, "size"), "data")], sideeffects=False),
970     GlFunction(OpaquePointer(GLvoid), "glMapBufferARB", [(GLenum, "target"), (GLenum, "access")]),
971     GlFunction(GLboolean, "glUnmapBufferARB", [(GLenum, "target")]),
972     GlFunction(Void, "glGetBufferParameterivARB", [(GLenum, "target"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
973     GlFunction(Void, "glGetBufferPointervARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(OpaquePointer(GLvoid), "1"), "params")], sideeffects=False),
974
975     # GL_ARB_occlusion_query
976     GlFunction(Void, "glGenQueriesARB", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
977     GlFunction(Void, "glDeleteQueriesARB", [(GLsizei, "n"), (Const(Array(GLquery, "n")), "ids")]),
978     GlFunction(GLboolean, "glIsQueryARB", [(GLquery, "id")]),
979     GlFunction(Void, "glBeginQueryARB", [(GLenum, "target"), (GLquery, "id")]),
980     GlFunction(Void, "glEndQueryARB", [(GLenum, "target")]),
981     GlFunction(Void, "glGetQueryivARB", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
982     GlFunction(Void, "glGetQueryObjectivARB", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
983     GlFunction(Void, "glGetQueryObjectuivARB", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLuint), "params")], sideeffects=False),
984
985     # GL_ARB_shader_objects
986     GlFunction(Void, "glDeleteObjectARB", [(GLhandleARB, "obj")]),
987     GlFunction(GLhandleARB, "glGetHandleARB", [(GLenum, "pname")], sideeffects=False),
988     GlFunction(Void, "glDetachObjectARB", [(GLhandleARB, "containerObj"), (GLhandleARB, "attachedObj")]),
989     GlFunction(GLhandleARB, "glCreateShaderObjectARB", [(GLenum, "shaderType")]),
990     GlFunction(Void, "glShaderSourceARB", [(GLhandleARB, "shaderObj"), (GLsizei, "count"), (Const(Array(Const(GLstringARB), "count")), "string"), (Const(Array(GLint, "count")), "length")]),
991     GlFunction(Void, "glCompileShaderARB", [(GLhandleARB, "shaderObj")]),
992     GlFunction(GLhandleARB, "glCreateProgramObjectARB", []),
993     GlFunction(Void, "glAttachObjectARB", [(GLhandleARB, "containerObj"), (GLhandleARB, "obj")]),
994     GlFunction(Void, "glLinkProgramARB", [(GLhandleARB, "programObj")]),
995     GlFunction(Void, "glUseProgramObjectARB", [(GLhandleARB, "programObj")]),
996     GlFunction(Void, "glValidateProgramARB", [(GLhandleARB, "programObj")]),
997     GlFunction(Void, "glUniform1fARB", [(GLlocationARB, "location"), (GLfloat, "v0")]),
998     GlFunction(Void, "glUniform2fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
999     GlFunction(Void, "glUniform3fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
1000     GlFunction(Void, "glUniform4fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
1001     GlFunction(Void, "glUniform1iARB", [(GLlocationARB, "location"), (GLint, "v0")]),
1002     GlFunction(Void, "glUniform2iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1")]),
1003     GlFunction(Void, "glUniform3iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
1004     GlFunction(Void, "glUniform4iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
1005     GlFunction(Void, "glUniform1fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count")), "value")]),
1006     GlFunction(Void, "glUniform2fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "(2*count)")), "value")]),
1007     GlFunction(Void, "glUniform3fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "(3*count)")), "value")]),
1008     GlFunction(Void, "glUniform4fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "(4*count)")), "value")]),
1009     GlFunction(Void, "glUniform1ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLint, "count")), "value")]),
1010     GlFunction(Void, "glUniform2ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLint, "(2*count)")), "value")]),
1011     GlFunction(Void, "glUniform3ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLint, "(3*count)")), "value")]),
1012     GlFunction(Void, "glUniform4ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Const(Array(GLint, "(4*count)")), "value")]),
1013     GlFunction(Void, "glUniformMatrix2fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*2*2")), "value")]),
1014     GlFunction(Void, "glUniformMatrix3fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*3*3")), "value")]),
1015     GlFunction(Void, "glUniformMatrix4fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*4*4")), "value")]),
1016     GlFunction(Void, "glGetObjectParameterfvARB", [(GLhandleARB, "obj"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
1017     GlFunction(Void, "glGetObjectParameterivARB", [(GLhandleARB, "obj"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
1018     GlFunction(Void, "glGetInfoLogARB", [(GLhandleARB, "obj"), (GLsizei, "maxLength"), Out(Pointer(GLsizei), "length"), Out(GLstringARB, "infoLog")], sideeffects=False),
1019     GlFunction(Void, "glGetAttachedObjectsARB", [(GLhandleARB, "containerObj"), (GLsizei, "maxLength"), (OpaquePointer(GLsizei), "length"), (OpaquePointer(GLhandleARB), "infoLog")], sideeffects=False),
1020     GlFunction(GLlocationARB, "glGetUniformLocationARB", [(GLhandleARB, "programObj"), (Const(GLstringARB), "name")], sideeffects=False),
1021     GlFunction(Void, "glGetActiveUniformARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstringARB, "name")], sideeffects=False),
1022     GlFunction(Void, "glGetUniformfvARB", [(GLhandleARB, "programObj"), (GLlocationARB, "location"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
1023     GlFunction(Void, "glGetUniformivARB", [(GLhandleARB, "programObj"), (GLlocationARB, "location"), (OpaquePointer(GLint), "params")], sideeffects=False),
1024     GlFunction(Void, "glGetShaderSourceARB", [(GLhandleARB, "obj"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstringARB, "source")], sideeffects=False),
1025
1026     # GL_ARB_vertex_shader
1027     GlFunction(Void, "glBindAttribLocationARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (Const(GLstringARB), "name")]),
1028     GlFunction(Void, "glGetActiveAttribARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (GLsizei, "maxLength"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstringARB, "name")], sideeffects=False),
1029     GlFunction(GLint, "glGetAttribLocationARB", [(GLhandleARB, "programObj"), (Const(GLstringARB), "name")], sideeffects=False),
1030
1031     # GL_ARB_draw_buffers
1032     GlFunction(Void, "glDrawBuffersARB", [(GLsizei, "n"), (Const(Array(GLenum, "n")), "bufs")]),
1033
1034     # GL_ARB_color_buffer_float
1035     GlFunction(Void, "glClampColorARB", [(GLenum, "target"), (GLenum, "clamp")]),
1036
1037     # GL_ARB_draw_instanced
1038     GlFunction(Void, "glDrawArraysInstancedARB", [(GLenum, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount")]),
1039     GlFunction(Void, "glDrawElementsInstancedARB", [(GLenum, "mode"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "indices"), (GLsizei, "primcount")]),
1040
1041     # GL_ARB_framebuffer_object
1042     GlFunction(GLboolean, "glIsRenderbuffer", [(GLrenderbuffer, "renderbuffer")]),
1043     GlFunction(Void, "glBindRenderbuffer", [(GLenum, "target"), (GLrenderbuffer, "renderbuffer")]),
1044     GlFunction(Void, "glDeleteRenderbuffers", [(GLsizei, "n"), (Const(Array(GLrenderbuffer, "n")), "renderbuffers")]),
1045     GlFunction(Void, "glGenRenderbuffers", [(GLsizei, "n"), Out(Array(GLrenderbuffer, "n"), "renderbuffers")]),
1046     GlFunction(Void, "glRenderbufferStorage", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
1047     GlFunction(Void, "glGetRenderbufferParameteriv", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
1048     GlFunction(GLboolean, "glIsFramebuffer", [(GLframebuffer, "framebuffer")]),
1049     GlFunction(Void, "glBindFramebuffer", [(GLenum, "target"), (GLframebuffer, "framebuffer")]),
1050     GlFunction(Void, "glDeleteFramebuffers", [(GLsizei, "n"), (Const(Array(GLframebuffer, "n")), "framebuffers")]),
1051     GlFunction(Void, "glGenFramebuffers", [(GLsizei, "n"), Out(Array(GLframebuffer, "n"), "framebuffers")]),
1052     GlFunction(GLenum, "glCheckFramebufferStatus", [(GLenum, "target")]),
1053     GlFunction(Void, "glFramebufferTexture1D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
1054     GlFunction(Void, "glFramebufferTexture2D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
1055     GlFunction(Void, "glFramebufferTexture3D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
1056     GlFunction(Void, "glFramebufferRenderbuffer", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
1057     GlFunction(Void, "glGetFramebufferAttachmentParameteriv", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "pname"), Out(Array(GLint, "__glGetFramebufferAttachmentParameteriv_size(pname)"), "params")], sideeffects=False),
1058     GlFunction(Void, "glGenerateMipmap", [(GLenum, "target")]),
1059     GlFunction(Void, "glBlitFramebuffer", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
1060     GlFunction(Void, "glRenderbufferStorageMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
1061     GlFunction(Void, "glFramebufferTextureLayer", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
1062
1063     # GL_ARB_geometry_shader4
1064     GlFunction(Void, "glProgramParameteriARB", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
1065     GlFunction(Void, "glFramebufferTextureARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
1066     GlFunction(Void, "glFramebufferTextureLayerARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
1067     GlFunction(Void, "glFramebufferTextureFaceARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
1068
1069     # GL_ARB_instanced_arrays
1070     GlFunction(Void, "glVertexAttribDivisorARB", [(GLuint, "index"), (GLuint, "divisor")]),
1071
1072     # GL_ARB_map_buffer_range
1073     GlFunction(OpaquePointer(GLvoid), "glMapBufferRange", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "length"), (GLbitfield, "access")]),
1074     GlFunction(Void, "glFlushMappedBufferRange", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "length")]),
1075
1076     # GL_ARB_texture_buffer_object
1077     GlFunction(Void, "glTexBufferARB", [(GLenum, "target"), (GLenum, "internalformat"), (GLuint, "buffer")]),
1078
1079     # GL_ARB_vertex_array_object
1080     GlFunction(Void, "glBindVertexArray", [(GLvertexArray, "array")]),
1081     GlFunction(Void, "glDeleteVertexArrays", [(GLsizei, "n"), (Const(Array(GLvertexArray, "n")), "arrays")]),
1082     GlFunction(Void, "glGenVertexArrays", [(GLsizei, "n"), Out(Array(GLvertexArray, "n"), "arrays")]),
1083     GlFunction(GLboolean, "glIsVertexArray", [(GLvertexArray, "array")]),
1084
1085     # GL_ARB_uniform_buffer_object
1086     GlFunction(Void, "glGetUniformIndices", [(GLuint, "program"), (GLsizei, "uniformCount"), (Const(OpaqueArray(GLstring, "__glGetUniformIndices_size(uniformCount)")), "uniformNames"), Out(OpaqueArray(GLuint, "__glGetUniformIndices_size(uniformCount)"), "uniformIndices")], sideeffects=False),
1087     GlFunction(Void, "glGetActiveUniformsiv", [(GLuint, "program"), (GLsizei, "uniformCount"), (Const(OpaqueArray(GLuint, "__glGetActiveUniformsiv_size(uniformCount)")), "uniformIndices"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveUniformsiv_size(pname)"), "params")], sideeffects=False),
1088     GlFunction(Void, "glGetActiveUniformName", [(GLuint, "program"), (GLuint, "uniformIndex"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "uniformName")], sideeffects=False),
1089     GlFunction(GLuint, "glGetUniformBlockIndex", [(GLuint, "program"), (Const(OpaqueArray(GLchar, "__glGetUniformBlockIndex_size()")), "uniformBlockName")], sideeffects=False),
1090     GlFunction(Void, "glGetActiveUniformBlockiv", [(GLuint, "program"), (GLuint, "uniformBlockIndex"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveUniformBlockiv_size(pname)"), "params")], sideeffects=False),
1091     GlFunction(Void, "glGetActiveUniformBlockName", [(GLuint, "program"), (GLuint, "uniformBlockIndex"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "uniformBlockName")], sideeffects=False),
1092     GlFunction(Void, "glUniformBlockBinding", [(GLuint, "program"), (GLuint, "uniformBlockIndex"), (GLuint, "uniformBlockBinding")]),
1093
1094     # GL_ARB_copy_buffer
1095     GlFunction(Void, "glCopyBufferSubData", [(GLenum, "readTarget"), (GLenum, "writeTarget"), (GLintptr, "readOffset"), (GLintptr, "writeOffset"), (GLsizeiptr, "size")]),
1096
1097     # GL_ARB_draw_elements_base_vertex
1098     GlFunction(Void, "glDrawElementsBaseVertex", [(GLenum, "mode"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaqueArray(GLvoid, "__glDrawElementsBaseVertex_size(count, type)")), "indices"), (GLint, "basevertex")]),
1099     GlFunction(Void, "glDrawRangeElementsBaseVertex", [(GLenum, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaqueArray(GLvoid, "__glDrawRangeElementsBaseVertex_size(count, type)")), "indices"), (GLint, "basevertex")]),
1100     GlFunction(Void, "glDrawElementsInstancedBaseVertex", [(GLenum, "mode"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glDrawElementsInstancedBaseVertex_size(count, type)")), "indices"), (GLsizei, "primcount"), (GLint, "basevertex")]),
1101     GlFunction(Void, "glMultiDrawElementsBaseVertex", [(GLenum, "mode"), (Const(OpaqueArray(GLsizei, "__glMultiDrawElementsBaseVertex_size(primcount)")), "count"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiDrawElementsBaseVertex_size(primcount)")), "indices"), (GLsizei, "primcount"), (Const(OpaqueArray(GLint, "__glMultiDrawElementsBaseVertex_size(primcount)")), "basevertex")]),
1102
1103     # GL_ARB_provoking_vertex
1104     GlFunction(Void, "glProvokingVertex", [(GLenum, "mode")]),
1105
1106     # GL_ARB_sync
1107     GlFunction(GLsync, "glFenceSync", [(GLenum, "condition"), (GLbitfield, "flags")]),
1108     GlFunction(GLboolean, "glIsSync", [(GLsync, "sync")]),
1109     GlFunction(Void, "glDeleteSync", [(GLsync, "sync")]),
1110     GlFunction(GLenum, "glClientWaitSync", [(GLsync, "sync"), (GLbitfield, "flags"), (GLuint64, "timeout")]),
1111     GlFunction(Void, "glWaitSync", [(GLsync, "sync"), (GLbitfield, "flags"), (GLuint64, "timeout")]),
1112     GlFunction(Void, "glGetInteger64v", [(GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetInteger64v_size(pname)"), "params")], sideeffects=False),
1113     GlFunction(Void, "glGetSynciv", [(GLsync, "sync"), (GLenum, "pname"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLint, "(length ? *length : bufSize)"), "values")], sideeffects=False),
1114
1115     # GL_ARB_texture_multisample
1116     GlFunction(Void, "glTexImage2DMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLint, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedsamplelocations")]),
1117     GlFunction(Void, "glTexImage3DMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLint, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedsamplelocations")]),
1118     GlFunction(Void, "glGetMultisamplefv", [(GLenum, "pname"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetMultisamplefv_size(pname)"), "val")], sideeffects=False),
1119     GlFunction(Void, "glSampleMaski", [(GLuint, "index"), (GLbitfield, "mask")]),
1120
1121     # GL_ARB_draw_buffers_blend
1122     GlFunction(Void, "glBlendEquationiARB", [(GLuint, "buf"), (GLenum, "mode")]),
1123     GlFunction(Void, "glBlendEquationSeparateiARB", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
1124     GlFunction(Void, "glBlendFunciARB", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
1125     GlFunction(Void, "glBlendFuncSeparateiARB", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
1126
1127     # GL_ARB_sample_shading
1128     GlFunction(Void, "glMinSampleShadingARB", [(GLclampf, "value")]),
1129
1130     # GL_ARB_shading_language_include
1131     GlFunction(Void, "glNamedStringARB", [(GLenum, "type"), (GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLint, "stringlen"), (Const(String('GLchar *', "stringlen")), "string")]),
1132     GlFunction(Void, "glDeleteNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name")]),
1133     GlFunction(Void, "glCompileShaderIncludeARB", [(GLuint, "shader"), (GLsizei, "count"), (Array(GLstring, "count"), "path"), (Const(Array(GLint, "count")), "length")]),
1134     GlFunction(GLboolean, "glIsNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name")]),
1135     GlFunction(Void, "glGetNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLsizei, "bufSize"), Out(Pointer(GLint), "stringlen"), Out(Array(GLchar, "bufSize"), "string")], sideeffects=False),
1136     GlFunction(Void, "glGetNamedStringivARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetNamedStringivARB_size(pname)"), "params")], sideeffects=False),
1137
1138     # GL_ARB_blend_func_extended
1139     GlFunction(Void, "glBindFragDataLocationIndexed", [(GLuint, "program"), (GLuint, "colorNumber"), (GLuint, "index"), (Const(GLstring), "name")]),
1140     GlFunction(GLint, "glGetFragDataIndex", [(GLuint, "program"), (Const(GLstring), "name")], sideeffects=False),
1141
1142     # GL_ARB_sampler_objects
1143     GlFunction(Void, "glGenSamplers", [(GLsizei, "count"), Out(Array(GLuint, "count"), "samplers")]),
1144     GlFunction(Void, "glDeleteSamplers", [(GLsizei, "count"), (Const(Array(GLuint, "count")), "samplers")]),
1145     GlFunction(GLboolean, "glIsSampler", [(GLuint, "sampler")]),
1146     GlFunction(Void, "glBindSampler", [(GLuint, "unit"), (GLuint, "sampler")]),
1147     GlFunction(Void, "glSamplerParameteri", [(GLuint, "sampler"), (GLenum, "pname"), (GLint, "param")]),
1148     GlFunction(Void, "glSamplerParameteriv", [(GLuint, "sampler"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glSamplerParameteriv_size(pname)")), "param")]),
1149     GlFunction(Void, "glSamplerParameterf", [(GLuint, "sampler"), (GLenum, "pname"), (GLfloat, "param")]),
1150     GlFunction(Void, "glSamplerParameterfv", [(GLuint, "sampler"), (GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glSamplerParameterfv_size(pname)")), "param")]),
1151     GlFunction(Void, "glSamplerParameterIiv", [(GLuint, "sampler"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glSamplerParameterIiv_size(pname)")), "param")]),
1152     GlFunction(Void, "glSamplerParameterIuiv", [(GLuint, "sampler"), (GLenum, "pname"), (Const(OpaqueArray(GLuint, "__glSamplerParameterIuiv_size(pname)")), "param")]),
1153     GlFunction(Void, "glGetSamplerParameteriv", [(GLuint, "sampler"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetSamplerParameteriv_size(pname)"), "params")], sideeffects=False),
1154     GlFunction(Void, "glGetSamplerParameterIiv", [(GLuint, "sampler"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetSamplerParameterIiv_size(pname)"), "params")], sideeffects=False),
1155     GlFunction(Void, "glGetSamplerParameterfv", [(GLuint, "sampler"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetSamplerParameterfv_size(pname)"), "params")], sideeffects=False),
1156     GlFunction(Void, "glGetSamplerParameterIuiv", [(GLuint, "sampler"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetSamplerParameterIuiv_size(pname)"), "params")], sideeffects=False),
1157
1158     # GL_ARB_timer_query
1159     GlFunction(Void, "glQueryCounter", [(GLuint, "id"), (GLenum, "target")]),
1160     GlFunction(Void, "glGetQueryObjecti64v", [(GLuint, "id"), (GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetQueryObjecti64v_size(pname)"), "params")], sideeffects=False),
1161     GlFunction(Void, "glGetQueryObjectui64v", [(GLuint, "id"), (GLenum, "pname"), Out(OpaqueArray(GLuint64, "__glGetQueryObjectui64v_size(pname)"), "params")], sideeffects=False),
1162
1163     # GL_ARB_vertex_type_2_10_10_10_rev
1164     GlFunction(Void, "glVertexP2ui", [(GLenum, "type"), (GLuint, "value")]),
1165     GlFunction(Void, "glVertexP2uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "value")]),
1166     GlFunction(Void, "glVertexP3ui", [(GLenum, "type"), (GLuint, "value")]),
1167     GlFunction(Void, "glVertexP3uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "value")]),
1168     GlFunction(Void, "glVertexP4ui", [(GLenum, "type"), (GLuint, "value")]),
1169     GlFunction(Void, "glVertexP4uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "value")]),
1170     GlFunction(Void, "glTexCoordP1ui", [(GLenum, "type"), (GLuint, "coords")]),
1171     GlFunction(Void, "glTexCoordP1uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1172     GlFunction(Void, "glTexCoordP2ui", [(GLenum, "type"), (GLuint, "coords")]),
1173     GlFunction(Void, "glTexCoordP2uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1174     GlFunction(Void, "glTexCoordP3ui", [(GLenum, "type"), (GLuint, "coords")]),
1175     GlFunction(Void, "glTexCoordP3uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1176     GlFunction(Void, "glTexCoordP4ui", [(GLenum, "type"), (GLuint, "coords")]),
1177     GlFunction(Void, "glTexCoordP4uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1178     GlFunction(Void, "glMultiTexCoordP1ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
1179     GlFunction(Void, "glMultiTexCoordP1uiv", [(GLenum, "texture"), (GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1180     GlFunction(Void, "glMultiTexCoordP2ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
1181     GlFunction(Void, "glMultiTexCoordP2uiv", [(GLenum, "texture"), (GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1182     GlFunction(Void, "glMultiTexCoordP3ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
1183     GlFunction(Void, "glMultiTexCoordP3uiv", [(GLenum, "texture"), (GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1184     GlFunction(Void, "glMultiTexCoordP4ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
1185     GlFunction(Void, "glMultiTexCoordP4uiv", [(GLenum, "texture"), (GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1186     GlFunction(Void, "glNormalP3ui", [(GLenum, "type"), (GLuint, "coords")]),
1187     GlFunction(Void, "glNormalP3uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "coords")]),
1188     GlFunction(Void, "glColorP3ui", [(GLenum, "type"), (GLuint, "color")]),
1189     GlFunction(Void, "glColorP3uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "color")]),
1190     GlFunction(Void, "glColorP4ui", [(GLenum, "type"), (GLuint, "color")]),
1191     GlFunction(Void, "glColorP4uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "color")]),
1192     GlFunction(Void, "glSecondaryColorP3ui", [(GLenum, "type"), (GLuint, "color")]),
1193     GlFunction(Void, "glSecondaryColorP3uiv", [(GLenum, "type"), (Const(Pointer(GLuint)), "color")]),
1194     GlFunction(Void, "glVertexAttribP1ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
1195     GlFunction(Void, "glVertexAttribP1uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Const(Pointer(GLuint)), "value")]),
1196     GlFunction(Void, "glVertexAttribP2ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
1197     GlFunction(Void, "glVertexAttribP2uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Const(Pointer(GLuint)), "value")]),
1198     GlFunction(Void, "glVertexAttribP3ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
1199     GlFunction(Void, "glVertexAttribP3uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Const(Pointer(GLuint)), "value")]),
1200     GlFunction(Void, "glVertexAttribP4ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
1201     GlFunction(Void, "glVertexAttribP4uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Const(Pointer(GLuint)), "value")]),
1202
1203     # GL_ARB_draw_indirect
1204     GlFunction(Void, "glDrawArraysIndirect", [(GLenum, "mode"), (Const(OpaquePointer(GLvoid)), "indirect")]),
1205     GlFunction(Void, "glDrawElementsIndirect", [(GLenum, "mode"), (GLenum, "type"), (Const(OpaquePointer(GLvoid)), "indirect")]),
1206
1207     # GL_ARB_gpu_shader_fp64
1208     GlFunction(Void, "glUniform1d", [(GLlocation, "location"), (GLdouble, "x")]),
1209     GlFunction(Void, "glUniform2d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y")]),
1210     GlFunction(Void, "glUniform3d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
1211     GlFunction(Void, "glUniform4d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
1212     GlFunction(Void, "glUniform1dv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count")), "value")]),
1213     GlFunction(Void, "glUniform2dv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count*2")), "value")]),
1214     GlFunction(Void, "glUniform3dv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count*3")), "value")]),
1215     GlFunction(Void, "glUniform4dv", [(GLlocation, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count*4")), "value")]),
1216     GlFunction(Void, "glUniformMatrix2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*2*2")), "value")]),
1217     GlFunction(Void, "glUniformMatrix3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*3*3")), "value")]),
1218     GlFunction(Void, "glUniformMatrix4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*4*4")), "value")]),
1219     GlFunction(Void, "glUniformMatrix2x3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*2*3")), "value")]),
1220     GlFunction(Void, "glUniformMatrix2x4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*2*4")), "value")]),
1221     GlFunction(Void, "glUniformMatrix3x2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*3*2")), "value")]),
1222     GlFunction(Void, "glUniformMatrix3x4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*3*4")), "value")]),
1223     GlFunction(Void, "glUniformMatrix4x2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*4*2")), "value")]),
1224     GlFunction(Void, "glUniformMatrix4x3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count*4*3")), "value")]),
1225     GlFunction(Void, "glGetUniformdv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLdouble, "__glGetUniformdv_size(location)"), "params")], sideeffects=False),
1226
1227     # GL_ARB_shader_subroutine
1228     GlFunction(GLint, "glGetSubroutineUniformLocation", [(GLuint, "program"), (GLenum, "shadertype"), (Const(GLstring), "name")], sideeffects=False),
1229     GlFunction(GLuint, "glGetSubroutineIndex", [(GLuint, "program"), (GLenum, "shadertype"), (Const(GLstring), "name")], sideeffects=False),
1230     GlFunction(Void, "glGetActiveSubroutineUniformiv", [(GLuint, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveSubroutineUniformiv_size(pname)"), "values")], sideeffects=False),
1231     GlFunction(Void, "glGetActiveSubroutineUniformName", [(GLuint, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLsizei, "bufsize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufsize"), "name")], sideeffects=False),
1232     GlFunction(Void, "glGetActiveSubroutineName", [(GLuint, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLsizei, "bufsize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufsize"), "name")], sideeffects=False),
1233     GlFunction(Void, "glUniformSubroutinesuiv", [(GLenum, "shadertype"), (GLsizei, "count"), (Const(Array(GLuint, "count")), "indices")]),
1234     GlFunction(Void, "glGetUniformSubroutineuiv", [(GLenum, "shadertype"), (GLint, "location"), Out(Pointer(GLuint), "params")], sideeffects=False),
1235     GlFunction(Void, "glGetProgramStageiv", [(GLuint, "program"), (GLenum, "shadertype"), (GLenum, "pname"), Out(Pointer(GLint), "values")], sideeffects=False),
1236
1237     # GL_ARB_tessellation_shader
1238     GlFunction(Void, "glPatchParameteri", [(GLenum, "pname"), (GLint, "value")]),
1239     GlFunction(Void, "glPatchParameterfv", [(GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glPatchParameterfv_size(pname)")), "values")]),
1240
1241     # GL_ARB_transform_feedback2
1242     GlFunction(Void, "glBindTransformFeedback", [(GLenum, "target"), (GLuint, "id")]),
1243     GlFunction(Void, "glDeleteTransformFeedbacks", [(GLsizei, "n"), (Const(Array(GLuint, "n")), "ids")]),
1244     GlFunction(Void, "glGenTransformFeedbacks", [(GLsizei, "n"), Out(Array(GLuint, "n"), "ids")]),
1245     GlFunction(GLboolean, "glIsTransformFeedback", [(GLuint, "id")]),
1246     GlFunction(Void, "glPauseTransformFeedback", []),
1247     GlFunction(Void, "glResumeTransformFeedback", []),
1248     GlFunction(Void, "glDrawTransformFeedback", [(GLenum, "mode"), (GLuint, "id")]),
1249
1250     # GL_ARB_transform_feedback3
1251     GlFunction(Void, "glDrawTransformFeedbackStream", [(GLenum, "mode"), (GLuint, "id"), (GLuint, "stream")]),
1252     GlFunction(Void, "glBeginQueryIndexed", [(GLenum, "target"), (GLuint, "index"), (GLuint, "id")]),
1253     GlFunction(Void, "glEndQueryIndexed", [(GLenum, "target"), (GLuint, "index")]),
1254     GlFunction(Void, "glGetQueryIndexediv", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetQueryIndexediv_size(pname)"), "params")], sideeffects=False),
1255
1256     # GL_ARB_ES2_compatibility
1257     GlFunction(Void, "glReleaseShaderCompiler", []),
1258     GlFunction(Void, "glShaderBinary", [(GLsizei, "count"), (Const(Array(GLuint, "count")), "shaders"), (GLenum, "binaryformat"), (Const(Blob(GLvoid, "length")), "binary"), (GLsizei, "length")]),
1259     GlFunction(Void, "glGetShaderPrecisionFormat", [(GLenum, "shadertype"), (GLenum, "precisiontype"), Out(Array(GLint, "2"), "range"), Out(Array(GLint, "2"), "precision")], sideeffects=False),
1260     GlFunction(Void, "glDepthRangef", [(GLclampf, "n"), (GLclampf, "f")]),
1261     GlFunction(Void, "glClearDepthf", [(GLclampf, "d")]),
1262
1263     # GL_ARB_get_program_binary
1264     GlFunction(Void, "glGetProgramBinary", [(GLuint, "program"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLenum), "binaryFormat"), Out(OpaqueArray(GLvoid, "__glGetProgramBinary_size(length)"), "binary")], sideeffects=False),
1265     GlFunction(Void, "glProgramBinary", [(GLuint, "program"), (GLenum, "binaryFormat"), (Const(Blob(GLvoid, "length")), "binary"), (GLsizei, "length")]),
1266     GlFunction(Void, "glProgramParameteri", [(GLuint, "program"), (GLenum, "pname"), (GLint, "value")]),
1267
1268     # GL_ARB_separate_shader_objects
1269     GlFunction(Void, "glUseProgramStages", [(GLuint, "pipeline"), (GLbitfield, "stages"), (GLuint, "program")]),
1270     GlFunction(Void, "glActiveShaderProgram", [(GLuint, "pipeline"), (GLuint, "program")]),
1271     GlFunction(GLuint, "glCreateShaderProgramv", [(GLenum, "type"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "strings")]),
1272     GlFunction(Void, "glBindProgramPipeline", [(GLuint, "pipeline")]),
1273     GlFunction(Void, "glDeleteProgramPipelines", [(GLsizei, "n"), (Const(Array(GLuint, "n")), "pipelines")]),
1274     GlFunction(Void, "glGenProgramPipelines", [(GLsizei, "n"), Out(Array(GLuint, "n"), "pipelines")]),
1275     GlFunction(GLboolean, "glIsProgramPipeline", [(GLuint, "pipeline")]),
1276     GlFunction(Void, "glGetProgramPipelineiv", [(GLuint, "pipeline"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetProgramPipelineiv_size(pname)"), "params")], sideeffects=False),
1277     GlFunction(Void, "glProgramUniform1i", [(GLuint, "program"), (GLint, "location"), (GLint, "v0")]),
1278     GlFunction(Void, "glProgramUniform1iv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Pointer(GLint)), "value")]),
1279     GlFunction(Void, "glProgramUniform1f", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0")]),
1280     GlFunction(Void, "glProgramUniform1fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Pointer(GLfloat)), "value")]),
1281     GlFunction(Void, "glProgramUniform1d", [(GLuint, "program"), (GLint, "location"), (GLdouble, "v0")]),
1282     GlFunction(Void, "glProgramUniform1dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Pointer(GLdouble)), "value")]),
1283     GlFunction(Void, "glProgramUniform1ui", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0")]),
1284     GlFunction(Void, "glProgramUniform1uiv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Pointer(GLuint)), "value")]),
1285     GlFunction(Void, "glProgramUniform2i", [(GLuint, "program"), (GLint, "location"), (GLint, "v0"), (GLint, "v1")]),
1286     GlFunction(Void, "glProgramUniform2iv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "2")), "value")]),
1287     GlFunction(Void, "glProgramUniform2f", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
1288     GlFunction(Void, "glProgramUniform2fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "2")), "value")]),
1289     GlFunction(Void, "glProgramUniform2d", [(GLuint, "program"), (GLint, "location"), (GLdouble, "v0"), (GLdouble, "v1")]),
1290     GlFunction(Void, "glProgramUniform2dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "2")), "value")]),
1291     GlFunction(Void, "glProgramUniform2ui", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0"), (GLuint, "v1")]),
1292     GlFunction(Void, "glProgramUniform2uiv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "2")), "value")]),
1293     GlFunction(Void, "glProgramUniform3i", [(GLuint, "program"), (GLint, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
1294     GlFunction(Void, "glProgramUniform3iv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "3")), "value")]),
1295     GlFunction(Void, "glProgramUniform3f", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
1296     GlFunction(Void, "glProgramUniform3fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "3")), "value")]),
1297     GlFunction(Void, "glProgramUniform3d", [(GLuint, "program"), (GLint, "location"), (GLdouble, "v0"), (GLdouble, "v1"), (GLdouble, "v2")]),
1298     GlFunction(Void, "glProgramUniform3dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "3")), "value")]),
1299     GlFunction(Void, "glProgramUniform3ui", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
1300     GlFunction(Void, "glProgramUniform3uiv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "3")), "value")]),
1301     GlFunction(Void, "glProgramUniform4i", [(GLuint, "program"), (GLint, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
1302     GlFunction(Void, "glProgramUniform4iv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "4")), "value")]),
1303     GlFunction(Void, "glProgramUniform4f", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
1304     GlFunction(Void, "glProgramUniform4fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "4")), "value")]),
1305     GlFunction(Void, "glProgramUniform4d", [(GLuint, "program"), (GLint, "location"), (GLdouble, "v0"), (GLdouble, "v1"), (GLdouble, "v2"), (GLdouble, "v3")]),
1306     GlFunction(Void, "glProgramUniform4dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "4")), "value")]),
1307     GlFunction(Void, "glProgramUniform4ui", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
1308     GlFunction(Void, "glProgramUniform4uiv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "4")), "value")]),
1309     GlFunction(Void, "glProgramUniformMatrix2fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "2")), "value")]),
1310     GlFunction(Void, "glProgramUniformMatrix3fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "3")), "value")]),
1311     GlFunction(Void, "glProgramUniformMatrix4fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "4")), "value")]),
1312     GlFunction(Void, "glProgramUniformMatrix2dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "2")), "value")]),
1313     GlFunction(Void, "glProgramUniformMatrix3dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "3")), "value")]),
1314     GlFunction(Void, "glProgramUniformMatrix4dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "4")), "value")]),
1315     GlFunction(Void, "glProgramUniformMatrix2x3fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count")), "value")]),
1316     GlFunction(Void, "glProgramUniformMatrix3x2fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count")), "value")]),
1317     GlFunction(Void, "glProgramUniformMatrix2x4fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count")), "value")]),
1318     GlFunction(Void, "glProgramUniformMatrix4x2fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count")), "value")]),
1319     GlFunction(Void, "glProgramUniformMatrix3x4fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count")), "value")]),
1320     GlFunction(Void, "glProgramUniformMatrix4x3fv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count")), "value")]),
1321     GlFunction(Void, "glProgramUniformMatrix2x3dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
1322     GlFunction(Void, "glProgramUniformMatrix3x2dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
1323     GlFunction(Void, "glProgramUniformMatrix2x4dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
1324     GlFunction(Void, "glProgramUniformMatrix4x2dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
1325     GlFunction(Void, "glProgramUniformMatrix3x4dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
1326     GlFunction(Void, "glProgramUniformMatrix4x3dv", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
1327     GlFunction(Void, "glValidateProgramPipeline", [(GLuint, "pipeline")]),
1328     GlFunction(Void, "glGetProgramPipelineInfoLog", [(GLuint, "pipeline"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(OpaqueArray(GLchar, "__glGetProgramPipelineInfoLog_size(length)"), "infoLog")], sideeffects=False),
1329
1330     # GL_ARB_vertex_attrib_64bit
1331     GlFunction(Void, "glVertexAttribL1d", [(GLuint, "index"), (GLdouble, "x")]),
1332     GlFunction(Void, "glVertexAttribL2d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
1333     GlFunction(Void, "glVertexAttribL3d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
1334     GlFunction(Void, "glVertexAttribL4d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
1335     GlFunction(Void, "glVertexAttribL1dv", [(GLuint, "index"), (Const(Pointer(GLdouble)), "v")]),
1336     GlFunction(Void, "glVertexAttribL2dv", [(GLuint, "index"), (Const(Array(GLdouble, "2")), "v")]),
1337     GlFunction(Void, "glVertexAttribL3dv", [(GLuint, "index"), (Const(Array(GLdouble, "3")), "v")]),
1338     GlFunction(Void, "glVertexAttribL4dv", [(GLuint, "index"), (Const(Array(GLdouble, "4")), "v")]),
1339     GlFunction(Void, "glVertexAttribLPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaqueBlob(GLvoid, "size")), "pointer")]),
1340     GlFunction(Void, "glGetVertexAttribLdv", [(GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVertexAttribLdv_size(pname)"), "params")], sideeffects=False),
1341
1342     # GL_ARB_viewport_array
1343     GlFunction(Void, "glViewportArrayv", [(GLuint, "first"), (GLsizei, "count"), (Const(OpaqueArray(GLfloat, "__glViewportArrayv_size(count)")), "v")]),
1344     GlFunction(Void, "glViewportIndexedf", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "w"), (GLfloat, "h")]),
1345     GlFunction(Void, "glViewportIndexedfv", [(GLuint, "index"), (Const(Array(GLfloat, "4")), "v")]),
1346     GlFunction(Void, "glScissorArrayv", [(GLuint, "first"), (GLsizei, "count"), (Const(OpaqueArray(GLint, "__glScissorArrayv_size(count)")), "v")]),
1347     GlFunction(Void, "glScissorIndexed", [(GLuint, "index"), (GLint, "left"), (GLint, "bottom"), (GLsizei, "width"), (GLsizei, "height")]),
1348     GlFunction(Void, "glScissorIndexedv", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
1349     GlFunction(Void, "glDepthRangeArrayv", [(GLuint, "first"), (GLsizei, "count"), (Const(OpaqueArray(GLclampd, "__glDepthRangeArrayv_size(count)")), "v")]),
1350     GlFunction(Void, "glDepthRangeIndexed", [(GLuint, "index"), (GLclampd, "n"), (GLclampd, "f")]),
1351     GlFunction(Void, "glGetFloati_v", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetFloati_v_size(target)"), "data")], sideeffects=False),
1352     GlFunction(Void, "glGetDoublei_v", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLdouble, "__glGetDoublei_v_size(target)"), "data")], sideeffects=False),
1353
1354     # GL_ARB_debug_output
1355     GlFunction(Void, "glDebugMessageControlARB", [(GLenum, "source"), (GLenum, "type"), (GLenum, "severity"), (GLsizei, "count"), (Const(Array(GLuint, "count")), "ids"), (GLboolean, "enabled")]),
1356     GlFunction(Void, "glDebugMessageInsertARB", [(GLenum, "source"), (GLenum, "type"), (GLuint, "id"), (GLenum, "severity"), (GLsizei, "length"), (Const(String("GLchar *", "length")), "buf")]),
1357     GlFunction(Void, "glDebugMessageCallbackARB", [(GLDEBUGPROCARB, "callback"), (Const(OpaqueArray(GLvoid, "__glDebugMessageCallbackARB_size(callback)")), "userParam")]),
1358     GlFunction(GLuint, "glGetDebugMessageLogARB", [(GLuint, "count"), (GLsizei, "bufsize"), Out(Array(GLenum, "count"), "sources"), Out(Array(GLenum, "count"), "types"), Out(Array(GLuint, "count"), "ids"), Out(Array(GLenum, "count"), "severities"), Out(Array(GLsizei, "count"), "lengths"), Out(OpaqueArray(GLchar, "__glGetDebugMessageLogARB_size(lengths)"), "messageLog")], sideeffects=False),
1359
1360     # GL_ARB_robustness
1361     GlFunction(GLenum, "glGetGraphicsResetStatusARB", [], sideeffects=False),
1362     GlFunction(Void, "glGetnMapdvARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLdouble, "bufSize"), "v")], sideeffects=False),
1363     GlFunction(Void, "glGetnMapfvARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "v")], sideeffects=False),
1364     GlFunction(Void, "glGetnMapivARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "v")], sideeffects=False),
1365     GlFunction(Void, "glGetnPixelMapfvARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "values")], sideeffects=False),
1366     GlFunction(Void, "glGetnPixelMapuivARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLuint, "bufSize"), "values")], sideeffects=False),
1367     GlFunction(Void, "glGetnPixelMapusvARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLushort, "bufSize"), "values")], sideeffects=False),
1368     GlFunction(Void, "glGetnPolygonStippleARB", [(GLsizei, "bufSize"), Out(Blob(GLubyte, "bufSize"), "pattern")], sideeffects=False),
1369     GlFunction(Void, "glGetnColorTableARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "table")], sideeffects=False),
1370     GlFunction(Void, "glGetnConvolutionFilterARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "image")], sideeffects=False),
1371     GlFunction(Void, "glGetnSeparableFilterARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "rowBufSize"), Out(Blob(GLvoid, "rowBufSize"), "row"), (GLsizei, "columnBufSize"), Out(Blob(GLvoid, "columnBufSize"), "column"), Out(OpaquePointer(GLvoid), "span")], sideeffects=False),
1372     GlFunction(Void, "glGetnHistogramARB", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "values")], sideeffects=False),
1373     GlFunction(Void, "glGetnMinmaxARB", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "values")], sideeffects=False),
1374     GlFunction(Void, "glGetnTexImageARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "img")], sideeffects=False),
1375     GlFunction(Void, "glReadnPixelsARB", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "data")], sideeffects=False),
1376     GlFunction(Void, "glGetnCompressedTexImageARB", [(GLenum, "target"), (GLint, "lod"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "img")], sideeffects=False),
1377     GlFunction(Void, "glGetnUniformfvARB", [(GLuint, "program"), (GLint, "location"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "params")], sideeffects=False),
1378     GlFunction(Void, "glGetnUniformivARB", [(GLuint, "program"), (GLint, "location"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "params")], sideeffects=False),
1379     GlFunction(Void, "glGetnUniformuivARB", [(GLuint, "program"), (GLint, "location"), (GLsizei, "bufSize"), Out(Array(GLuint, "bufSize"), "params")], sideeffects=False),
1380     GlFunction(Void, "glGetnUniformdvARB", [(GLuint, "program"), (GLint, "location"), (GLsizei, "bufSize"), Out(Array(GLdouble, "bufSize"), "params")], sideeffects=False),
1381
1382     # GL_EXT_blend_color
1383     GlFunction(Void, "glBlendColorEXT", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
1384
1385     # GL_EXT_polygon_offset
1386     GlFunction(Void, "glPolygonOffsetEXT", [(GLfloat, "factor"), (GLfloat, "bias")]),
1387
1388     # GL_EXT_texture3D
1389     GlFunction(Void, "glTexImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTexImage3DEXT_size(format, type, width, height, depth)")), "pixels")]),
1390     GlFunction(Void, "glTexSubImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTexSubImage3DEXT_size(format, type, width, height, depth)")), "pixels")]),
1391
1392     # GL_SGIS_texture_filter4
1393     GlFunction(Void, "glGetTexFilterFuncSGIS", [(GLenum, "target"), (GLenum, "filter"), Out(OpaqueArray(GLfloat, "__glGetTexFilterFuncSGIS_size(target, filter)"), "weights")], sideeffects=False),
1394     GlFunction(Void, "glTexFilterFuncSGIS", [(GLenum, "target"), (GLenum, "filter"), (GLsizei, "n"), (Const(Array(GLfloat, "n")), "weights")]),
1395
1396     # GL_EXT_subtexture
1397     GlFunction(Void, "glTexSubImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Const(Blob(GLvoid, "__glTexSubImage1DEXT_size(format, type, width)")), "pixels")]),
1398     GlFunction(Void, "glTexSubImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Const(Blob(GLvoid, "__glTexSubImage2DEXT_size(format, type, width, height)")), "pixels")]),
1399
1400     # GL_EXT_copy_texture
1401     GlFunction(Void, "glCopyTexImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
1402     GlFunction(Void, "glCopyTexImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
1403     GlFunction(Void, "glCopyTexSubImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
1404     GlFunction(Void, "glCopyTexSubImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
1405     GlFunction(Void, "glCopyTexSubImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
1406
1407     # GL_SGIX_pixel_texture
1408     GlFunction(Void, "glPixelTexGenSGIX", [(GLenum, "mode")]),
1409
1410     # GL_SGIS_pixel_texture
1411     GlFunction(Void, "glPixelTexGenParameteriSGIS", [(GLenum, "pname"), (GLint, "param")]),
1412     GlFunction(Void, "glPixelTexGenParameterivSGIS", [(GLenum, "pname"), (Const(OpaqueArray(GLint, "__glPixelTexGenParameterivSGIS_size(pname)")), "params")]),
1413     GlFunction(Void, "glPixelTexGenParameterfSGIS", [(GLenum, "pname"), (GLfloat, "param")]),
1414     GlFunction(Void, "glPixelTexGenParameterfvSGIS", [(GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glPixelTexGenParameterfvSGIS_size(pname)")), "params")]),
1415     GlFunction(Void, "glGetPixelTexGenParameterivSGIS", [(GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetPixelTexGenParameterivSGIS_size(pname)"), "params")], sideeffects=False),
1416     GlFunction(Void, "glGetPixelTexGenParameterfvSGIS", [(GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetPixelTexGenParameterfvSGIS_size(pname)"), "params")], sideeffects=False),
1417
1418     # GL_EXT_texture_object
1419     GlFunction(GLboolean, "glAreTexturesResidentEXT", [(GLsizei, "n"), (Const(Array(GLtexture, "n")), "textures"), Out(Array(GLboolean, "n"), "residences")]),
1420     GlFunction(Void, "glBindTextureEXT", [(GLenum, "target"), (GLtexture, "texture")]),
1421     GlFunction(Void, "glDeleteTexturesEXT", [(GLsizei, "n"), (Const(Array(GLtexture, "n")), "textures")]),
1422     GlFunction(Void, "glGenTexturesEXT", [(GLsizei, "n"), Out(Array(GLtexture, "n"), "textures")]),
1423     GlFunction(GLboolean, "glIsTextureEXT", [(GLtexture, "texture")]),
1424     GlFunction(Void, "glPrioritizeTexturesEXT", [(GLsizei, "n"), (Const(Array(GLtexture, "n")), "textures"), (Const(Array(GLclampf, "n")), "priorities")]),
1425
1426     # GL_SGIS_multisample
1427     GlFunction(Void, "glSampleMaskSGIS", [(GLclampf, "value"), (GLboolean, "invert")]),
1428     GlFunction(Void, "glSamplePatternSGIS", [(GLenum, "pattern")]),
1429
1430     # GL_EXT_vertex_array
1431     GlFunction(Void, "glArrayElementEXT", [(GLint, "i")]),
1432     GlFunction(Void, "glColorPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1433     GlFunction(Void, "glDrawArraysEXT", [(GLenum, "mode"), (GLint, "first"), (GLsizei, "count")]),
1434     GlFunction(Void, "glEdgeFlagPointerEXT", [(GLsizei, "stride"), (GLsizei, "count"), (Const(OpaquePointer(GLboolean)), "pointer")]),
1435     GlFunction(Void, "glGetPointervEXT", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
1436     GlFunction(Void, "glIndexPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1437     GlFunction(Void, "glNormalPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1438     GlFunction(Void, "glTexCoordPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1439     GlFunction(Void, "glVertexPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1440
1441     # GL_EXT_blend_minmax
1442     GlFunction(Void, "glBlendEquationEXT", [(GLenum, "mode")]),
1443
1444     # GL_EXT_point_parameters
1445     GlFunction(Void, "glPointParameterfEXT", [(GLenum, "pname"), (GLfloat, "param")]),
1446     GlFunction(Void, "glPointParameterfvEXT", [(GLenum, "pname"), (Const(Array(GLfloat, "__glPointParameterfvEXT_size(pname)")), "params")]),
1447
1448     # GL_EXT_color_subtable
1449     GlFunction(Void, "glColorSubTableEXT", [(GLenum, "target"), (GLsizei, "start"), (GLsizei, "count"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glColorSubTableEXT_size(format, type, count)")), "data")]),
1450     GlFunction(Void, "glCopyColorSubTableEXT", [(GLenum, "target"), (GLsizei, "start"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
1451
1452     # GL_EXT_paletted_texture
1453     GlFunction(Void, "glColorTableEXT", [(GLenum, "target"), (GLenum, "internalFormat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glColorTableEXT_size(format, type, width)")), "table")]),
1454     GlFunction(Void, "glGetColorTableEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTableEXT_size(target, format, type)"), "data")], sideeffects=False),
1455     GlFunction(Void, "glGetColorTableParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetColorTableParameterivEXT_size(pname)"), "params")], sideeffects=False),
1456     GlFunction(Void, "glGetColorTableParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetColorTableParameterfvEXT_size(pname)"), "params")], sideeffects=False),
1457
1458     # GL_EXT_index_material
1459     GlFunction(Void, "glIndexMaterialEXT", [(GLenum, "face"), (GLenum, "mode")]),
1460
1461     # GL_EXT_index_func
1462     GlFunction(Void, "glIndexFuncEXT", [(GLenum, "func"), (GLclampf, "ref")]),
1463
1464     # GL_EXT_compiled_vertex_array
1465     GlFunction(Void, "glLockArraysEXT", [(GLint, "first"), (GLsizei, "count")]),
1466     GlFunction(Void, "glUnlockArraysEXT", []),
1467
1468     # GL_EXT_cull_vertex
1469     GlFunction(Void, "glCullParameterdvEXT", [(GLenum, "pname"), (Array(GLdouble, "4"), "params")]),
1470     GlFunction(Void, "glCullParameterfvEXT", [(GLenum, "pname"), (Array(GLfloat, "4"), "params")]),
1471
1472     # GL_EXT_draw_range_elements
1473     GlFunction(Void, "glDrawRangeElementsEXT", [(GLenum, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glDrawRangeElementsEXT_size(count, type)")), "indices")]),
1474
1475     # GL_EXT_light_texture
1476     GlFunction(Void, "glApplyTextureEXT", [(GLenum, "mode")]),
1477     GlFunction(Void, "glTextureLightEXT", [(GLenum, "pname")]),
1478     GlFunction(Void, "glTextureMaterialEXT", [(GLenum, "face"), (GLenum, "mode")]),
1479
1480     # GL_EXT_pixel_transform
1481     GlFunction(Void, "glPixelTransformParameteriEXT", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
1482     GlFunction(Void, "glPixelTransformParameterfEXT", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
1483     GlFunction(Void, "glPixelTransformParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (Const(Pointer(GLint)), "params")]),
1484     GlFunction(Void, "glPixelTransformParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), (Const(Pointer(GLfloat)), "params")]),
1485
1486     # GL_EXT_secondary_color
1487     GlFunction(Void, "glSecondaryColor3bEXT", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
1488     GlFunction(Void, "glSecondaryColor3bvEXT", [(Const(Array(GLbyte, "3")), "v")]),
1489     GlFunction(Void, "glSecondaryColor3dEXT", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
1490     GlFunction(Void, "glSecondaryColor3dvEXT", [(Const(Array(GLdouble, "3")), "v")]),
1491     GlFunction(Void, "glSecondaryColor3fEXT", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
1492     GlFunction(Void, "glSecondaryColor3fvEXT", [(Const(Array(GLfloat, "3")), "v")]),
1493     GlFunction(Void, "glSecondaryColor3iEXT", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
1494     GlFunction(Void, "glSecondaryColor3ivEXT", [(Const(Array(GLint, "3")), "v")]),
1495     GlFunction(Void, "glSecondaryColor3sEXT", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
1496     GlFunction(Void, "glSecondaryColor3svEXT", [(Const(Array(GLshort, "3")), "v")]),
1497     GlFunction(Void, "glSecondaryColor3ubEXT", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
1498     GlFunction(Void, "glSecondaryColor3ubvEXT", [(Const(Array(GLubyte, "3")), "v")]),
1499     GlFunction(Void, "glSecondaryColor3uiEXT", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
1500     GlFunction(Void, "glSecondaryColor3uivEXT", [(Const(Array(GLuint, "3")), "v")]),
1501     GlFunction(Void, "glSecondaryColor3usEXT", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
1502     GlFunction(Void, "glSecondaryColor3usvEXT", [(Const(Array(GLushort, "3")), "v")]),
1503     GlFunction(Void, "glSecondaryColorPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1504
1505     # GL_EXT_texture_perturb_normal
1506     GlFunction(Void, "glTextureNormalEXT", [(GLenum, "mode")]),
1507
1508     # GL_EXT_multi_draw_arrays
1509     GlFunction(Void, "glMultiDrawArraysEXT", [(GLenum_mode, "mode"), (OpaquePointer(GLint), "first"), (OpaquePointer(GLsizei), "count"), (GLsizei, "primcount")]),
1510     GlFunction(Void, "glMultiDrawElementsEXT", [(GLenum_mode, "mode"), (Const(Array(GLsizei, "primcount")), "count"), (GLenum, "type"), (Array(Const(Const(OpaquePointer(GLvoid))), "primcount"), "indices"), (GLsizei, "primcount")]),
1511
1512     # GL_EXT_fog_coord
1513     GlFunction(Void, "glFogCoordfEXT", [(GLfloat, "coord")]),
1514     GlFunction(Void, "glFogCoordfvEXT", [(Const(Pointer(GLfloat)), "coord")]),
1515     GlFunction(Void, "glFogCoorddEXT", [(GLdouble, "coord")]),
1516     GlFunction(Void, "glFogCoorddvEXT", [(Const(Pointer(GLdouble)), "coord")]),
1517     GlFunction(Void, "glFogCoordPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1518
1519     # GL_EXT_coordinate_frame
1520     GlFunction(Void, "glTangent3bEXT", [(GLbyte, "tx"), (GLbyte, "ty"), (GLbyte, "tz")]),
1521     GlFunction(Void, "glTangent3bvEXT", [(Const(Array(GLbyte, "3")), "v")]),
1522     GlFunction(Void, "glTangent3dEXT", [(GLdouble, "tx"), (GLdouble, "ty"), (GLdouble, "tz")]),
1523     GlFunction(Void, "glTangent3dvEXT", [(Const(Array(GLdouble, "3")), "v")]),
1524     GlFunction(Void, "glTangent3fEXT", [(GLfloat, "tx"), (GLfloat, "ty"), (GLfloat, "tz")]),
1525     GlFunction(Void, "glTangent3fvEXT", [(Const(Array(GLfloat, "3")), "v")]),
1526     GlFunction(Void, "glTangent3iEXT", [(GLint, "tx"), (GLint, "ty"), (GLint, "tz")]),
1527     GlFunction(Void, "glTangent3ivEXT", [(Const(Array(GLint, "3")), "v")]),
1528     GlFunction(Void, "glTangent3sEXT", [(GLshort, "tx"), (GLshort, "ty"), (GLshort, "tz")]),
1529     GlFunction(Void, "glTangent3svEXT", [(Const(Array(GLshort, "3")), "v")]),
1530     GlFunction(Void, "glBinormal3bEXT", [(GLbyte, "bx"), (GLbyte, "by"), (GLbyte, "bz")]),
1531     GlFunction(Void, "glBinormal3bvEXT", [(Const(Array(GLbyte, "3")), "v")]),
1532     GlFunction(Void, "glBinormal3dEXT", [(GLdouble, "bx"), (GLdouble, "by"), (GLdouble, "bz")]),
1533     GlFunction(Void, "glBinormal3dvEXT", [(Const(Array(GLdouble, "3")), "v")]),
1534     GlFunction(Void, "glBinormal3fEXT", [(GLfloat, "bx"), (GLfloat, "by"), (GLfloat, "bz")]),
1535     GlFunction(Void, "glBinormal3fvEXT", [(Const(Array(GLfloat, "3")), "v")]),
1536     GlFunction(Void, "glBinormal3iEXT", [(GLint, "bx"), (GLint, "by"), (GLint, "bz")]),
1537     GlFunction(Void, "glBinormal3ivEXT", [(Const(Array(GLint, "3")), "v")]),
1538     GlFunction(Void, "glBinormal3sEXT", [(GLshort, "bx"), (GLshort, "by"), (GLshort, "bz")]),
1539     GlFunction(Void, "glBinormal3svEXT", [(Const(Array(GLshort, "3")), "v")]),
1540     GlFunction(Void, "glTangentPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1541     GlFunction(Void, "glBinormalPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1542
1543     # GL_EXT_blend_func_separate
1544     GlFunction(Void, "glBlendFuncSeparateEXT", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
1545
1546     # GL_INGR_blend_func_separate
1547     GlFunction(Void, "glBlendFuncSeparateINGR", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
1548
1549     # GL_EXT_vertex_weighting
1550     GlFunction(Void, "glVertexWeightfEXT", [(GLfloat, "weight")]),
1551     GlFunction(Void, "glVertexWeightfvEXT", [(Const(Pointer(GLfloat)), "weight")]),
1552     GlFunction(Void, "glVertexWeightPointerEXT", [(GLsizei, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1553
1554     # GL_NV_vertex_array_range
1555     GlFunction(Void, "glFlushVertexArrayRangeNV", []),
1556     GlFunction(Void, "glVertexArrayRangeNV", [(GLsizei, "length"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1557
1558     # GL_NV_register_combiners
1559     GlFunction(Void, "glCombinerParameterfvNV", [(GLenum, "pname"), (Const(OpaquePointer(GLfloat)), "params")]),
1560     GlFunction(Void, "glCombinerParameterfNV", [(GLenum, "pname"), (GLfloat, "param")]),
1561     GlFunction(Void, "glCombinerParameterivNV", [(GLenum, "pname"), (Const(OpaquePointer(GLint)), "params")]),
1562     GlFunction(Void, "glCombinerParameteriNV", [(GLenum, "pname"), (GLint, "param")]),
1563     GlFunction(Void, "glCombinerInputNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "input"), (GLenum, "mapping"), (GLenum, "componentUsage")]),
1564     GlFunction(Void, "glCombinerOutputNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "abOutput"), (GLenum, "cdOutput"), (GLenum, "sumOutput"), (GLenum, "scale"), (GLenum, "bias"), (GLboolean, "abDotProduct"), (GLboolean, "cdDotProduct"), (GLboolean, "muxSum")]),
1565     GlFunction(Void, "glFinalCombinerInputNV", [(GLenum, "variable"), (GLenum, "input"), (GLenum, "mapping"), (GLenum, "componentUsage")]),
1566     GlFunction(Void, "glGetCombinerInputParameterfvNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
1567     GlFunction(Void, "glGetCombinerInputParameterivNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
1568     GlFunction(Void, "glGetCombinerOutputParameterfvNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
1569     GlFunction(Void, "glGetCombinerOutputParameterivNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
1570     GlFunction(Void, "glGetFinalCombinerInputParameterfvNV", [(GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
1571     GlFunction(Void, "glGetFinalCombinerInputParameterivNV", [(GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
1572
1573     # GL_MESA_resize_buffers
1574     GlFunction(Void, "glResizeBuffersMESA", []),
1575
1576     # GL_MESA_window_pos
1577     GlFunction(Void, "glWindowPos2dMESA", [(GLdouble, "x"), (GLdouble, "y")]),
1578     GlFunction(Void, "glWindowPos2dvMESA", [(Const(Array(GLdouble, "2")), "v")]),
1579     GlFunction(Void, "glWindowPos2fMESA", [(GLfloat, "x"), (GLfloat, "y")]),
1580     GlFunction(Void, "glWindowPos2fvMESA", [(Const(Array(GLfloat, "2")), "v")]),
1581     GlFunction(Void, "glWindowPos2iMESA", [(GLint, "x"), (GLint, "y")]),
1582     GlFunction(Void, "glWindowPos2ivMESA", [(Const(Array(GLint, "2")), "v")]),
1583     GlFunction(Void, "glWindowPos2sMESA", [(GLshort, "x"), (GLshort, "y")]),
1584     GlFunction(Void, "glWindowPos2svMESA", [(Const(Array(GLshort, "2")), "v")]),
1585     GlFunction(Void, "glWindowPos3dMESA", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
1586     GlFunction(Void, "glWindowPos3dvMESA", [(Const(Array(GLdouble, "3")), "v")]),
1587     GlFunction(Void, "glWindowPos3fMESA", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
1588     GlFunction(Void, "glWindowPos3fvMESA", [(Const(Array(GLfloat, "3")), "v")]),
1589     GlFunction(Void, "glWindowPos3iMESA", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
1590     GlFunction(Void, "glWindowPos3ivMESA", [(Const(Array(GLint, "3")), "v")]),
1591     GlFunction(Void, "glWindowPos3sMESA", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
1592     GlFunction(Void, "glWindowPos3svMESA", [(Const(Array(GLshort, "3")), "v")]),
1593     GlFunction(Void, "glWindowPos4dMESA", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
1594     GlFunction(Void, "glWindowPos4dvMESA", [(Const(Array(GLdouble, "4")), "v")]),
1595     GlFunction(Void, "glWindowPos4fMESA", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
1596     GlFunction(Void, "glWindowPos4fvMESA", [(Const(Array(GLfloat, "4")), "v")]),
1597     GlFunction(Void, "glWindowPos4iMESA", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
1598     GlFunction(Void, "glWindowPos4ivMESA", [(Const(Array(GLint, "4")), "v")]),
1599     GlFunction(Void, "glWindowPos4sMESA", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
1600     GlFunction(Void, "glWindowPos4svMESA", [(Const(Array(GLshort, "4")), "v")]),
1601
1602     # GL_IBM_multimode_draw_arrays
1603     GlFunction(Void, "glMultiModeDrawArraysIBM", [(Const(Array(GLenum_mode, "primcount")), "mode"), (Const(Array(GLint, "primcount")), "first"), (Const(Array(GLsizei, "primcount")), "count"), (GLsizei, "primcount"), (GLint, "modestride")]),
1604     GlFunction(Void, "glMultiModeDrawElementsIBM", [(Const(Array(GLenum_mode, "primcount")), "mode"), (Const(Array(GLsizei, "primcount")), "count"), (GLenum, "type"), (Array(Const(Const(OpaquePointer(GLvoid))), "primcount"), "indices"), (GLsizei, "primcount"), (GLint, "modestride")]),
1605
1606     # GL_EXT_multisample
1607     GlFunction(Void, "glSampleMaskEXT", [(GLclampf, "value"), (GLboolean, "invert")]),
1608     GlFunction(Void, "glSamplePatternEXT", [(GLenum, "pattern")]),
1609
1610
1611     # GL_NV_fence
1612     GlFunction(Void, "glDeleteFencesNV", [(GLsizei, "n"), (Const(Array(GLfenceNV, "n")), "fences")]),
1613     GlFunction(Void, "glGenFencesNV", [(GLsizei, "n"), Out(Array(GLfenceNV, "n"), "fences")]),
1614     GlFunction(GLboolean, "glIsFenceNV", [(GLfenceNV, "fence")]),
1615     GlFunction(GLboolean, "glTestFenceNV", [(GLfenceNV, "fence")]),
1616     GlFunction(Void, "glGetFenceivNV", [(GLfenceNV, "fence"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
1617     GlFunction(Void, "glFinishFenceNV", [(GLfenceNV, "fence")]),
1618     GlFunction(Void, "glSetFenceNV", [(GLfenceNV, "fence"), (GLenum, "condition")]),
1619
1620     # GL_NV_register_combiners2
1621     GlFunction(Void, "glCombinerStageParameterfvNV", [(GLenum, "stage"), (GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glCombinerStageParameterfvNV_size(pname)")), "params")]),
1622     GlFunction(Void, "glGetCombinerStageParameterfvNV", [(GLenum, "stage"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetCombinerStageParameterfvNV_size(pname)"), "params")], sideeffects=False),
1623
1624     # GL_NV_vertex_program
1625     GlFunction(GLboolean, "glAreProgramsResidentNV", [(GLsizei, "n"), (Const(Array(GLprogramNV, "n")), "ids"), Out(Array(GLboolean, "n"), "residences")]),
1626     GlFunction(Void, "glBindProgramNV", [(GLenum, "target"), (GLprogramNV, "program")]),
1627     GlFunction(Void, "glDeleteProgramsNV", [(GLsizei, "n"), (Const(Array(GLprogramNV, "n")), "programs")]),
1628     GlFunction(Void, "glExecuteProgramNV", [(GLenum, "target"), (GLprogramNV, "id"), (Const(Array(GLfloat, "4")), "params")]),
1629     GlFunction(Void, "glGenProgramsNV", [(GLsizei, "n"), Out(Array(GLprogramNV, "n"), "programs")]),
1630     GlFunction(Void, "glGetProgramParameterdvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
1631     GlFunction(Void, "glGetProgramParameterfvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
1632     GlFunction(Void, "glGetProgramivNV", [(GLprogramNV, "id"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
1633     GlFunction(Void, "glGetProgramStringNV", [(GLprogramNV, "id"), (GLenum, "pname"), (OpaquePointer(GLubyte), "program")], sideeffects=False),
1634     GlFunction(Void, "glGetTrackMatrixivNV", [(GLenum, "target"), (GLuint, "address"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
1635     GlFunction(Void, "glGetVertexAttribdvNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
1636     GlFunction(Void, "glGetVertexAttribfvNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
1637     GlFunction(Void, "glGetVertexAttribivNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
1638     GlFunction(Void, "glGetVertexAttribPointervNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
1639     GlFunction(GLboolean, "glIsProgramNV", [(GLprogramNV, "program")]),
1640     GlFunction(Void, "glLoadProgramNV", [(GLenum, "target"), (GLprogramNV, "id"), (GLsizei, "len"), (String("const GLubyte *", "len"), "program")]),
1641     GlFunction(Void, "glProgramParameter4dNV", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
1642     GlFunction(Void, "glProgramParameter4dvNV", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLdouble, "4")), "v")]),
1643     GlFunction(Void, "glProgramParameter4fNV", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
1644     GlFunction(Void, "glProgramParameter4fvNV", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLfloat, "4")), "v")]),
1645     GlFunction(Void, "glProgramParameters4dvNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLdouble, "count*4")), "v")]),
1646     GlFunction(Void, "glProgramParameters4fvNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "v")]),
1647     GlFunction(Void, "glRequestResidentProgramsNV", [(GLsizei, "n"), (Const(Array(GLprogramNV, "n")), "programs")]),
1648     GlFunction(Void, "glTrackMatrixNV", [(GLenum, "target"), (GLuint, "address"), (GLenum, "matrix"), (GLenum, "transform")]),
1649     GlFunction(Void, "glVertexAttribPointerNV", [(GLuint, "index"), (GLint, "fsize"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1650     GlFunction(Void, "glVertexAttrib1dNV", [(GLuint, "index"), (GLdouble, "x")]),
1651     GlFunction(Void, "glVertexAttrib1dvNV", [(GLuint, "index"), (Const(Pointer(GLdouble)), "v")]),
1652     GlFunction(Void, "glVertexAttrib1fNV", [(GLuint, "index"), (GLfloat, "x")]),
1653     GlFunction(Void, "glVertexAttrib1fvNV", [(GLuint, "index"), (Const(Pointer(GLfloat)), "v")]),
1654     GlFunction(Void, "glVertexAttrib1sNV", [(GLuint, "index"), (GLshort, "x")]),
1655     GlFunction(Void, "glVertexAttrib1svNV", [(GLuint, "index"), (Const(Pointer(GLshort)), "v")]),
1656     GlFunction(Void, "glVertexAttrib2dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
1657     GlFunction(Void, "glVertexAttrib2dvNV", [(GLuint, "index"), (Const(Array(GLdouble, "2")), "v")]),
1658     GlFunction(Void, "glVertexAttrib2fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
1659     GlFunction(Void, "glVertexAttrib2fvNV", [(GLuint, "index"), (Const(Array(GLfloat, "2")), "v")]),
1660     GlFunction(Void, "glVertexAttrib2sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
1661     GlFunction(Void, "glVertexAttrib2svNV", [(GLuint, "index"), (Const(Array(GLshort, "2")), "v")]),
1662     GlFunction(Void, "glVertexAttrib3dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
1663     GlFunction(Void, "glVertexAttrib3dvNV", [(GLuint, "index"), (Const(Array(GLdouble, "3")), "v")]),
1664     GlFunction(Void, "glVertexAttrib3fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
1665     GlFunction(Void, "glVertexAttrib3fvNV", [(GLuint, "index"), (Const(Array(GLfloat, "3")), "v")]),
1666     GlFunction(Void, "glVertexAttrib3sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
1667     GlFunction(Void, "glVertexAttrib3svNV", [(GLuint, "index"), (Const(Array(GLshort, "3")), "v")]),
1668     GlFunction(Void, "glVertexAttrib4dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
1669     GlFunction(Void, "glVertexAttrib4dvNV", [(GLuint, "index"), (Const(Array(GLdouble, "4")), "v")]),
1670     GlFunction(Void, "glVertexAttrib4fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
1671     GlFunction(Void, "glVertexAttrib4fvNV", [(GLuint, "index"), (Const(Array(GLfloat, "4")), "v")]),
1672     GlFunction(Void, "glVertexAttrib4sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
1673     GlFunction(Void, "glVertexAttrib4svNV", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
1674     GlFunction(Void, "glVertexAttrib4ubNV", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
1675     GlFunction(Void, "glVertexAttrib4ubvNV", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
1676     GlFunction(Void, "glVertexAttribs1dvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLdouble, "count")), "v")]),
1677     GlFunction(Void, "glVertexAttribs1fvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count")), "v")]),
1678     GlFunction(Void, "glVertexAttribs1svNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLshort, "count")), "v")]),
1679     GlFunction(Void, "glVertexAttribs2dvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLdouble, "count*2")), "v")]),
1680     GlFunction(Void, "glVertexAttribs2fvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*2")), "v")]),
1681     GlFunction(Void, "glVertexAttribs2svNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLshort, "count*2")), "v")]),
1682     GlFunction(Void, "glVertexAttribs3dvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLdouble, "count*3")), "v")]),
1683     GlFunction(Void, "glVertexAttribs3fvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*3")), "v")]),
1684     GlFunction(Void, "glVertexAttribs3svNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLshort, "count*3")), "v")]),
1685     GlFunction(Void, "glVertexAttribs4dvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLdouble, "count*4")), "v")]),
1686     GlFunction(Void, "glVertexAttribs4fvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "v")]),
1687     GlFunction(Void, "glVertexAttribs4svNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLshort, "count*4")), "v")]),
1688     GlFunction(Void, "glVertexAttribs4ubvNV", [(GLuint, "index"), (GLsizei, "count"), (Const(Array(GLubyte, "count*4")), "v")]),
1689
1690     # GL_ATI_envmap_bumpmap
1691     GlFunction(Void, "glTexBumpParameterivATI", [(GLenum, "pname"), (Const(OpaquePointer(GLint)), "param")]),
1692     GlFunction(Void, "glTexBumpParameterfvATI", [(GLenum, "pname"), (Const(OpaquePointer(GLfloat)), "param")]),
1693     GlFunction(Void, "glGetTexBumpParameterivATI", [(GLenum, "pname"), Out(OpaquePointer(GLint), "param")], sideeffects=False),
1694     GlFunction(Void, "glGetTexBumpParameterfvATI", [(GLenum, "pname"), Out(OpaquePointer(GLfloat), "param")], sideeffects=False),
1695
1696     # GL_ATI_fragment_shader
1697     GlFunction(Handle("fragmentShaderATI", GLuint, "range"), "glGenFragmentShadersATI", [(GLuint, "range")]),
1698     GlFunction(Void, "glBindFragmentShaderATI", [(GLfragmentShaderATI, "id")]),
1699     GlFunction(Void, "glDeleteFragmentShaderATI", [(GLfragmentShaderATI, "id")]),
1700     GlFunction(Void, "glBeginFragmentShaderATI", []),
1701     GlFunction(Void, "glEndFragmentShaderATI", []),
1702     GlFunction(Void, "glPassTexCoordATI", [(GLuint, "dst"), (GLuint, "coord"), (GLenum, "swizzle")]),
1703     GlFunction(Void, "glSampleMapATI", [(GLuint, "dst"), (GLuint, "interp"), (GLenum, "swizzle")]),
1704     GlFunction(Void, "glColorFragmentOp1ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod")]),
1705     GlFunction(Void, "glColorFragmentOp2ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod")]),
1706     GlFunction(Void, "glColorFragmentOp3ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod"), (GLuint, "arg3"), (GLuint, "arg3Rep"), (GLuint, "arg3Mod")]),
1707     GlFunction(Void, "glAlphaFragmentOp1ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod")]),
1708     GlFunction(Void, "glAlphaFragmentOp2ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod")]),
1709     GlFunction(Void, "glAlphaFragmentOp3ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod"), (GLuint, "arg3"), (GLuint, "arg3Rep"), (GLuint, "arg3Mod")]),
1710     GlFunction(Void, "glSetFragmentShaderConstantATI", [(GLuint, "dst"), (Const(Array(GLfloat, "4")), "value")]),
1711
1712     # GL_EXT_vertex_shader
1713     GlFunction(Void, "glBeginVertexShaderEXT", []),
1714     GlFunction(Void, "glEndVertexShaderEXT", []),
1715     GlFunction(Void, "glBindVertexShaderEXT", [(GLuint, "id")]),
1716     GlFunction(GLuint, "glGenVertexShadersEXT", [(GLuint, "range")]),
1717     GlFunction(Void, "glDeleteVertexShaderEXT", [(GLuint, "id")]),
1718     GlFunction(Void, "glShaderOp1EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1")]),
1719     GlFunction(Void, "glShaderOp2EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1"), (GLuint, "arg2")]),
1720     GlFunction(Void, "glShaderOp3EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1"), (GLuint, "arg2"), (GLuint, "arg3")]),
1721     GlFunction(Void, "glSwizzleEXT", [(GLuint, "res"), (GLuint, "in"), (GLenum, "outX"), (GLenum, "outY"), (GLenum, "outZ"), (GLenum, "outW")]),
1722     GlFunction(Void, "glWriteMaskEXT", [(GLuint, "res"), (GLuint, "in"), (GLenum, "outX"), (GLenum, "outY"), (GLenum, "outZ"), (GLenum, "outW")]),
1723     GlFunction(Void, "glInsertComponentEXT", [(GLuint, "res"), (GLuint, "src"), (GLuint, "num")]),
1724     GlFunction(Void, "glExtractComponentEXT", [(GLuint, "res"), (GLuint, "src"), (GLuint, "num")]),
1725     GlFunction(GLuint, "glGenSymbolsEXT", [(GLenum, "datatype"), (GLenum, "storagetype"), (GLenum, "range"), (GLuint, "components")]),
1726     GlFunction(Void, "glSetInvariantEXT", [(GLuint, "id"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glSetInvariantEXT_size(id, type)")), "addr")]),
1727     GlFunction(Void, "glSetLocalConstantEXT", [(GLuint, "id"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glSetLocalConstantEXT_size(id, type)")), "addr")]),
1728     GlFunction(Void, "glVariantbvEXT", [(GLuint, "id"), (Const(OpaqueArray(GLbyte, "__glVariantbvEXT_size(id)")), "addr")]),
1729     GlFunction(Void, "glVariantsvEXT", [(GLuint, "id"), (Const(OpaqueArray(GLshort, "__glVariantsvEXT_size(id)")), "addr")]),
1730     GlFunction(Void, "glVariantivEXT", [(GLuint, "id"), (Const(OpaqueArray(GLint, "__glVariantivEXT_size(id)")), "addr")]),
1731     GlFunction(Void, "glVariantfvEXT", [(GLuint, "id"), (Const(OpaqueArray(GLfloat, "__glVariantfvEXT_size(id)")), "addr")]),
1732     GlFunction(Void, "glVariantdvEXT", [(GLuint, "id"), (Const(OpaqueArray(GLdouble, "__glVariantdvEXT_size(id)")), "addr")]),
1733     GlFunction(Void, "glVariantubvEXT", [(GLuint, "id"), (Const(OpaqueArray(GLubyte, "__glVariantubvEXT_size(id)")), "addr")]),
1734     GlFunction(Void, "glVariantusvEXT", [(GLuint, "id"), (Const(OpaqueArray(GLushort, "__glVariantusvEXT_size(id)")), "addr")]),
1735     GlFunction(Void, "glVariantuivEXT", [(GLuint, "id"), (Const(OpaqueArray(GLuint, "__glVariantuivEXT_size(id)")), "addr")]),
1736     GlFunction(Void, "glVariantPointerEXT", [(GLuint, "id"), (GLenum, "type"), (GLuint, "stride"), (Const(OpaqueBlob(GLvoid, "__glVariantPointerEXT_size(id, type, stride)")), "addr")]),
1737     GlFunction(Void, "glEnableVariantClientStateEXT", [(GLuint, "id")]),
1738     GlFunction(Void, "glDisableVariantClientStateEXT", [(GLuint, "id")]),
1739     GlFunction(GLuint, "glBindLightParameterEXT", [(GLenum, "light"), (GLenum, "value")]),
1740     GlFunction(GLuint, "glBindMaterialParameterEXT", [(GLenum, "face"), (GLenum, "value")]),
1741     GlFunction(GLuint, "glBindTexGenParameterEXT", [(GLenum, "unit"), (GLenum, "coord"), (GLenum, "value")]),
1742     GlFunction(GLuint, "glBindTextureUnitParameterEXT", [(GLenum, "unit"), (GLenum, "value")]),
1743     GlFunction(GLuint, "glBindParameterEXT", [(GLenum, "value")]),
1744     GlFunction(GLboolean, "glIsVariantEnabledEXT", [(GLuint, "id"), (GLenum, "cap")]),
1745     GlFunction(Void, "glGetVariantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetVariantBooleanvEXT_size(id)"), "data")], sideeffects=False),
1746     GlFunction(Void, "glGetVariantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetVariantIntegervEXT_size(id)"), "data")], sideeffects=False),
1747     GlFunction(Void, "glGetVariantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetVariantFloatvEXT_size(id)"), "data")], sideeffects=False),
1748     GlFunction(Void, "glGetVariantPointervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetVariantPointervEXT_size(id)"), "data")], sideeffects=False),
1749     GlFunction(Void, "glGetInvariantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetInvariantBooleanvEXT_size(id)"), "data")], sideeffects=False),
1750     GlFunction(Void, "glGetInvariantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetInvariantIntegervEXT_size(id)"), "data")], sideeffects=False),
1751     GlFunction(Void, "glGetInvariantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetInvariantFloatvEXT_size(id)"), "data")], sideeffects=False),
1752     GlFunction(Void, "glGetLocalConstantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetLocalConstantBooleanvEXT_size(id)"), "data")], sideeffects=False),
1753     GlFunction(Void, "glGetLocalConstantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetLocalConstantIntegervEXT_size(id)"), "data")], sideeffects=False),
1754     GlFunction(Void, "glGetLocalConstantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetLocalConstantFloatvEXT_size(id)"), "data")], sideeffects=False),
1755
1756     # GL_NV_occlusion_query
1757     GlFunction(Void, "glGenOcclusionQueriesNV", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
1758     GlFunction(Void, "glDeleteOcclusionQueriesNV", [(GLsizei, "n"), (Const(Array(GLquery, "n")), "ids")]),
1759     GlFunction(GLboolean, "glIsOcclusionQueryNV", [(GLquery, "id")]),
1760     GlFunction(Void, "glBeginOcclusionQueryNV", [(GLquery, "id")]),
1761     GlFunction(Void, "glEndOcclusionQueryNV", []),
1762     GlFunction(Void, "glGetOcclusionQueryivNV", [(GLquery, "id"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetOcclusionQueryivNV_size(pname)"), "params")], sideeffects=False),
1763     GlFunction(Void, "glGetOcclusionQueryuivNV", [(GLquery, "id"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetOcclusionQueryuivNV_size(pname)"), "params")], sideeffects=False),
1764
1765     # GL_NV_point_sprite
1766     GlFunction(Void, "glPointParameteriNV", [(GLenum, "pname"), (GLint, "param")]),
1767     GlFunction(Void, "glPointParameterivNV", [(GLenum, "pname"), (Const(OpaquePointer(GLint)), "params")]),
1768
1769     # GL_EXT_stencil_two_side
1770     GlFunction(Void, "glActiveStencilFaceEXT", [(GLenum, "face")]),
1771
1772     # GL_APPLE_vertex_array_object
1773     GlFunction(Void, "glBindVertexArrayAPPLE", [(GLvertexArray, "array")]),
1774     GlFunction(Void, "glDeleteVertexArraysAPPLE", [(GLsizei, "n"), (Const(Array(GLvertexArray, "n")), "arrays")]),
1775     GlFunction(Void, "glGenVertexArraysAPPLE", [(GLsizei, "n"), Out(Array(GLvertexArray, "n"), "arrays")]),
1776     GlFunction(GLboolean, "glIsVertexArrayAPPLE", [(GLvertexArray, "array")]),
1777
1778     # GL_NV_fragment_program
1779     GlFunction(Void, "glProgramNamedParameter4fNV", [(GLprogramNV, "id"), (GLsizei, "len"), (Const(OpaquePointer(GLubyte)), "name"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
1780     GlFunction(Void, "glProgramNamedParameter4dNV", [(GLprogramNV, "id"), (GLsizei, "len"), (Const(OpaquePointer(GLubyte)), "name"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
1781     GlFunction(Void, "glProgramNamedParameter4fvNV", [(GLprogramNV, "id"), (GLsizei, "len"), (Const(OpaquePointer(GLubyte)), "name"), (Const(Array(GLfloat, "4")), "v")]),
1782     GlFunction(Void, "glProgramNamedParameter4dvNV", [(GLprogramNV, "id"), (GLsizei, "len"), (Const(OpaquePointer(GLubyte)), "name"), (Const(Array(GLdouble, "4")), "v")]),
1783     GlFunction(Void, "glGetProgramNamedParameterdvNV", [(GLprogramNV, "id"), (GLsizei, "len"), (Const(OpaquePointer(GLubyte)), "name"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
1784     GlFunction(Void, "glGetProgramNamedParameterfvNV", [(GLprogramNV, "id"), (GLsizei, "len"), (Const(OpaquePointer(GLubyte)), "name"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
1785
1786     # GL_NV_half_float
1787     GlFunction(Void, "glVertex2hNV", [(GLhalfNV, "x"), (GLhalfNV, "y")]),
1788     GlFunction(Void, "glVertex2hvNV", [(Const(Array(GLhalfNV, "2")), "v")]),
1789     GlFunction(Void, "glVertex3hNV", [(GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z")]),
1790     GlFunction(Void, "glVertex3hvNV", [(Const(Array(GLhalfNV, "3")), "v")]),
1791     GlFunction(Void, "glVertex4hNV", [(GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z"), (GLhalfNV, "w")]),
1792     GlFunction(Void, "glVertex4hvNV", [(Const(Array(GLhalfNV, "4")), "v")]),
1793     GlFunction(Void, "glNormal3hNV", [(GLhalfNV, "nx"), (GLhalfNV, "ny"), (GLhalfNV, "nz")]),
1794     GlFunction(Void, "glNormal3hvNV", [(Const(Array(GLhalfNV, "3")), "v")]),
1795     GlFunction(Void, "glColor3hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue")]),
1796     GlFunction(Void, "glColor3hvNV", [(Const(Array(GLhalfNV, "3")), "v")]),
1797     GlFunction(Void, "glColor4hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue"), (GLhalfNV, "alpha")]),
1798     GlFunction(Void, "glColor4hvNV", [(Const(Array(GLhalfNV, "4")), "v")]),
1799     GlFunction(Void, "glTexCoord1hNV", [(GLhalfNV, "s")]),
1800     GlFunction(Void, "glTexCoord1hvNV", [(Const(Pointer(GLhalfNV)), "v")]),
1801     GlFunction(Void, "glTexCoord2hNV", [(GLhalfNV, "s"), (GLhalfNV, "t")]),
1802     GlFunction(Void, "glTexCoord2hvNV", [(Const(Array(GLhalfNV, "2")), "v")]),
1803     GlFunction(Void, "glTexCoord3hNV", [(GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r")]),
1804     GlFunction(Void, "glTexCoord3hvNV", [(Const(Array(GLhalfNV, "3")), "v")]),
1805     GlFunction(Void, "glTexCoord4hNV", [(GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r"), (GLhalfNV, "q")]),
1806     GlFunction(Void, "glTexCoord4hvNV", [(Const(Array(GLhalfNV, "4")), "v")]),
1807     GlFunction(Void, "glMultiTexCoord1hNV", [(GLenum, "target"), (GLhalfNV, "s")]),
1808     GlFunction(Void, "glMultiTexCoord1hvNV", [(GLenum, "target"), (Const(Pointer(GLhalfNV)), "v")]),
1809     GlFunction(Void, "glMultiTexCoord2hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t")]),
1810     GlFunction(Void, "glMultiTexCoord2hvNV", [(GLenum, "target"), (Const(Array(GLhalfNV, "2")), "v")]),
1811     GlFunction(Void, "glMultiTexCoord3hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r")]),
1812     GlFunction(Void, "glMultiTexCoord3hvNV", [(GLenum, "target"), (Const(Array(GLhalfNV, "3")), "v")]),
1813     GlFunction(Void, "glMultiTexCoord4hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r"), (GLhalfNV, "q")]),
1814     GlFunction(Void, "glMultiTexCoord4hvNV", [(GLenum, "target"), (Const(Array(GLhalfNV, "4")), "v")]),
1815     GlFunction(Void, "glFogCoordhNV", [(GLhalfNV, "fog")]),
1816     GlFunction(Void, "glFogCoordhvNV", [(Const(Pointer(GLhalfNV)), "fog")]),
1817     GlFunction(Void, "glSecondaryColor3hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue")]),
1818     GlFunction(Void, "glSecondaryColor3hvNV", [(Const(Array(GLhalfNV, "3")), "v")]),
1819     GlFunction(Void, "glVertexWeighthNV", [(GLhalfNV, "weight")]),
1820     GlFunction(Void, "glVertexWeighthvNV", [(Const(Pointer(GLhalfNV)), "weight")]),
1821     GlFunction(Void, "glVertexAttrib1hNV", [(GLuint, "index"), (GLhalfNV, "x")]),
1822     GlFunction(Void, "glVertexAttrib1hvNV", [(GLuint, "index"), (Const(Pointer(GLhalfNV)), "v")]),
1823     GlFunction(Void, "glVertexAttrib2hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y")]),
1824     GlFunction(Void, "glVertexAttrib2hvNV", [(GLuint, "index"), (Const(Array(GLhalfNV, "2")), "v")]),
1825     GlFunction(Void, "glVertexAttrib3hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z")]),
1826     GlFunction(Void, "glVertexAttrib3hvNV", [(GLuint, "index"), (Const(Array(GLhalfNV, "3")), "v")]),
1827     GlFunction(Void, "glVertexAttrib4hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z"), (GLhalfNV, "w")]),
1828     GlFunction(Void, "glVertexAttrib4hvNV", [(GLuint, "index"), (Const(Array(GLhalfNV, "4")), "v")]),
1829     GlFunction(Void, "glVertexAttribs1hvNV", [(GLuint, "index"), (GLsizei, "n"), (Const(Array(GLhalfNV, "n")), "v")]),
1830     GlFunction(Void, "glVertexAttribs2hvNV", [(GLuint, "index"), (GLsizei, "n"), (Const(Array(GLhalfNV, "n")), "v")]),
1831     GlFunction(Void, "glVertexAttribs3hvNV", [(GLuint, "index"), (GLsizei, "n"), (Const(Array(GLhalfNV, "n")), "v")]),
1832     GlFunction(Void, "glVertexAttribs4hvNV", [(GLuint, "index"), (GLsizei, "n"), (Const(Array(GLhalfNV, "n")), "v")]),
1833
1834     # GL_NV_pixel_data_range
1835     GlFunction(Void, "glPixelDataRangeNV", [(GLenum, "target"), (GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
1836     GlFunction(Void, "glFlushPixelDataRangeNV", [(GLenum, "target")]),
1837
1838     # GL_NV_primitive_restart
1839     GlFunction(Void, "glPrimitiveRestartNV", []),
1840     GlFunction(Void, "glPrimitiveRestartIndexNV", [(GLuint, "index")]),
1841
1842     # GL_ATI_map_object_buffer
1843     GlFunction(OpaquePointer(GLvoid), "glMapObjectBufferATI", [(GLuint, "buffer")]),
1844     GlFunction(Void, "glUnmapObjectBufferATI", [(GLuint, "buffer")]),
1845
1846     # GL_ATI_separate_stencil
1847     GlFunction(Void, "glStencilOpSeparateATI", [(GLenum, "face"), (GLenum, "sfail"), (GLenum, "dpfail"), (GLenum, "dppass")]),
1848     GlFunction(Void, "glStencilFuncSeparateATI", [(GLenum, "frontfunc"), (GLenum, "backfunc"), (GLint, "ref"), (GLuint, "mask")]),
1849
1850     # GL_EXT_depth_bounds_test
1851     GlFunction(Void, "glDepthBoundsEXT", [(GLclampd, "zmin"), (GLclampd, "zmax")]),
1852
1853     # GL_EXT_blend_equation_separate
1854     GlFunction(Void, "glBlendEquationSeparateEXT", [(GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
1855
1856     # GL_EXT_framebuffer_object
1857     GlFunction(GLboolean, "glIsRenderbufferEXT", [(GLrenderbuffer, "renderbuffer")]),
1858     GlFunction(Void, "glBindRenderbufferEXT", [(GLenum, "target"), (GLrenderbuffer, "renderbuffer")]),
1859     GlFunction(Void, "glDeleteRenderbuffersEXT", [(GLsizei, "n"), (Const(Array(GLrenderbuffer, "n")), "renderbuffers")]),
1860     GlFunction(Void, "glGenRenderbuffersEXT", [(GLsizei, "n"), Out(Array(GLrenderbuffer, "n"), "renderbuffers")]),
1861     GlFunction(Void, "glRenderbufferStorageEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
1862     GlFunction(Void, "glGetRenderbufferParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
1863     GlFunction(GLboolean, "glIsFramebufferEXT", [(GLframebuffer, "framebuffer")]),
1864     GlFunction(Void, "glBindFramebufferEXT", [(GLenum, "target"), (GLframebuffer, "framebuffer")]),
1865     GlFunction(Void, "glDeleteFramebuffersEXT", [(GLsizei, "n"), (Const(Array(GLframebuffer, "n")), "framebuffers")]),
1866     GlFunction(Void, "glGenFramebuffersEXT", [(GLsizei, "n"), Out(Array(GLframebuffer, "n"), "framebuffers")]),
1867     GlFunction(GLenum, "glCheckFramebufferStatusEXT", [(GLenum, "target")]),
1868     GlFunction(Void, "glFramebufferTexture1DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
1869     GlFunction(Void, "glFramebufferTexture2DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
1870     GlFunction(Void, "glFramebufferTexture3DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
1871     GlFunction(Void, "glFramebufferRenderbufferEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
1872     GlFunction(Void, "glGetFramebufferAttachmentParameterivEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
1873     GlFunction(Void, "glGenerateMipmapEXT", [(GLenum, "target")]),
1874
1875     # GL_GREMEDY_string_marker
1876     GlFunction(Void, "glStringMarkerGREMEDY", [(GLsizei, "len"), (Const(String("GLvoid *", "len")), "string")]),
1877
1878     # GL_EXT_stencil_clear_tag
1879     GlFunction(Void, "glStencilClearTagEXT", [(GLsizei, "stencilTagBits"), (GLuint, "stencilClearTag")]),
1880
1881     # GL_EXT_framebuffer_blit
1882     GlFunction(Void, "glBlitFramebufferEXT", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
1883
1884     # GL_EXT_framebuffer_multisample
1885     GlFunction(Void, "glRenderbufferStorageMultisampleEXT", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
1886
1887     # GL_EXT_timer_query
1888     GlFunction(Void, "glGetQueryObjecti64vEXT", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLint64EXT), "params")], sideeffects=False),
1889     GlFunction(Void, "glGetQueryObjectui64vEXT", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLuint64EXT), "params")], sideeffects=False),
1890
1891     # GL_EXT_gpu_program_parameters
1892     GlFunction(Void, "glProgramEnvParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "params")]),
1893     GlFunction(Void, "glProgramLocalParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "params")]),
1894
1895     # GL_APPLE_flush_buffer_range
1896     GlFunction(Void, "glBufferParameteriAPPLE", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
1897     GlFunction(Void, "glFlushMappedBufferRangeAPPLE", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
1898
1899     # GL_NV_gpu_program4
1900     GlFunction(Void, "glProgramLocalParameterI4iNV", [(GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
1901     GlFunction(Void, "glProgramLocalParameterI4ivNV", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLint, "4")), "params")]),
1902     GlFunction(Void, "glProgramLocalParametersI4ivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLint, "count*4")), "params")]),
1903     GlFunction(Void, "glProgramLocalParameterI4uiNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
1904     GlFunction(Void, "glProgramLocalParameterI4uivNV", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLuint, "4")), "params")]),
1905     GlFunction(Void, "glProgramLocalParametersI4uivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLuint, "count*4")), "params")]),
1906     GlFunction(Void, "glProgramEnvParameterI4iNV", [(GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
1907     GlFunction(Void, "glProgramEnvParameterI4ivNV", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLint, "4")), "params")]),
1908     GlFunction(Void, "glProgramEnvParametersI4ivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLint, "count*4")), "params")]),
1909     GlFunction(Void, "glProgramEnvParameterI4uiNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
1910     GlFunction(Void, "glProgramEnvParameterI4uivNV", [(GLenum, "target"), (GLuint, "index"), (Const(Array(GLuint, "4")), "params")]),
1911     GlFunction(Void, "glProgramEnvParametersI4uivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLuint, "count*4")), "params")]),
1912     GlFunction(Void, "glGetProgramLocalParameterIivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
1913     GlFunction(Void, "glGetProgramLocalParameterIuivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
1914     GlFunction(Void, "glGetProgramEnvParameterIivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
1915     GlFunction(Void, "glGetProgramEnvParameterIuivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
1916
1917     # GL_NV_geometry_program4
1918     GlFunction(Void, "glProgramVertexLimitNV", [(GLenum, "target"), (GLint, "limit")]),
1919     GlFunction(Void, "glFramebufferTextureEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
1920     GlFunction(Void, "glFramebufferTextureLayerEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
1921     GlFunction(Void, "glFramebufferTextureFaceEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
1922
1923     # GL_EXT_geometry_shader4
1924     GlFunction(Void, "glProgramParameteriEXT", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
1925
1926     # GL_NV_vertex_program4
1927     GlFunction(Void, "glVertexAttribI1iEXT", [(GLuint, "index"), (GLint, "x")]),
1928     GlFunction(Void, "glVertexAttribI2iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y")]),
1929     GlFunction(Void, "glVertexAttribI3iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
1930     GlFunction(Void, "glVertexAttribI4iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
1931     GlFunction(Void, "glVertexAttribI1uiEXT", [(GLuint, "index"), (GLuint, "x")]),
1932     GlFunction(Void, "glVertexAttribI2uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y")]),
1933     GlFunction(Void, "glVertexAttribI3uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z")]),
1934     GlFunction(Void, "glVertexAttribI4uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
1935     GlFunction(Void, "glVertexAttribI1ivEXT", [(GLuint, "index"), (Const(Pointer(GLint)), "v")]),
1936     GlFunction(Void, "glVertexAttribI2ivEXT", [(GLuint, "index"), (Const(Array(GLint, "2")), "v")]),
1937     GlFunction(Void, "glVertexAttribI3ivEXT", [(GLuint, "index"), (Const(Array(GLint, "3")), "v")]),
1938     GlFunction(Void, "glVertexAttribI4ivEXT", [(GLuint, "index"), (Const(Array(GLint, "4")), "v")]),
1939     GlFunction(Void, "glVertexAttribI1uivEXT", [(GLuint, "index"), (Const(Pointer(GLuint)), "v")]),
1940     GlFunction(Void, "glVertexAttribI2uivEXT", [(GLuint, "index"), (Const(Array(GLuint, "2")), "v")]),
1941     GlFunction(Void, "glVertexAttribI3uivEXT", [(GLuint, "index"), (Const(Array(GLuint, "3")), "v")]),
1942     GlFunction(Void, "glVertexAttribI4uivEXT", [(GLuint, "index"), (Const(Array(GLuint, "4")), "v")]),
1943     GlFunction(Void, "glVertexAttribI4bvEXT", [(GLuint, "index"), (Const(Array(GLbyte, "4")), "v")]),
1944     GlFunction(Void, "glVertexAttribI4svEXT", [(GLuint, "index"), (Const(Array(GLshort, "4")), "v")]),
1945     GlFunction(Void, "glVertexAttribI4ubvEXT", [(GLuint, "index"), (Const(Array(GLubyte, "4")), "v")]),
1946     GlFunction(Void, "glVertexAttribI4usvEXT", [(GLuint, "index"), (Const(Array(GLushort, "4")), "v")]),
1947     GlFunction(Void, "glVertexAttribIPointerEXT", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
1948     GlFunction(Void, "glGetVertexAttribIivEXT", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
1949     GlFunction(Void, "glGetVertexAttribIuivEXT", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLuint), "params")], sideeffects=False),
1950
1951     # GL_EXT_gpu_shader4
1952     GlFunction(Void, "glGetUniformuivEXT", [(GLuint, "program"), (GLint, "location"), Out(OpaqueArray(GLuint, "__glGetUniformuivEXT_size(program, location)"), "params")], sideeffects=False),
1953     GlFunction(Void, "glBindFragDataLocationEXT", [(GLuint, "program"), (GLuint, "color"), (Const(OpaqueArray(GLchar, "__glBindFragDataLocationEXT_size(name)")), "name")]),
1954     GlFunction(GLint, "glGetFragDataLocationEXT", [(GLuint, "program"), (Const(OpaqueArray(GLchar, "__glGetFragDataLocationEXT_size(name)")), "name")], sideeffects=False),
1955     GlFunction(Void, "glUniform1uiEXT", [(GLint, "location"), (GLuint, "v0")]),
1956     GlFunction(Void, "glUniform2uiEXT", [(GLint, "location"), (GLuint, "v0"), (GLuint, "v1")]),
1957     GlFunction(Void, "glUniform3uiEXT", [(GLint, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
1958     GlFunction(Void, "glUniform4uiEXT", [(GLint, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
1959     GlFunction(Void, "glUniform1uivEXT", [(GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count")), "value")]),
1960     GlFunction(Void, "glUniform2uivEXT", [(GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*2")), "value")]),
1961     GlFunction(Void, "glUniform3uivEXT", [(GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*3")), "value")]),
1962     GlFunction(Void, "glUniform4uivEXT", [(GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*4")), "value")]),
1963
1964     # GL_EXT_draw_instanced
1965     GlFunction(Void, "glDrawArraysInstancedEXT", [(GLenum, "mode"), (GLint, "start"), (GLsizei, "count"), (GLsizei, "primcount")]),
1966     GlFunction(Void, "glDrawElementsInstancedEXT", [(GLenum, "mode"), (GLsizei, "count"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glDrawElementsInstancedEXT_size(count, type)")), "indices"), (GLsizei, "primcount")]),
1967
1968     # GL_EXT_texture_buffer_object
1969     GlFunction(Void, "glTexBufferEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLuint, "buffer")]),
1970
1971     # GL_NV_depth_buffer_float
1972     GlFunction(Void, "glDepthRangedNV", [(GLdouble, "zNear"), (GLdouble, "zFar")]),
1973     GlFunction(Void, "glClearDepthdNV", [(GLdouble, "depth")]),
1974     GlFunction(Void, "glDepthBoundsdNV", [(GLdouble, "zmin"), (GLdouble, "zmax")]),
1975
1976     # GL_NV_framebuffer_multisample_coverage
1977     GlFunction(Void, "glRenderbufferStorageMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
1978
1979     # GL_NV_parameter_buffer_object
1980     GlFunction(Void, "glProgramBufferParametersfvNV", [(GLenum, "target"), (GLuint, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count")), "params")]),
1981     GlFunction(Void, "glProgramBufferParametersIivNV", [(GLenum, "target"), (GLuint, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLint, "count")), "params")]),
1982     GlFunction(Void, "glProgramBufferParametersIuivNV", [(GLenum, "target"), (GLuint, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLuint, "count")), "params")]),
1983
1984     # GL_EXT_draw_buffers2
1985     GlFunction(Void, "glColorMaskIndexedEXT", [(GLuint, "index"), (GLboolean, "r"), (GLboolean, "g"), (GLboolean, "b"), (GLboolean, "a")]),
1986     GlFunction(Void, "glGetBooleanIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLboolean, "__glGetBooleanIndexedvEXT_size(target)"), "data")], sideeffects=False),
1987     GlFunction(Void, "glGetIntegerIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLint, "__glGetIntegerIndexedvEXT_size(target)"), "data")], sideeffects=False),
1988     GlFunction(Void, "glEnableIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
1989     GlFunction(Void, "glDisableIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
1990     GlFunction(GLboolean, "glIsEnabledIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
1991
1992     # GL_NV_transform_feedback
1993     GlFunction(Void, "glBeginTransformFeedbackNV", [(GLenum, "primitiveMode")]),
1994     GlFunction(Void, "glEndTransformFeedbackNV", []),
1995     GlFunction(Void, "glTransformFeedbackAttribsNV", [(GLuint, "count"), (Const(OpaqueArray(GLint, "__glTransformFeedbackAttribsNV_size(count)")), "attribs"), (GLenum, "bufferMode")]),
1996     GlFunction(Void, "glBindBufferRangeNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
1997     GlFunction(Void, "glBindBufferOffsetNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer"), (GLintptr, "offset")]),
1998     GlFunction(Void, "glBindBufferBaseNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer")]),
1999     GlFunction(Void, "glTransformFeedbackVaryingsNV", [(GLuint, "program"), (GLsizei, "count"), (Const(Array(GLint, "count")), "locations"), (GLenum, "bufferMode")]),
2000     GlFunction(Void, "glActiveVaryingNV", [(GLuint, "program"), (Const(OpaqueArray(GLchar, "__glActiveVaryingNV_size(name)")), "name")]),
2001     GlFunction(GLint, "glGetVaryingLocationNV", [(GLuint, "program"), (Const(OpaqueArray(GLchar, "__glGetVaryingLocationNV_size(name)")), "name")], sideeffects=False),
2002     GlFunction(Void, "glGetActiveVaryingNV", [(GLuint, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(OpaqueArray(GLchar, "__glGetActiveVaryingNV_size(program, index, bufSize)"), "name")], sideeffects=False),
2003     GlFunction(Void, "glGetTransformFeedbackVaryingNV", [(GLuint, "program"), (GLuint, "index"), Out(Pointer(GLint), "location")], sideeffects=False),
2004     GlFunction(Void, "glTransformFeedbackStreamAttribsNV", [(GLsizei, "count"), (Const(Array(GLint, "count")), "attribs"), (GLsizei, "nbuffers"), (Const(Array(GLint, "nbuffers")), "bufstreams"), (GLenum, "bufferMode")]),
2005
2006     # GL_EXT_bindable_uniform
2007     GlFunction(Void, "glUniformBufferEXT", [(GLuint, "program"), (GLint, "location"), (GLuint, "buffer")]),
2008     GlFunction(GLint, "glGetUniformBufferSizeEXT", [(GLuint, "program"), (GLint, "location")], sideeffects=False),
2009     GlFunction(GLintptr, "glGetUniformOffsetEXT", [(GLuint, "program"), (GLint, "location")], sideeffects=False),
2010
2011     # GL_EXT_texture_integer
2012     GlFunction(Void, "glTexParameterIivEXT", [(GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glTexParameterIivEXT_size(pname)")), "params")]),
2013     GlFunction(Void, "glTexParameterIuivEXT", [(GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLuint, "__glTexParameterIuivEXT_size(pname)")), "params")]),
2014     GlFunction(Void, "glGetTexParameterIivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTexParameterIivEXT_size(pname)"), "params")], sideeffects=False),
2015     GlFunction(Void, "glGetTexParameterIuivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetTexParameterIuivEXT_size(pname)"), "params")], sideeffects=False),
2016     GlFunction(Void, "glClearColorIiEXT", [(GLint, "red"), (GLint, "green"), (GLint, "blue"), (GLint, "alpha")]),
2017     GlFunction(Void, "glClearColorIuiEXT", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue"), (GLuint, "alpha")]),
2018
2019     # GL_GREMEDY_frame_terminator
2020     GlFunction(Void, "glFrameTerminatorGREMEDY", []),
2021
2022     # GL_NV_conditional_render
2023     GlFunction(Void, "glBeginConditionalRenderNV", [(GLuint, "id"), (GLenum, "mode")]),
2024     GlFunction(Void, "glEndConditionalRenderNV", []),
2025
2026     # GL_NV_present_video
2027     GlFunction(Void, "glPresentFrameKeyedNV", [(GLuint, "video_slot"), (GLuint64EXT, "minPresentTime"), (GLuint, "beginPresentTimeId"), (GLuint, "presentDurationId"), (GLenum, "type"), (GLenum, "target0"), (GLuint, "fill0"), (GLuint, "key0"), (GLenum, "target1"), (GLuint, "fill1"), (GLuint, "key1")]),
2028     GlFunction(Void, "glPresentFrameDualFillNV", [(GLuint, "video_slot"), (GLuint64EXT, "minPresentTime"), (GLuint, "beginPresentTimeId"), (GLuint, "presentDurationId"), (GLenum, "type"), (GLenum, "target0"), (GLuint, "fill0"), (GLenum, "target1"), (GLuint, "fill1"), (GLenum, "target2"), (GLuint, "fill2"), (GLenum, "target3"), (GLuint, "fill3")]),
2029     GlFunction(Void, "glGetVideoivNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoivNV_size(pname)"), "params")], sideeffects=False),
2030     GlFunction(Void, "glGetVideouivNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetVideouivNV_size(pname)"), "params")], sideeffects=False),
2031     GlFunction(Void, "glGetVideoi64vNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint64EXT, "__glGetVideoi64vNV_size(pname)"), "params")], sideeffects=False),
2032     GlFunction(Void, "glGetVideoui64vNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetVideoui64vNV_size(pname)"), "params")], sideeffects=False),
2033
2034     # GL_EXT_transform_feedback
2035     GlFunction(Void, "glBeginTransformFeedbackEXT", [(GLenum, "primitiveMode")]),
2036     GlFunction(Void, "glEndTransformFeedbackEXT", []),
2037     GlFunction(Void, "glBindBufferRangeEXT", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
2038     GlFunction(Void, "glBindBufferOffsetEXT", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer"), (GLintptr, "offset")]),
2039     GlFunction(Void, "glBindBufferBaseEXT", [(GLenum, "target"), (GLuint, "index"), (GLuint, "buffer")]),
2040     GlFunction(Void, "glTransformFeedbackVaryingsEXT", [(GLuint, "program"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "varyings"), (GLenum, "bufferMode")]),
2041     GlFunction(Void, "glGetTransformFeedbackVaryingEXT", [(GLuint, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(OpaqueArray(GLchar, "__glGetTransformFeedbackVaryingEXT_size(length)"), "name")], sideeffects=False),
2042
2043     # GL_EXT_direct_state_access
2044     GlFunction(Void, "glClientAttribDefaultEXT", [(GLbitfield, "mask")]),
2045     GlFunction(Void, "glPushClientAttribDefaultEXT", [(GLbitfield, "mask")]),
2046     GlFunction(Void, "glMatrixLoadfEXT", [(GLenum, "mode"), (Const(Array(GLfloat, "16")), "m")]),
2047     GlFunction(Void, "glMatrixLoaddEXT", [(GLenum, "mode"), (Const(Array(GLdouble, "16")), "m")]),
2048     GlFunction(Void, "glMatrixMultfEXT", [(GLenum, "mode"), (Const(Array(GLfloat, "16")), "m")]),
2049     GlFunction(Void, "glMatrixMultdEXT", [(GLenum, "mode"), (Const(Array(GLdouble, "16")), "m")]),
2050     GlFunction(Void, "glMatrixLoadIdentityEXT", [(GLenum, "mode")]),
2051     GlFunction(Void, "glMatrixRotatefEXT", [(GLenum, "mode"), (GLfloat, "angle"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
2052     GlFunction(Void, "glMatrixRotatedEXT", [(GLenum, "mode"), (GLdouble, "angle"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
2053     GlFunction(Void, "glMatrixScalefEXT", [(GLenum, "mode"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
2054     GlFunction(Void, "glMatrixScaledEXT", [(GLenum, "mode"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
2055     GlFunction(Void, "glMatrixTranslatefEXT", [(GLenum, "mode"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
2056     GlFunction(Void, "glMatrixTranslatedEXT", [(GLenum, "mode"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
2057     GlFunction(Void, "glMatrixFrustumEXT", [(GLenum, "mode"), (GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
2058     GlFunction(Void, "glMatrixOrthoEXT", [(GLenum, "mode"), (GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
2059     GlFunction(Void, "glMatrixPopEXT", [(GLenum, "mode")]),
2060     GlFunction(Void, "glMatrixPushEXT", [(GLenum, "mode")]),
2061     GlFunction(Void, "glMatrixLoadTransposefEXT", [(GLenum, "mode"), (Const(Array(GLfloat, "16")), "m")]),
2062     GlFunction(Void, "glMatrixLoadTransposedEXT", [(GLenum, "mode"), (Const(Array(GLdouble, "16")), "m")]),
2063     GlFunction(Void, "glMatrixMultTransposefEXT", [(GLenum, "mode"), (Const(Array(GLfloat, "16")), "m")]),
2064     GlFunction(Void, "glMatrixMultTransposedEXT", [(GLenum, "mode"), (Const(Array(GLdouble, "16")), "m")]),
2065     GlFunction(Void, "glTextureParameterfEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
2066     GlFunction(Void, "glTextureParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glTextureParameterfvEXT_size(pname)")), "params")]),
2067     GlFunction(Void, "glTextureParameteriEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
2068     GlFunction(Void, "glTextureParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glTextureParameterivEXT_size(pname)")), "params")]),
2069     GlFunction(Void, "glTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTextureImage1DEXT_size(format, type, width)")), "pixels")]),
2070     GlFunction(Void, "glTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTextureImage2DEXT_size(format, type, width, height)")), "pixels")]),
2071     GlFunction(Void, "glTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTextureSubImage1DEXT_size(format, type, width)")), "pixels")]),
2072     GlFunction(Void, "glTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTextureSubImage2DEXT_size(format, type, width, height)")), "pixels")]),
2073     GlFunction(Void, "glCopyTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
2074     GlFunction(Void, "glCopyTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
2075     GlFunction(Void, "glCopyTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
2076     GlFunction(Void, "glCopyTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
2077     GlFunction(Void, "glGetTextureImageEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetTextureImageEXT_size(target, level, format, type)"), "pixels")], sideeffects=False),
2078     GlFunction(Void, "glGetTextureParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetTextureParameterfvEXT_size(pname)"), "params")], sideeffects=False),
2079     GlFunction(Void, "glGetTextureParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTextureParameterivEXT_size(pname)"), "params")], sideeffects=False),
2080     GlFunction(Void, "glGetTextureLevelParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetTextureLevelParameterfvEXT_size(pname)"), "params")], sideeffects=False),
2081     GlFunction(Void, "glGetTextureLevelParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTextureLevelParameterivEXT_size(pname)"), "params")], sideeffects=False),
2082     GlFunction(Void, "glTextureImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTextureImage3DEXT_size(format, type, width, height, depth)")), "pixels")]),
2083     GlFunction(Void, "glTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glTextureSubImage3DEXT_size(format, type, width, height, depth)")), "pixels")]),
2084     GlFunction(Void, "glCopyTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
2085     GlFunction(Void, "glMultiTexParameterfEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
2086     GlFunction(Void, "glMultiTexParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glMultiTexParameterfvEXT_size(pname)")), "params")]),
2087     GlFunction(Void, "glMultiTexParameteriEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
2088     GlFunction(Void, "glMultiTexParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glMultiTexParameterivEXT_size(pname)")), "params")]),
2089     GlFunction(Void, "glMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiTexImage1DEXT_size(format, type, width)")), "pixels")]),
2090     GlFunction(Void, "glMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiTexImage2DEXT_size(format, type, width, height)")), "pixels")]),
2091     GlFunction(Void, "glMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiTexSubImage1DEXT_size(format, type, width)")), "pixels")]),
2092     GlFunction(Void, "glMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiTexSubImage2DEXT_size(format, type, width, height)")), "pixels")]),
2093     GlFunction(Void, "glCopyMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
2094     GlFunction(Void, "glCopyMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
2095     GlFunction(Void, "glCopyMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
2096     GlFunction(Void, "glCopyMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
2097     GlFunction(Void, "glGetMultiTexImageEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMultiTexImageEXT_size(target, level, format, type)"), "pixels")], sideeffects=False),
2098     GlFunction(Void, "glGetMultiTexParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMultiTexParameterfvEXT_size(pname)"), "params")], sideeffects=False),
2099     GlFunction(Void, "glGetMultiTexParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMultiTexParameterivEXT_size(pname)"), "params")], sideeffects=False),
2100     GlFunction(Void, "glGetMultiTexLevelParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMultiTexLevelParameterfvEXT_size(pname)"), "params")], sideeffects=False),
2101     GlFunction(Void, "glGetMultiTexLevelParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMultiTexLevelParameterivEXT_size(pname)"), "params")], sideeffects=False),
2102     GlFunction(Void, "glMultiTexImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiTexImage3DEXT_size(format, type, width, height, depth)")), "pixels")]),
2103     GlFunction(Void, "glMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Const(OpaqueBlob(GLvoid, "__glMultiTexSubImage3DEXT_size(format, type, width, height, depth)")), "pixels")]),
2104     GlFunction(Void, "glCopyMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
2105     GlFunction(Void, "glBindMultiTextureEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLtexture, "texture")]),
2106     GlFunction(Void, "glEnableClientStateIndexedEXT", [(GLenum, "array"), (GLuint, "index")]),
2107     GlFunction(Void, "glDisableClientStateIndexedEXT", [(GLenum, "array"), (GLuint, "index")]),
2108     GlFunction(Void, "glMultiTexCoordPointerEXT", [(GLenum, "texunit"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Const(OpaquePointer(GLvoid)), "pointer")]),
2109     GlFunction(Void, "glMultiTexEnvfEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
2110     GlFunction(Void, "glMultiTexEnvfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glMultiTexEnvfvEXT_size(pname)")), "params")]),
2111     GlFunction(Void, "glMultiTexEnviEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
2112     GlFunction(Void, "glMultiTexEnvivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glMultiTexEnvivEXT_size(pname)")), "params")]),
2113     GlFunction(Void, "glMultiTexGendEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLdouble, "param")]),
2114     GlFunction(Void, "glMultiTexGendvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Const(OpaqueArray(GLdouble, "__glMultiTexGendvEXT_size(pname)")), "params")]),
2115     GlFunction(Void, "glMultiTexGenfEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLfloat, "param")]),
2116     GlFunction(Void, "glMultiTexGenfvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Const(OpaqueArray(GLfloat, "__glMultiTexGenfvEXT_size(pname)")), "params")]),
2117     GlFunction(Void, "glMultiTexGeniEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLint, "param")]),
2118     GlFunction(Void, "glMultiTexGenivEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glMultiTexGenivEXT_size(pname)")), "params")]),
2119     GlFunction(Void, "glGetMultiTexEnvfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMultiTexEnvfvEXT_size(pname)"), "params")], sideeffects=False),
2120     GlFunction(Void, "glGetMultiTexEnvivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMultiTexEnvivEXT_size(pname)"), "params")], sideeffects=False),
2121     GlFunction(Void, "glGetMultiTexGendvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetMultiTexGendvEXT_size(pname)"), "params")], sideeffects=False),
2122     GlFunction(Void, "glGetMultiTexGenfvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMultiTexGenfvEXT_size(pname)"), "params")], sideeffects=False),
2123     GlFunction(Void, "glGetMultiTexGenivEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMultiTexGenivEXT_size(pname)"), "params")], sideeffects=False),
2124     GlFunction(Void, "glGetFloatIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetFloatIndexedvEXT_size(target)"), "data")], sideeffects=False),
2125     GlFunction(Void, "glGetDoubleIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLdouble, "__glGetDoubleIndexedvEXT_size(target)"), "data")], sideeffects=False),
2126     GlFunction(Void, "glGetPointerIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetPointerIndexedvEXT_size(target)"), "data")], sideeffects=False),
2127     GlFunction(Void, "glCompressedTextureImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2128     GlFunction(Void, "glCompressedTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2129     GlFunction(Void, "glCompressedTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2130     GlFunction(Void, "glCompressedTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2131     GlFunction(Void, "glCompressedTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2132     GlFunction(Void, "glCompressedTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2133     GlFunction(Void, "glGetCompressedTextureImageEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "lod"), Out(OpaqueBlob(GLvoid, "__glGetCompressedTextureImageEXT_size(target, lod)"), "img")], sideeffects=False),
2134     GlFunction(Void, "glCompressedMultiTexImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2135     GlFunction(Void, "glCompressedMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2136     GlFunction(Void, "glCompressedMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2137     GlFunction(Void, "glCompressedMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2138     GlFunction(Void, "glCompressedMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2139     GlFunction(Void, "glCompressedMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Const(Blob(GLvoid, "imageSize")), "bits")]),
2140     GlFunction(Void, "glGetCompressedMultiTexImageEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "lod"), Out(OpaqueBlob(GLvoid, "__glGetCompressedMultiTexImageEXT_size(target, lod)"), "img")], sideeffects=False),
2141     GlFunction(Void, "glNamedProgramStringEXT", [(GLuint, "program"), (GLenum, "target"), (GLenum, "format"), (GLsizei, "len"), (Const(Blob(GLvoid, "len")), "string")]),
2142     GlFunction(Void, "glNamedProgramLocalParameter4dEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
2143     GlFunction(Void, "glNamedProgramLocalParameter4dvEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (Const(Array(GLdouble, "4")), "params")]),
2144     GlFunction(Void, "glNamedProgramLocalParameter4fEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
2145     GlFunction(Void, "glNamedProgramLocalParameter4fvEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (Const(Array(GLfloat, "4")), "params")]),
2146     GlFunction(Void, "glGetNamedProgramLocalParameterdvEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
2147     GlFunction(Void, "glGetNamedProgramLocalParameterfvEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
2148     GlFunction(Void, "glGetNamedProgramivEXT", [(GLuint, "program"), (GLenum, "target"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
2149     GlFunction(Void, "glGetNamedProgramStringEXT", [(GLuint, "program"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueBlob(GLvoid, "__glGetNamedProgramStringEXT_size(program,pname)"), "string")], sideeffects=False),
2150     GlFunction(Void, "glNamedProgramLocalParameters4fvEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "params")]),
2151     GlFunction(Void, "glNamedProgramLocalParameterI4iEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
2152     GlFunction(Void, "glNamedProgramLocalParameterI4ivEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (Const(Array(GLint, "4")), "params")]),
2153     GlFunction(Void, "glNamedProgramLocalParametersI4ivEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLint, "count*4")), "params")]),
2154     GlFunction(Void, "glNamedProgramLocalParameterI4uiEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
2155     GlFunction(Void, "glNamedProgramLocalParameterI4uivEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (Const(Array(GLuint, "4")), "params")]),
2156     GlFunction(Void, "glNamedProgramLocalParametersI4uivEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Const(Array(GLuint, "count*4")), "params")]),
2157     GlFunction(Void, "glGetNamedProgramLocalParameterIivEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
2158     GlFunction(Void, "glGetNamedProgramLocalParameterIuivEXT", [(GLuint, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
2159     GlFunction(Void, "glTextureParameterIivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glTextureParameterIivEXT_size(pname)")), "params")]),
2160     GlFunction(Void, "glTextureParameterIuivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLuint, "__glTextureParameterIuivEXT_size(pname)")), "params")]),
2161     GlFunction(Void, "glGetTextureParameterIivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTextureParameterIivEXT_size(pname)"), "params")], sideeffects=False),
2162     GlFunction(Void, "glGetTextureParameterIuivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetTextureParameterIuivEXT_size(pname)"), "params")], sideeffects=False),
2163     GlFunction(Void, "glMultiTexParameterIivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLint, "__glMultiTexParameterIivEXT_size(pname)")), "params")]),
2164     GlFunction(Void, "glMultiTexParameterIuivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Const(OpaqueArray(GLuint, "__glMultiTexParameterIuivEXT_size(pname)")), "params")]),
2165     GlFunction(Void, "glGetMultiTexParameterIivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMultiTexParameterIivEXT_size(pname)"), "params")], sideeffects=False),
2166     GlFunction(Void, "glGetMultiTexParameterIuivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetMultiTexParameterIuivEXT_size(pname)"), "params")], sideeffects=False),
2167     GlFunction(Void, "glProgramUniform1fEXT", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0")]),
2168     GlFunction(Void, "glProgramUniform2fEXT", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
2169     GlFunction(Void, "glProgramUniform3fEXT", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
2170     GlFunction(Void, "glProgramUniform4fEXT", [(GLuint, "program"), (GLint, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
2171     GlFunction(Void, "glProgramUniform1iEXT", [(GLuint, "program"), (GLint, "location"), (GLint, "v0")]),
2172     GlFunction(Void, "glProgramUniform2iEXT", [(GLuint, "program"), (GLint, "location"), (GLint, "v0"), (GLint, "v1")]),
2173     GlFunction(Void, "glProgramUniform3iEXT", [(GLuint, "program"), (GLint, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
2174     GlFunction(Void, "glProgramUniform4iEXT", [(GLuint, "program"), (GLint, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
2175     GlFunction(Void, "glProgramUniform1fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count")), "value")]),
2176     GlFunction(Void, "glProgramUniform2fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count*2")), "value")]),
2177     GlFunction(Void, "glProgramUniform3fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count*3")), "value")]),
2178     GlFunction(Void, "glProgramUniform4fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLfloat, "count*4")), "value")]),
2179     GlFunction(Void, "glProgramUniform1ivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "count")), "value")]),
2180     GlFunction(Void, "glProgramUniform2ivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "count*2")), "value")]),
2181     GlFunction(Void, "glProgramUniform3ivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "count*3")), "value")]),
2182     GlFunction(Void, "glProgramUniform4ivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLint, "count*4")), "value")]),
2183     GlFunction(Void, "glProgramUniformMatrix2fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*4")), "value")]),
2184     GlFunction(Void, "glProgramUniformMatrix3fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*9")), "value")]),
2185     GlFunction(Void, "glProgramUniformMatrix4fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*16")), "value")]),
2186     GlFunction(Void, "glProgramUniformMatrix2x3fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*6")), "value")]),
2187     GlFunction(Void, "glProgramUniformMatrix3x2fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*6")), "value")]),
2188     GlFunction(Void, "glProgramUniformMatrix2x4fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*8")), "value")]),
2189     GlFunction(Void, "glProgramUniformMatrix4x2fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*8")), "value")]),
2190     GlFunction(Void, "glProgramUniformMatrix3x4fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*12")), "value")]),
2191     GlFunction(Void, "glProgramUniformMatrix4x3fvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLfloat, "count*12")), "value")]),
2192     GlFunction(Void, "glProgramUniform1uiEXT", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0")]),
2193     GlFunction(Void, "glProgramUniform2uiEXT", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0"), (GLuint, "v1")]),
2194     GlFunction(Void, "glProgramUniform3uiEXT", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
2195     GlFunction(Void, "glProgramUniform4uiEXT", [(GLuint, "program"), (GLint, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
2196     GlFunction(Void, "glProgramUniform1uivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count")), "value")]),
2197     GlFunction(Void, "glProgramUniform2uivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*2")), "value")]),
2198     GlFunction(Void, "glProgramUniform3uivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*3")), "value")]),
2199     GlFunction(Void, "glProgramUniform4uivEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLuint, "count*4")), "value")]),
2200     GlFunction(Void, "glNamedBufferDataEXT", [(GLuint, "buffer"), (GLsizeiptr, "size"), (Const(OpaqueBlob(GLvoid, "__glNamedBufferDataEXT_size(size)")), "data"), (GLenum, "usage")]),
2201     GlFunction(Void, "glNamedBufferSubDataEXT", [(GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size"), (Const(OpaqueBlob(GLvoid, "__glNamedBufferSubDataEXT_size(size)")), "data")]),
2202     GlFunction(OpaquePointer(GLvoid), "glMapNamedBufferEXT", [(GLuint, "buffer"), (GLenum, "access")]),
2203     GlFunction(GLboolean, "glUnmapNamedBufferEXT", [(GLuint, "buffer")]),
2204     GlFunction(OpaquePointer(GLvoid), "glMapNamedBufferRangeEXT", [(GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "length"), (GLbitfield, "access")]),
2205     GlFunction(Void, "glFlushMappedNamedBufferRangeEXT", [(GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "length")]),
2206     GlFunction(Void, "glNamedCopyBufferSubDataEXT", [(GLuint, "readBuffer"), (GLuint, "writeBuffer"), (GLintptr, "readOffset"), (GLintptr, "writeOffset"), (GLsizeiptr, "size")]),
2207     GlFunction(Void, "glGetNamedBufferParameterivEXT", [(GLuint, "buffer"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetNamedBufferParameterivEXT_size(pname)"), "params")], sideeffects=False),
2208     GlFunction(Void, "glGetNamedBufferPointervEXT", [(GLuint, "buffer"), (GLenum, "pname"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetNamedBufferPointervEXT_size(pname)"), "params")], sideeffects=False),
2209     GlFunction(Void, "glGetNamedBufferSubDataEXT", [(GLuint, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size"), Out(OpaqueBlob(GLvoid, "__glGetNamedBufferSubDataEXT_size(size)"), "data")], sideeffects=False),
2210     GlFunction(Void, "glTextureBufferEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "internalformat"), (GLuint, "buffer")]),
2211     GlFunction(Void, "glMultiTexBufferEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "internalformat"), (GLuint, "buffer")]),
2212     GlFunction(Void, "glNamedRenderbufferStorageEXT", [(GLuint, "renderbuffer"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
2213     GlFunction(Void, "glGetNamedRenderbufferParameterivEXT", [(GLuint, "renderbuffer"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetNamedRenderbufferParameterivEXT_size(pname)"), "params")], sideeffects=False),
2214     GlFunction(GLenum, "glCheckNamedFramebufferStatusEXT", [(GLuint, "framebuffer"), (GLenum, "target")]),
2215     GlFunction(Void, "glNamedFramebufferTexture1DEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
2216     GlFunction(Void, "glNamedFramebufferTexture2DEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
2217     GlFunction(Void, "glNamedFramebufferTexture3DEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
2218     GlFunction(Void, "glNamedFramebufferRenderbufferEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
2219     GlFunction(Void, "glGetNamedFramebufferAttachmentParameterivEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetNamedFramebufferAttachmentParameterivEXT_size(pname)"), "params")], sideeffects=False),
2220     GlFunction(Void, "glGenerateTextureMipmapEXT", [(GLtexture, "texture"), (GLenum, "target")]),
2221     GlFunction(Void, "glGenerateMultiTexMipmapEXT", [(GLenum, "texunit"), (GLenum, "target")]),
2222     GlFunction(Void, "glFramebufferDrawBufferEXT", [(GLuint, "framebuffer"), (GLenum, "mode")]),
2223     GlFunction(Void, "glFramebufferDrawBuffersEXT", [(GLuint, "framebuffer"), (GLsizei, "n"), (Const(Array(GLenum, "n")), "bufs")]),
2224     GlFunction(Void, "glFramebufferReadBufferEXT", [(GLuint, "framebuffer"), (GLenum, "mode")]),
2225     GlFunction(Void, "glGetFramebufferParameterivEXT", [(GLuint, "framebuffer"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFramebufferParameterivEXT_size(pname)"), "params")], sideeffects=False),
2226     GlFunction(Void, "glNamedRenderbufferStorageMultisampleEXT", [(GLuint, "renderbuffer"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
2227     GlFunction(Void, "glNamedRenderbufferStorageMultisampleCoverageEXT", [(GLuint, "renderbuffer"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
2228     GlFunction(Void, "glNamedFramebufferTextureEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
2229     GlFunction(Void, "glNamedFramebufferTextureLayerEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
2230     GlFunction(Void, "glNamedFramebufferTextureFaceEXT", [(GLuint, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
2231     GlFunction(Void, "glTextureRenderbufferEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLuint, "renderbuffer")]),
2232     GlFunction(Void, "glMultiTexRenderbufferEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLuint, "renderbuffer")]),
2233     GlFunction(Void, "glProgramUniform1dEXT", [(GLuint, "program"), (GLint, "location"), (GLdouble, "x")]),
2234     GlFunction(Void, "glProgramUniform2dEXT", [(GLuint, "program"), (GLint, "location"), (GLdouble, "x"), (GLdouble, "y")]),
2235     GlFunction(Void, "glProgramUniform3dEXT", [(GLuint, "program"), (GLint, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
2236     GlFunction(Void, "glProgramUniform4dEXT", [(GLuint, "program"), (GLint, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
2237     GlFunction(Void, "glProgramUniform1dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count")), "value")]),
2238     GlFunction(Void, "glProgramUniform2dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count")), "value")]),
2239     GlFunction(Void, "glProgramUniform3dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count")), "value")]),
2240     GlFunction(Void, "glProgramUniform4dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Const(Array(GLdouble, "count")), "value")]),
2241     GlFunction(Void, "glProgramUniformMatrix2dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2242     GlFunction(Void, "glProgramUniformMatrix3dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2243     GlFunction(Void, "glProgramUniformMatrix4dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2244     GlFunction(Void, "glProgramUniformMatrix2x3dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2245     GlFunction(Void, "glProgramUniformMatrix2x4dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2246     GlFunction(Void, "glProgramUniformMatrix3x2dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2247     GlFunction(Void, "glProgramUniformMatrix3x4dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2248     GlFunction(Void, "glProgramUniformMatrix4x2dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2249     GlFunction(Void, "glProgramUniformMatrix4x3dvEXT", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Const(Array(GLdouble, "count")), "value")]),
2250
2251     # GL_NV_explicit_multisample
2252     GlFunction(Void, "glGetMultisamplefvNV", [(GLenum, "pname"), (GLuint, "index"), Out(Array(GLfloat, "2"), "val")], sideeffects=False),
2253     GlFunction(Void, "glSampleMaskIndexedNV", [(GLuint, "index"), (GLbitfield, "mask")]),
2254     GlFunction(Void, "glTexRenderbufferNV", [(GLenum, "target"), (GLuint, "renderbuffer")]),
2255
2256     # GL_NV_transform_feedback2
2257     GlFunction(Void, "glBindTransformFeedbackNV", [(GLenum, "target"), (GLuint, "id")]),
2258     GlFunction(Void, "glDeleteTransformFeedbacksNV", [(GLsizei, "n"), (Const(Array(GLuint, "n")), "ids")]),
2259     GlFunction(Void, "glGenTransformFeedbacksNV", [(GLsizei, "n"), Out(Array(GLuint, "n"), "ids")]),
2260     GlFunction(GLboolean, "glIsTransformFeedbackNV", [(GLuint, "id")]),
2261     GlFunction(Void, "glPauseTransformFeedbackNV", []),
2262     GlFunction(Void, "glResumeTransformFeedbackNV", []),
2263     GlFunction(Void, "glDrawTransformFeedbackNV", [(GLenum, "mode"), (GLuint, "id")]),
2264
2265     # GL_EXT_provoking_vertex
2266     GlFunction(Void, "glProvokingVertexEXT", [(GLenum, "mode")]),
2267
2268     # GL_NV_copy_image
2269     GlFunction(Void, "glCopyImageSubDataNV", [(GLuint, "srcName"), (GLenum, "srcTarget"), (GLint, "srcLevel"), (GLint, "srcX"), (GLint, "srcY"), (GLint, "srcZ"), (GLuint, "dstName"), (GLenum, "dstTarget"), (GLint, "dstLevel"), (GLint, "dstX"), (GLint, "dstY"), (GLint, "dstZ"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
2270
2271     # GL_EXT_separate_shader_objects
2272     GlFunction(Void, "glUseShaderProgramEXT", [(GLenum, "type"), (GLprogramEXT, "program")]),
2273     GlFunction(Void, "glActiveProgramEXT", [(GLprogramEXT, "program")]),
2274     GlFunction(GLprogramEXT, "glCreateShaderProgramEXT", [(GLenum, "type"), (Const(GLstring), "string")]),
2275
2276     # GL_KTX_buffer_region
2277     GlFunction(GLregion, "glNewBufferRegion", [(GLenum, "type")]),
2278     GlFunction(Void, "glDeleteBufferRegion", [(GLregion, "region")]),
2279     GlFunction(Void, "glReadBufferRegion", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
2280     GlFunction(Void, "glDrawBufferRegion", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "xDest"), (GLint, "yDest")]),
2281     GlFunction(GLuint, "glBufferRegionEnabled", [], sideeffects=False),
2282 ])
2283