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