Mammoth update to the Python code generator scripts that live in
authorIan Romanick <idr@us.ibm.com>
Tue, 21 Jun 2005 23:42:43 +0000 (23:42 +0000)
committerIan Romanick <idr@us.ibm.com>
Tue, 21 Jun 2005 23:42:43 +0000 (23:42 +0000)
src/mesa/glapi.  Basically, the scripts that did simple things (like
gl_offsets.py) were simple, and the scripts that did more complicated things
(like glX_proto_send.py) were getting progressively more and more out of
control.  So, I re-write the foundation classes on which everything is based.

One problem with the existing code is that the division between the GL API
database representation and the way the output code is generated was either
blury or nonexistant.  The new code somewhat follows the
Model-View-Controller pattern, minus the Controller.  There is a distinct
set of classes that model the API data, and there is a distinct set of
classes that generate code from that data.

One big change is in the class that represents GL functions (was glFunction,
is now gl_function).  There used to be an instance of this calls for each
function and for each alias to that function.  For example, there was an
instance for PointParameterivSGIS, PointParameterivEXT, PointParameterivARB,
and PointParameteriv.  In the new code, there is one instance.  Each
instance has a list of entrypoint names for the function. In the next
revision, this will allow a couple useful things.  The script will be able
to verify that the parameters, return type, and GLX protocol for a function
and all it's aliases match.

It will also allow aliases to be represented in the XML more compactly.
Instead of repeating all the information, an alias can be listed as:

     <function name="PointParameterivARB" alias="PointParameterivEXT"/>

Because the data representation was changed, the order that the alias
functions are processed by the scripts also changed.  This accounts for at
least 2,700 of the ~3,600 lines of diffs in the generated code.

Most of the remaining ~900 lines of diffs are the result of bugs *fixed* by
the new scripts.  The old scripts also generated code with some bugs in it.
These bugs were discovered while the new code was being written.

These changes were discussed on the mesa3d-dev mailing list back at the end
of May:

http://marc.theaimsgroup.com/?t=111714569000004&r=1&w=2

Xorg bug: 3197, 3208

26 files changed:
progs/tests/getprocaddress.py
src/glx/x11/indirect.c
src/glx/x11/indirect.h
src/glx/x11/indirect_init.c
src/glx/x11/indirect_size.c
src/mesa/glapi/Makefile
src/mesa/glapi/glX_XML.py
src/mesa/glapi/glX_doc.py
src/mesa/glapi/glX_proto_common.py [new file with mode: 0644]
src/mesa/glapi/glX_proto_send.py
src/mesa/glapi/glX_proto_size.py
src/mesa/glapi/gl_API.dtd
src/mesa/glapi/gl_API.xml
src/mesa/glapi/gl_SPARC_asm.py
src/mesa/glapi/gl_XML.py
src/mesa/glapi/gl_apitemp.py
src/mesa/glapi/gl_enums.py
src/mesa/glapi/gl_offsets.py
src/mesa/glapi/gl_procs.py
src/mesa/glapi/gl_table.py
src/mesa/glapi/gl_x86_asm.py
src/mesa/glapi/glapitemp.h
src/mesa/glapi/glprocs.h
src/mesa/glapi/typeexpr.py [new file with mode: 0644]
src/mesa/main/enums.c
src/mesa/x86/glapi_x86.S

index 960d9c243ccb873d1400fdb71a975619ef394bcc..d16b2d93d0e45bf4394a0a50c41db4c8b76c4630 100644 (file)
@@ -1,13 +1,9 @@
 #!/usr/bin/env python
 
-# $Id: getprocaddress.py,v 1.6 2004/11/27 19:57:46 brianp Exp $
+# $Id: getprocaddress.py,v 1.7 2005/06/21 23:42:43 idr Exp $
 
 # Helper for the getprocaddress.c test.
 
-from xml.sax import saxutils
-from xml.sax import make_parser
-from xml.sax.handler import feature_namespaces
-
 import sys, getopt, re
 sys.path.append("../../src/mesa/glapi/" )
 import gl_XML
@@ -30,16 +26,19 @@ def FindTestFunctions():
        return functions
 
 
-class PrintExports(gl_XML.FilterGLAPISpecBase):
-       name = "gl_exports.py (from Mesa)"
-
+class PrintExports(gl_XML.gl_print_base):
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "getprocaddress.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+
                self.tests = FindTestFunctions()
                self.prevCategory = ""
+               return
+
 
        def printRealHeader(self):
                print """
@@ -50,22 +49,28 @@ struct name_test_pair {
    
 static struct name_test_pair functions[] = {"""
 
-       def printRealFooter(self):
-               print"""
-   { NULL, NULL }
-};
-"""
+       def printBody(self, api):
+               prev_category = None
+               
 
-       def printFunction(self, f):
-               if f.category != self.prevCategory:
-                       print '   { "-%s", NULL},' % f.category
-                       self.prevCategory = f.category
+               for f in api.functionIterateByOffset():
+                       [category, num] = api.get_category_for_name( f.name )
+                       if category != prev_category:
+                               print '   { "-%s", NULL},' % category
+                               prev_category = category
                        
-               if f.name in self.tests:
-                       test = "test_%s" % f.name
-               else:
                        test = "NULL"
-               print '   { "gl%s", %s },' % (f.name, test)
+                       for name in f.entry_points:
+                               if name in self.tests:
+                                       test = "test_%s" % name
+                                       break
+
+                       print '   { "gl%s", %s },' % (f.name, test)
+
+               print ''
+               print '   { NULL, NULL }'
+               print '};'
+               print ''
                return
 
 
@@ -81,15 +86,8 @@ if __name__ == '__main__':
                if arg == "-f":
                        file_name = val
 
-       dh = PrintExports()
-
-       parser = make_parser()
-       parser.setFeature(feature_namespaces, 0)
-       parser.setContentHandler(dh)
+       printer = PrintExports()
 
-       f = open(file_name)
+       api = gl_XML.parse_GL_API( file_name, gl_XML.gl_item_factory() )
 
-       parser.parse(f)
-       dh.printHeader()
-       dh.printFunctions()
-       dh.printFooter()
+       printer.Print( api )
index 5b54b3708c8e8db7f19297595904f06cc57d330d..820d5df04b5bf0ea5462c9d043e29a4530272934 100644 (file)
@@ -4401,7 +4401,7 @@ __indirect_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
 
-#define X_GLsop_DeleteTextures 144
+#define X_GLvop_DeleteTextures 12
 void
 __indirect_glDeleteTextures(GLsizei n, const GLuint * textures)
 {
@@ -4409,16 +4409,10 @@ __indirect_glDeleteTextures(GLsizei n, const GLuint * textures)
     Display * const dpy = gc->currentDpy;
     const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
     if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
-#ifdef USE_XCB
-        XCBConnection *c = XCBConnectionOfDisplay(dpy);
-        (void) __glXFlushRenderBuffer(gc, gc->pc);
-        XCBGlxDeleteTextures(c, gc->currentContextTag, n, textures);
-#else
-        GLubyte const * pc = __glXSetupSingleRequest(gc, X_GLsop_DeleteTextures, cmdlen);
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivate, X_GLvop_DeleteTextures, cmdlen);
         (void) memcpy((void *)(pc + 0), (void *)(&n), 4);
         (void) memcpy((void *)(pc + 4), (void *)(textures), (n * 4));
         UnlockDisplay(dpy); SyncHandle();
-#endif /* USE_XCB */
     }
     return;
 }
@@ -4482,7 +4476,7 @@ __indirect_glPrioritizeTextures(GLsizei n, const GLuint * textures, const GLclam
         emit_header(gc->pc, X_GLrop_PrioritizeTextures, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&n), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(textures), (n * 4));
-        (void) memcpy((void *)(gc->pc + 8), (void *)(priorities), (n * 4));
+        (void) memcpy((void *)(gc->pc + 8 + (n * 4)), (void *)(priorities), (n * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6443,13 +6437,13 @@ void
 __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 16 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 16 + __GLX_PAD(len);
     if (__builtin_expect(len >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_LoadProgramNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&id), 4);
         (void) memcpy((void *)(gc->pc + 12), (void *)(&len), 4);
-        (void) memcpy((void *)(gc->pc + 16), (void *)(program), (len * 1));
+        (void) memcpy((void *)(gc->pc + 16), (void *)(program), len);
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6462,12 +6456,12 @@ __indirect_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdou
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 44;
     emit_header(gc->pc, X_GLrop_ProgramParameter4dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&y), 8);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&z), 8);
-    (void) memcpy((void *)(gc->pc + 28), (void *)(&w), 8);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&target), 4);
-    (void) memcpy((void *)(gc->pc + 40), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&x), 8);
+    (void) memcpy((void *)(gc->pc + 20), (void *)(&y), 8);
+    (void) memcpy((void *)(gc->pc + 28), (void *)(&z), 8);
+    (void) memcpy((void *)(gc->pc + 36), (void *)(&w), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -6479,9 +6473,9 @@ __indirect_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble *
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 44;
     emit_header(gc->pc, X_GLrop_ProgramParameter4dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(params), 32);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&target), 4);
-    (void) memcpy((void *)(gc->pc + 40), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(params), 32);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -6522,13 +6516,13 @@ void
 __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble * params)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 16 + __GLX_PAD(((num * 4) * 8));
+    const GLuint cmdlen = 16 + __GLX_PAD((num * 32));
     if (__builtin_expect(num >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramParameters4dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 12), (void *)(&num), 4);
-        (void) memcpy((void *)(gc->pc + 16), (void *)(params), ((num * 4) * 8));
+        (void) memcpy((void *)(gc->pc + 16), (void *)(params), (num * 32));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6539,13 +6533,13 @@ void
 __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat * params)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 16 + __GLX_PAD(((num * 4) * 4));
+    const GLuint cmdlen = 16 + __GLX_PAD((num * 16));
     if (__builtin_expect(num >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramParameters4fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 12), (void *)(&num), 4);
-        (void) memcpy((void *)(gc->pc + 16), (void *)(params), ((num * 4) * 4));
+        (void) memcpy((void *)(gc->pc + 16), (void *)(params), (num * 16));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -6993,12 +6987,12 @@ void
 __indirect_glVertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 2) * 8));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 16));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs2dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 2) * 8));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 16));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7009,12 +7003,12 @@ void
 __indirect_glVertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 2) * 4));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs2fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 2) * 4));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 8));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7025,12 +7019,12 @@ void
 __indirect_glVertexAttribs2svNV(GLuint index, GLsizei n, const GLshort * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 2) * 2));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs2svNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 2) * 2));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7041,12 +7035,12 @@ void
 __indirect_glVertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 3) * 8));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 24));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs3dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 3) * 8));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 24));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7057,12 +7051,12 @@ void
 __indirect_glVertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 3) * 4));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 12));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs3fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 3) * 4));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 12));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7073,12 +7067,12 @@ void
 __indirect_glVertexAttribs3svNV(GLuint index, GLsizei n, const GLshort * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 3) * 2));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 6));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs3svNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 3) * 2));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 6));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7089,12 +7083,12 @@ void
 __indirect_glVertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 8));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 32));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 8));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 32));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7105,12 +7099,12 @@ void
 __indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 4));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 16));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 4));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 16));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7121,12 +7115,12 @@ void
 __indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 2));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4svNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 2));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 8));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7137,12 +7131,12 @@ void
 __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 12 + __GLX_PAD(((n * 4) * 1));
+    const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
     if (__builtin_expect(n >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_VertexAttribs4ubvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&n), 4);
-        (void) memcpy((void *)(gc->pc + 12), (void *)(v), ((n * 4) * 1));
+        (void) memcpy((void *)(gc->pc + 12), (void *)(v), (n * 4));
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7322,7 +7316,7 @@ void
 __indirect_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid * string)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 16 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 16 + __GLX_PAD(len);
     if (__builtin_expect((len >= 0) && (gc->currentDpy != NULL), 1)) {
         if (cmdlen <= gc->maxSmallRenderCommandSize) {
             if ( (gc->pc + cmdlen) > gc->bufEnd ) {
@@ -7332,7 +7326,7 @@ __indirect_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const G
             (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
             (void) memcpy((void *)(gc->pc + 8), (void *)(&format), 4);
             (void) memcpy((void *)(gc->pc + 12), (void *)(&len), 4);
-            (void) memcpy((void *)(gc->pc + 16), (void *)(string), (len * 1));
+            (void) memcpy((void *)(gc->pc + 16), (void *)(string), len);
             gc->pc += cmdlen;
             if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
         }
@@ -7345,7 +7339,7 @@ __indirect_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const G
             (void) memcpy((void *)(pc + 8), (void *)(&target), 4);
             (void) memcpy((void *)(pc + 12), (void *)(&format), 4);
             (void) memcpy((void *)(pc + 16), (void *)(&len), 4);
-            __glXSendLargeCommand(gc, pc, 20, string, (len * 1));
+            __glXSendLargeCommand(gc, pc, 20, string, len);
         }
     }
 }
@@ -7357,12 +7351,12 @@ __indirect_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, G
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 44;
     emit_header(gc->pc, X_GLrop_ProgramEnvParameter4dvARB, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&y), 8);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&z), 8);
-    (void) memcpy((void *)(gc->pc + 28), (void *)(&w), 8);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&target), 4);
-    (void) memcpy((void *)(gc->pc + 40), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&x), 8);
+    (void) memcpy((void *)(gc->pc + 20), (void *)(&y), 8);
+    (void) memcpy((void *)(gc->pc + 28), (void *)(&z), 8);
+    (void) memcpy((void *)(gc->pc + 36), (void *)(&w), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7374,9 +7368,9 @@ __indirect_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdoub
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 44;
     emit_header(gc->pc, X_GLrop_ProgramEnvParameter4dvARB, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(params), 32);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&target), 4);
-    (void) memcpy((void *)(gc->pc + 40), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(params), 32);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7419,12 +7413,12 @@ __indirect_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x,
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 44;
     emit_header(gc->pc, X_GLrop_ProgramLocalParameter4dvARB, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&y), 8);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&z), 8);
-    (void) memcpy((void *)(gc->pc + 28), (void *)(&w), 8);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&target), 4);
-    (void) memcpy((void *)(gc->pc + 40), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&x), 8);
+    (void) memcpy((void *)(gc->pc + 20), (void *)(&y), 8);
+    (void) memcpy((void *)(gc->pc + 28), (void *)(&z), 8);
+    (void) memcpy((void *)(gc->pc + 36), (void *)(&w), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7436,9 +7430,9 @@ __indirect_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdo
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 44;
     emit_header(gc->pc, X_GLrop_ProgramLocalParameter4dvARB, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(params), 32);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&target), 4);
-    (void) memcpy((void *)(gc->pc + 40), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(params), 32);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7513,7 +7507,7 @@ void
 __indirect_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 28 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 28 + __GLX_PAD(len);
     if (__builtin_expect(len >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramNamedParameter4fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&id), 4);
@@ -7522,7 +7516,7 @@ __indirect_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * n
         (void) memcpy((void *)(gc->pc + 16), (void *)(&y), 4);
         (void) memcpy((void *)(gc->pc + 20), (void *)(&z), 4);
         (void) memcpy((void *)(gc->pc + 24), (void *)(&w), 4);
-        (void) memcpy((void *)(gc->pc + 28), (void *)(name), (len * 1));
+        (void) memcpy((void *)(gc->pc + 28), (void *)(name), len);
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7533,7 +7527,7 @@ void
 __indirect_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 44 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 44 + __GLX_PAD(len);
     if (__builtin_expect(len >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramNamedParameter4dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
@@ -7542,7 +7536,7 @@ __indirect_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * n
         (void) memcpy((void *)(gc->pc + 28), (void *)(&w), 8);
         (void) memcpy((void *)(gc->pc + 36), (void *)(&id), 4);
         (void) memcpy((void *)(gc->pc + 40), (void *)(&len), 4);
-        (void) memcpy((void *)(gc->pc + 44), (void *)(name), (len * 1));
+        (void) memcpy((void *)(gc->pc + 44), (void *)(name), len);
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7553,13 +7547,13 @@ void
 __indirect_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 28 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 28 + __GLX_PAD(len);
     if (__builtin_expect(len >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramNamedParameter4fvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(&id), 4);
         (void) memcpy((void *)(gc->pc + 8), (void *)(&len), 4);
         (void) memcpy((void *)(gc->pc + 12), (void *)(v), 16);
-        (void) memcpy((void *)(gc->pc + 28), (void *)(name), (len * 1));
+        (void) memcpy((void *)(gc->pc + 28), (void *)(name), len);
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7570,13 +7564,13 @@ void
 __indirect_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = 44 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 44 + __GLX_PAD(len);
     if (__builtin_expect(len >= 0, 1)) {
         emit_header(gc->pc, X_GLrop_ProgramNamedParameter4dvNV, cmdlen);
         (void) memcpy((void *)(gc->pc + 4), (void *)(v), 32);
         (void) memcpy((void *)(gc->pc + 36), (void *)(&id), 4);
         (void) memcpy((void *)(gc->pc + 40), (void *)(&len), 4);
-        (void) memcpy((void *)(gc->pc + 44), (void *)(name), (len * 1));
+        (void) memcpy((void *)(gc->pc + 44), (void *)(name), len);
         gc->pc += cmdlen;
         if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
     }
@@ -7588,12 +7582,12 @@ __indirect_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
     Display * const dpy = gc->currentDpy;
-    const GLuint cmdlen = 8 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 8 + __GLX_PAD(len);
     if (__builtin_expect((len >= 0) && (dpy != NULL), 1)) {
         GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GetProgramNamedParameterfvNV, cmdlen);
         (void) memcpy((void *)(pc + 0), (void *)(&id), 4);
         (void) memcpy((void *)(pc + 4), (void *)(&len), 4);
-        (void) memcpy((void *)(pc + 8), (void *)(name), (len * 1));
+        (void) memcpy((void *)(pc + 8), (void *)(name), len);
         (void) __glXReadReply(dpy, 4, params, GL_TRUE);
         UnlockDisplay(dpy); SyncHandle();
     }
@@ -7606,12 +7600,12 @@ __indirect_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte
 {
     __GLXcontext * const gc = __glXGetCurrentContext();
     Display * const dpy = gc->currentDpy;
-    const GLuint cmdlen = 8 + __GLX_PAD((len * 1));
+    const GLuint cmdlen = 8 + __GLX_PAD(len);
     if (__builtin_expect((len >= 0) && (dpy != NULL), 1)) {
         GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GetProgramNamedParameterdvNV, cmdlen);
         (void) memcpy((void *)(pc + 0), (void *)(&id), 4);
         (void) memcpy((void *)(pc + 4), (void *)(&len), 4);
-        (void) memcpy((void *)(pc + 8), (void *)(name), (len * 1));
+        (void) memcpy((void *)(pc + 8), (void *)(name), len);
         (void) __glXReadReply(dpy, 8, params, GL_TRUE);
         UnlockDisplay(dpy); SyncHandle();
     }
@@ -7630,6 +7624,9 @@ __indirect_glGenQueriesARB(GLsizei n, GLuint * ids)
         XCBConnection *c = XCBConnectionOfDisplay(dpy);
         (void) __glXFlushRenderBuffer(gc, gc->pc);
         XCBGlxGenQueriesARBRep *reply = XCBGlxGenQueriesARBReply(c, XCBGlxGenQueriesARB(c, gc->currentContextTag, n), NULL);
+        if (XCBGlxGenQueriesARBDataLength(reply) == 0)
+            (void)memcpy(ids, &reply->datum, sizeof(reply->datum));
+        else
         (void)memcpy(ids, XCBGlxGenQueriesARBData(reply), XCBGlxGenQueriesARBDataLength(reply) * sizeof(GLuint));
         free(reply);
 #else
@@ -7856,8 +7853,8 @@ __indirect_glVertexAttrib1dNV(GLuint index, GLdouble x)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 16;
     emit_header(gc->pc, X_GLrop_VertexAttrib1dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&x), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7869,8 +7866,8 @@ __indirect_glVertexAttrib1dvNV(GLuint index, const GLdouble * v)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 16;
     emit_header(gc->pc, X_GLrop_VertexAttrib1dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(v), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(v), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7934,9 +7931,9 @@ __indirect_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 24;
     emit_header(gc->pc, X_GLrop_VertexAttrib2dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&y), 8);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&x), 8);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&y), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -7948,8 +7945,8 @@ __indirect_glVertexAttrib2dvNV(GLuint index, const GLdouble * v)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 24;
     emit_header(gc->pc, X_GLrop_VertexAttrib2dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(v), 16);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(v), 16);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -8015,10 +8012,10 @@ __indirect_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 32;
     emit_header(gc->pc, X_GLrop_VertexAttrib3dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&y), 8);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&z), 8);
-    (void) memcpy((void *)(gc->pc + 28), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&x), 8);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&y), 8);
+    (void) memcpy((void *)(gc->pc + 24), (void *)(&z), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -8030,8 +8027,8 @@ __indirect_glVertexAttrib3dvNV(GLuint index, const GLdouble * v)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 32;
     emit_header(gc->pc, X_GLrop_VertexAttrib3dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(v), 24);
-    (void) memcpy((void *)(gc->pc + 28), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(v), 24);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -8099,11 +8096,11 @@ __indirect_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z,
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 40;
     emit_header(gc->pc, X_GLrop_VertexAttrib4dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(&x), 8);
-    (void) memcpy((void *)(gc->pc + 12), (void *)(&y), 8);
-    (void) memcpy((void *)(gc->pc + 20), (void *)(&z), 8);
-    (void) memcpy((void *)(gc->pc + 28), (void *)(&w), 8);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&x), 8);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&y), 8);
+    (void) memcpy((void *)(gc->pc + 24), (void *)(&z), 8);
+    (void) memcpy((void *)(gc->pc + 32), (void *)(&w), 8);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -8115,8 +8112,8 @@ __indirect_glVertexAttrib4dvNV(GLuint index, const GLdouble * v)
     __GLXcontext * const gc = __glXGetCurrentContext();
     const GLuint cmdlen = 40;
     emit_header(gc->pc, X_GLrop_VertexAttrib4dvNV, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), (void *)(v), 32);
-    (void) memcpy((void *)(gc->pc + 36), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&index), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(v), 32);
     gc->pc += cmdlen;
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
@@ -8208,3 +8205,271 @@ __indirect_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v)
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
 
+#define X_GLvop_IsRenderbufferEXT 1422
+GLboolean
+__indirect_glIsRenderbufferEXT(GLuint renderbuffer)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    GLboolean retval = (GLboolean) 0;
+    const GLuint cmdlen = 4;
+    if (__builtin_expect(dpy != NULL, 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_IsRenderbufferEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&renderbuffer), 4);
+        retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return retval;
+}
+
+#define X_GLrop_BindRenderbufferEXT 4316
+void
+__indirect_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 12;
+    emit_header(gc->pc, X_GLrop_BindRenderbufferEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&renderbuffer), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLrop_DeleteRenderbuffersEXT 4317
+void
+__indirect_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 8 + __GLX_PAD((n * 4));
+    if (__builtin_expect(n >= 0, 1)) {
+        emit_header(gc->pc, X_GLrop_DeleteRenderbuffersEXT, cmdlen);
+        (void) memcpy((void *)(gc->pc + 4), (void *)(&n), 4);
+        (void) memcpy((void *)(gc->pc + 8), (void *)(renderbuffers), (n * 4));
+        gc->pc += cmdlen;
+        if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+    }
+}
+
+#define X_GLvop_GenRenderbuffersEXT 1423
+void
+__indirect_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    const GLuint cmdlen = 4;
+    if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GenRenderbuffersEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&n), 4);
+        (void) __glXReadReply(dpy, 4, renderbuffers, GL_TRUE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return;
+}
+
+#define X_GLrop_RenderbufferStorageEXT 4318
+void
+__indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 20;
+    emit_header(gc->pc, X_GLrop_RenderbufferStorageEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&internalformat), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&width), 4);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&height), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLvop_GetRenderbufferParameterivEXT 1424
+void
+__indirect_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    const GLuint cmdlen = 8;
+    if (__builtin_expect(dpy != NULL, 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GetRenderbufferParameterivEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&target), 4);
+        (void) memcpy((void *)(pc + 4), (void *)(&pname), 4);
+        (void) __glXReadReply(dpy, 4, params, GL_FALSE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return;
+}
+
+#define X_GLvop_IsFramebufferEXT 1425
+GLboolean
+__indirect_glIsFramebufferEXT(GLuint framebuffer)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    GLboolean retval = (GLboolean) 0;
+    const GLuint cmdlen = 4;
+    if (__builtin_expect(dpy != NULL, 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_IsFramebufferEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&framebuffer), 4);
+        retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return retval;
+}
+
+#define X_GLrop_BindFramebufferEXT 4319
+void
+__indirect_glBindFramebufferEXT(GLenum target, GLuint framebuffer)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 12;
+    emit_header(gc->pc, X_GLrop_BindFramebufferEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&framebuffer), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLrop_DeleteFramebuffersEXT 4320
+void
+__indirect_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 8 + __GLX_PAD((n * 4));
+    if (__builtin_expect(n >= 0, 1)) {
+        emit_header(gc->pc, X_GLrop_DeleteFramebuffersEXT, cmdlen);
+        (void) memcpy((void *)(gc->pc + 4), (void *)(&n), 4);
+        (void) memcpy((void *)(gc->pc + 8), (void *)(framebuffers), (n * 4));
+        gc->pc += cmdlen;
+        if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+    }
+}
+
+#define X_GLvop_GenFramebuffersEXT 1426
+void
+__indirect_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    const GLuint cmdlen = 4;
+    if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GenFramebuffersEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&n), 4);
+        (void) __glXReadReply(dpy, 4, framebuffers, GL_TRUE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return;
+}
+
+#define X_GLvop_CheckFramebufferStatusEXT 1427
+GLenum
+__indirect_glCheckFramebufferStatusEXT(GLenum target)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    GLenum retval = (GLenum) 0;
+    const GLuint cmdlen = 4;
+    if (__builtin_expect(dpy != NULL, 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_CheckFramebufferStatusEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&target), 4);
+        retval = (GLenum) __glXReadReply(dpy, 0, NULL, GL_FALSE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return retval;
+}
+
+#define X_GLrop_FramebufferTexture1DEXT 4321
+void
+__indirect_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 24;
+    emit_header(gc->pc, X_GLrop_FramebufferTexture1DEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&attachment), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&textarget), 4);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&texture), 4);
+    (void) memcpy((void *)(gc->pc + 20), (void *)(&level), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLrop_FramebufferTexture2DEXT 4322
+void
+__indirect_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 24;
+    emit_header(gc->pc, X_GLrop_FramebufferTexture2DEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&attachment), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&textarget), 4);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&texture), 4);
+    (void) memcpy((void *)(gc->pc + 20), (void *)(&level), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLrop_FramebufferTexture3DEXT 4323
+void
+__indirect_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 28;
+    emit_header(gc->pc, X_GLrop_FramebufferTexture3DEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&attachment), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&textarget), 4);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&texture), 4);
+    (void) memcpy((void *)(gc->pc + 20), (void *)(&level), 4);
+    (void) memcpy((void *)(gc->pc + 24), (void *)(&zoffset), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLrop_FramebufferRenderbufferEXT 4324
+void
+__indirect_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 20;
+    emit_header(gc->pc, X_GLrop_FramebufferRenderbufferEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    (void) memcpy((void *)(gc->pc + 8), (void *)(&attachment), 4);
+    (void) memcpy((void *)(gc->pc + 12), (void *)(&renderbuffertarget), 4);
+    (void) memcpy((void *)(gc->pc + 16), (void *)(&renderbuffer), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+#define X_GLvop_GetFramebufferAttachmentParameterivEXT 1428
+void
+__indirect_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    Display * const dpy = gc->currentDpy;
+    const GLuint cmdlen = 12;
+    if (__builtin_expect(dpy != NULL, 1)) {
+        GLubyte const * pc = __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply, X_GLvop_GetFramebufferAttachmentParameterivEXT, cmdlen);
+        (void) memcpy((void *)(pc + 0), (void *)(&target), 4);
+        (void) memcpy((void *)(pc + 4), (void *)(&attachment), 4);
+        (void) memcpy((void *)(pc + 8), (void *)(&pname), 4);
+        (void) __glXReadReply(dpy, 4, params, GL_FALSE);
+        UnlockDisplay(dpy); SyncHandle();
+    }
+    return;
+}
+
+#define X_GLrop_GenerateMipmapEXT 4325
+void
+__indirect_glGenerateMipmapEXT(GLenum target)
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 8;
+    emit_header(gc->pc, X_GLrop_GenerateMipmapEXT, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), (void *)(&target), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+
+
+#  undef FASTCALL
+#  undef NOINLINE
index b2efad5a2705360007cbe77f465cdff2fcc40155..beab791ea79ea7147446d4c74d146611ac49e842 100644 (file)
@@ -682,6 +682,23 @@ extern HIDDEN void __indirect_glVertexAttrib4sNV(GLuint index, GLshort x, GLshor
 extern HIDDEN void __indirect_glVertexAttrib4svNV(GLuint index, const GLshort * v);
 extern HIDDEN void __indirect_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
 extern HIDDEN void __indirect_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v);
+extern HIDDEN GLboolean __indirect_glIsRenderbufferEXT(GLuint renderbuffer);
+extern HIDDEN void __indirect_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer);
+extern HIDDEN void __indirect_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers);
+extern HIDDEN void __indirect_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers);
+extern HIDDEN void __indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+extern HIDDEN void __indirect_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params);
+extern HIDDEN GLboolean __indirect_glIsFramebufferEXT(GLuint framebuffer);
+extern HIDDEN void __indirect_glBindFramebufferEXT(GLenum target, GLuint framebuffer);
+extern HIDDEN void __indirect_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers);
+extern HIDDEN void __indirect_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers);
+extern HIDDEN GLenum __indirect_glCheckFramebufferStatusEXT(GLenum target);
+extern HIDDEN void __indirect_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+extern HIDDEN void __indirect_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+extern HIDDEN void __indirect_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+extern HIDDEN void __indirect_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+extern HIDDEN void __indirect_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params);
+extern HIDDEN void __indirect_glGenerateMipmapEXT(GLenum target);
 
 #  undef HIDDEN
 #  undef FASTCALL
index e87d39859f05c407af1eb65f0fcc5f183e826509..6627edfebd81c4003fda3569f0d7ffdf66c83cd3 100644 (file)
@@ -72,7 +72,7 @@ __GLapi * __glXNewIndirectAPI( void )
 
     /* now, initialize the entries we understand */
 
-    /* GL_VERSION_1_0 */
+    /* 1.0 */
 
     glAPI->NewList = __indirect_glNewList;
     glAPI->EndList = __indirect_glEndList;
@@ -381,7 +381,7 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->Translatef = __indirect_glTranslatef;
     glAPI->Viewport = __indirect_glViewport;
 
-    /* GL_VERSION_1_1 */
+    /* 1.1 */
 
     glAPI->ArrayElement = __indirect_glArrayElement;
     glAPI->BindTexture = __indirect_glBindTexture;
@@ -414,7 +414,7 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->PopClientAttrib = __indirect_glPopClientAttrib;
     glAPI->PushClientAttrib = __indirect_glPushClientAttrib;
 
-    /* GL_VERSION_1_2 */
+    /* 1.2 */
 
     glAPI->BlendColor = __indirect_glBlendColor;
     glAPI->BlendEquation = __indirect_glBlendEquation;
@@ -455,18 +455,8 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->TexSubImage3D = __indirect_glTexSubImage3D;
     glAPI->CopyTexSubImage3D = __indirect_glCopyTexSubImage3D;
 
-    /* GL_ARB_multitexture */
+    /*   1. GL_ARB_multitexture */
 
-    glAPI->ActiveTextureARB = __indirect_glActiveTextureARB;
-    glAPI->ClientActiveTextureARB = __indirect_glClientActiveTextureARB;
-    glAPI->MultiTexCoord1dARB = __indirect_glMultiTexCoord1dARB;
-    glAPI->MultiTexCoord1dvARB = __indirect_glMultiTexCoord1dvARB;
-    glAPI->MultiTexCoord1fARB = __indirect_glMultiTexCoord1fARB;
-    glAPI->MultiTexCoord1fvARB = __indirect_glMultiTexCoord1fvARB;
-    glAPI->MultiTexCoord1iARB = __indirect_glMultiTexCoord1iARB;
-    glAPI->MultiTexCoord1ivARB = __indirect_glMultiTexCoord1ivARB;
-    glAPI->MultiTexCoord1sARB = __indirect_glMultiTexCoord1sARB;
-    glAPI->MultiTexCoord1svARB = __indirect_glMultiTexCoord1svARB;
     glAPI->MultiTexCoord2dARB = __indirect_glMultiTexCoord2dARB;
     glAPI->MultiTexCoord2dvARB = __indirect_glMultiTexCoord2dvARB;
     glAPI->MultiTexCoord2fARB = __indirect_glMultiTexCoord2fARB;
@@ -491,34 +481,125 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->MultiTexCoord4ivARB = __indirect_glMultiTexCoord4ivARB;
     glAPI->MultiTexCoord4sARB = __indirect_glMultiTexCoord4sARB;
     glAPI->MultiTexCoord4svARB = __indirect_glMultiTexCoord4svARB;
+    glAPI->ActiveTextureARB = __indirect_glActiveTextureARB;
+    glAPI->ClientActiveTextureARB = __indirect_glClientActiveTextureARB;
+    glAPI->MultiTexCoord1dARB = __indirect_glMultiTexCoord1dARB;
+    glAPI->MultiTexCoord1dvARB = __indirect_glMultiTexCoord1dvARB;
+    glAPI->MultiTexCoord1fARB = __indirect_glMultiTexCoord1fARB;
+    glAPI->MultiTexCoord1fvARB = __indirect_glMultiTexCoord1fvARB;
+    glAPI->MultiTexCoord1iARB = __indirect_glMultiTexCoord1iARB;
+    glAPI->MultiTexCoord1ivARB = __indirect_glMultiTexCoord1ivARB;
+    glAPI->MultiTexCoord1sARB = __indirect_glMultiTexCoord1sARB;
+    glAPI->MultiTexCoord1svARB = __indirect_glMultiTexCoord1svARB;
 
-    /* GL_ARB_transpose_matrix */
+    /*   3. GL_ARB_transpose_matrix */
 
     glAPI->LoadTransposeMatrixfARB = __indirect_glLoadTransposeMatrixfARB;
     glAPI->LoadTransposeMatrixdARB = __indirect_glLoadTransposeMatrixdARB;
     glAPI->MultTransposeMatrixfARB = __indirect_glMultTransposeMatrixfARB;
     glAPI->MultTransposeMatrixdARB = __indirect_glMultTransposeMatrixdARB;
 
-    /* GL_ARB_multisample */
+    /*   5. GL_ARB_multisample */
 
     glAPI->SampleCoverageARB = __indirect_glSampleCoverageARB;
 
-    /* GL_ARB_draw_buffers */
+    /*  12. GL_ARB_texture_compression */
+
+    glAPI->CompressedTexImage3DARB = __indirect_glCompressedTexImage3DARB;
+    glAPI->CompressedTexImage2DARB = __indirect_glCompressedTexImage2DARB;
+    glAPI->CompressedTexImage1DARB = __indirect_glCompressedTexImage1DARB;
+    glAPI->CompressedTexSubImage3DARB = __indirect_glCompressedTexSubImage3DARB;
+    glAPI->CompressedTexSubImage2DARB = __indirect_glCompressedTexSubImage2DARB;
+    glAPI->CompressedTexSubImage1DARB = __indirect_glCompressedTexSubImage1DARB;
+    glAPI->GetCompressedTexImageARB = __indirect_glGetCompressedTexImageARB;
+
+    /*  26. GL_ARB_vertex_program */
+
+    glAPI->VertexAttrib4bvARB = __indirect_glVertexAttrib4bvARB;
+    glAPI->VertexAttrib4ivARB = __indirect_glVertexAttrib4ivARB;
+    glAPI->VertexAttrib4ubvARB = __indirect_glVertexAttrib4ubvARB;
+    glAPI->VertexAttrib4usvARB = __indirect_glVertexAttrib4usvARB;
+    glAPI->VertexAttrib4uivARB = __indirect_glVertexAttrib4uivARB;
+    glAPI->VertexAttrib4NbvARB = __indirect_glVertexAttrib4NbvARB;
+    glAPI->VertexAttrib4NsvARB = __indirect_glVertexAttrib4NsvARB;
+    glAPI->VertexAttrib4NivARB = __indirect_glVertexAttrib4NivARB;
+    glAPI->VertexAttrib4NusvARB = __indirect_glVertexAttrib4NusvARB;
+    glAPI->VertexAttrib4NuivARB = __indirect_glVertexAttrib4NuivARB;
+    glAPI->VertexAttribPointerARB = __indirect_glVertexAttribPointerARB;
+    glAPI->EnableVertexAttribArrayARB = __indirect_glEnableVertexAttribArrayARB;
+    glAPI->DisableVertexAttribArrayARB = __indirect_glDisableVertexAttribArrayARB;
+    glAPI->ProgramStringARB = __indirect_glProgramStringARB;
+    glAPI->ProgramEnvParameter4dARB = __indirect_glProgramEnvParameter4dARB;
+    glAPI->ProgramEnvParameter4dvARB = __indirect_glProgramEnvParameter4dvARB;
+    glAPI->ProgramEnvParameter4fARB = __indirect_glProgramEnvParameter4fARB;
+    glAPI->ProgramEnvParameter4fvARB = __indirect_glProgramEnvParameter4fvARB;
+    glAPI->ProgramLocalParameter4dARB = __indirect_glProgramLocalParameter4dARB;
+    glAPI->ProgramLocalParameter4dvARB = __indirect_glProgramLocalParameter4dvARB;
+    glAPI->ProgramLocalParameter4fARB = __indirect_glProgramLocalParameter4fARB;
+    glAPI->ProgramLocalParameter4fvARB = __indirect_glProgramLocalParameter4fvARB;
+    glAPI->GetProgramEnvParameterdvARB = __indirect_glGetProgramEnvParameterdvARB;
+    glAPI->GetProgramEnvParameterfvARB = __indirect_glGetProgramEnvParameterfvARB;
+    glAPI->GetProgramLocalParameterdvARB = __indirect_glGetProgramLocalParameterdvARB;
+    glAPI->GetProgramLocalParameterfvARB = __indirect_glGetProgramLocalParameterfvARB;
+    glAPI->GetProgramivARB = __indirect_glGetProgramivARB;
+    glAPI->GetProgramStringARB = __indirect_glGetProgramStringARB;
+    glAPI->GetVertexAttribdvARB = __indirect_glGetVertexAttribdvARB;
+    glAPI->GetVertexAttribfvARB = __indirect_glGetVertexAttribfvARB;
+    glAPI->GetVertexAttribivARB = __indirect_glGetVertexAttribivARB;
+    glAPI->VertexAttrib1dARB = __indirect_glVertexAttrib1dARB;
+    glAPI->VertexAttrib1dvARB = __indirect_glVertexAttrib1dvARB;
+    glAPI->VertexAttrib1fARB = __indirect_glVertexAttrib1fARB;
+    glAPI->VertexAttrib1fvARB = __indirect_glVertexAttrib1fvARB;
+    glAPI->VertexAttrib1sARB = __indirect_glVertexAttrib1sARB;
+    glAPI->VertexAttrib1svARB = __indirect_glVertexAttrib1svARB;
+    glAPI->VertexAttrib2dARB = __indirect_glVertexAttrib2dARB;
+    glAPI->VertexAttrib2dvARB = __indirect_glVertexAttrib2dvARB;
+    glAPI->VertexAttrib2fARB = __indirect_glVertexAttrib2fARB;
+    glAPI->VertexAttrib2fvARB = __indirect_glVertexAttrib2fvARB;
+    glAPI->VertexAttrib2sARB = __indirect_glVertexAttrib2sARB;
+    glAPI->VertexAttrib2svARB = __indirect_glVertexAttrib2svARB;
+    glAPI->VertexAttrib3dARB = __indirect_glVertexAttrib3dARB;
+    glAPI->VertexAttrib3dvARB = __indirect_glVertexAttrib3dvARB;
+    glAPI->VertexAttrib3fARB = __indirect_glVertexAttrib3fARB;
+    glAPI->VertexAttrib3fvARB = __indirect_glVertexAttrib3fvARB;
+    glAPI->VertexAttrib3sARB = __indirect_glVertexAttrib3sARB;
+    glAPI->VertexAttrib3svARB = __indirect_glVertexAttrib3svARB;
+    glAPI->VertexAttrib4dARB = __indirect_glVertexAttrib4dARB;
+    glAPI->VertexAttrib4dvARB = __indirect_glVertexAttrib4dvARB;
+    glAPI->VertexAttrib4fARB = __indirect_glVertexAttrib4fARB;
+    glAPI->VertexAttrib4fvARB = __indirect_glVertexAttrib4fvARB;
+    glAPI->VertexAttrib4sARB = __indirect_glVertexAttrib4sARB;
+    glAPI->VertexAttrib4svARB = __indirect_glVertexAttrib4svARB;
+    glAPI->VertexAttrib4NubARB = __indirect_glVertexAttrib4NubARB;
+    glAPI->VertexAttrib4NubvARB = __indirect_glVertexAttrib4NubvARB;
+
+    /*  29. GL_ARB_occlusion_query */
+
+    glAPI->EndQueryARB = __indirect_glEndQueryARB;
+    glAPI->GetQueryivARB = __indirect_glGetQueryivARB;
+    glAPI->GetQueryObjectivARB = __indirect_glGetQueryObjectivARB;
+    glAPI->GetQueryObjectuivARB = __indirect_glGetQueryObjectuivARB;
+    glAPI->GenQueriesARB = __indirect_glGenQueriesARB;
+    glAPI->DeleteQueriesARB = __indirect_glDeleteQueriesARB;
+    glAPI->IsQueryARB = __indirect_glIsQueryARB;
+    glAPI->BeginQueryARB = __indirect_glBeginQueryARB;
+
+    /*  37. GL_ARB_draw_buffers */
 
     glAPI->DrawBuffersARB = __indirect_glDrawBuffersARB;
 
-    /* GL_EXT_texture_object */
+    /*  20. GL_EXT_texture_object */
 
-    glAPI->AreTexturesResidentEXT = __indirect_glAreTexturesResidentEXT;
     glAPI->GenTexturesEXT = __indirect_glGenTexturesEXT;
     glAPI->IsTextureEXT = __indirect_glIsTextureEXT;
+    glAPI->AreTexturesResidentEXT = __indirect_glAreTexturesResidentEXT;
 
-    /* GL_SGIS_multisample */
+    /*  25. GL_SGIS_multisample */
 
     glAPI->SampleMaskSGIS = __indirect_glSampleMaskSGIS;
     glAPI->SamplePatternSGIS = __indirect_glSamplePatternSGIS;
 
-    /* GL_EXT_vertex_array */
+    /*  30. GL_EXT_vertex_array */
 
     glAPI->ColorPointerEXT = __indirect_glColorPointerEXT;
     glAPI->EdgeFlagPointerEXT = __indirect_glEdgeFlagPointerEXT;
@@ -527,12 +608,49 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->TexCoordPointerEXT = __indirect_glTexCoordPointerEXT;
     glAPI->VertexPointerEXT = __indirect_glVertexPointerEXT;
 
-    /* GL_EXT_point_parameters */
+    /*  54. GL_EXT_point_parameters */
 
     glAPI->PointParameterfEXT = __indirect_glPointParameterfEXT;
     glAPI->PointParameterfvEXT = __indirect_glPointParameterfvEXT;
 
-    /* GL_MESA_window_pos */
+    /* 145. GL_EXT_secondary_color */
+
+    glAPI->SecondaryColor3usvEXT = __indirect_glSecondaryColor3usvEXT;
+    glAPI->SecondaryColorPointerEXT = __indirect_glSecondaryColorPointerEXT;
+    glAPI->SecondaryColor3bEXT = __indirect_glSecondaryColor3bEXT;
+    glAPI->SecondaryColor3bvEXT = __indirect_glSecondaryColor3bvEXT;
+    glAPI->SecondaryColor3dEXT = __indirect_glSecondaryColor3dEXT;
+    glAPI->SecondaryColor3dvEXT = __indirect_glSecondaryColor3dvEXT;
+    glAPI->SecondaryColor3fEXT = __indirect_glSecondaryColor3fEXT;
+    glAPI->SecondaryColor3fvEXT = __indirect_glSecondaryColor3fvEXT;
+    glAPI->SecondaryColor3iEXT = __indirect_glSecondaryColor3iEXT;
+    glAPI->SecondaryColor3ivEXT = __indirect_glSecondaryColor3ivEXT;
+    glAPI->SecondaryColor3sEXT = __indirect_glSecondaryColor3sEXT;
+    glAPI->SecondaryColor3svEXT = __indirect_glSecondaryColor3svEXT;
+    glAPI->SecondaryColor3ubEXT = __indirect_glSecondaryColor3ubEXT;
+    glAPI->SecondaryColor3ubvEXT = __indirect_glSecondaryColor3ubvEXT;
+    glAPI->SecondaryColor3uiEXT = __indirect_glSecondaryColor3uiEXT;
+    glAPI->SecondaryColor3uivEXT = __indirect_glSecondaryColor3uivEXT;
+    glAPI->SecondaryColor3usEXT = __indirect_glSecondaryColor3usEXT;
+
+    /* 148. GL_EXT_multi_draw_arrays */
+
+    glAPI->MultiDrawArraysEXT = __indirect_glMultiDrawArraysEXT;
+    glAPI->MultiDrawElementsEXT = __indirect_glMultiDrawElementsEXT;
+
+    /* 149. GL_EXT_fog_coord */
+
+    glAPI->FogCoordfEXT = __indirect_glFogCoordfEXT;
+    glAPI->FogCoordfvEXT = __indirect_glFogCoordfvEXT;
+    glAPI->FogCoorddEXT = __indirect_glFogCoorddEXT;
+    glAPI->FogCoorddvEXT = __indirect_glFogCoorddvEXT;
+    glAPI->FogCoordPointerEXT = __indirect_glFogCoordPointerEXT;
+
+    /* 173. GL_EXT_blend_func_separate */
+
+    glAPI->BlendFuncSeparateEXT = __indirect_glBlendFuncSeparateEXT;
+
+    /* 197. GL_MESA_window_pos */
 
     glAPI->WindowPos2dMESA = __indirect_glWindowPos2dMESA;
     glAPI->WindowPos2dvMESA = __indirect_glWindowPos2dvMESA;
@@ -551,50 +669,29 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->WindowPos3sMESA = __indirect_glWindowPos3sMESA;
     glAPI->WindowPos3svMESA = __indirect_glWindowPos3svMESA;
 
-    /* GL_EXT_blend_func_separate */
-
-    glAPI->BlendFuncSeparateEXT = __indirect_glBlendFuncSeparateEXT;
-
-    /* GL_EXT_fog_coord */
-
-    glAPI->FogCoordfEXT = __indirect_glFogCoordfEXT;
-    glAPI->FogCoordfvEXT = __indirect_glFogCoordfvEXT;
-    glAPI->FogCoorddEXT = __indirect_glFogCoorddEXT;
-    glAPI->FogCoorddvEXT = __indirect_glFogCoorddvEXT;
-    glAPI->FogCoordPointerEXT = __indirect_glFogCoordPointerEXT;
-
-    /* GL_ARB_texture_compression */
-
-    glAPI->CompressedTexImage3DARB = __indirect_glCompressedTexImage3DARB;
-    glAPI->CompressedTexImage2DARB = __indirect_glCompressedTexImage2DARB;
-    glAPI->CompressedTexImage1DARB = __indirect_glCompressedTexImage1DARB;
-    glAPI->CompressedTexSubImage3DARB = __indirect_glCompressedTexSubImage3DARB;
-    glAPI->CompressedTexSubImage2DARB = __indirect_glCompressedTexSubImage2DARB;
-    glAPI->CompressedTexSubImage1DARB = __indirect_glCompressedTexSubImage1DARB;
-    glAPI->GetCompressedTexImageARB = __indirect_glGetCompressedTexImageARB;
-
-    /* GL_EXT_secondary_color */
-
-    glAPI->SecondaryColor3bEXT = __indirect_glSecondaryColor3bEXT;
-    glAPI->SecondaryColor3bvEXT = __indirect_glSecondaryColor3bvEXT;
-    glAPI->SecondaryColor3dEXT = __indirect_glSecondaryColor3dEXT;
-    glAPI->SecondaryColor3dvEXT = __indirect_glSecondaryColor3dvEXT;
-    glAPI->SecondaryColor3fEXT = __indirect_glSecondaryColor3fEXT;
-    glAPI->SecondaryColor3fvEXT = __indirect_glSecondaryColor3fvEXT;
-    glAPI->SecondaryColor3iEXT = __indirect_glSecondaryColor3iEXT;
-    glAPI->SecondaryColor3ivEXT = __indirect_glSecondaryColor3ivEXT;
-    glAPI->SecondaryColor3sEXT = __indirect_glSecondaryColor3sEXT;
-    glAPI->SecondaryColor3svEXT = __indirect_glSecondaryColor3svEXT;
-    glAPI->SecondaryColor3ubEXT = __indirect_glSecondaryColor3ubEXT;
-    glAPI->SecondaryColor3ubvEXT = __indirect_glSecondaryColor3ubvEXT;
-    glAPI->SecondaryColor3uiEXT = __indirect_glSecondaryColor3uiEXT;
-    glAPI->SecondaryColor3uivEXT = __indirect_glSecondaryColor3uivEXT;
-    glAPI->SecondaryColor3usEXT = __indirect_glSecondaryColor3usEXT;
-    glAPI->SecondaryColor3usvEXT = __indirect_glSecondaryColor3usvEXT;
-    glAPI->SecondaryColorPointerEXT = __indirect_glSecondaryColorPointerEXT;
-
-    /* GL_NV_vertex_program */
+    /* 233. GL_NV_vertex_program */
 
+    glAPI->VertexAttribs4svNV = __indirect_glVertexAttribs4svNV;
+    glAPI->VertexAttribs4ubvNV = __indirect_glVertexAttribs4ubvNV;
+    glAPI->VertexAttrib3fNV = __indirect_glVertexAttrib3fNV;
+    glAPI->VertexAttrib3fvNV = __indirect_glVertexAttrib3fvNV;
+    glAPI->VertexAttrib3sNV = __indirect_glVertexAttrib3sNV;
+    glAPI->VertexAttrib3svNV = __indirect_glVertexAttrib3svNV;
+    glAPI->VertexAttrib4dNV = __indirect_glVertexAttrib4dNV;
+    glAPI->VertexAttrib3dvNV = __indirect_glVertexAttrib3dvNV;
+    glAPI->VertexAttrib4fNV = __indirect_glVertexAttrib4fNV;
+    glAPI->VertexAttrib4fvNV = __indirect_glVertexAttrib4fvNV;
+    glAPI->VertexAttrib4sNV = __indirect_glVertexAttrib4sNV;
+    glAPI->VertexAttrib4svNV = __indirect_glVertexAttrib4svNV;
+    glAPI->VertexAttrib4ubNV = __indirect_glVertexAttrib4ubNV;
+    glAPI->VertexAttrib4ubvNV = __indirect_glVertexAttrib4ubvNV;
+    glAPI->VertexAttrib1fvNV = __indirect_glVertexAttrib1fvNV;
+    glAPI->VertexAttrib3dNV = __indirect_glVertexAttrib3dNV;
+    glAPI->VertexAttrib4dvNV = __indirect_glVertexAttrib4dvNV;
+    glAPI->VertexAttrib1sNV = __indirect_glVertexAttrib1sNV;
+    glAPI->VertexAttrib1fNV = __indirect_glVertexAttrib1fNV;
+    glAPI->VertexAttrib1svNV = __indirect_glVertexAttrib1svNV;
+    glAPI->VertexAttrib1dvNV = __indirect_glVertexAttrib1dvNV;
     glAPI->AreProgramsResidentNV = __indirect_glAreProgramsResidentNV;
     glAPI->BindProgramNV = __indirect_glBindProgramNV;
     glAPI->DeleteProgramsNV = __indirect_glDeleteProgramsNV;
@@ -605,15 +702,6 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->GetProgramivNV = __indirect_glGetProgramivNV;
     glAPI->GetProgramStringNV = __indirect_glGetProgramStringNV;
     glAPI->GetTrackMatrixivNV = __indirect_glGetTrackMatrixivNV;
-
-    /* GL_ARB_vertex_program */
-
-    glAPI->GetVertexAttribdvARB = __indirect_glGetVertexAttribdvARB;
-    glAPI->GetVertexAttribfvARB = __indirect_glGetVertexAttribfvARB;
-    glAPI->GetVertexAttribivARB = __indirect_glGetVertexAttribivARB;
-
-    /* GL_NV_vertex_program */
-
     glAPI->GetVertexAttribPointervNV = __indirect_glGetVertexAttribPointervNV;
     glAPI->IsProgramNV = __indirect_glIsProgramNV;
     glAPI->LoadProgramNV = __indirect_glLoadProgramNV;
@@ -626,38 +714,16 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->RequestResidentProgramsNV = __indirect_glRequestResidentProgramsNV;
     glAPI->TrackMatrixNV = __indirect_glTrackMatrixNV;
     glAPI->VertexAttribPointerNV = __indirect_glVertexAttribPointerNV;
-
-    /* GL_ARB_vertex_program */
-
-    glAPI->VertexAttrib1dARB = __indirect_glVertexAttrib1dARB;
-    glAPI->VertexAttrib1dvARB = __indirect_glVertexAttrib1dvARB;
-    glAPI->VertexAttrib1fARB = __indirect_glVertexAttrib1fARB;
-    glAPI->VertexAttrib1fvARB = __indirect_glVertexAttrib1fvARB;
-    glAPI->VertexAttrib1sARB = __indirect_glVertexAttrib1sARB;
-    glAPI->VertexAttrib1svARB = __indirect_glVertexAttrib1svARB;
-    glAPI->VertexAttrib2dARB = __indirect_glVertexAttrib2dARB;
-    glAPI->VertexAttrib2dvARB = __indirect_glVertexAttrib2dvARB;
-    glAPI->VertexAttrib2fARB = __indirect_glVertexAttrib2fARB;
-    glAPI->VertexAttrib2fvARB = __indirect_glVertexAttrib2fvARB;
-    glAPI->VertexAttrib2sARB = __indirect_glVertexAttrib2sARB;
-    glAPI->VertexAttrib2svARB = __indirect_glVertexAttrib2svARB;
-    glAPI->VertexAttrib3dARB = __indirect_glVertexAttrib3dARB;
-    glAPI->VertexAttrib3dvARB = __indirect_glVertexAttrib3dvARB;
-    glAPI->VertexAttrib3fARB = __indirect_glVertexAttrib3fARB;
-    glAPI->VertexAttrib3fvARB = __indirect_glVertexAttrib3fvARB;
-    glAPI->VertexAttrib3sARB = __indirect_glVertexAttrib3sARB;
-    glAPI->VertexAttrib3svARB = __indirect_glVertexAttrib3svARB;
-    glAPI->VertexAttrib4dARB = __indirect_glVertexAttrib4dARB;
-    glAPI->VertexAttrib4dvARB = __indirect_glVertexAttrib4dvARB;
-    glAPI->VertexAttrib4fARB = __indirect_glVertexAttrib4fARB;
-    glAPI->VertexAttrib4fvARB = __indirect_glVertexAttrib4fvARB;
-    glAPI->VertexAttrib4sARB = __indirect_glVertexAttrib4sARB;
-    glAPI->VertexAttrib4svARB = __indirect_glVertexAttrib4svARB;
-    glAPI->VertexAttrib4NubARB = __indirect_glVertexAttrib4NubARB;
-    glAPI->VertexAttrib4NubvARB = __indirect_glVertexAttrib4NubvARB;
-
-    /* GL_NV_vertex_program */
-
+    glAPI->VertexAttrib2dNV = __indirect_glVertexAttrib2dNV;
+    glAPI->VertexAttrib2sNV = __indirect_glVertexAttrib2sNV;
+    glAPI->VertexAttrib2dvNV = __indirect_glVertexAttrib2dvNV;
+    glAPI->VertexAttrib2fNV = __indirect_glVertexAttrib2fNV;
+    glAPI->VertexAttrib2svNV = __indirect_glVertexAttrib2svNV;
+    glAPI->VertexAttrib2fvNV = __indirect_glVertexAttrib2fvNV;
+    glAPI->GetVertexAttribdvNV = __indirect_glGetVertexAttribdvNV;
+    glAPI->GetVertexAttribfvNV = __indirect_glGetVertexAttribfvNV;
+    glAPI->GetVertexAttribivNV = __indirect_glGetVertexAttribivNV;
+    glAPI->VertexAttrib1dNV = __indirect_glVertexAttrib1dNV;
     glAPI->VertexAttribs1dvNV = __indirect_glVertexAttribs1dvNV;
     glAPI->VertexAttribs1fvNV = __indirect_glVertexAttribs1fvNV;
     glAPI->VertexAttribs1svNV = __indirect_glVertexAttribs1svNV;
@@ -669,55 +735,17 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->VertexAttribs3svNV = __indirect_glVertexAttribs3svNV;
     glAPI->VertexAttribs4dvNV = __indirect_glVertexAttribs4dvNV;
     glAPI->VertexAttribs4fvNV = __indirect_glVertexAttribs4fvNV;
-    glAPI->VertexAttribs4svNV = __indirect_glVertexAttribs4svNV;
-    glAPI->VertexAttribs4ubvNV = __indirect_glVertexAttribs4ubvNV;
 
-    /* GL_NV_point_sprite */
+    /* 262. GL_NV_point_sprite */
 
     glAPI->PointParameteriNV = __indirect_glPointParameteriNV;
     glAPI->PointParameterivNV = __indirect_glPointParameterivNV;
 
-    /* GL_EXT_multi_draw_arrays */
-
-    glAPI->MultiDrawArraysEXT = __indirect_glMultiDrawArraysEXT;
-    glAPI->MultiDrawElementsEXT = __indirect_glMultiDrawElementsEXT;
-
-    /* GL_EXT_stencil_two_side */
+    /* 268. GL_EXT_stencil_two_side */
 
     glAPI->ActiveStencilFaceEXT = __indirect_glActiveStencilFaceEXT;
 
-    /* GL_ARB_vertex_program */
-
-    glAPI->VertexAttrib4bvARB = __indirect_glVertexAttrib4bvARB;
-    glAPI->VertexAttrib4ivARB = __indirect_glVertexAttrib4ivARB;
-    glAPI->VertexAttrib4ubvARB = __indirect_glVertexAttrib4ubvARB;
-    glAPI->VertexAttrib4usvARB = __indirect_glVertexAttrib4usvARB;
-    glAPI->VertexAttrib4uivARB = __indirect_glVertexAttrib4uivARB;
-    glAPI->VertexAttrib4NbvARB = __indirect_glVertexAttrib4NbvARB;
-    glAPI->VertexAttrib4NsvARB = __indirect_glVertexAttrib4NsvARB;
-    glAPI->VertexAttrib4NivARB = __indirect_glVertexAttrib4NivARB;
-    glAPI->VertexAttrib4NusvARB = __indirect_glVertexAttrib4NusvARB;
-    glAPI->VertexAttrib4NuivARB = __indirect_glVertexAttrib4NuivARB;
-    glAPI->VertexAttribPointerARB = __indirect_glVertexAttribPointerARB;
-    glAPI->EnableVertexAttribArrayARB = __indirect_glEnableVertexAttribArrayARB;
-    glAPI->DisableVertexAttribArrayARB = __indirect_glDisableVertexAttribArrayARB;
-    glAPI->ProgramStringARB = __indirect_glProgramStringARB;
-    glAPI->ProgramEnvParameter4dARB = __indirect_glProgramEnvParameter4dARB;
-    glAPI->ProgramEnvParameter4dvARB = __indirect_glProgramEnvParameter4dvARB;
-    glAPI->ProgramEnvParameter4fARB = __indirect_glProgramEnvParameter4fARB;
-    glAPI->ProgramEnvParameter4fvARB = __indirect_glProgramEnvParameter4fvARB;
-    glAPI->ProgramLocalParameter4dARB = __indirect_glProgramLocalParameter4dARB;
-    glAPI->ProgramLocalParameter4dvARB = __indirect_glProgramLocalParameter4dvARB;
-    glAPI->ProgramLocalParameter4fARB = __indirect_glProgramLocalParameter4fARB;
-    glAPI->ProgramLocalParameter4fvARB = __indirect_glProgramLocalParameter4fvARB;
-    glAPI->GetProgramEnvParameterdvARB = __indirect_glGetProgramEnvParameterdvARB;
-    glAPI->GetProgramEnvParameterfvARB = __indirect_glGetProgramEnvParameterfvARB;
-    glAPI->GetProgramLocalParameterdvARB = __indirect_glGetProgramLocalParameterdvARB;
-    glAPI->GetProgramLocalParameterfvARB = __indirect_glGetProgramLocalParameterfvARB;
-    glAPI->GetProgramivARB = __indirect_glGetProgramivARB;
-    glAPI->GetProgramStringARB = __indirect_glGetProgramStringARB;
-
-    /* GL_NV_fragment_program */
+    /* 282. GL_NV_fragment_program */
 
     glAPI->ProgramNamedParameter4fNV = __indirect_glProgramNamedParameter4fNV;
     glAPI->ProgramNamedParameter4dNV = __indirect_glProgramNamedParameter4dNV;
@@ -726,48 +754,25 @@ __GLapi * __glXNewIndirectAPI( void )
     glAPI->GetProgramNamedParameterfvNV = __indirect_glGetProgramNamedParameterfvNV;
     glAPI->GetProgramNamedParameterdvNV = __indirect_glGetProgramNamedParameterdvNV;
 
-    /* GL_ARB_occlusion_query */
-
-    glAPI->GenQueriesARB = __indirect_glGenQueriesARB;
-    glAPI->DeleteQueriesARB = __indirect_glDeleteQueriesARB;
-    glAPI->IsQueryARB = __indirect_glIsQueryARB;
-    glAPI->BeginQueryARB = __indirect_glBeginQueryARB;
-    glAPI->EndQueryARB = __indirect_glEndQueryARB;
-    glAPI->GetQueryivARB = __indirect_glGetQueryivARB;
-    glAPI->GetQueryObjectivARB = __indirect_glGetQueryObjectivARB;
-    glAPI->GetQueryObjectuivARB = __indirect_glGetQueryObjectuivARB;
-
-    /* GL_NV_vertex_program */
-
-    glAPI->GetVertexAttribdvNV = __indirect_glGetVertexAttribdvNV;
-    glAPI->GetVertexAttribfvNV = __indirect_glGetVertexAttribfvNV;
-    glAPI->GetVertexAttribivNV = __indirect_glGetVertexAttribivNV;
-    glAPI->VertexAttrib1dNV = __indirect_glVertexAttrib1dNV;
-    glAPI->VertexAttrib1dvNV = __indirect_glVertexAttrib1dvNV;
-    glAPI->VertexAttrib1fNV = __indirect_glVertexAttrib1fNV;
-    glAPI->VertexAttrib1fvNV = __indirect_glVertexAttrib1fvNV;
-    glAPI->VertexAttrib1sNV = __indirect_glVertexAttrib1sNV;
-    glAPI->VertexAttrib1svNV = __indirect_glVertexAttrib1svNV;
-    glAPI->VertexAttrib2dNV = __indirect_glVertexAttrib2dNV;
-    glAPI->VertexAttrib2dvNV = __indirect_glVertexAttrib2dvNV;
-    glAPI->VertexAttrib2fNV = __indirect_glVertexAttrib2fNV;
-    glAPI->VertexAttrib2fvNV = __indirect_glVertexAttrib2fvNV;
-    glAPI->VertexAttrib2sNV = __indirect_glVertexAttrib2sNV;
-    glAPI->VertexAttrib2svNV = __indirect_glVertexAttrib2svNV;
-    glAPI->VertexAttrib3dNV = __indirect_glVertexAttrib3dNV;
-    glAPI->VertexAttrib3dvNV = __indirect_glVertexAttrib3dvNV;
-    glAPI->VertexAttrib3fNV = __indirect_glVertexAttrib3fNV;
-    glAPI->VertexAttrib3fvNV = __indirect_glVertexAttrib3fvNV;
-    glAPI->VertexAttrib3sNV = __indirect_glVertexAttrib3sNV;
-    glAPI->VertexAttrib3svNV = __indirect_glVertexAttrib3svNV;
-    glAPI->VertexAttrib4dNV = __indirect_glVertexAttrib4dNV;
-    glAPI->VertexAttrib4dvNV = __indirect_glVertexAttrib4dvNV;
-    glAPI->VertexAttrib4fNV = __indirect_glVertexAttrib4fNV;
-    glAPI->VertexAttrib4fvNV = __indirect_glVertexAttrib4fvNV;
-    glAPI->VertexAttrib4sNV = __indirect_glVertexAttrib4sNV;
-    glAPI->VertexAttrib4svNV = __indirect_glVertexAttrib4svNV;
-    glAPI->VertexAttrib4ubNV = __indirect_glVertexAttrib4ubNV;
-    glAPI->VertexAttrib4ubvNV = __indirect_glVertexAttrib4ubvNV;
+    /* 310. GL_EXT_framebuffer_object */
+
+    glAPI->RenderbufferStorageEXT = __indirect_glRenderbufferStorageEXT;
+    glAPI->GetRenderbufferParameterivEXT = __indirect_glGetRenderbufferParameterivEXT;
+    glAPI->IsFramebufferEXT = __indirect_glIsFramebufferEXT;
+    glAPI->BindFramebufferEXT = __indirect_glBindFramebufferEXT;
+    glAPI->DeleteFramebuffersEXT = __indirect_glDeleteFramebuffersEXT;
+    glAPI->GenFramebuffersEXT = __indirect_glGenFramebuffersEXT;
+    glAPI->CheckFramebufferStatusEXT = __indirect_glCheckFramebufferStatusEXT;
+    glAPI->FramebufferTexture1DEXT = __indirect_glFramebufferTexture1DEXT;
+    glAPI->FramebufferTexture2DEXT = __indirect_glFramebufferTexture2DEXT;
+    glAPI->FramebufferTexture3DEXT = __indirect_glFramebufferTexture3DEXT;
+    glAPI->FramebufferRenderbufferEXT = __indirect_glFramebufferRenderbufferEXT;
+    glAPI->GetFramebufferAttachmentParameterivEXT = __indirect_glGetFramebufferAttachmentParameterivEXT;
+    glAPI->GenerateMipmapEXT = __indirect_glGenerateMipmapEXT;
+    glAPI->IsRenderbufferEXT = __indirect_glIsRenderbufferEXT;
+    glAPI->BindRenderbufferEXT = __indirect_glBindRenderbufferEXT;
+    glAPI->DeleteRenderbuffersEXT = __indirect_glDeleteRenderbuffersEXT;
+    glAPI->GenRenderbuffersEXT = __indirect_glGenRenderbuffersEXT;
 
     return glAPI;
 }
index ae6939bc12eaf56d59b230d3bb23dbf2a69d5474..22c0ac355dcbb12ae73fc045c597902d7e0d5046 100644 (file)
@@ -334,22 +334,18 @@ __glPointParameterfvEXT_size( GLenum e )
     switch( e ) {
         case GL_POINT_SIZE_MIN:
 /*      case GL_POINT_SIZE_MIN_ARB:*/
-/*      case GL_POINT_SIZE_MIN_EXT:*/
 /*      case GL_POINT_SIZE_MIN_SGIS:*/
         case GL_POINT_SIZE_MAX:
 /*      case GL_POINT_SIZE_MAX_ARB:*/
-/*      case GL_POINT_SIZE_MAX_EXT:*/
 /*      case GL_POINT_SIZE_MAX_SGIS:*/
         case GL_POINT_FADE_THRESHOLD_SIZE:
 /*      case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
-/*      case GL_POINT_FADE_THRESHOLD_SIZE_EXT:*/
 /*      case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
         case GL_POINT_SPRITE_R_MODE_NV:
         case GL_POINT_SPRITE_COORD_ORIGIN:
             return 1;
         case GL_POINT_DISTANCE_ATTENUATION:
 /*      case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
-/*      case GL_POINT_DISTANCE_ATTENUATION_EXT:*/
 /*      case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
             return 3;
         default: return 0;
@@ -369,3 +365,8 @@ ALIAS( Map2f, Map2d )
 ALIAS( ColorTableParameteriv, ColorTableParameterfv )
 ALIAS( ConvolutionParameteriv, ConvolutionParameterfv )
 ALIAS( PointParameterivNV, PointParameterfvEXT )
+
+#  undef HAVE_ALIAS
+#  undef PURE
+#  undef FASTCALL
+#  undef INTERNAL
index 96fdacb3430eac711ca941133e4766fb78e9d01f..d2998d893edb0300770d3222efda4dc98c874ad8 100644 (file)
@@ -13,26 +13,14 @@ OUTPUTS = glprocs.h glapitemp.h glapioffsets.h glapitable.h \
        ../../glx/x11/indirect_size.h \
        ../../glx/x11/indirect_size.c
 
-COMMON = gl_XML.pyo license.pyo gl_API.xml
-COMMON_GLX = $(COMMON) glX_XML.pyo
+COMMON = gl_XML.py license.py gl_API.xml typeexpr.py
+COMMON_GLX = $(COMMON) glX_XML.py glX_proto_common.py
 
 PYTHON2 = python
 PYTHON_FLAGS = -t -O -O
 
 all: $(OUTPUTS)
 
-gl_XML.pyo: gl_XML.py
-       rm -f gl_XML.pyo > /dev/null
-       $(PYTHON2) $(PYTHON_FLAGS) gl_XML.py
-
-glX_XML.pyo: glX_XML.py $(COMMON)
-       rm -f glX_XML.pyo > /dev/null
-       $(PYTHON2) $(PYTHON_FLAGS) glX_XML.py
-
-license.pyo: license.py
-       rm -f license.pyo > /dev/null
-       $(PYTHON2) $(PYTHON_FLAGS) license.py
-
 glprocs.h: $(COMMON) gl_procs.py
        $(PYTHON2) $(PYTHON_FLAGS) gl_procs.py > glprocs.h
 
index 53f89b31bd5ff94a2fcb092fb88ce09a1a7d9e79..e0f07e576e4de7dc18fb0222db34f23b1300324c 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
 # (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
@@ -30,437 +30,319 @@ import license
 import sys, getopt, string
 
 
-class glXItemFactory(gl_XML.glItemFactory):
-       """Factory to create GLX protocol oriented objects derived from glItem."""
+class glx_item_factory(gl_XML.gl_item_factory):
+       """Factory to create GLX protocol oriented objects derived from gl_item."""
     
-       def create(self, context, name, attrs):
+       def create_item(self, name, element, context):
                if name == "function":
-                       return glXFunction(context, name, attrs)
+                       return glx_function(element, context)
                elif name == "enum":
-                       return glXEnum(context, name, attrs)
-               elif name == "param":
-                       return glXParameter(context, name, attrs)
+                       return glx_enum(element, context)
+               elif name == "api":
+                       return glx_api(self)
                else:
-                       return gl_XML.glItemFactory.create(self, context, name, attrs)
+                       return gl_XML.gl_item_factory.create_item(self, name, element, context)
 
-class glXEnumFunction:
-       def __init__(self, name, context):
-               self.name = name
-               self.context = context
-               self.mode = 0
-               self.sig = None
 
-               # "enums" is a set of lists.  The element in the set is the
-               # value of the enum.  The list is the list of names for that
-               # value.  For example, [0x8126] = {"POINT_SIZE_MIN",
-               # "POINT_SIZE_MIN_ARB", "POINT_SIZE_MIN_EXT",
-               # "POINT_SIZE_MIN_SGIS"}.
-
-               self.enums = {}
-
-               # "count" is indexed by count values.  Each element of count
-               # is a list of index to "enums" that have that number of
-               # associated data elements.  For example, [4] = 
-               # {GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION,
-               # GL_AMBIENT_AND_DIFFUSE} (the enum names are used here,
-               # but the actual hexadecimal values would be in the array).
-
-               self.count = {}
-
-
-       def append(self, count, value, name):
-               if self.enums.has_key( value ):
-                       self.enums[value].append(name)
-               else:
-                       if not self.count.has_key(count):
-                               self.count[count] = []
-
-                       self.enums[value] = []
-                       self.enums[value].append(name)
-                       self.count[count].append(value)
-
-
-       def signature( self ):
-               if self.sig == None:
-                       self.sig = ""
-                       for i in self.count:
-                               self.count[i].sort()
-                               for e in self.count[i]:
-                                       self.sig += "%04x,%u," % (e, i)
-       
-               return self.sig
-
-
-       def set_mode( self, mode ):
-               """Mark an enum-function as a 'set' function."""
-
-               self.mode = mode
-
-
-       def is_set( self ):
-               return self.mode
-
-
-       def PrintUsingTable(self):
-               """Emit the body of the __gl*_size function using a pair
-               of look-up tables and a mask.  The mask is calculated such
-               that (e & mask) is unique for all the valid values of e for
-               this function.  The result of (e & mask) is used as an index
-               into the first look-up table.  If it matches e, then the
-               same entry of the second table is returned.  Otherwise zero
-               is returned.
+class glx_enum(gl_XML.gl_enum):
+       def __init__(self, element, context):
+               gl_XML.gl_enum.__init__(self, element, context)
                
-               It seems like this should cause better code to be generated.
-               However, on x86 at least, the resulting .o file is about 20%
-               larger then the switch-statment version.  I am leaving this
-               code in because the results may be different on other
-               platforms (e.g., PowerPC or x86-64)."""
-
-               return 0
-               count = 0
-               for a in self.enums:
-                       count += 1
-
-               if self.count.has_key(-1):
-                       return 0
-
-               # Determine if there is some mask M, such that M = (2^N) - 1,
-               # that will generate unique values for all of the enums.
+               self.functions = {}
+
+               child = element.children
+               while child:
+                       if child.type == "element" and child.name == "size":
+                               n = child.nsProp( "name", None )
+                               c = child.nsProp( "count", None )
+                               m = child.nsProp( "mode", None )
+                               
+                               if not c:
+                                       c = self.default_count
+
+                               if m == "get":
+                                       mode = 0
+                               else:
+                                       mode = 1
 
-               mask = 0
-               for i in [1, 2, 3, 4, 5, 6, 7, 8]:
-                       mask = (1 << i) - 1
+                               if not self.functions.has_key(n):
+                                       self.functions[ n ] = [c, mode]
 
-                       fail = 0;
-                       for a in self.enums:
-                               for b in self.enums:
-                                       if a != b:
-                                               if (a & mask) == (b & mask):
-                                                       fail = 1;
+                       child = child.next
 
-                       if not fail:
-                               break;
-                       else:
-                               mask = 0
+               return
 
-               if (mask != 0) and (mask < (2 * count)):
-                       masked_enums = {}
-                       masked_count = {}
 
-                       for i in range(0, mask + 1):
-                               masked_enums[i] = "0";
-                               masked_count[i] = 0;
+class glx_function(gl_XML.gl_function):
+       def __init__(self, element, context):
+               self.glx_rop = 0
+               self.glx_sop = 0
+               self.glx_vendorpriv = 0
 
-                       for c in self.count:
-                               for e in self.count[c]:
-                                       i = e & mask
-                                       masked_enums[i] = '0x%04x /* %s */' % (e, self.enums[e][0])
-                                       masked_count[i] = c
+               # If this is set to true, it means that GLdouble parameters should be
+               # written to the GLX protocol packet in the order they appear in the
+               # prototype.  This is different from the "classic" ordering.  In the
+               # classic ordering GLdoubles are written to the protocol packet first,
+               # followed by non-doubles.  NV_vertex_program was the first extension
+               # to break with this tradition.
 
+               self.glx_doubles_in_order = 0
 
-                       print '    static const GLushort a[%u] = {' % (mask + 1)
-                       for e in masked_enums:
-                               print '        %s, ' % (masked_enums[e])
-                       print '    };'
+               self.vectorequiv = None
+               self.output = None
+               self.can_be_large = 0
+               self.reply_always_array = 0
+               self.dimensions_in_reply = 0
+               self.img_reset = None
 
-                       print '    static const GLubyte b[%u] = {' % (mask + 1)
-                       for c in masked_count:
-                               print '        %u, ' % (masked_count[c])
-                       print '    };'
+               self.server_handcode = 0
+               self.client_handcode = 0
+               self.ignore = 0
 
-                       print '    const unsigned idx = (e & 0x%02xU);' % (mask)
-                       print ''
-                       print '    return (e == a[idx]) ? (GLint) b[idx] : 0;'
-                       return 1;
-               else:
-                       return 0;
+               self.count_parameter_list = []
+               self.counter_list = []
+               self.parameters_by_name = {}
+               self.offsets_calculated = 0
 
-       def PrintUsingSwitch(self, name):
-               """Emit the body of the __gl*_size function using a 
-               switch-statement."""
+               gl_XML.gl_function.__init__(self, element, context)
+               return
 
-               print '    switch( e ) {'
 
-               for c in self.count:
-                       for e in self.count[c]:
-                               first = 1
+       def process_element(self, element):
+               gl_XML.gl_function.process_element(self, element)
 
-                               # There may be multiple enums with the same
-                               # value.  This happens has extensions are
-                               # promoted from vendor-specific or EXT to
-                               # ARB and to the core.  Emit the first one as
-                               # a case label, and emit the others as
-                               # commented-out case labels.
+               self.vectorequiv = element.nsProp( "vectorequiv", None )
 
-                               for j in self.enums[e]:
-                                       if first:
-                                               print '        case %s:' % (j)
-                                               first = 0
-                                       else:
-                                               print '/*      case %s:*/' % (j)
-                                       
-                       if c == -1:
-                               print '            return __gl%s_variable_size( e );' % (name)
-                       else:
-                               print '            return %u;' % (c)
-                                       
-               print '        default: return 0;'
-               print '    }'
 
+               if element.nsProp( "name", None ) == self.name:
+                       for param in self.parameters:
+                               self.parameters_by_name[ param.name ] = param
+                               
+                               if len(param.count_parameter_list):
+                                       self.count_parameter_list.extend( param.count_parameter_list )
+                               
+                               if param.counter and param.counter not in self.counter_list:
+                                       self.counter_list.append(param.counter)
 
-       def Print(self, name):
-               print 'INTERNAL PURE FASTCALL GLint'
-               print '__gl%s_size( GLenum e )' % (name)
-               print '{'
 
-               if not self.PrintUsingTable():
-                       self.PrintUsingSwitch(name)
+               child = element.children
+               while child:
+                       if child.type == "element":
+                               if child.name == "glx":
+                                       rop = child.nsProp( 'rop', None )
+                                       sop = child.nsProp( 'sop', None )
+                                       vop = child.nsProp( 'vendorpriv', None )
 
-               print '}'
-               print ''
+                                       if rop:
+                                               self.glx_rop = int(rop)
+                                       else:
+                                               self.glx_rop = 0
 
+                                       if sop:
+                                               self.glx_sop = int(sop)
+                                       else:
+                                               self.glx_sop = 0
 
+                                       if vop:
+                                               self.glx_vendorpriv = int(vop)
+                                       else:
+                                               self.glx_vendorpriv = 0
+
+                                       self.img_reset = child.nsProp( 'img_reset', None )
+
+                                       # The 'handcode' attribute can be one of 'true',
+                                       # 'false', 'client', or 'server'.
+
+                                       handcode = child.nsProp( 'handcode', None )
+                                       if handcode == "false":
+                                               self.server_handcode = 0
+                                               self.client_handcode = 0
+                                       elif handcode == "true":
+                                               self.server_handcode = 1
+                                               self.client_handcode = 1
+                                       elif handcode == "client":
+                                               self.server_handcode = 0
+                                               self.client_handcode = 1
+                                       elif handcode == "server":
+                                               self.server_handcode = 1
+                                               self.client_handcode = 0
+                                       else:
+                                               raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name))
 
-class glXEnum(gl_XML.glEnum):
-       def __init__(self, context, name, attrs):
-               gl_XML.glEnum.__init__(self, context, name, attrs)
+                                       self.ignore               = gl_XML.is_attr_true( child, 'ignore' )
+                                       self.can_be_large         = gl_XML.is_attr_true( child, 'large' )
+                                       self.glx_doubles_in_order = gl_XML.is_attr_true( child, 'doubles_in_order' )
+                                       self.reply_always_array   = gl_XML.is_attr_true( child, 'always_array' )
+                                       self.dimensions_in_reply  = gl_XML.is_attr_true( child, 'dimensions_in_reply' )
 
+                       child = child.next
 
-       def startElementNS(self, name, qname, attrs):
-               [uri, true_name] = name
-               if true_name == "size":
-                       [temp_n, c, mode] = self.process_attributes(attrs)
 
-                       if temp_n == "Get":
-                               names = ["GetIntegerv", "GetBooleanv", "GetFloatv", "GetDoublev" ]
-                       else:
-                               names = [ temp_n ]
+               # Do some validation of the GLX protocol information.  As
+               # new tests are discovered, they should be added here.
 
-                       for n in names:
-                               if not self.context.glx_enum_functions.has_key( n ):
-                                       f = self.context.createEnumFunction( n )
-                                       f.set_mode( mode )
-                                       self.context.glx_enum_functions[ f.name ] = f
+               for param in self.parameters:
+                       if param.is_output and self.glx_rop != 0:
+                               raise RuntimeError("Render / RenderLarge commands cannot have outputs (%s)." % (self.name))
 
-                               self.context.glx_enum_functions[ n ].append( c, self.value, self.name )
-               else:
-                       gl_XML.glEnum.startElementNS(self, name, qname, attrs)
                return
 
 
-class glXParameter(gl_XML.glParameter):
-       def __init__(self, context, name, attrs):
-               self.order = 1;
-               gl_XML.glParameter.__init__(self, context, name, attrs);
-
-
-class glXParameterIterator:
-       """Class to iterate over a list of glXParameters.
-
-       Objects of this class are returned by the parameterIterator method of
-       the glXFunction class.  They are used to iterate over the list of
-       parameters to the function."""
-
-       def __init__(self, data, skip_output, max_order):
-               self.data = data
-               self.index = 0
-               self.order = 0
-               self.skip_output = skip_output
-               self.max_order = max_order
-
-       def __iter__(self):
-               return self
-
-       def next(self):
-               if len( self.data ) == 0:
-                       raise StopIteration
-
-               while 1:
-                       if self.index == len( self.data ):
-                               if self.order == self.max_order:
-                                       raise StopIteration
-                               else:
-                                       self.order += 1
-                                       self.index = 0
-
-                       i = self.index
-                       self.index += 1
-
-                       if self.data[i].order == self.order and not (self.data[i].is_output and self.skip_output):
-                               return self.data[i]
+       def has_variable_size_request(self):
+               """Determine if the GLX request packet is variable sized.
 
+               The GLX request packet is variable sized in several common
+               situations.
+               
+               1. The function has a non-output parameter that is counted
+                  by another parameter (e.g., the 'textures' parameter of
+                  glDeleteTextures).
+                  
+               2. The function has a non-output parameter whose count is
+                  determined by another parameter that is an enum (e.g., the
+                  'params' parameter of glLightfv).
+                  
+               3. The function has a non-output parameter that is an
+                  image.
+
+               4. The function must be hand-coded on the server.
+               """
+
+               if self.glx_rop == 0:
+                       return 0
 
-class glXFunction(gl_XML.glFunction):
-       glx_rop = 0
-       glx_sop = 0
-       glx_vendorpriv = 0
+               if self.server_handcode or self.images:
+                       return 1
 
-       # If this is set to true, it means that GLdouble parameters should be
-       # written to the GLX protocol packet in the order they appear in the
-       # prototype.  This is different from the "classic" ordering.  In the
-       # classic ordering GLdoubles are written to the protocol packet first,
-       # followed by non-doubles.  NV_vertex_program was the first extension
-       # to break with this tradition.
+               for param in self.parameters:
+                       if not param.is_output:
+                               if param.counter or len(param.count_parameter_list):
+                                       return 1
 
-       glx_doubles_in_order = 0
+               return 0
 
-       vectorequiv = None
-       can_be_large = 0
 
-       def __init__(self, context, name, attrs):
-               self.vectorequiv = attrs.get((None, 'vectorequiv'), None)
-               self.counter = None
-               self.output = None
-               self.can_be_large = 0
-               self.reply_always_array = 0
-               self.dimensions_in_reply = 0
-               self.img_reset = None
+       def variable_length_parameter(self):
+               for param in self.parameters:
+                       if not param.is_output:
+                               if param.counter or len(param.count_parameter_list):
+                                       return param
+                               
+               return None
 
-               self.server_handcode = 0
-               self.client_handcode = 0
-               self.ignore = 0
 
-               gl_XML.glFunction.__init__(self, context, name, attrs)
-               return
+       def calculate_offsets(self):
+               if not self.offsets_calculated:
+                       # Calculate the offset of the first function parameter
+                       # in the GLX command packet.  This byte offset is
+                       # measured from the end of the Render / RenderLarge
+                       # header.  The offset for all non-pixel commends is
+                       # zero.  The offset for pixel commands depends on the
+                       # number of dimensions of the pixel data.
 
+                       if len(self.images) and not self.images[0].is_output:
+                               [dim, junk, junk, junk, junk] = self.images[0].get_dimensions()
 
-       def parameterIterator(self, skip_output, max_order):
-               return glXParameterIterator(self.fn_parameters, skip_output, max_order)
+                               # The base size is the size of the pixel pack info
+                               # header used by images with the specified number
+                               # of dimensions.
 
-               
-       def startElementNS(self, name, qname, attrs):
-               """Process elements within a function that are specific to GLX."""
-
-               [uri, true_name] = name
-               if true_name == "glx":
-                       self.glx_rop = int(attrs.get((None, 'rop'), "0"))
-                       self.glx_sop = int(attrs.get((None, 'sop'), "0"))
-                       self.glx_vendorpriv = int(attrs.get((None, 'vendorpriv'), "0"))
-                       self.img_reset = attrs.get((None, 'img_reset'), None)
-
-                       # The 'handcode' attribute can be one of 'true',
-                       # 'false', 'client', or 'server'.
-
-                       handcode = attrs.get((None, 'handcode'), "false")
-                       if handcode == "false":
-                               self.server_handcode = 0
-                               self.client_handcode = 0
-                       elif handcode == "true":
-                               self.server_handcode = 1
-                               self.client_handcode = 1
-                       elif handcode == "client":
-                               self.server_handcode = 0
-                               self.client_handcode = 1
-                       elif handcode == "server":
-                               self.server_handcode = 1
-                               self.client_handcode = 0
+                               if dim <=  2:
+                                       offset = 20
+                               elif dim <= 4:
+                                       offset = 36
+                               else:
+                                       raise RuntimeError('Invalid number of dimensions %u for parameter "%s" in function "%s".' % (dim, self.image.name, self.name))
                        else:
-                               raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name))
-
-                       self.ignore               = gl_XML.is_attr_true( attrs, 'ignore' )
-                       self.can_be_large         = gl_XML.is_attr_true( attrs, 'large' )
-                       self.glx_doubles_in_order = gl_XML.is_attr_true( attrs, 'doubles_in_order' )
-                       self.reply_always_array   = gl_XML.is_attr_true( attrs, 'always_array' )
-                       self.dimensions_in_reply  = gl_XML.is_attr_true( attrs, 'dimensions_in_reply' )
-               else:
-                       gl_XML.glFunction.startElementNS(self, name, qname, attrs)
-
-
-       def endElementNS(self, name, qname):
-               [uri, true_name] = name
-               if true_name == "function":
-                       # Mark any function that does not have GLX protocol
-                       # defined as "ignore".  This prevents bad things from
-                       # happening when people add new functions to the GL
-                       # API XML without adding any GLX section.
-                       #
-                       # This will also mark functions that don't have a
-                       # dispatch offset at ignored.
-
-                       if (self.fn_offset == -1 and not self.fn_alias) or not (self.client_handcode or self.server_handcode or self.glx_rop or self.glx_sop or self.glx_vendorpriv or self.vectorequiv or self.fn_alias):
-                               #if not self.ignore:
-                               #       if self.fn_offset == -1:
-                               #               print '/* %s ignored becuase no offset assigned. */' % (self.name)
-                               #       else:
-                               #               print '/* %s ignored becuase no GLX opcode assigned. */' % (self.name)
+                               offset = 0
 
-                               self.ignore = 1
+                       for param in self.parameterIterateGlxSend():
+                               if param.img_null_flag:
+                                       offset += 4
 
-               return gl_XML.glFunction.endElementNS(self, name, qname)
-
-
-       def append(self, tag_name, p):
-               gl_XML.glFunction.append(self, tag_name, p)
-
-               if p.is_variable_length_array():
-                       p.order = 2;
-               elif not self.glx_doubles_in_order and p.p_type.size == 8:
-                       p.order = 0;
+                               if param.name != self.img_reset:
+                                       param.offset = offset
+                                       if not param.is_variable_length():
+                                               offset += param.size()
+                                       
+                               if self.pad_after( param ):
+                                       offset += 4
 
-               if p.is_counter:
-                       self.counter = p.name
-                       
-               if p.is_output:
-                       self.output = p
 
+                       self.offsets_calculated = 1
                return
 
 
-       def variable_length_parameter(self):
-               if len(self.variable_length_parameters):
-                       return self.variable_length_parameters[0]
+       def offset_of(self, param_name):
+               self.calculate_offsets()
+               return self.parameters_by_name[ param_name ].offset
 
-               return None
 
+       def parameterIterateGlxSend(self, include_variable_parameters = 1):
+               """Create an iterator for parameters in GLX request order."""
 
-       def output_parameter(self):
-               for param in self.fn_parameters:
-                       if param.is_output:
-                               return param
+               # The parameter lists are usually quite short, so it's easier
+               # (i.e., less code) to just generate a new list with the
+               # required elements than it is to create a new iterator class.
+               
+               temp = [ [],  [], [] ]
+               for param in self.parameters:
+                       if param.is_output: continue
+
+                       if param.is_variable_length():
+                               temp[2].append( param )
+                       elif not self.glx_doubles_in_order and param.is_64_bit():
+                               temp[0].append( param )
+                       else:
+                               temp[1].append( param )
 
-               return None
+               parameters = temp[0]
+               parameters.extend( temp[1] )
+               if include_variable_parameters:
+                       parameters.extend( temp[2] )
+               return parameters.__iter__()
 
 
-       def offset_of_first_parameter(self):
-               """Get the offset of the first parameter in the command.
+       def parameterIterateCounters(self):
+               temp = []
+               for name in self.counter_list:
+                       temp.append( self.parameters_by_name[ name ] )
 
-               Gets the offset of the first function parameter in the GLX
-               command packet.  This byte offset is measured from the end
-               of the Render / RenderLarge header.  The offset for all non-
-               pixel commends is zero.  The offset for pixel commands depends
-               on the number of dimensions of the pixel data."""
+               return temp.__iter__()
 
-               if self.image and not self.image.is_output:
-                       [dim, junk, junk, junk, junk] = self.dimensions()
 
-                       # The base size is the size of the pixel pack info
-                       # header used by images with the specified number
-                       # of dimensions.
+       def parameterIterateOutputs(self):
+               temp = []
+               for p in self.parameters:
+                       if p.is_output:
+                               temp.append( p )
 
-                       if dim <=  2:
-                               return 20
-                       elif dim <= 4:
-                               return 36
-                       else:
-                               raise RuntimeError('Invalid number of dimensions %u for parameter "%s" in function "%s".' % (dim, self.image.name, self.name))
-               else:
-                       return 0
+               return temp
 
 
        def command_fixed_length(self):
                """Return the length, in bytes as an integer, of the
                fixed-size portion of the command."""
 
-               size = self.offset_of_first_parameter()
+               if len(self.parameters) == 0:
+                       return 0
+               
+               self.calculate_offsets()
 
-               for p in gl_XML.glFunction.parameterIterator(self):
-                       if not p.is_output and p.name != self.img_reset:
-                               size += p.size()
-                               if self.pad_after(p):
+               size = 0
+               for param in self.parameterIterateGlxSend(0):
+                       if param.name != self.img_reset:
+                               if size == 0:
+                                       size = param.offset + param.size()
+                               else:
+                                       size += param.size()
+
+                               if self.pad_after( param ):
                                        size += 4
 
-               if self.image and (self.image.img_null_flag or self.image.is_output):
-                       size += 4
+               for param in self.images:
+                       if param.img_null_flag or param.is_output:
+                               size += 4
 
                return size
 
@@ -470,9 +352,15 @@ class glXFunction(gl_XML.glFunction):
                portion of the command."""
 
                size_string = ""
-               for p in gl_XML.glFunction.parameterIterator(self):
-                       if (not p.is_output) and (p.size() == 0):
-                               size_string = size_string + " + __GLX_PAD(%s)" % (p.size_string())
+               for p in self.parameterIterateGlxSend():
+                       if (not p.is_output) and (p.is_variable_length() or p.is_image()):
+                               # FIXME Replace the 1 in the size_string call
+                               # FIXME w/0 to eliminate some un-needed parnes
+                               # FIXME This would already be done, but it
+                               # FIXME adds some extra diffs to the generated
+                               # FIXME code.
+
+                               size_string = size_string + " + __GLX_PAD(%s)" % (p.size_string(1))
 
                return size_string
 
@@ -506,9 +394,15 @@ class glXFunction(gl_XML.glFunction):
                else:
                        return self.opcode_value()
 
+
        def opcode_value(self):
                """Get the unique protocol opcode for the glXFunction"""
 
+               if (self.glx_rop == 0) and self.vectorequiv:
+                       equiv = self.context.functions_by_name[ self.vectorequiv ]
+                       self.glx_rop = equiv.glx_rop
+
+
                if self.glx_rop != 0:
                        return self.glx_rop
                elif self.glx_sop != 0:
@@ -518,6 +412,7 @@ class glXFunction(gl_XML.glFunction):
                else:
                        return -1
        
+
        def opcode_rop_basename(self):
                """Return either the name to be used for GLX protocol enum.
                
@@ -530,9 +425,16 @@ class glXFunction(gl_XML.glFunction):
                else:
                        return self.vectorequiv
 
+
        def opcode_name(self):
                """Get the unique protocol enum name for the glXFunction"""
 
+               if (self.glx_rop == 0) and self.vectorequiv:
+                       equiv = self.context.functions_by_name[ self.vectorequiv ]
+                       self.glx_rop = equiv.glx_rop
+                       self.glx_doubles_in_order = equiv.glx_doubles_in_order
+
+
                if self.glx_rop != 0:
                        return "X_GLrop_%s" % (self.opcode_rop_basename())
                elif self.glx_sop != 0:
@@ -562,154 +464,66 @@ class glXFunction(gl_XML.glFunction):
                        return self.opcode_name()
 
 
-       def return_string(self):
-               if self.fn_return_type != 'void':
-                       return "return retval;"
-               else:
-                       return "return;"
-
-
        def needs_reply(self):
-               return self.fn_return_type != 'void' or self.output != None
+               try:
+                       x = self._needs_reply
+               except Exception, e:
+                       x = 0
+                       if self.return_type != 'void':
+                               x = 1
 
+                       for param in self.parameters:
+                               if param.is_output:
+                                       x = 1
+                                       break
 
-       def dimensions(self):
-               """Determine the dimensions of an image.
-               
-               Returns a tuple representing the number of dimensions and the
-               string name of each of the dimensions of an image,  If the
-               function is not a pixel function, the number of dimensions
-               will be zero."""
-
-               if not self.image:
-                       return [0, "0", "0", "0", "0"]
-               else:
-                       dim = 1
-                       w = self.image.width
-
-                       if self.image.height:
-                               dim = 2
-                               h = self.image.height
-                       else:
-                               h = "1"
-
-                       if self.image.depth:
-                               dim = 3
-                               d = self.image.depth
-                       else:
-                               d = "1"
-                       
-                       if self.image.extent:
-                               dim = 4
-                               e = self.image.extent
-                       else:
-                               e = "1"
+                       self._needs_reply = x
 
-                       return [dim, w, h, d, e]
+               return x
 
 
        def pad_after(self, p):
                """Returns the name of the field inserted after the
                specified field to pad out the command header."""
 
-               if self.image and self.image.img_pad_dimensions:
-                       if not self.image.height:
-                               if p.name == self.image.width:
-                                       return "height"
-                               elif p.name == self.image.img_xoff:
-                                       return "yoffset"
-                       elif not self.image.extent:
-                               if p.name == self.image.depth:
-                                       # Should this be "size4d"?
-                                       return "extent"
-                               elif p.name == self.image.img_zoff:
-                                       return "woffset"
+               for image in self.images:
+                       if image.img_pad_dimensions:
+                               if not image.height:
+                                       if p.name == image.width:
+                                               return "height"
+                                       elif p.name == image.img_xoff:
+                                               return "yoffset"
+                               elif not image.extent:
+                                       if p.name == image.depth:
+                                               # Should this be "size4d"?
+                                               return "extent"
+                                       elif p.name == image.img_zoff:
+                                               return "woffset"
+
                return None
 
 
-class glXFunctionIterator(gl_XML.glFunctionIterator):
+class glx_function_iterator:
        """Class to iterate over a list of glXFunctions"""
 
        def __init__(self, context):
-               self.context = context
-               self.keys = context.functions.keys()
-               self.keys.sort()
-
-               for self.index in range(0, len(self.keys)):
-                       if self.keys[ self.index ] >= 0: break
-
+               self.iterator = context.functionIterateByOffset()
                return
 
 
-       def next(self):
-               if self.index == len(self.keys):
-                       raise StopIteration
+       def __iter__(self):
+               return self
 
-               f = self.context.functions[ self.keys[ self.index ] ]
-               self.index += 1
 
-               if f.ignore:
+       def next(self):
+               f = self.iterator.next()
+               if f.ignore or not (f.glx_rop or f.glx_sop or f.glx_vendorpriv or f.vectorequiv or f.client_handcode):
                        return self.next()
                else:
                        return f
 
 
-class GlxProto(gl_XML.FilterGLAPISpecBase):
-       name = "glX_proto_send.py (from Mesa)"
-
-       def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
-               self.factory = glXItemFactory()
-               self.glx_enum_functions = {}
-
-
-       def endElementNS(self, name, qname):
-               [uri, true_name] = name
-               if true_name == 'OpenGLAPI':
-                       # Once all the parsing is done, we have to go back and
-                       # fix-up some cross references between different
-                       # functions.
-
-                       for k in self.functions:
-                               f = self.functions[k]
-                               if f.vectorequiv != None:
-                                       equiv = self.find_function(f.vectorequiv)
-                                       if equiv != None:
-                                               f.glx_doubles_in_order = equiv.glx_doubles_in_order
-                                               f.glx_rop = equiv.glx_rop
-                                       else:
-                                               raise RuntimeError("Could not find the vector equiv. function %s for %s!" % (f.name, f.vectorequiv))
-               else:
-                       gl_XML.FilterGLAPISpecBase.endElementNS(self, name, qname)
-               return
-
-
-       def createEnumFunction(self, n):
-               return glXEnumFunction(n, self)
-
-
-       def functionIterator(self):
-               return glXFunctionIterator(self)
-
-       
-       def size_call(self, func):
-               """Create C code to calculate 'compsize'.
-
-               Creates code to calculate 'compsize'.  If the function does
-               not need 'compsize' to be calculated, None will be
-               returned."""
-
-               if not func.image and not func.count_parameter_list:
-                       return None
-
-               if not func.image:
-                       parameters = string.join( func.count_parameter_list, "," )
-                       compsize = "__gl%s_size(%s)" % (func.name, parameters)
-               else:
-                       [dim, w, h, d, junk] = func.dimensions()
-
-                       compsize = '__glImageSize(%s, %s, %s, %s, %s, %s)' % (w, h, d, func.image.img_format, func.image.img_type, func.image.img_target)
-                       if not func.image.img_send_null:
-                               compsize = '(%s != NULL) ? %s : 0' % (func.image.name, compsize)
+class glx_api(gl_XML.gl_api):
+       def functionIterateGlx(self):
+               return glx_function_iterator(self)
 
-               return compsize
index fa2d812974c2e787320daea53e5c8adcb97b4a6e..e9fbbe6f169ff9a51a9df48fc82f21dfc822d4ef 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
 # (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-import gl_XML
-import glX_XML
-import license
+import gl_XML, glX_XML, glX_proto_common, license
 import sys, getopt
 
 
-class glXDocItemFactory(glX_XML.glXItemFactory):
+class glx_doc_item_factory(glX_proto_common.glx_proto_item_factory):
        """Factory to create GLX protocol documentation oriented objects derived from glItem."""
     
-       def create(self, context, name, attrs):
-               if name == "param":
-                       return glXDocParameter(context, name, attrs)
+       def create_item(self, name, element, context):
+               if name == "parameter":
+                       return glx_doc_parameter(element, context)
                else:
-                       return glX_XML.glXItemFactory.create(self, context, name, attrs)
+                       return glX_proto_common.glx_proto_item_factory.create_item(self, name, element, context)
 
-class glXDocParameter(gl_XML.glParameter):
-       def __init__(self, context, name, attrs):
-               self.order = 1;
-               gl_XML.glParameter.__init__(self, context, name, attrs);
 
-
-       def packet_type(self):
+class glx_doc_parameter(gl_XML.gl_parameter):
+       def packet_type(self, type_dict):
                """Get the type string for the packet header
                
                GLX protocol documentation uses type names like CARD32,
@@ -57,13 +51,15 @@ class glXDocParameter(gl_XML.glParameter):
                if self.is_array():
                        list_of = "LISTof"
 
-               if self.p_type.glx_name == "":
+               t_name = self.get_base_type_string()
+               if not type_dict.has_key( t_name ):
                        type_name = "CARD8"
                else:
-                       type_name = self.p_type.glx_name
+                       type_name = type_dict[ t_name ]
 
                return "%s%s" % (list_of, type_name)
 
+
        def packet_size(self):
                p = None
                s = self.size()
@@ -89,16 +85,16 @@ class glXDocParameter(gl_XML.glParameter):
 
                        return [str(s), p]
 
-class PrintGlxProtoText(glX_XML.GlxProto):
+class PrintGlxProtoText(gl_XML.gl_print_base):
        def __init__(self):
-               glX_XML.GlxProto.__init__(self)
-               self.factory = glXDocItemFactory()
-               self.last_category = ""
+               gl_XML.gl_print_base.__init__(self)
                self.license = ""
 
+
        def printHeader(self):
                return
 
+
        def body_size(self, f):
                # At some point, refactor this function and
                # glXFunction::command_payload_length.
@@ -107,7 +103,7 @@ class PrintGlxProtoText(glX_XML.GlxProto):
                size_str = ""
                pad_str = ""
                plus = ""
-               for p in f.parameterIterator(1, 2):
+               for p in f.parameterIterateGlxSend():
                        [s, pad] = p.packet_size()
                        try: 
                                size += int(s)
@@ -120,6 +116,7 @@ class PrintGlxProtoText(glX_XML.GlxProto):
 
                return [size, size_str, pad_str]
 
+
        def print_render_header(self, f):
                [size, size_str, pad_str] = self.body_size(f)
                size += 4;
@@ -162,6 +159,7 @@ class PrintGlxProtoText(glX_XML.GlxProto):
 
                return
                
+
        def print_reply(self, f):
                print '          =>'
                print '            1        1               reply'
@@ -176,33 +174,39 @@ class PrintGlxProtoText(glX_XML.GlxProto):
                        print '            4        m               reply length, m = (n == 1 ? 0 : n)'
 
 
+               output = None
+               for x in f.parameterIterateOutputs():
+                       output = x
+                       break
+
+
                unused = 24
-               if f.fn_return_type != 'void':
-                       print '            4        %-15s return value' % (f.fn_return_type)
+               if f.return_type != 'void':
+                       print '            4        %-15s return value' % (f.return_type)
                        unused -= 4
-               elif f.output != None:
+               elif output != None:
                        print '            4                        unused'
                        unused -= 4
 
-               if f.output != None:
+               if output != None:
                        print '            4        CARD32          n'
                        unused -= 4
 
-               if f.output != None:
+               if output != None:
                        if not f.reply_always_array:
                                print ''
                                print '            if (n = 1) this follows:'
                                print ''
-                               print '            4        CARD32          %s' % (f.output.name)
+                               print '            4        CARD32          %s' % (output.name)
                                print '            %-2u                       unused' % (unused - 4)
                                print ''
                                print '            otherwise this follows:'
                                print ''
 
                        print '            %-2u                       unused' % (unused)
-                       p = f.output
-                       [s, pad] = p.packet_size()
-                       print '            %-8s %-15s %s' % (s, p.packet_type(), p.name)
+
+                       [s, pad] = output.packet_size()
+                       print '            %-8s %-15s %s' % (s, output.packet_type( self.type_map ), output.name)
                        if pad != None:
                                try:
                                        bytes = int(s)
@@ -215,9 +219,9 @@ class PrintGlxProtoText(glX_XML.GlxProto):
 
 
        def print_body(self, f):
-               for p in f.parameterIterator(1, 2):
+               for p in f.parameterIterateGlxSend():
                        [s, pad] = p.packet_size()
-                       print '            %-8s %-15s %s' % (s, p.packet_type(), p.name)
+                       print '            %-8s %-15s %s' % (s, p.packet_type( self.type_map ), p.name)
                        if pad != None:
                                try:
                                        bytes = int(s)
@@ -226,26 +230,35 @@ class PrintGlxProtoText(glX_XML.GlxProto):
                                except Exception,e:
                                        print '            %-8s %-15s unused, %s=pad(%s)' % (pad, "", pad, s)
 
-       def printFunction(self, f):
+       def printBody(self, api):
+               self.type_map = {}
+               for t in api.typeIterate():
+                       self.type_map[ "GL" + t.name ] = t.glx_name
+
+
                # At some point this should be expanded to support pixel
                # functions, but I'm not going to lose any sleep over it now.
 
-               if f.client_handcode or f.server_handcode or f.vectorequiv or f.image:
-                       return
+               for f in api.functionIterateByOffset():
+                       if f.client_handcode or f.server_handcode or f.vectorequiv or len(f.get_images()):
+                               continue
 
-               print '        %s' % (f.name)
 
-               if f.glx_rop != 0:
-                       self.print_render_header(f)
-               else:
-                       self.print_single_header(f)
-               
-               self.print_body(f)
+                       if f.glx_rop:
+                               print '        %s' % (f.name)
+                               self.print_render_header(f)
+                       elif f.glx_sop or f.glx_vendorpriv:
+                               print '        %s' % (f.name)
+                               self.print_single_header(f)
+                       else:
+                               continue
 
-               if f.needs_reply():
-                       self.print_reply(f)
+                       self.print_body(f)
 
-               print ''
+                       if f.needs_reply():
+                               self.print_reply(f)
+
+                       print ''
                return
 
 
@@ -261,5 +274,7 @@ if __name__ == '__main__':
                if arg == "-f":
                        file_name = val
 
-       dh = PrintGlxProtoText()
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name, glx_doc_item_factory() )
+
+       printer = PrintGlxProtoText()
+       printer.Print( api )
diff --git a/src/mesa/glapi/glX_proto_common.py b/src/mesa/glapi/glX_proto_common.py
new file mode 100644 (file)
index 0000000..7448963
--- /dev/null
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 2004, 2005
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# on the rights to use, copy, modify, merge, publish, distribute, sub
+# license, and/or sell copies of the Software, and to permit persons to whom
+# the Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+# Authors:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML
+import string
+
+
+class glx_proto_item_factory(glX_XML.glx_item_factory):
+       """Factory to create GLX protocol oriented objects derived from gl_item."""
+    
+       def create_item(self, name, element, context):
+               if name == "type":
+                       return glx_proto_type(element, context)
+               else:
+                       return glX_XML.glx_item_factory.create_item(self, name, element, context)
+
+
+class glx_proto_type(gl_XML.gl_type):
+       def __init__(self, element, context):
+               gl_XML.gl_type.__init__(self, element, context)
+
+               self.glx_name = element.nsProp( "glx_name", None )
+               return
+
+
+class glx_print_proto(gl_XML.gl_print_base):
+       def size_call(self, func):
+               """Create C code to calculate 'compsize'.
+
+               Creates code to calculate 'compsize'.  If the function does
+               not need 'compsize' to be calculated, None will be
+               returned."""
+       
+               compsize = None
+
+               for param in func.parameterIterator():
+                       if not param.is_output:
+                               if param.is_image():
+                                       [dim, w, h, d, junk] = param.get_dimensions()
+
+                                       compsize = '__glImageSize(%s, %s, %s, %s, %s, %s)' % (w, h, d, param.img_format, param.img_type, param.img_target)
+                                       if not param.img_send_null:
+                                               compsize = '(%s != NULL) ? %s : 0' % (param.name, compsize)
+
+                                       return compsize
+
+                               elif len(param.count_parameter_list):
+                                       parameters = string.join( param.count_parameter_list, "," )
+                                       compsize = "__gl%s_size(%s)" % (func.name, parameters)
+
+                                       return compsize
+
+               return None
+
+
+       def emit_packet_size_calculation(self, f, bias):
+               # compsize is only used in the command size calculation if
+               # the function has a non-output parameter that has a non-empty
+               # counter_parameter_list.
+
+               compsize = self.size_call(f)
+               if compsize:
+                       print '    const GLuint compsize = %s;' % (compsize)
+
+               if bias:
+                       print '    const GLuint cmdlen = %s - %u;' % (f.command_length(), bias)
+               else:
+                       print '    const GLuint cmdlen = %s;' % (f.command_length())
+
+               #print ''
+               return compsize
index 94c096e686db5c09ee97ad710d185584bed9b85b..6a4d1dfc0d45b69ca41363bc012b7bbde15cee72 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
 # (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-import gl_XML
-import glX_XML
-import license
-import sys, getopt, copy
+import gl_XML, glX_XML, glX_proto_common, license
+import sys, getopt, copy, string
 
 def hash_pixel_function(func):
        """Generate a 'unique' key for a pixel function.  The key is based on
@@ -36,26 +34,34 @@ def hash_pixel_function(func):
        padding that might be added for the original function and the 'NULL
        image' flag."""
 
-       [dim, junk, junk, junk, junk] = func.dimensions()
 
-       d = (dim + 1) & ~1
-       h = "%uD%uD_" % (d - 1, d)
+       h = ""
+       hash_pre = ""
+       hash_suf = ""
+       for param in func.parameterIterateGlxSend():
+               if param.is_image():
+                       [dim, junk, junk, junk, junk] = param.get_dimensions()
 
-       for p in func.parameterIterator(1, 1):
-               h = "%s%u" % (h, p.size())
+                       d = (dim + 1) & ~1
+                       hash_pre = "%uD%uD_" % (d - 1, d)
 
-               if func.pad_after(p):
+                       if param.img_null_flag:
+                               hash_suf = "_NF"
+
+               h += "%u" % (param.size())
+
+               if func.pad_after(param):
                        h += "4"
 
-       if func.image.img_null_flag:
-               h += "_NF"
 
        n = func.name.replace("%uD" % (dim), "")
        n = "__glx_%s_%uD%uD" % (n, d - 1, d)
+
+       h = hash_pre + h + hash_suf
        return [h, n]
 
 
-class glXPixelFunctionUtility(glX_XML.glXFunction):
+class glx_pixel_function_stub(glX_XML.glx_function):
        """Dummy class used to generate pixel "utility" functions that are
        shared by multiple dimension image functions.  For example, these
        objects are used to generate shared functions used to send GLX
@@ -68,46 +74,71 @@ class glXPixelFunctionUtility(glX_XML.glXFunction):
                # parameters.
 
                self.name = name
-               self.image = copy.copy(func.image)
-               self.fn_parameters = []
-               for p in gl_XML.glFunction.parameterIterator(func):
-                       self.fn_parameters.append(p)
+               self.images = []
+               self.parameters = []
+               self.parameters_by_name = {}
+               for _p in func.parameterIterator():
+                       p = copy.copy(_p)
+                       self.parameters.append(p)
+                       self.parameters_by_name[ p.name ] = p
+
+
+                       if p.is_image():
+                               self.images.append(p)
+                               p.height = "height"
+
+                               if p.img_yoff == None:
+                                       p.img_yoff = "yoffset"
+
+                               if p.depth:
+                                       if p.extent == None:
+                                               p.extent = "extent"
+
+                                       if p.img_woff == None:
+                                               p.img_woff = "woffset"
+
 
                        pad_name = func.pad_after(p)
                        if pad_name:
                                pad = copy.copy(p)
                                pad.name = pad_name
-                               self.fn_parameters.append(pad)
+                               self.parameters.append(pad)
+                               self.parameters_by_name[ pad.name ] = pad
                                
 
-               if self.image.height == None:
-                       self.image.height = "height"
+               self.return_type = func.return_type
 
-               if self.image.img_yoff == None:
-                       self.image.img_yoff = "yoffset"
+               self.glx_rop = ~0
+               self.glx_sop = 0
+               self.glx_vendorpriv = 0
 
-               if func.image.depth:
-                       if self.image.extent == None:
-                               self.image.extent = "extent"
+               self.glx_doubles_in_order = func.glx_doubles_in_order
 
-                       if self.image.img_woff == None:
-                               self.image.img_woff = "woffset"
+               self.vectorequiv = None
+               self.output = None
+               self.can_be_large = func.can_be_large
+               self.reply_always_array = func.reply_always_array
+               self.dimensions_in_reply = func.dimensions_in_reply
+               self.img_reset = None
 
+               self.server_handcode = 0
+               self.client_handcode = 0
+               self.ignore = 0
 
-               self.set_return_type( func.fn_return_type )
-               self.glx_rop = ~0
-               self.can_be_large = func.can_be_large
                self.count_parameter_list = func.count_parameter_list
-               self.counter = func.counter
-               self.img_reset = None
+               self.counter_list = func.counter_list
+               self.offsets_calculated = 0
                return
 
 
-class PrintGlxProtoStubs(glX_XML.GlxProto):
+class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
        def __init__(self):
-               glX_XML.GlxProto.__init__(self)
-               self.last_category = ""
+               glX_proto_common.glx_print_proto.__init__(self)
+               self.name = "glX_proto_send.py (from Mesa)"
                self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004, 2005", "IBM")
+
+
+               self.last_category = ""
                self.generic_sizes = [3, 4, 6, 8, 12, 16, 24, 32]
                self.pixel_stubs = {}
                self.debug = 0
@@ -125,7 +156,7 @@ class PrintGlxProtoStubs(glX_XML.GlxProto):
                print '#include <X11/XCB/xcb.h>'
                print '#include <X11/XCB/glx.h>'
                print '#endif /* USE_XCB */'
-               
+
                print ''
                print '#define __GLX_PAD(n) (((n) + 3) & ~3)'
                print ''
@@ -262,18 +293,76 @@ const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
                        self.print_generic_function(size)
                return
 
-       def printFunction(self, f):
-               if f.client_handcode: return
 
-               if f.glx_rop != 0 or f.vectorequiv != None:
-                       if f.image:
-                               self.printPixelFunction(f)
+       def printBody(self, api):
+
+               self.pixel_stubs = {}
+               generated_stubs = []
+
+               for func in api.functionIterateGlx():
+                       if func.client_handcode: continue
+
+                       # If the function is a pixel function with a certain
+                       # GLX protocol signature, create a fake stub function
+                       # for it.  For example, create a single stub function
+                       # that is used to implement both glTexImage1D and
+                       # glTexImage2D.
+
+                       if func.glx_rop != 0:
+                               do_it = 0
+                               for image in func.get_images():
+                                       if image.img_pad_dimensions:
+                                               do_it = 1
+                                               break
+                       
+
+                               if do_it:
+                                       [h, n] = hash_pixel_function(func)
+
+
+                                       self.pixel_stubs[ func.name ] = n
+                                       if h not in generated_stubs:
+                                               generated_stubs.append(h)
+
+                                               fake_func = glx_pixel_function_stub( func, n )
+                                               self.printFunction( fake_func )
+
+
+                       self.printFunction( func )
+
+               return
+
+
+       def printFunction(self, func):
+               if func.glx_rop == ~0:
+                       print 'static %s' % (func.return_type)
+                       print '%s( unsigned opcode, unsigned dim, %s )' % (func.name, func.get_parameter_string())
+               else:
+                       print '#define %s %d' % (func.opcode_name(), func.opcode_value())
+
+                       print '%s' % (func.return_type)
+                       print '__indirect_gl%s(%s)' % (func.name, func.get_parameter_string())
+
+
+               print '{'
+
+
+               if func.glx_rop != 0 or func.vectorequiv != None:
+                       if len(func.images):
+                               self.printPixelFunction(func)
                        else:
-                               self.printRenderFunction(f)
-               elif f.glx_sop != 0 or f.glx_vendorpriv != 0:
-                       self.printSingleFunction(f)
+                               self.printRenderFunction(func)
+               elif func.glx_sop != 0 or func.glx_vendorpriv != 0:
+                       self.printSingleFunction(func)
+                       pass
                else:
-                       print "/* Missing GLX protocol for %s. */" % (f.name)
+                       print "/* Missing GLX protocol for %s. */" % (func.name)
+
+               print '}'
+               print ''
+
+               return
+
 
        def print_generic_function(self, n):
                size = (n + 3) & ~3
@@ -289,59 +378,91 @@ generic_%u_byte( GLint rop, const void * ptr )
     if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
 }
 """ % (n, size + 4, size)
+               return
 
 
-       def common_emit_one_arg(self, p, offset, pc, indent, adjust):
-               t = p.p_type
+       def common_emit_one_arg(self, p, pc, indent, adjust, extra_offset):
                if p.is_array():
                        src_ptr = p.name
                else:
                        src_ptr = "&" + p.name
 
-               print '%s    (void) memcpy((void *)(%s + %u), (void *)(%s), %s);' \
-                       % (indent, pc, offset + adjust, src_ptr, p.size_string() )
+               if not extra_offset:
+                       print '%s    (void) memcpy((void *)(%s + %u), (void *)(%s), %s);' \
+                           % (indent, pc, p.offset + adjust, src_ptr, p.size_string() )
+               else:
+                       print '%s    (void) memcpy((void *)(%s + %u + %s), (void *)(%s), %s);' \
+                           % (indent, pc, p.offset + adjust, extra_offset, src_ptr, p.size_string() )
 
        def common_emit_args(self, f, pc, indent, adjust, skip_vla):
-               offset = 0
-
-               if skip_vla:
-                       r = 1
-               else:
-                       r = 2
+               extra_offset = None
 
-               for p in f.parameterIterator(1, r):
+               for p in f.parameterIterateGlxSend( not skip_vla ):
                        if p.name != f.img_reset:
-                               self.common_emit_one_arg(p, offset, pc, indent, adjust)
-                               offset += p.size()
+                               self.common_emit_one_arg(p, pc, indent, adjust, extra_offset)
+                               
+                               if p.is_variable_length():
+                                       temp = p.size_string()
+                                       if extra_offset:
+                                               extra_offset += " + %s" % (temp)
+                                       else:
+                                               extra_offset = temp
 
-               return offset
+               return
 
 
-       def pixel_emit_args(self, f, pc, indent, adjust, dim, large):
+       def pixel_emit_args(self, f, pc, indent, large):
                """Emit the arguments for a pixel function.  This differs from
                common_emit_args in that pixel functions may require padding
                be inserted (i.e., for the missing width field for
                TexImage1D), and they may also require a 'NULL image' flag
                be inserted before the image data."""
 
-               offset = 0
-               for p in f.parameterIterator(1, 1):
-                       self.common_emit_one_arg(p, offset, pc, indent, adjust)
-                       offset += p.size()
+               if large:
+                       adjust = 8
+               else:
+                       adjust = 4
+
+               for param in f.parameterIterateGlxSend():
+                       if not param.is_image():
+                               self.common_emit_one_arg(param, pc, indent, adjust, None)
 
-                       if f.pad_after(p):
-                               print '%s    (void) memcpy((void *)(%s + %u), zero, 4);' % (indent, pc, offset + adjust)
-                               offset += 4
+                               if f.pad_after(param):
+                                       print '%s    (void) memcpy((void *)(%s + %u), zero, 4);' % (indent, pc, (param.offset + param.size()) + adjust)
 
-               if f.image.img_null_flag:
-                       if large:
-                               print '%s    (void) memcpy((void *)(%s + %u), zero, 4);' % (indent, pc, offset + adjust)
                        else:
-                               print '%s    (void) memcpy((void *)(%s + %u), (void *)((%s == NULL) ? one : zero), 4);' % (indent, pc, offset + adjust, f.image.name)
+                               [dim, width, height, depth, extent] = param.get_dimensions()
+                               if f.glx_rop == ~0:
+                                       dim_str = "dim"
+                               else:
+                                       dim_str = str(dim)
+
+                               if param.img_null_flag:
+                                       if large:
+                                               print '%s    (void) memcpy((void *)(%s + %u), zero, 4);' % (indent, pc, (param.offset - 4) + adjust)
+                                       else:
+                                               print '%s    (void) memcpy((void *)(%s + %u), (void *)((%s == NULL) ? one : zero), 4);' % (indent, pc, (param.offset - 4) + adjust, param.name)
+
 
-                       offset += 4
+                               pixHeaderPtr = "%s + %u" % (pc, adjust)
+                               pcPtr = "%s + %u" % (pc, param.offset + adjust)
 
-               return offset
+                               if not large:
+                                       if param.img_send_null:
+                                               condition = '(compsize > 0) && (%s != NULL)' % (param.name)
+                                       else:
+                                               condition = 'compsize > 0'
+
+                                       print '%s    if (%s) {' % (indent, condition)
+                                       print '%s        (*gc->fillImage)(gc, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (indent, dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
+                                       print '%s    }' % (indent)
+                                       print '%s    else {' % (indent)
+                                       print '%s        (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (indent, pixHeaderPtr, dim, dim)
+                                       print '%s    }' % (indent)
+                               else:
+                                       print '%s    __glXSendLargeImage(gc, compsize, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (indent, dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
+
+               return
 
 
        def large_emit_begin(self, indent, f, op_name = None):
@@ -356,26 +477,27 @@ generic_%u_byte( GLint rop, const void * ptr )
                return
 
 
-       def common_func_print_just_header(self, f):
-               print '#define %s %d' % (f.opcode_name(), f.opcode_value())
-
-               print '%s' % (f.fn_return_type)
-               print '__indirect_gl%s(%s)' % (f.name, f.get_parameter_string())
-               print '{'
-
-
        def common_func_print_just_start(self, f):
                print '    __GLXcontext * const gc = __glXGetCurrentContext();'
-               
+
                # The only reason that single and vendor private commands need
                # a variable called 'dpy' is becuase they use the SyncHandle
                # macro.  For whatever brain-dead reason, that macro is hard-
                # coded to use a variable called 'dpy' instead of taking a
                # parameter.
 
+               # FIXME Simplify the logic related to skip_condition and
+               # FIXME condition_list in this function.  Basically, remove
+               # FIXME skip_condition, and just append the "dpy != NULL" type
+               # FIXME condition to condition_list from the start.  The only
+               # FIXME reason it's done in this confusing way now is to
+               # FIXME minimize the diffs in the generated code.
+
                if not f.glx_rop:
-                       if f.image and f.image.is_output:
-                               print '    const __GLXattribute * const state = gc->client_state_private;'
+                       for p in f.parameterIterateOutputs():
+                               if p.is_image():
+                                       print '    const __GLXattribute * const state = gc->client_state_private;'
+                                       break
 
                        print '    Display * const dpy = gc->currentDpy;'
                        skip_condition = "dpy != NULL"
@@ -385,41 +507,37 @@ generic_%u_byte( GLint rop, const void * ptr )
                        skip_condition = None
 
 
-               if f.fn_return_type != 'void':
-                       print '    %s retval = (%s) 0;' % (f.fn_return_type, f.fn_return_type)
+               if f.return_type != 'void':
+                       print '    %s retval = (%s) 0;' % (f.return_type, f.return_type)
 
-               if not f.output_parameter():
-                       compsize = self.size_call( f )
-                       if compsize:
-                               print '    const GLuint compsize = %s;' % (compsize)
 
-               print '    const GLuint cmdlen = %s;' % (f.command_length())
-
-               if f.counter:
-                       if skip_condition:
-                               skip_condition = "(%s >= 0) && (%s)" % (f.counter, skip_condition)
-                       else:
-                               skip_condition = "%s >= 0" % (f.counter)
+               self.emit_packet_size_calculation(f, 0)
 
+               condition_list = []
+               for p in f.parameterIterateCounters():
+                       condition_list.append( "%s >= 0" % (p.name) )
 
                if skip_condition:
+                       condition_list.append( skip_condition )
+
+               if len( condition_list ) > 0:
+                       if len( condition_list ) > 1:
+                               skip_condition = "(%s)" % (string.join( condition_list, ") && (" ))
+                       else:
+                               skip_condition = "%s" % (condition_list.pop(0))
+
                        print '    if (__builtin_expect(%s, 1)) {' % (skip_condition)
                        return 1
                else:
                        return 0
 
 
-       def common_func_print_header(self, f):
-               self.common_func_print_just_header(f)
-               return self.common_func_print_just_start(f)
-
-
-
        def printSingleFunction(self, f):
-               self.common_func_print_header(f)
-               
+               self.common_func_print_just_start(f)
+
                if self.debug:
                        print '        printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
+
                if f.glx_vendorpriv == 0:
 
                        # XCB specific:
@@ -429,44 +547,52 @@ generic_%u_byte( GLint rop, const void * ptr )
                        print '        XCBConnection *c = XCBConnectionOfDisplay(dpy);'
                        print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
                        xcb_name = 'XCBGlx%s' % f.name
+
                        iparams=[]
-                       for p in f.fn_parameters:
-                               if p.is_output == 0:
+                       extra_iparams = []
+                       output = None
+                       for p in f.parameterIterator():
+                               if p.is_output:
+                                       output = p
+
+                                       if p.is_image():
+                                               if p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP":
+                                                       extra_iparams.append("state->storePack.swapEndian")
+                                               else:
+                                                       extra_iparams.append("0")
+                                       
+                                               # Hardcode this in.  lsb_first param (apparently always GL_FALSE)
+                                               # also present in GetPolygonStipple, but taken care of above.
+                                               if xcb_name == "XCBGlxReadPixels": 
+                                                       extra_iparams.append("0")
+                               else:
                                        iparams.append(p.name)
 
-                       if f.image and f.image.is_output:
-                               if f.image.img_format != "GL_COLOR_INDEX" or f.image.img_type != "GL_BITMAP":
-                                       iparams.append("state->storePack.swapEndian")
-                               else:
-                                       iparams.append("0")
-                                       
-                               # Hardcode this in.  lsb_first param (apparently always GL_FALSE)
-                               # also present in GetPolygonStipple, but taken care of above.
-                               if xcb_name == "XCBGlxReadPixels": iparams.append("0")
-                           
-                       xcb_request = '%s(%s)' % (xcb_name, ", ".join(["c", "gc->currentContextTag"] + iparams))
+
+                       xcb_request = '%s(%s)' % (xcb_name, ", ".join(["c", "gc->currentContextTag"] + iparams + extra_iparams))
 
                        if f.needs_reply():
                                print '        %sRep *reply = %sReply(c, %s, NULL);' % (xcb_name, xcb_name, xcb_request)
-                               if f.output and f.reply_always_array:
-                                       print '        %s = (%s *)%sData(reply);' % (f.output.name, f.output.p_type.name, xcb_name)
-                               elif f.output and not f.reply_always_array:
-                                       if not f.image and not f.name == "GenQueriesARB":
+                               if output and f.reply_always_array:
+                                       print '        %s = (%s)%sData(reply);' % (output.name, output.type_string(), xcb_name)
+                               elif output and not f.reply_always_array:
+                                       if not output.is_image():
                                                print '        if (%sDataLength(reply) == 0)' % (xcb_name)
-                                               print '            (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (f.output.name)
+                                               print '            (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (output.name)
                                                print '        else'
-                                       print '        (void)memcpy(%s, %sData(reply), %sDataLength(reply) * sizeof(%s));' % (f.output.name, xcb_name, xcb_name, f.output.p_type.name)
+                                       print '        (void)memcpy(%s, %sData(reply), %sDataLength(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
 
 
-                               if f.fn_return_type != 'void':
+                               if f.return_type != 'void':
                                        print '        retval = reply->ret_val;'
                                print '        free(reply);'
                        else:
                                print '        ' + xcb_request + ';'
                        print '#else'
                        # End of XCB specific.
-               
-               if f.fn_parameters != []:
+
+
+               if f.parameters != []:
                        pc_decl = "GLubyte const * pc ="
                else:
                        pc_decl = "(void)"
@@ -477,190 +603,108 @@ generic_%u_byte( GLint rop, const void * ptr )
                        print '        %s __glXSetupSingleRequest(gc, %s, cmdlen);' % (pc_decl, f.opcode_name())
 
                self.common_emit_args(f, "pc", "    ", 0, 0)
-               if f.image and f.image.is_output:
-                       o = f.command_fixed_length() - 4
-                       print '        *(int32_t *)(pc + %u) = 0;' % (o)
-                       if f.image.img_format != "GL_COLOR_INDEX" or f.image.img_type != "GL_BITMAP":
-                               print '        * (int8_t *)(pc + %u) = state->storePack.swapEndian;' % (o)
 
+               images = f.get_images()
+
+               for img in images:
+                       if img.is_output:
+                               o = f.command_fixed_length() - 4
+                               print '        *(int32_t *)(pc + %u) = 0;' % (o)
+                               if img.img_format != "GL_COLOR_INDEX" or img.img_type != "GL_BITMAP":
+                                       print '        * (int8_t *)(pc + %u) = state->storePack.swapEndian;' % (o)
+               
                                if f.img_reset:
                                        print '        * (int8_t *)(pc + %u) = %s;' % (o + 1, f.img_reset)
 
 
+               return_name = ''
                if f.needs_reply():
-                       if f.image and f.image.is_output:
-                               [dim, w, h, d, junk] = f.dimensions()
-                               if f.dimensions_in_reply:
-                                       print "        __glXReadPixelReply(dpy, gc, %u, 0, 0, 0, %s, %s, %s, GL_TRUE);" % (dim, f.image.img_format, f.image.img_type, f.image.name)
-                               else:
-                                       print "        __glXReadPixelReply(dpy, gc, %u, %s, %s, %s, %s, %s, %s, GL_FALSE);" % (dim, w, h, d, f.image.img_format, f.image.img_type, f.image.name)
+                       if f.return_type != 'void':
+                               return_name = " retval"
+                               return_str = " retval = (%s)" % (f.return_type)
                        else:
-                               if f.output != None:
-                                       if f.output.p_type.size == 0:
-                                               output_size = 1
+                               return_str = " (void)"
+
+                       got_reply = 0
+
+                       for p in f.parameterIterateOutputs():
+                               if p.is_image():
+                                       [dim, w, h, d, junk] = p.get_dimensions()
+                                       if f.dimensions_in_reply:
+                                               print "        __glXReadPixelReply(dpy, gc, %u, 0, 0, 0, %s, %s, %s, GL_TRUE);" % (dim, p.img_format, p.img_type, p.name)
                                        else:
-                                               output_size = f.output.p_type.size
+                                               print "        __glXReadPixelReply(dpy, gc, %u, %s, %s, %s, %s, %s, %s, GL_FALSE);" % (dim, w, h, d, p.img_format, p.img_type, p.name)
 
-                                       output_str = f.output.name
+                                       got_reply = 1
                                else:
-                                       output_size = 0
-                                       output_str = "NULL"
+                                       if f.reply_always_array:
+                                               aa = "GL_TRUE"
+                                       else:
+                                               aa = "GL_FALSE"
 
-                               if f.fn_return_type != 'void':
-                                       return_str = " retval = (%s)" % (f.fn_return_type)
-                               else:
-                                       return_str = " (void)"
+                                       # gl_parameter.size() returns the size
+                                       # of the entire data item.  If the
+                                       # item is a fixed-size array, this is
+                                       # the size of the whole array.  This
+                                       # is not what __glXReadReply wants. It
+                                       # wants the size of a single data
+                                       # element in the reply packet.
+                                       # Dividing by the array size (1 for
+                                       # non-arrays) gives us this.
 
-                               if f.reply_always_array:
-                                       aa = "GL_TRUE"
-                               else:
-                                       aa = "GL_FALSE"
+                                       s = p.size() / p.get_element_count()
+                                       print "       %s __glXReadReply(dpy, %s, %s, %s);" % (return_str, s, p.name, aa)
+                                       got_reply = 1
+
+
+                       # If a reply wasn't read to fill an output parameter,
+                       # read a NULL reply to get the return value.
+
+                       if not got_reply:
+                               print "       %s __glXReadReply(dpy, 0, NULL, GL_FALSE);" % (return_str)
 
-                               print "       %s __glXReadReply(dpy, %s, %s, %s);" % (return_str, output_size, output_str, aa)
 
                elif self.debug:
                        # Only emit the extra glFinish call for functions
                        # that don't already require a reply from the server.
                        print '        __indirect_glFinish();'
 
-               print '        UnlockDisplay(dpy); SyncHandle();'
-               
-               if f.glx_vendorpriv == 0:
-                       print '#endif /* USE_XCB */'
-                       
                if self.debug:
                        print '        printf( "Exit %%s.\\n", "gl%s" );' % (f.name)
-               print '    }'
-               print '    %s' % f.return_string()
-               print '}'
-               print ''
-               return
-
-
-       def printPixelFunction(self, f):
-               """This function could use some major refactoring. :("""
-
-               # There is a code-space optimization that we can do here.
-               # Functions that are marked img_pad_dimensions have a version
-               # with an odd number of dimensions and an even number of
-               # dimensions.  TexSubImage1D and TexSubImage2D are examples.
-               # We can emit a single function that does both, and have the
-               # real functions call the utility function with the correct
-               # parameters.
-               #
-               # The only quirk to this is that utility funcitons will be
-               # generated for 3D and 4D functions, but 4D (e.g.,
-               # GL_SGIS_texture4D) isn't typically supported.  This is
-               # probably not an issue.  However, it would be possible to
-               # look at the total set of functions and determine if there
-               # is another function that would actually use the utility
-               # function.  If not, then fallback to the normal way of
-               # generating code.
-
-               if f.image.img_pad_dimensions:
-                       # Determine the hash key and the name for the utility
-                       # function that is used to implement the real
-                       # function.
-
-                       [h, n] = hash_pixel_function(f)
-
-                       
-                       # If the utility function is not yet known, generate
-                       # it.
-
-                       if not self.pixel_stubs.has_key(h):
-                               self.pixel_stubs[h] = n
-                               pixel_func = glXPixelFunctionUtility(f, n)
 
-                               print 'static void'
-                               print '%s( unsigned opcode, unsigned dim, %s )' % (n, pixel_func.get_parameter_string())
-                               print '{'
-
-                               if self.common_func_print_just_start(pixel_func):
-                                       indent = "    "
-                                       trailer = "    }"
-                               else:
-                                       indent = ""
-                                       trailer = None
-
-
-                               if pixel_func.can_be_large:
-                                       print '%s    if (cmdlen <= gc->maxSmallRenderCommandSize) {' % (indent)
-                                       print '%s        if ( (gc->pc + cmdlen) > gc->bufEnd ) {' % (indent)
-                                       print '%s            (void) __glXFlushRenderBuffer(gc, gc->pc);' % (indent)
-                                       print '%s        }' % (indent)
-                                       indent += "    "
-
-                               [dim, width, height, depth, extent] = pixel_func.dimensions()
-                               adjust = pixel_func.offset_of_first_parameter() + 4
-
-                               print '%s    emit_header(gc->pc, opcode, cmdlen);' % (indent)
-
-                               offset = self.pixel_emit_args(pixel_func, "gc->pc", indent, adjust, dim, 0)
-
-                               s = pixel_func.command_fixed_length()
-
-                               pixHeaderPtr = "gc->pc + 4"
-                               pcPtr = "gc->pc + %u" % (s + 4)
-
-                               if pixel_func.image.img_send_null:
-                                       condition = '(compsize > 0) && (%s != NULL)' % (pixel_func.image.name)
-                               else:
-                                       condition = 'compsize > 0'
-
-                               print '%s    if (%s) {' % (indent, condition)
-                               print '%s        (*gc->fillImage)(gc, dim, %s, %s, %s, %s, %s, %s, %s, %s);' % (indent, width, height, depth, pixel_func.image.img_format, pixel_func.image.img_type, pixel_func.image.name, pcPtr, pixHeaderPtr)
-                               print '%s    }' % (indent)
-                               print '%s    else {' % (indent)
-                               print '%s        (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (indent, pixHeaderPtr, dim, dim)
-                               print '%s    }' % (indent)
-
-                               print '%s    gc->pc += cmdlen;' % (indent)
-                               print '%s    if (gc->pc > gc->limit) { (void) __glXFlushRenderBuffer(gc, gc->pc); }' % (indent)
-
-                               if f.can_be_large:
-                                       adjust += 4
-
-                                       print '%s}' % (indent)
-                                       print '%selse {' % (indent)
-
-                                       self.large_emit_begin(indent, pixel_func, "opcode")
-                                       offset = self.pixel_emit_args(pixel_func, "pc", indent, adjust, dim, 1)
-
-                                       pixHeaderPtr = "pc + 8"
-                                       pcPtr = "pc + %u" % (s + 8)
-
-                                       print '%s    __glXSendLargeImage(gc, compsize, dim, %s, %s, %s, %s, %s, %s, %s, %s);' % (indent, width, height, depth, f.image.img_format, f.image.img_type, f.image.name, pcPtr, pixHeaderPtr)
-
-                                       print '%s}' % (indent)
-
-                               if trailer: print trailer
-                               print '}'
-                               print ''
 
+               print '        UnlockDisplay(dpy); SyncHandle();'
 
+               if f.glx_vendorpriv == 0:
+                       print '#endif /* USE_XCB */'
 
-                       # Generate the real function as a call to the
-                       # utility function.
+               print '    }'
+               print '    return%s;' % (return_name)
+               return
 
-                       self.common_func_print_just_header(f)
 
-                       [dim, junk, junk, junk, junk] = f.dimensions()
+       def printPixelFunction(self, f):
+               if self.pixel_stubs.has_key( f.name ):
+                       # Normally gl_function::get_parameter_string could be
+                       # used.  However, this call needs to have the missing
+                       # dimensions (e.g., a fake height value for
+                       # glTexImage1D) added in.
 
                        p_string = ""
-                       for p in gl_XML.glFunction.parameterIterator(f):
-                               p_string += ", " + p.name
+                       for param in f.parameterIterateGlxSend():
+                               p_string += ", " + param.name
+
+                               if param.is_image():
+                                       [dim, junk, junk, junk, junk] = param.get_dimensions()
 
-                               if f.pad_after(p):
+                               if f.pad_after(param):
                                        p_string += ", 1"
 
-                       print '    %s(%s, %u%s );' % (n, f.opcode_name(), dim, p_string)
-                       print '}'
-                       print ''
+                       print '    %s(%s, %u%s );' % (self.pixel_stubs[f.name] , f.opcode_name(), dim, p_string)
                        return
 
 
-               if self.common_func_print_header(f):
+               if self.common_func_print_just_start(f):
                        indent = "    "
                        trailer = "    }"
                else:
@@ -675,52 +719,27 @@ generic_%u_byte( GLint rop, const void * ptr )
                        print '%s        }' % (indent)
                        indent += "    "
 
-               [dim, width, height, depth, extent] = f.dimensions()
-               adjust = f.offset_of_first_parameter() + 4
-
-               print '%s    emit_header(gc->pc, %s, cmdlen);' % (indent, f.opcode_real_name())
-
-               offset = self.pixel_emit_args(f, "gc->pc", indent, adjust, dim, 0)
-
-               s = f.command_fixed_length()
-
-               pixHeaderPtr = "gc->pc + 4"
-               pcPtr = "gc->pc + %u" % (s + 4)
-
-               if f.image.img_send_null:
-                       condition = '(compsize > 0) && (%s != NULL)' % (f.image.name)
+               if f.glx_rop == ~0:
+                       opcode = "opcode"
                else:
-                       condition = 'compsize > 0'
+                       opcode = f.opcode_real_name()
 
-               print '%s    if (%s) {' % (indent, condition)
-               print '%s        (*gc->fillImage)(gc, %u, %s, %s, %s, %s, %s, %s, %s, %s);' % (indent, dim, width, height, depth, f.image.img_format, f.image.img_type, f.image.name, pcPtr, pixHeaderPtr)
-               print '%s    }' % (indent)
-               print '%s    else {' % (indent)
-               print '%s        (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (indent, pixHeaderPtr, dim, dim)
-               print '%s    }' % (indent)
+               print '%s    emit_header(gc->pc, %s, cmdlen);' % (indent, opcode)
 
+               self.pixel_emit_args( f, "gc->pc", indent, 0 )
                print '%s    gc->pc += cmdlen;' % (indent)
                print '%s    if (gc->pc > gc->limit) { (void) __glXFlushRenderBuffer(gc, gc->pc); }' % (indent)
 
                if f.can_be_large:
-                       adjust += 4
-
                        print '%s}' % (indent)
                        print '%selse {' % (indent)
 
-                       self.large_emit_begin(indent, f)
-                       offset = self.pixel_emit_args(f, "pc", indent, adjust, dim, 1)
-
-                       pixHeaderPtr = "pc + 8"
-                       pcPtr = "pc + %u" % (s + 8)
-
-                       print '%s    __glXSendLargeImage(gc, compsize, %u, %s, %s, %s, %s, %s, %s, %s, %s);' % (indent, dim, width, height, depth, f.image.img_format, f.image.img_type, f.image.name, pcPtr, pixHeaderPtr)
+                       self.large_emit_begin(indent, f, opcode)
+                       self.pixel_emit_args( f, "pc", indent, 1 )
 
                        print '%s}' % (indent)
 
                if trailer: print trailer
-               print '}'
-               print ''
                return
 
 
@@ -731,19 +750,16 @@ generic_%u_byte( GLint rop, const void * ptr )
                # regular.  Since they are so regular and there are so many
                # of them, special case them with generic functions.  On
                # x86, this saves about 26KB in the libGL.so binary.
-               
-               if f.variable_length_parameter() == None and len(f.fn_parameters) == 1:
-                       p = f.fn_parameters[0]
-                       if p.is_pointer:
+
+               if f.variable_length_parameter() == None and len(f.parameters) == 1:
+                       p = f.parameters[0]
+                       if p.is_pointer():
                                cmdlen = f.command_fixed_length()
                                if cmdlen in self.generic_sizes:
-                                       self.common_func_print_just_header(f)
                                        print '    generic_%u_byte( %s, %s );' % (cmdlen, f.opcode_real_name(), p.name)
-                                       print '}'
-                                       print ''
                                        return
 
-               if self.common_func_print_header(f):
+               if self.common_func_print_just_start(f):
                        indent = "    "
                        trailer = "    }"
                else:
@@ -771,10 +787,10 @@ generic_%u_byte( GLint rop, const void * ptr )
                        print '%selse {' % (indent)
 
                        self.large_emit_begin(indent, f)
-                       offset = self.common_emit_args(f, "pc", indent, 8, 1)
+                       self.common_emit_args(f, "pc", indent, 8, 1)
 
                        p = f.variable_length_parameter()
-                       print '%s    __glXSendLargeCommand(gc, pc, %u, %s, %s);' % (indent, offset + 8, p.name, p.size_string())
+                       print '%s    __glXSendLargeCommand(gc, pc, %u, %s, %s);' % (indent, p.offset + 8, p.name, p.size_string())
                        print '%s}' % (indent)
 
                if self.debug:
@@ -782,18 +798,18 @@ generic_%u_byte( GLint rop, const void * ptr )
                        print '%s    printf( "Exit %%s.\\n", "gl%s" );' % (indent, f.name)
 
                if trailer: print trailer
-               print '}'
-               print ''
                return
 
 
-class PrintGlxProtoInit_c(glX_XML.GlxProto):
+class PrintGlxProtoInit_c(gl_XML.gl_print_base):
        def __init__(self):
-               glX_XML.GlxProto.__init__(self)
-               self.last_category = ""
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_send.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
 (C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM")
+               return
 
 
        def printRealHeader(self):
@@ -848,26 +864,107 @@ __GLapi * __glXNewIndirectAPI( void )
     return glAPI;
 }
 """
+               return
 
-       def printFunction(self, f):
-               if f.category != self.last_category:
-                       self.last_category = f.category
-                       print ''
-                       print '    /* %s */' % (self.last_category)
-                       print ''
-                       
-               print '    glAPI->%s = __indirect_gl%s;' % (f.name, f.name)
 
+       def printCategory(self, category_group, show_num):
+               cat_keys = category_group.keys()
+               cat_keys.sort()
+               for cat_num in cat_keys:
+                       first = 1
+                       for offset in category_group[ cat_num ]:
+                               [cat_name, func_name] = category_group[ cat_num ][ offset ]
+
+                               if first:
+                                       print ''
+                                       if show_num:
+                                               print '    /* % 3u. %s */' % (cat_num, cat_name)
+                                       else:
+                                               print '    /* %s */' % (cat_name)
+                                       print ''
+                                       first = 0
+
+                               print '    glAPI->%s = __indirect_gl%s;' % (func_name, func_name)
+               
+
+       def printBody(self, api):
+               core_categories = {}
+               arb_categories = {}
+               other_categories = {}
+               next_unnum = 1000
+
+               for func in api.functionIterateGlx():
+                       [cat, num] = api.get_category_for_name( func.name )
+
+                       # There are three groups of "categories" that we
+                       # care about here.  We want to separate the core GL
+                       # version categories from extensions.  We also want to
+                       # separate the ARB extensions from the non-ARB
+                       # extensions.
+                       #
+                       # This is done by first trying to convert the category
+                       # name to a floating point number.  All core GL
+                       # versions are of the form "N.M" where both N and M
+                       # are integers.  If the cast to float fails, an
+                       # exception will be thrown.  Once down that path, 
+                       # we can look at the start of the extension string.
+                       # If it begins with "GL_ARB_", it's an ARB extension.
+                       #
+                       # Once the categories are separated, the are ordered
+                       # by number.  The un-numbered non-ARB extensions
+                       # (e.g., GL_INGR_blend_func_separate) are assigned
+                       # arbitrary numbers starting at 1000.
+                       #
+                       # FIXME In order to maintain repeatability, the
+                       # FIXME unnumbered extensions should be put in their
+                       # FIXME own dictionary and ordered by name (since they
+                       # FIXME have no number).
+
+                       try:
+                               num = float(cat)
+                               if not core_categories.has_key( num ):
+                                       core_categories[ num ] = {}
+
+                               core_categories[ num ][ func.offset ] = [cat, func.name]
+
+                       except Exception, e:
+                               if not num:
+                                       num = next_unnum
+                                       next_unnum += 1
+                               else:
+                                       num = int(num)
+
+                               if cat.startswith( "GL_ARB_" ):
+                                       if not arb_categories.has_key( num ):
+                                               arb_categories[ num ] = {}
+
+                                       arb_categories[ num ][ func.offset ] = [cat, func.name]
+                               else:
+                                       if not other_categories.has_key( num ):
+                                               other_categories[ num ] = {}
 
-class PrintGlxProtoInit_h(glX_XML.GlxProto):
+                                       other_categories[ num ][ func.offset ] = [cat, func.name]
+
+               self.printCategory( core_categories,  0 )
+               self.printCategory( arb_categories,   1 )
+               self.printCategory( other_categories, 1 )
+               return
+
+
+class PrintGlxProtoInit_h(gl_XML.gl_print_base):
        def __init__(self):
-               glX_XML.GlxProto.__init__(self)
-               self.last_category = ""
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_send.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
 (C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM")
                self.header_tag = "_INDIRECT_H_"
 
+               self.last_category = ""
+               return
+
+
        def printRealHeader(self):
                print """/**
  * \\file
@@ -900,8 +997,9 @@ extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
 """
 
 
-       def printFunction(self, f):
-               print 'extern HIDDEN %s __indirect_gl%s(%s);' % (f.fn_return_type, f.name, f.get_parameter_string())
+       def printBody(self, api):
+               for func in api.functionIterateGlx():
+                       print 'extern HIDDEN %s __indirect_gl%s(%s);' % (func.return_type, func.name, func.get_parameter_string())
 
 
 def show_usage():
@@ -930,14 +1028,16 @@ if __name__ == '__main__':
                        debug = 1
 
        if mode == "proto":
-               dh = PrintGlxProtoStubs()
+               printer = PrintGlxProtoStubs()
        elif mode == "init_c":
-               dh = PrintGlxProtoInit_c()
+               printer = PrintGlxProtoInit_c()
        elif mode == "init_h":
-               dh = PrintGlxProtoInit_h()
+               printer = PrintGlxProtoInit_h()
        else:
                show_usage()
 
 
-       dh.debug = debug
-       gl_XML.parse_GL_API( dh, file_name )
+       printer.debug = debug
+       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
+
+       printer.Print( api )
index a1c0497ae7434b779184aec72c170e83ab88a631..b097fed0ebbebed905662b9d115ee1e591b9145b 100644 (file)
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-import gl_XML
-import glX_XML
+import gl_XML, glX_XML
 import license
-import sys, getopt, copy
+import sys, getopt, copy, string
 
 
-class SizeStubFunctionIterator(glX_XML.glXFunctionIterator):
-       """Iterate over functions that need "size" information.
+class glx_enum_function:
+       def __init__(self, func_name, enum_dict):
+               self.name = func_name
+               self.mode = 1
+               self.sig = None
 
-       Iterate over the functions that have variable sized data.  First the
-       "set"-type functions are iterated followed by the "get"-type
-       functions.
-       """
+               # "enums" is a set of lists.  The element in the set is the
+               # value of the enum.  The list is the list of names for that
+               # value.  For example, [0x8126] = {"POINT_SIZE_MIN",
+               # "POINT_SIZE_MIN_ARB", "POINT_SIZE_MIN_EXT",
+               # "POINT_SIZE_MIN_SGIS"}.
 
-       def __init__(self, context):
-               self.data = []
-               self.index = 0
+               self.enums = {}
 
-               set_functions = []
-               get_functions = []
-               extra_data = []
+               # "count" is indexed by count values.  Each element of count
+               # is a list of index to "enums" that have that number of
+               # associated data elements.  For example, [4] = 
+               # {GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION,
+               # GL_AMBIENT_AND_DIFFUSE} (the enum names are used here,
+               # but the actual hexadecimal values would be in the array).
+
+               self.count = {}
 
-               for f in gl_XML.glFunctionIterator(context):
-                       if context.glx_enum_functions.has_key(f.name):
-                               ef = context.glx_enum_functions[f.name]
-                               if ef.is_set():
-                                       set_functions.append(f)
-                               else:
-                                       get_functions.append(f)
 
+               # Fill self.count and self.enums using the dictionary of enums
+               # that was passed in.
+
+               mode_set = 0
+               for enum_name in enum_dict:
+                       e = enum_dict[ enum_name ]
+               
+                       if e.functions.has_key( func_name ):
+                               [count, mode] = e.functions[ func_name ]
 
-               if (context.which_functions & PrintGlxSizeStubs_c.do_set) != 0:
-                       self.data += set_functions
-               elif context.get_alias_set:
-                       extra_data = set_functions
+                               if mode_set and mode != self.mode:
+                                       raise RuntimeError("Not all enums for %s have the same mode." % (func_name))
 
-               if (context.which_functions & PrintGlxSizeStubs_c.do_get) != 0:
-                       self.data += get_functions
+                               self.mode = mode
 
+                               if self.enums.has_key( e.value ):
+                                       if e.name not in self.enums[ e.value ]:
+                                               self.enums[ e.value ].append( e )
+                               else:
+                                       if not self.count.has_key( count ):
+                                               self.count[ count ] = []
 
-               for f in extra_data + self.data:
-                       sig = context.glx_enum_functions[f.name].signature()
+                                       self.enums[ e.value ] = [ e ]
+                                       self.count[ count ].append( e.value )
 
-                       if not context.glx_enum_sigs.has_key(sig):
-                               context.glx_enum_sigs[sig] = f.name;
 
                return
 
 
-       def next(self):
-               if self.index == len(self.data):
-                       raise StopIteration
+       def signature( self ):
+               if self.sig == None:
+                       self.sig = ""
+                       for i in self.count:
+                               if i == None:
+                                       raise RuntimeError("i is None.  WTF?")
+
+                               self.count[i].sort()
+                               for e in self.count[i]:
+                                       self.sig += "%04x,%u," % (e, i)
+       
+               return self.sig
+
+
+       def is_set( self ):
+               return self.mode
+
+
+       def PrintUsingTable(self):
+               """Emit the body of the __gl*_size function using a pair
+               of look-up tables and a mask.  The mask is calculated such
+               that (e & mask) is unique for all the valid values of e for
+               this function.  The result of (e & mask) is used as an index
+               into the first look-up table.  If it matches e, then the
+               same entry of the second table is returned.  Otherwise zero
+               is returned.
+               
+               It seems like this should cause better code to be generated.
+               However, on x86 at least, the resulting .o file is about 20%
+               larger then the switch-statment version.  I am leaving this
+               code in because the results may be different on other
+               platforms (e.g., PowerPC or x86-64)."""
+
+               return 0
+               count = 0
+               for a in self.enums:
+                       count += 1
+
+               if self.count.has_key(-1):
+                       return 0
+
+               # Determine if there is some mask M, such that M = (2^N) - 1,
+               # that will generate unique values for all of the enums.
+
+               mask = 0
+               for i in [1, 2, 3, 4, 5, 6, 7, 8]:
+                       mask = (1 << i) - 1
+
+                       fail = 0;
+                       for a in self.enums:
+                               for b in self.enums:
+                                       if a != b:
+                                               if (a & mask) == (b & mask):
+                                                       fail = 1;
+
+                       if not fail:
+                               break;
+                       else:
+                               mask = 0
+
+               if (mask != 0) and (mask < (2 * count)):
+                       masked_enums = {}
+                       masked_count = {}
+
+                       for i in range(0, mask + 1):
+                               masked_enums[i] = "0";
+                               masked_count[i] = 0;
+
+                       for c in self.count:
+                               for e in self.count[c]:
+                                       i = e & mask
+                                       enum_obj = self.enums[e][0]
+                                       masked_enums[i] = '0x%04x /* %s */' % (e, enum_obj.name )
+                                       masked_count[i] = c
+
+
+                       print '    static const GLushort a[%u] = {' % (mask + 1)
+                       for e in masked_enums:
+                               print '        %s, ' % (masked_enums[e])
+                       print '    };'
 
-               f = self.data[ self.index ]
-               self.index += 1
+                       print '    static const GLubyte b[%u] = {' % (mask + 1)
+                       for c in masked_count:
+                               print '        %u, ' % (masked_count[c])
+                       print '    };'
 
-               return f
+                       print '    const unsigned idx = (e & 0x%02xU);' % (mask)
+                       print ''
+                       print '    return (e == a[idx]) ? (GLint) b[idx] : 0;'
+                       return 1;
+               else:
+                       return 0;
+
+
+       def PrintUsingSwitch(self, name):
+               """Emit the body of the __gl*_size function using a 
+               switch-statement."""
+
+               print '    switch( e ) {'
+
+               for c in self.count:
+                       for e in self.count[c]:
+                               first = 1
+
+                               # There may be multiple enums with the same
+                               # value.  This happens has extensions are
+                               # promoted from vendor-specific or EXT to
+                               # ARB and to the core.  Emit the first one as
+                               # a case label, and emit the others as
+                               # commented-out case labels.
+
+                               list = {}
+                               for enum_obj in self.enums[e]:
+                                       list[ enum_obj.priority() ] = enum_obj.name
+
+                               keys = list.keys()
+                               keys.sort()
+                               for k in keys:
+                                       j = list[k]
+                                       if first:
+                                               print '        case GL_%s:' % (j)
+                                               first = 0
+                                       else:
+                                               print '/*      case GL_%s:*/' % (j)
+                                       
+                       if c == -1:
+                               print '            return __gl%s_variable_size( e );' % (name)
+                       else:
+                               print '            return %u;' % (c)
+                                       
+               print '        default: return 0;'
+               print '    }'
+
+
+       def Print(self, name):
+               print 'INTERNAL PURE FASTCALL GLint'
+               print '__gl%s_size( GLenum e )' % (name)
+               print '{'
+
+               if not self.PrintUsingTable():
+                       self.PrintUsingSwitch(name)
+
+               print '}'
+               print ''
+
+
+class glx_server_enum_function(glx_enum_function):
+       def __init__(self, func, enum_dict):
+               glx_enum_function.__init__(self, func.name, enum_dict)
+               
+               self.function = func
+               return
 
 
-class glXServerEnumFunction(glX_XML.glXEnumFunction):
        def signature( self ):
                if self.sig == None:
-                       sig = glX_XML.glXEnumFunction.signature(self)
+                       sig = glx_enum_function.signature(self)
 
-                       f = self.context.find_function( self.name )
-                       p = f.variable_length_parameter()
-
-                       try:
-                               sig += "%u" % (p.p_type.size)
-                       except Exception,e:
-                               print '%s' % (self.name)
-                               raise e
+                       p = self.function.variable_length_parameter()
+                       if p:
+                               sig += "%u" % (p.size())
 
                        self.sig = sig
 
                return self.sig;
 
 
-       def Print(self, name):
-               f = self.context.find_function( self.name )
-               self.context.common_func_print_just_header( f )
+       def Print(self, name, printer):
+               f = self.function
+               printer.common_func_print_just_header( f )
 
                fixup = []
-               o = 0
-               for p in f.parameterIterator(1, 1):
-                       if f.count_parameter_list.count(p.name) or p.name == f.counter:
-                               self.context.common_emit_one_arg(p, o, "pc", "    ", 0)
-                               fixup.append(p.name)
+               
+               foo = {}
+               for param_name in f.count_parameter_list:
+                       o = f.offset_of( param_name )
+                       foo[o] = param_name
+
+               for param_name in f.counter_list:
+                       o = f.offset_of( param_name )
+                       foo[o] = param_name
+
+               keys = foo.keys()
+               keys.sort()
+               for o in keys:
+                       p = f.parameters_by_name[ foo[o] ]
+
+                       printer.common_emit_one_arg(p, "pc", "    ", 0)
+                       fixup.append( p.name )
 
-                       o += p.size()
 
                print '    GLsizei compsize;'
                print ''
 
-               self.context.common_emit_fixups(fixup)
+               printer.common_emit_fixups(fixup)
 
                print ''
-               print '    compsize = %s;' % (context.size_call(context, f))
+               print '    compsize = __gl%s_size(%s);' % (f.name, string.join(f.count_parameter_list, ","))
                p = f.variable_length_parameter()
                print '    return __GLX_PAD(%s);' % (p.size_string())
 
@@ -130,34 +288,26 @@ class glXServerEnumFunction(glX_XML.glXEnumFunction):
                print ''
 
 
-class PrintGlxSizeStubs_common(glX_XML.GlxProto):
+class PrintGlxSizeStubs_common(gl_XML.gl_print_base):
        do_get = (1 << 0)
        do_set = (1 << 1)
-       do_get_alias_set = (1 << 2)
 
        def __init__(self, which_functions):
-               glX_XML.GlxProto.__init__(self)
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM")
-               self.aliases = []
-               self.glx_enum_sigs = {}
-               self.name = "glX_proto_size.py (from Mesa)"
-               self.which_functions = which_functions
-
-               if (((which_functions & PrintGlxSizeStubs_common.do_set) != 0) and ((which_functions & PrintGlxSizeStubs_common.do_get) != 0)) or ((which_functions & PrintGlxSizeStubs_common.do_get_alias_set) != 0):
-                       self.get_alias_set = 1
-               else:
-                       self.get_alias_set = 0
+               gl_XML.gl_print_base.__init__(self)
 
+               self.name = "glX_proto_size.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM")
 
-       def functionIterator(self):
-               return SizeStubFunctionIterator(self)
+               self.emit_set = ((which_functions & PrintGlxSizeStubs_common.do_set) != 0)
+               self.emit_get = ((which_functions & PrintGlxSizeStubs_common.do_get) != 0)
+               return
 
 
 class PrintGlxSizeStubs_c(PrintGlxSizeStubs_common):
        def printRealHeader(self):
                print ''
                print '#include <GL/gl.h>'
-               if self.which_functions & self.do_get:
+               if self.emit_get:
                        print '#include "indirect_size_get.h"'
                
                print '#include "indirect_size.h"'
@@ -186,20 +336,26 @@ class PrintGlxSizeStubs_c(PrintGlxSizeStubs_common):
                print ''
 
 
-       def printRealFooter(self):
-               for a in self.aliases:
-                       print a
+       def printBody(self, api):
+               enum_sigs = {}
+               aliases = []
+
+               for func in api.functionIterateGlx():
+                       ef = glx_enum_function( func.name, api.enums_by_name )
+                       if len(ef.enums) == 0:
+                               continue
 
+                       if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
+                               sig = ef.signature()
+                               if enum_sigs.has_key( sig ):
+                                       aliases.append( [func.name, enum_sigs[ sig ]] )
+                               else:
+                                       enum_sigs[ sig ] = func.name
+                                       ef.Print( func.name )
 
-       def printFunction(self, f):
-               ef = self.glx_enum_functions[f.name]
-               n = self.glx_enum_sigs[ ef.signature() ];
 
-               if n != f.name:
-                       a = 'ALIAS( %s, %s )' % (f.name, n)
-                       self.aliases.append(a)
-               else:
-                       ef.Print( f.name )
+               for [alias_name, real_name] in aliases:
+                       print 'ALIAS( %s, %s )' % (alias_name, real_name)
 
 
                                
@@ -221,12 +377,17 @@ class PrintGlxSizeStubs_h(PrintGlxSizeStubs_common):
                print ''
 
 
-       def printFunction(self, f):
-               ef = self.glx_enum_functions[f.name]
-               print 'extern INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (f.name)
+       def printBody(self, api):
+               for func in api.functionIterateGlx():
+                       ef = glx_enum_function( func.name, api.enums_by_name )
+                       if len(ef.enums) == 0:
+                               continue
+
+                       if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
+                               print 'extern INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (func.name)
 
 
-class PrintGlxReqSize_common(glX_XML.GlxProto):
+class PrintGlxReqSize_common(gl_XML.gl_print_base):
        """Common base class for PrintGlxSizeReq_h and PrintGlxSizeReq_h.
 
        The main purpose of this common base class is to provide the infrastructure
@@ -234,33 +395,10 @@ class PrintGlxReqSize_common(glX_XML.GlxProto):
        """
 
        def __init__(self):
-               glX_XML.GlxProto.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
+
                self.name = "glX_proto_size.py (from Mesa)"
                self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
-               self.aliases = []
-               self.glx_enum_sigs = {}
-               self.size_functions = []
-
-
-       def endElementNS(self, name, qname):
-               [uri, true_name] = name
-               if true_name == "function":
-                       f = self.current_object
-                       if f.glx_rop and not f.ignore and f.fn_alias == None and f.vectorequiv == None:
-
-                               if self.glx_enum_functions.has_key(f.name) or f.image or f.server_handcode:
-                                       self.size_functions.append( f )
-                               else:
-                                       for p in f.parameterIterator(1,2):
-                                               if p.counter and not p.is_output:
-                                                       self.size_functions.append( f )
-                                                       break
-
-               glX_XML.GlxProto.endElementNS(self, name, qname)
-
-
-       def functionIterator(self):
-               return self.size_functions
 
 
 class PrintGlxReqSize_h(PrintGlxReqSize_common):
@@ -276,8 +414,10 @@ class PrintGlxReqSize_h(PrintGlxReqSize_common):
                print ''
 
 
-       def printFunction(self, f):
-               print 'extern PURE HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap);' % (f.name)
+       def printBody(self, api):
+               for func in api.functionIterateGlx():
+                       if not func.ignore and func.has_variable_size_request():
+                               print 'extern PURE HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap);' % (func.name)
 
 
 class PrintGlxReqSize_c(PrintGlxReqSize_common):
@@ -286,10 +426,6 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
                self.counter_sigs = {}
 
 
-       def createEnumFunction(self, n):
-               return glXServerEnumFunction(n, self)
-
-
        def printRealHeader(self):
                print ''
                print '#include <GL/gl.h>'
@@ -317,38 +453,58 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
                print ''
 
 
-       def printRealFooter(self):
-               for a in self.aliases:
-                       print a
+       def printBody(self, api):
+               aliases = []
+               enum_functions = {}
+               enum_sigs = {}
 
+               for func in api.functionIterateGlx():
+                       if not func.has_variable_size_request(): continue
 
-       def printFunction(self, f):
-               # Even though server-handcode fuctions are on "the list",
-               # and prototypes are generated for them, there isn't enough
-               # information to generate a size function.  If there was
-               # enough information, they probably wouldn't need to be
-               # handcoded in the first place!
+                       ef = glx_server_enum_function( func, api.enums_by_name )
+                       if len(ef.enums) == 0: continue
 
-               if f.server_handcode: return
+                       sig = ef.signature()
 
-               if self.glx_enum_functions.has_key(f.name):
-                       ef = self.glx_enum_functions[f.name]
+                       if not enum_functions.has_key(func.name):
+                               enum_functions[ func.name ] = sig
 
-                       sig = ef.signature();
-                       if self.glx_enum_sigs.has_key(sig):
-                               n = self.glx_enum_sigs[sig];
-                               a = 'ALIAS( %s, %s )' % (f.name, n)
-                               self.aliases.append(a)
-                       else:
-                               ef.Print( f.name )
-                               self.glx_enum_sigs[sig] = f.name;
-               elif f.image:
-                       self.printPixelFunction(f)
-               else:
-                       for p in f.parameterIterator(1,2):
-                               if p.counter and not p.is_output:
-                                       self.printCountedFunction(f)
-                                       break
+                       if not enum_sigs.has_key( sig ):
+                               enum_sigs[ sig ] = ef
+                       
+
+
+               for func in api.functionIterateGlx():
+                       # Even though server-handcode fuctions are on "the
+                       # list", and prototypes are generated for them, there
+                       # isn't enough information to generate a size
+                       # function.  If there was enough information, they
+                       # probably wouldn't need to be handcoded in the first
+                       # place!
+
+                       if func.server_handcode: continue
+                       if not func.has_variable_size_request(): continue
+
+                       if enum_functions.has_key(func.name):
+                               sig = enum_functions[func.name]
+                               ef = enum_sigs[ sig ]
+
+                               if ef.name != func.name:
+                                       aliases.append( [func.name, ef.name] )
+                               else:
+                                       ef.Print( func.name, self )
+
+                       elif func.images:
+                               self.printPixelFunction(func)
+                       elif func.has_variable_size_request():
+                               a = self.printCountedFunction(func)
+                               if a: aliases.append(a)
+
+
+               for [alias_name, real_name] in aliases:
+                       print 'ALIAS( %s, %s )' % (alias_name, real_name)
+
+               return
 
 
        def common_emit_fixups(self, fixup):
@@ -363,9 +519,10 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
                return
 
 
-       def common_emit_one_arg(self, p, offset, pc, indent, adjust):
-               dst = '%s %s' % (p.p_type_string, p.name)
-               src = '(%s *)' % (p.p_type_string)
+       def common_emit_one_arg(self, p, pc, indent, adjust):
+               offset = p.offset
+               dst = p.string()
+               src = '(%s *)' % (p.type_string())
                print '%s%-18s = *%11s(%s + %u);' % (indent, dst, src, pc, offset + adjust);
                return
 
@@ -379,10 +536,9 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
        def printPixelFunction(self, f):
                self.common_func_print_just_header(f)
                
+               f.offset_of( f.parameters[0].name )
                [dim, w, h, d, junk] = f.dimensions()
 
-               offset = f.offset_of_first_parameter()
-
                print '    GLint row_length   = *  (GLint *)(pc +  4);'
 
                if dim < 3:
@@ -398,19 +554,18 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
                        print '    GLint skip_images  = *  (GLint *)(pc + 20);'
                        print '    GLint alignment    = *  (GLint *)(pc + 32);'
 
-               for p in f.parameterIterator(1, 2):
-                       if p.name in [w, h, d, f.image.img_format, f.image.img_type, f.image.img_target]:
-                               self.common_emit_one_arg(p, offset, "pc", "    ", 0 )
+               img = f.images[0]
+               for p in f.parameterIterateGlxSend():
+                       if p.name in [w, h, d, img.img_format, img.img_type, img.img_target]:
+                               self.common_emit_one_arg( p, "pc", "    ", 0 )
                                fixup.append( p.name )
 
-                       offset += p.size()
-
                print ''
 
                self.common_emit_fixups(fixup)
 
                print ''
-               print '    return __glXImageSize(%s, %s, %s, %s, %s, %s,' % (f.image.img_format, f.image.img_type, f.image.img_target, w, h, d )
+               print '    return __glXImageSize(%s, %s, %s, %s, %s, %s,' % (img.img_format, img.img_type, img.img_target, w, h, d )
                print '                          image_height, row_length, skip_images,'
                print '                          skip_rows, alignment);'
                print '}'
@@ -433,38 +588,34 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
                # that is being done, calculate a unique signature for this
                # function.
 
-               for p in f.parameterIterator(1,2):
+               for p in f.parameterIterateGlxSend():
                        if p.is_counter:
-                               param_offsets[ p.name ] = offset
                                fixup.append( p.name )
-                               params.append( [p, offset] )
+                               params.append( p )
                        elif p.counter:
-                               s = p.p_type.size
+                               s = p.size()
                                if s == 0: s = 1
 
-                               sig += "(%u,%u)" % (param_offsets[p.counter], s)
+                               sig += "(%u,%u)" % (f.offset_of(p.counter), s)
                                size += '%s%s' % (plus, p.size_string())
                                plus = ' + '
 
 
-                       offset += p.size()
-
-
                # If the calculated signature matches a function that has
                # already be emitted, don't emit this function.  Instead, add
                # it to the list of function aliases.
 
                if self.counter_sigs.has_key(sig):
                        n = self.counter_sigs[sig];
-                       a = 'ALIAS( %s, %s )' % (f.name, n)
-                       self.aliases.append(a)
+                       alias = [f.name, n]
                else:
+                       alias = None
                        self.counter_sigs[sig] = f.name
 
                        self.common_func_print_just_header(f)
 
-                       for [p, offset] in params:
-                               self.common_emit_one_arg(p, offset, "pc", "    ", 0 )
+                       for p in params:
+                               self.common_emit_one_arg(p, "pc", "    ", 0 )
 
 
                        print ''
@@ -475,7 +626,7 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
                        print '}'
                        print ''
 
-               return
+               return alias
 
 
 def show_usage():
@@ -494,7 +645,7 @@ if __name__ == '__main__':
        file_name = "gl_API.xml"
 
        try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:h:", ["only-get", "only-set", "get-alias-set", "header-tag"])
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:h:", ["only-get", "only-set", "header-tag"])
        except Exception,e:
                show_usage()
 
@@ -511,22 +662,23 @@ if __name__ == '__main__':
                        which_functions = PrintGlxSizeStubs_common.do_get
                elif arg == "--only-set":
                        which_functions = PrintGlxSizeStubs_common.do_set
-               elif arg == "--get-alias-set":
-                       which_functions |= PrintGlxSizeStubs_common.do_get_alias_set
                elif (arg == '-h') or (arg == "--header-tag"):
                        header_tag = val
 
        if mode == "size_c":
-               dh = PrintGlxSizeStubs_c( which_functions )
+               printer = PrintGlxSizeStubs_c( which_functions )
        elif mode == "size_h":
-               dh = PrintGlxSizeStubs_h( which_functions )
+               printer = PrintGlxSizeStubs_h( which_functions )
                if header_tag:
-                       dh.header_tag = header_tag
+                       printer.header_tag = header_tag
        elif mode == "reqsize_c":
-               dh = PrintGlxReqSize_c()
+               printer = PrintGlxReqSize_c()
        elif mode == "reqsize_h":
-               dh = PrintGlxReqSize_h()
+               printer = PrintGlxReqSize_h()
        else:
                show_usage()
 
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
+
+
+       printer.Print( api )
index 4adfaaceb7ea134947052cf2ad2f07dce792a964..ded487bc9224de0bd76208b5cca2f710d737766c 100644 (file)
@@ -1,4 +1,4 @@
-<!ELEMENT OpenGLAPI (category+)>
+<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
 <!ELEMENT category (type*, enum*, function*)*>
 <!ELEMENT type EMPTY>
 <!ELEMENT enum (size*)>
@@ -8,10 +8,24 @@
 <!ELEMENT return EMPTY>
 <!ELEMENT glx EMPTY>
 
+<!ELEMENT xi:include (xi:fallback)?>
+<!ATTLIST xi:include
+          xmlns:xi  CDATA #FIXED "http://www.w3.org/2001/XInclude"
+          href       CDATA #REQUIRED
+          parse      (xml|text) "xml"
+          encoding   CDATA #IMPLIED>
+<!ELEMENT xi:fallback ANY>
+<!ATTLIST xi:fallback
+          xmlns:xi   CDATA #FIXED "http://www.w3.org/2001/XInclude">
+
+
 <!ATTLIST category name                NMTOKEN #REQUIRED
-                   number              NMTOKEN #IMPLIED>
+                   number              NMTOKEN #IMPLIED
+                  window_system       NMTOKEN #IMPLIED>
 <!ATTLIST type     name                NMTOKEN #REQUIRED
                    size                NMTOKEN #REQUIRED
+                  float               (true | false) "false"
+                  unsigned            (true | false) "false"
                    glx_name            NMTOKEN #IMPLIED>
 <!ATTLIST enum     name                NMTOKEN #REQUIRED
                    count               CDATA   #IMPLIED
index 19f204c31728dbcfc254a93286b6b0d256a21f29..49eb6d17e206b75f73d3c892a9d3aae180352dd4 100644 (file)
     <enum name="SCISSOR_BIT"                              value="0x00080000"/>
     <enum name="ALL_ATTRIB_BITS"                          value="0x000FFFFF"/>
 
-    <type name="double"  size="8"  glx_name="FLOAT64"/>
-    <type name="clampd"  size="8"  glx_name="FLOAT64"/>
+    <type name="double"  size="8"  float="true"    glx_name="FLOAT64"/>
+    <type name="clampd"  size="8"  float="true"    glx_name="FLOAT64"/>
 
-    <type name="float"   size="4"  glx_name="FLOAT32"/>
-    <type name="clampf"  size="4"  glx_name="FLOAT32"/>
+    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
+    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
 
-    <type name="int"     size="4"  glx_name="CARD32"/>
-    <type name="uint"    size="4"  glx_name="CARD32"/>
-    <type name="sizei"   size="4"  glx_name="CARD32"/>
-    <type name="enum"    size="4"  glx_name="ENUM"/>
-    <type name="bitfield" size="4" glx_name="CARD32"/>
+    <type name="int"     size="4"                  glx_name="CARD32"/>
+    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="sizei"   size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
+    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
 
-    <type name="short"   size="2"  glx_name="CARD16"/>
-    <type name="ushort"  size="2"  glx_name="CARD16"/>
+    <type name="short"   size="2"                  glx_name="CARD16"/>
+    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
 
-    <type name="byte"    size="1"  glx_name="CARD8"/>
-    <type name="ubyte"   size="1"  glx_name="CARD8"/>
-    <type name="boolean" size="1"  glx_name="CARD8"/>
+    <type name="byte"    size="1"                  glx_name="CARD8"/>
+    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
+    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
     
-    <type name="void"    size="0"/>
+    <type name="void"    size="1"/>
 
     <function name="NewList" offset="0">
         <param name="list" type="GLuint"/>
     <enum name="SRC1_ALPHA"                               value="0x8589"/>
     <enum name="SRC2_ALPHA"                               value="0x858A"/>
 
-    <type name="intptr"   size="4"  glx_name="CARD32"/>
-    <type name="sizeiptr" size="4"  glx_name="CARD32"/>
+    <type name="intptr"   size="4"                  glx_name="CARD32"/>
+    <type name="sizeiptr" size="4"  unsigned="true" glx_name="CARD32"/>
 
     <function name="BindBuffer" alias="BindBufferARB">
         <param name="target" type="GLenum"/>
     <enum name="DYNAMIC_READ_ARB"                         value="0x88E9"/>
     <enum name="DYNAMIC_COPY_ARB"                         value="0x88EA"/>
 
-    <type name="intptrARB" size="4"/>
-    <type name="sizeiptrARB" size="4"/>
+    <type name="intptrARB"                   size="4"/>
+    <type name="sizeiptrARB" unsigned="true" size="4"/>
 
     <function name="BindBufferARB" offset="688">
         <param name="target" type="GLenum"/>
     <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB" count="1" value="0x8B4C"/>
 </category>
 
-<category name="GL_EXT_framebuffer_object" number="310">
-    <enum name="FRAMEBUFFER_EXT" value="0x8D40"/>
-    <enum name="RENDERBUFFER_EXT" value="0x8D41"/>
-    <enum name="STENCIL_INDEX_EXT" value="0x8D45"/>
-    <enum name="STENCIL_INDEX1_EXT" value="0x8D46"/>
-    <enum name="STENCIL_INDEX4_EXT" value="0x8D47"/>
-    <enum name="STENCIL_INDEX8_EXT" value="0x8D48"/>
-    <enum name="STENCIL_INDEX16_EXT" value="0x8D49"/>
-    <enum name="RENDERBUFFER_WIDTH_EXT" value="0x8D42"/>
-    <enum name="RENDERBUFFER_HEIGHT_EXT" value="0x8D43"/>
-    <enum name="RENDERBUFFER_INTERNAL_FORMAT_EXT" value="0x8D44"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT" value="0x8CD0"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT" value="0x8CD1"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT" value="0x8CD2"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT" value="0x8CD3"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT" value="0x8CD4"/>
-    <enum name="COLOR_ATTACHMENT0_EXT" value="0x8CE0"/>
-    <enum name="COLOR_ATTACHMENT1_EXT" value="0x8CE1"/>
-    <enum name="COLOR_ATTACHMENT2_EXT" value="0x8CE2"/>
-    <enum name="COLOR_ATTACHMENT3_EXT" value="0x8CE3"/>
-    <enum name="COLOR_ATTACHMENT4_EXT" value="0x8CE4"/>
-    <enum name="COLOR_ATTACHMENT5_EXT" value="0x8CE5"/>
-    <enum name="COLOR_ATTACHMENT6_EXT" value="0x8CE6"/>
-    <enum name="COLOR_ATTACHMENT7_EXT" value="0x8CE7"/>
-    <enum name="COLOR_ATTACHMENT8_EXT" value="0x8CE8"/>
-    <enum name="COLOR_ATTACHMENT9_EXT" value="0x8CE9"/>
-    <enum name="COLOR_ATTACHMENT10_EXT" value="0x8CEA"/>
-    <enum name="COLOR_ATTACHMENT11_EXT" value="0x8CEB"/>
-    <enum name="COLOR_ATTACHMENT12_EXT" value="0x8CEC"/>
-    <enum name="COLOR_ATTACHMENT13_EXT" value="0x8CED"/>
-    <enum name="COLOR_ATTACHMENT14_EXT" value="0x8CEE"/>
-    <enum name="COLOR_ATTACHMENT15_EXT" value="0x8CEF"/>
-    <enum name="DEPTH_ATTACHMENT_EXT" value="0x8D00"/>
-    <enum name="STENCIL_ATTACHMENT_EXT" value="0x8D20"/>
-    <enum name="FRAMEBUFFER_COMPLETE_EXT" value="0x8CD5"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT" value="0x8CD6"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT" value="0x8CD7"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT" value="0x8CD8"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT" value="0x8CD9"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_EXT" value="0x8CDA"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT" value="0x8CDB"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT" value="0x8CDC"/>
-    <enum name="FRAMEBUFFER_UNSUPPORTED_EXT" value="0x8CDD"/>
-    <enum name="FRAMEBUFFER_STATUS_ERROR_EXT" value="0x8CDE"/>
-    <enum name="FRAMEBUFFER_BINDING_EXT" value="0x8CA6"/>
-    <enum name="RENDERBUFFER_BINDING_EXT" value="0x8CA7"/>
-    <enum name="MAX_COLOR_ATTACHMENTS_EXT" value="0x8CDF"/>
-    <enum name="MAX_RENDERBUFFER_SIZE_EXT" value="0x84E8"/>
-    <enum name="INVALID_FRAMEBUFFER_OPERATION_EXT" value="0x0506"/>
-
-    <function name="IsRenderbufferEXT" offset="796">
-      <param name="renderbuffer" type="GLuint"/>
-      <return type="GLboolean"/>
-    </function>
-
-    <function name="BindRenderbufferEXT" offset="797">
-      <param name="target" type="GLenum"/>
-      <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="DeleteRenderbuffersEXT" offset="798">
-      <param name="n" type="GLsizei"/>
-      <param name="renderbuffers" type="const GLuint *"/>
-    </function>
-
-    <function name="GenRenderbuffersEXT" offset="799">
-      <param name="n" type="GLsizei"/>
-      <param name="renderbuffers" type="GLuint *"/>
-    </function>
-
-    <function name="RenderbufferStorageEXT" offset="800">
-      <param name="target" type="GLenum"/>
-      <param name="internalformat" type="GLenum"/>
-      <param name="width" type="GLsizei"/>
-      <param name="height" type="GLsizei"/>
-    </function>
-
-    <function name="GetRenderbufferParameterivEXT" offset="801">
-      <param name="target" type="GLenum"/>
-      <param name="pname" type="GLenum"/>
-      <param name="params" type="GLint *"/>
-    </function>
-
-    <function name="IsFramebufferEXT" offset="802">
-      <param name="framebuffer" type="GLuint"/>
-      <return type="GLboolean"/>
-    </function>
-
-    <function name="BindFramebufferEXT" offset="803">
-      <param name="target" type="GLenum"/>
-      <param name="framebuffer" type="GLuint"/>
-    </function>
-
-    <function name="DeleteFramebuffersEXT" offset="804">
-      <param name="n" type="GLsizei"/>
-      <param name="framebuffers" type="const GLuint *"/>
-    </function>
-
-    <function name="GenFramebuffersEXT" offset="805">
-      <param name="n" type="GLsizei"/>
-      <param name="framebuffers" type="GLuint *"/>
-    </function>
-
-    <function name="CheckFramebufferStatusEXT" offset="806">
-      <param name="target" type="GLenum"/>
-      <return type="GLenum"/>
-    </function>
-
-    <function name="FramebufferTexture1DEXT" offset="807">
-      <param name="target" type="GLenum"/>
-      <param name="attachment" type="GLenum"/>
-      <param name="textarget" type="GLenum"/>
-      <param name="texture" type="GLuint"/>
-      <param name="level" type="GLint"/>
-    </function>
-
-    <function name="FramebufferTexture2DEXT" offset="808">
-      <param name="target" type="GLenum"/>
-      <param name="attachment" type="GLenum"/>
-      <param name="textarget" type="GLenum"/>
-      <param name="texture" type="GLuint"/>
-      <param name="level" type="GLint"/>
-    </function>
-
-    <function name="FramebufferTexture3DEXT" offset="809">
-      <param name="target" type="GLenum"/>
-      <param name="attachment" type="GLenum"/>
-      <param name="textarget" type="GLenum"/>
-      <param name="texture" type="GLuint"/>
-      <param name="level" type="GLint"/>
-      <param name="zoffset" type="GLint"/>
-    </function>
-
-    <function name="FramebufferRenderbufferEXT" offset="810">
-      <param name="target" type="GLenum"/>
-      <param name="attachment" type="GLenum"/>
-      <param name="renderbuffertarget" type="GLenum"/>
-      <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="GetFramebufferAttachmentParameterivEXT" offset="811">
-      <param name="target" type="GLenum"/>
-      <param name="attachment" type="GLenum"/>
-      <param name="pname" type="GLenum"/>
-      <param name="params" type="GLint *"/>
-    </function>
-
-    <function name="GenerateMipmapEXT" offset="812">
-      <param name="target" type="GLenum"/>
-    </function>
-</category>
-
+<xi:include href="EXT_framebuffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
 <!-- Extension number 307 is a GLX extension. -->
 <!-- Extension number 308 is a GLX extension. -->
index 76a545d90c9ec7e8bfce63c9103bcf1556da66be..9be4849010d4e5723a99a2bb88ee6416c9590af7 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
 # (C) Copyright IBM Corporation 2004
 # All Rights Reserved.
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-import gl_XML
-import license
+import gl_XML, license
 import sys, getopt
 
-class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
-       name = "gl_SPARC_asm.py (from Mesa)"
-
+class PrintGenericStubs(gl_XML.gl_print_base):
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
+               self.name = "gl_SPARC_asm.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
@@ -68,6 +66,8 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
                print '\tnop'
                print '#endif'
                print ''
+               print '#define GL_STUB_ALIAS(fn,alias) GLOBL_FN(fn) ; fn = alias'
+               print ''
                print '.text'
                print '.align 32'
                print 'GLOBL_FN(__glapi_sparc_icache_flush)'
@@ -79,21 +79,31 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
                print '.data'
                print '.align 64'
                print ''
+               return
+
+
+       def printBody(self, api):
                print 'GLOBL_FN(_mesa_sparc_glapi_begin)'
                print '_mesa_sparc_glapi_begin:'
                print ''
-               return
 
-       def printRealFooter(self):
+               for f in api.functionIterateByOffset():
+                       print '\tGL_STUB(gl%s, _gloffset_%s)' % (f.name, f.name)
+
                print ''
                print 'GLOBL_FN(_mesa_sparc_glapi_end)'
                print '_mesa_sparc_glapi_end:'
-               return
+               print ''
+
+
+               for f in api.functionIterateByOffset():
+                       for n in f.entry_points:
+                               if n != f.name:
+                                       print '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name)
 
-       def printFunction(self, f):
-               print '\tGL_STUB(gl%s, _gloffset_%s)' % (f.name, f.real_name)
                return
 
+
 def show_usage():
        print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
        sys.exit(1)
@@ -114,9 +124,11 @@ if __name__ == '__main__':
                        file_name = val
 
        if mode == "generic":
-               dh = PrintGenericStubs()
+               printer = PrintGenericStubs()
        else:
                print "ERROR: Invalid mode \"%s\" specified." % mode
                show_usage()
 
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer.Print( api )
index ac936d156514b8a76a14d62b6e5528ebeee394e2..e4de4cacdd681aa1b6fcd06f33a23d1d61ef9d12 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
 # (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-from xml.sax import saxutils
-from xml.sax import make_parser
-from xml.sax.handler import feature_namespaces
+import libxml2
+import re, sys, string
+import typeexpr
 
-import re
-import sys
 
-def is_attr_true( attrs, name ):
+def parse_GL_API( file_name, factory = None ):
+       doc = libxml2.readFile( file_name, None, libxml2.XML_PARSE_XINCLUDE + libxml2.XML_PARSE_NOBLANKS + libxml2.XML_PARSE_DTDVALID + libxml2.XML_PARSE_DTDATTR + libxml2.XML_PARSE_DTDLOAD + libxml2.XML_PARSE_NOENT )
+       ret = doc.xincludeProcess()
+
+       if not factory:
+               factory = gl_item_factory()
+
+       api = factory.create_item( "api", None, None )
+       api.process_element( doc )
+
+       doc.freeDoc()
+
+       return api
+
+
+def is_attr_true( element, name ):
        """Read a name value from an element's attributes.
        
        The value read from the attribute list must be either 'true' or
@@ -40,7 +53,7 @@ def is_attr_true( attrs, name ):
        value is 'true', non-zero will be returned.  An exception will be
        raised for any other value."""
 
-       value = attrs.get((None, name), "false")
+       value = element.nsProp( name, None )
        if value == "true":
                return 1
        elif value == "false":
@@ -49,713 +62,758 @@ def is_attr_true( attrs, name ):
                raise RuntimeError('Invalid value "%s" for boolean "%s".' % (value, name))
 
 
-def parse_GL_API( handler, file_name ):
-       """Boiler-plate code to create an XML parser and use it.
+class gl_print_base:
+       """Base class of all API pretty-printers.
 
-       Creates an XML parser and uses that parser with the application
-       supplied SAX callback, which should be derived from
-       FilterGLAPISpecBase.
+       In the model-view-controller pattern, this is the view.  Any derived
+       class will want to over-ride the printBody, printRealHader, and
+       printRealFooter methods.  Some derived classes may want to over-ride
+       printHeader and printFooter, or even Print (though this is unlikely).
        """
 
-       parser = make_parser()
-       parser.setFeature(feature_namespaces, 1)
-       parser.setContentHandler( handler )
+       def __init__(self):
+               # Name of the script that is generating the output file.
+               # Every derived class should set this to the name of its
+               # source file.
 
-       handler.printHeader()
+               self.name = "a"
 
-       if not file_name or file_name == "-":
-               parser.parse( sys.stdin )
-       else:
-               parser.parse( file_name )
 
-       handler.printFooter()
-       return
-       
+               # License on the *generated* source file.  This may differ
+               # from the license on the script that is generating the file.
+               # Every derived class should set this to some reasonable
+               # value.
+               #
+               # See license.py for an example of a reasonable value.
 
-class glItem:
-       """Generic class on which all other API entity types are based."""
+               self.license = "The license for this file is unspecified."
 
-       def __init__(self, tag_name, name, context):
-               self.name = name
-               self.category = context.get_category_define()
-               self.context = context
-               self.tag_name = tag_name
                
-               context.append(tag_name, self)
-               return
-       
-       def startElementNS(self, name, qname, attrs):
-               """Generic startElement handler.
+               # The header_tag is the name of the C preprocessor define
+               # used to prevent multiple inclusion.  Typically only
+               # generated C header files need this to be set.  Setting it
+               # causes code to be generated automatically in printHeader
+               # and printFooter.
+
+               self.header_tag = None
+
                
-               The startElement handler is called for all elements except
-               the one that starts the object.  For a foo element, the
-               XML "<foo><bar/></foo>" would cause the startElement handler
-               to be called once, but the endElement handler would be called
-               twice."""
+               # List of file-private defines that must be undefined at the
+               # end of the file.  This can be used in header files to define
+               # names for use in the file, then undefine them at the end of
+               # the header file.
+
+               self.undef_list = []
                return
 
-       def endElementNS(self, name, qname):
-               """Generic endElement handler.
 
-               Generic endElement handler.    Returns 1 if the tag containing
-               the object is complete.  Otherwise 0 is returned.  All
-               derived class endElement handlers should call this method.  If
-               the name of the ending tag is the same as the tag that
-               started this object, the object is assumed to be complete.
-               
-               This fails if a tag can contain another tag with the same
-               name.  The XML "<foo><foo/><bar/></foo>" would fail.  The
-               object would end before the bar tag was processed.
-               
-               The endElement handler is called for every end element
-               associated with an object, even the element that started the
-               object.  See the description of startElement an example."""
+       def Print(self, api):
+               self.printHeader()
+               self.printBody(api)
+               self.printFooter()
+               return
 
-               if name == (None, self.tag_name):
-                       return 1
-               else:
-                       return 0
 
-       def get_category_define(self):
-               return self.category
+       def printHeader(self):
+               """Print the header associated with all files and call the printRealHeader method."""
+
+               print '/* DO NOT EDIT - This file generated automatically by %s script */' \
+                       % (self.name)
+               print ''
+               print '/*'
+               print ' * ' + self.license.replace('\n', '\n * ')
+               print ' */'
+               print ''
+               if self.header_tag:
+                   print '#if !defined( %s )' % (self.header_tag)
+                   print '#  define %s' % (self.header_tag)
+                   print ''
+               self.printRealHeader();
+               return
+
+
+       def printFooter(self):
+               """Print the header associated with all files and call the printRealFooter method."""
+
+               self.printRealFooter()
+
+               if self.undef_list:
+                       print ''
+                       for u in self.undef_list:
+                               print "#  undef %s" % (u)
+
+               if self.header_tag:
+                       print ''
+                       print '#endif /* !defined( %s ) */' % (self.header_tag)
+
+
+       def printRealHeader(self):
+               """Print the "real" header for the created file.
+
+               In the base class, this function is empty.  All derived
+               classes should over-ride this function."""
+               return
+
+
+       def printRealFooter(self):
+               """Print the "real" footer for the created file.
+
+               In the base class, this function is empty.  All derived
+               classes should over-ride this function."""
+               return
+
+
+       def printPure(self):
+               """Conditionally define `PURE' function attribute.
+
+               Conditionally defines a preprocessor macro `PURE' that wraps
+               GCC's `pure' function attribute.  The conditional code can be
+               easilly adapted to other compilers that support a similar
+               feature.
+
+               The name is also added to the file's undef_list.
+               """
+               self.undef_list.append("PURE")
+               print """#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+#    define PURE __attribute__((pure))
+#  else
+#    define PURE
+#  endif"""
+               return
+
+
+       def printFastcall(self):
+               """Conditionally define `FASTCALL' function attribute.
+
+               Conditionally defines a preprocessor macro `FASTCALL' that
+               wraps GCC's `fastcall' function attribute.  The conditional
+               code can be easilly adapted to other compilers that support a
+               similar feature.
+
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append("FASTCALL")
+               print """#  if defined(__i386__) && defined(__GNUC__)
+#    define FASTCALL __attribute__((fastcall))
+#  else
+#    define FASTCALL
+#  endif"""
+               return
+
+
+       def printVisibility(self, S, s):
+               """Conditionally define visibility function attribute.
 
+               Conditionally defines a preprocessor macro name S that wraps
+               GCC's visibility function attribute.  The visibility used is
+               the parameter s.  The conditional code can be easilly adapted
+               to other compilers that support a similar feature.
 
-class glEnum( glItem ):
-       """Subclass of glItem for representing GL enumerants.
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append(S)
+               print """#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+#    define %s  __attribute__((visibility("%s")))
+#  else
+#    define %s
+#  endif""" % (S, s, S)
+               return
+
+
+       def printNoinline(self):
+               """Conditionally define `NOINLINE' function attribute.
+
+               Conditionally defines a preprocessor macro `NOINLINE' that
+               wraps GCC's `noinline' function attribute.  The conditional
+               code can be easilly adapted to other compilers that support a
+               similar feature.
+
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append("NOINLINE")
+               print """#  if defined(__GNUC__)
+#    define NOINLINE __attribute__((noinline))
+#  else
+#    define NOINLINE
+#  endif"""
+               return
+
+
+       def printHaveAlias(self):
+               """Conditionally define `HAVE_ALIAS'.
+
+               Conditionally defines a preprocessor macro `HAVE_ALIAS'.  The
+               existance of this macro can be used to determine whether or
+               not GCC's alias function attribute can be used.
+
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append("HAVE_ALIAS")
+               print """#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+#    define HAVE_ALIAS
+#  endif"""
+               return
+
+
+def real_function_name(element):
+       name = element.nsProp( "name", None )
+       alias = element.nsProp( "alias", None )
        
-       This class is not complete, and is not really used yet."""
+       if alias:
+               return alias
+       else:
+               return name
 
-       def __init__(self, context, name, attrs):
-               self.value = int(attrs.get((None, 'value'), "0x0000"), 0)
 
-               enum_name = "GL_" + attrs.get((None, 'name'), None)
-               glItem.__init__(self, name, enum_name, context)
+class gl_item:
+       def __init__(self, element, context):
+               self.context = context
 
-               temp = attrs.get((None, 'count'), None)
-               self.default_count = 0
-               if temp == "?":
-                       self.default_count = -1
-               elif temp:
-                       try:
-                               c = int(temp)
-                       except Exception,e:
-                               raise RuntimeError('Invalid count value "%s" for enum "%s" in function "%s" when an integer was expected.' % (temp, self.name, n))
+               self.name = element.nsProp( "name", None )
+
+               c = element.parent.nsProp( "name", None )
+               if re.compile("[1-9][0-9]*[.][0-9]+").match(c):
+                       self.category = "GL_VERSION_" + c.replace(".", "_")
+               else:
+                       self.category = c
 
-                       self.default_count = c
                return
 
 
-       def process_attributes(self, attrs):
-               name = attrs.get((None, 'name'), None)
+class gl_type( gl_item ):
+       def __init__(self, element, context):
+               gl_item.__init__(self, element, context)
+               self.size = int( element.nsProp( "size", None ), 0 )
+
+               te = typeexpr.type_expression( None )
+               tn = typeexpr.type_node()
+               tn.size = int( element.nsProp( "size", None ), 0 )
+               tn.integer = not is_attr_true( element, "float" )
+               tn.unsigned = is_attr_true( element, "unsigned" )
+               tn.name = "GL" + self.name
+               te.set_base_type_node( tn )
 
-               temp = attrs.get((None, 'count'), None)
-               if temp == None:
-                       c = self.default_count
+               self.type_expr = te
+               return
+       
+
+       def get_type_expression(self):
+               return self.type_expr
+
+
+class gl_enum( gl_item ):
+       def __init__(self, element, context):
+               gl_item.__init__(self, element, context)
+               self.value = int( element.nsProp( "value", None ), 0 )
+
+               temp = element.nsProp( "count", None )
+               if not temp or temp == "?":
+                       self.default_count = -1
                else:
                        try:
                                c = int(temp)
                        except Exception,e:
                                raise RuntimeError('Invalid count value "%s" for enum "%s" in function "%s" when an integer was expected.' % (temp, self.name, n))
 
-               mode_str = attrs.get((None, 'mode'), "set")
-               if mode_str == "set":
-                       mode = 1
-               elif mode_str == "get":
-                       mode = 0
-               else:
-                       raise RuntimeError("Invalid mode '%s' for function '%s' in enum '%s'." % (mode_str, self.context.name, self.name))
+                       self.default_count = c
+
+               return
 
-               return [name, c, mode]
 
+       def priority(self):
+               """Calculate a 'priority' for this enum name.
+               
+               When an enum is looked up by number, there may be many
+               possible names, but only one is the 'prefered' name.  The
+               priority is used to select which name is the 'best'.
+
+               Highest precedence is given to core GL name.  ARB extension
+               names have the next highest, followed by EXT extension names.
+               Vendor extension names are the lowest.
+               """
 
-class glType( glItem ):
-       """Subclass of glItem for representing GL types."""
+               if self.name.endswith( "_BIT" ):
+                       bias = 1
+               else:
+                       bias = 0
+
+               if self.category.startswith( "GL_VERSION_" ):
+                       priority = 0
+               elif self.category.startswith( "GL_ARB_" ):
+                       priority = 2
+               elif self.category.startswith( "GL_EXT_" ):
+                       priority = 4
+               else:
+                       priority = 6
 
-       def __init__(self, context, name, attrs):
-               self.size = int(attrs.get((None, 'size'), "0"))
-               self.glx_name = attrs.get((None, 'glx_name'), "")
+               return priority + bias
 
-               type_name = "GL" + attrs.get((None, 'name'), None)
-               glItem.__init__(self, name, type_name, context)
 
 
-class glParameter( glItem ):
-       """Parameter of a glFunction."""
-       p_type = None
-       p_type_string = ""
-       p_count = 0
-       counter = None
-       is_output = 0
-       is_counter = 0
-       is_pointer = 0
+class gl_parameter:
+       def __init__(self, element, context):
+               self.name = element.nsProp( "name", None )
 
-       def __init__(self, context, name, attrs):
-               p_name = attrs.get((None, 'name'), None)
-               self.p_type_string = attrs.get((None, 'type'), None)
+               ts = element.nsProp( "type", None )
+               self.type_expr = typeexpr.type_expression( ts, context )
 
-               temp = attrs.get((None, 'variable_param'), None)
+               temp = element.nsProp( "variable_param", None )
                if temp:
                        self.count_parameter_list = temp.split( ' ' )
                else:
                        self.count_parameter_list = []
 
-               self.p_type = context.context.find_type(self.p_type_string)
-               if self.p_type == None:
-                       raise RuntimeError("Unknown type '%s' in function '%s'." % (self.p_type_string, context.name))
-
-
                # The count tag can be either a numeric string or the name of
                # a variable.  If it is the name of a variable, the int(c)
                # statement will throw an exception, and the except block will
                # take over.
 
-               c = attrs.get((None, 'count'), "0")
+               c = element.nsProp( "count", None )
                try: 
-                       self.p_count = int(c)
+                       count = int(c)
+                       self.count = count
                        self.counter = None
                except Exception,e:
-                       self.p_count = 0
+                       count = 1
+                       self.count = 0
                        self.counter = c
+               
+               self.count_scale = int(element.nsProp( "count_scale", None ))
 
-               self.count_scale = int(attrs.get((None, 'count_scale'), "1"))
+               elements = (count * self.count_scale)
+               if elements == 1:
+                       elements = 0
 
-               self.is_counter = is_attr_true( attrs, 'counter' )
-               self.is_output  = is_attr_true( attrs, 'output' )
+               #if ts == "GLdouble":
+               #       print '/* stack size -> %s = %u (before)*/' % (self.name, self.type_expr.get_stack_size())
+               #       print '/* # elements = %u */' % (elements)
+               self.type_expr.set_elements( elements )
+               #if ts == "GLdouble":
+               #       print '/* stack size -> %s = %u (after) */' % (self.name, self.type_expr.get_stack_size())
 
+               self.is_counter = is_attr_true( element, 'counter' )
+               self.is_output  = is_attr_true( element, 'output' )
 
-               # Pixel data has special parameters.
 
-               self.width      = attrs.get((None, 'img_width'),  None)
-               self.height     = attrs.get((None, 'img_height'), None)
-               self.depth      = attrs.get((None, 'img_depth'),  None)
-               self.extent     = attrs.get((None, 'img_extent'), None)
+               # Pixel data has special parameters.
 
-               self.img_xoff   = attrs.get((None, 'img_xoff'),   None)
-               self.img_yoff   = attrs.get((None, 'img_yoff'),   None)
-               self.img_zoff   = attrs.get((None, 'img_zoff'),   None)
-               self.img_woff   = attrs.get((None, 'img_woff'),   None)
+               self.width      = element.nsProp('img_width',  None)
+               self.height     = element.nsProp('img_height', None)
+               self.depth      = element.nsProp('img_depth',  None)
+               self.extent     = element.nsProp('img_extent', None)
 
-               self.img_format = attrs.get((None, 'img_format'), None)
-               self.img_type   = attrs.get((None, 'img_type'),   None)
-               self.img_target = attrs.get((None, 'img_target'), None)
+               self.img_xoff   = element.nsProp('img_xoff',   None)
+               self.img_yoff   = element.nsProp('img_yoff',   None)
+               self.img_zoff   = element.nsProp('img_zoff',   None)
+               self.img_woff   = element.nsProp('img_woff',   None)
 
-               self.img_pad_dimensions = is_attr_true( attrs, 'img_pad_dimensions' )
-               self.img_null_flag      = is_attr_true( attrs, 'img_null_flag' )
-               self.img_send_null      = is_attr_true( attrs, 'img_send_null' )
+               self.img_format = element.nsProp('img_format', None)
+               self.img_type   = element.nsProp('img_type',   None)
+               self.img_target = element.nsProp('img_target', None)
 
-               if self.p_count > 0 or self.counter or self.count_parameter_list:
-                       has_count = 1
-               else:
-                       has_count = 0
+               self.img_pad_dimensions = is_attr_true( element, 'img_pad_dimensions' )
+               self.img_null_flag      = is_attr_true( element, 'img_null_flag' )
+               self.img_send_null      = is_attr_true( element, 'img_send_null' )
 
+               return
 
-               # If there is a * anywhere in the parameter's type, then it
-               # is a pointer.
 
-               if re.compile("[*]").search(self.p_type_string):
-                       # We could do some other validation here.  For
-                       # example, an output parameter should not be const,
-                       # but every non-output parameter should.
+       def compatible(self, other):
+               return 1
 
-                       self.is_pointer = 1;
-               else:
-                       # If a parameter is not a pointer, then there cannot
-                       # be an associated count (either fixed size or
-                       # variable) and the parameter cannot be an output.
 
-                       if has_count or self.is_output:
-                               raise RuntimeError("Non-pointer type has count or is output.")
-                       self.is_pointer = 0;
+       def is_array(self):
+               return self.is_pointer()
 
-               glItem.__init__(self, name, p_name, context)
-               return
 
+       def is_pointer(self):
+               return self.type_expr.is_pointer()
 
-       def is_variable_length_array(self):
-               """Determine if a parameter is a variable length array.
-               
-               A parameter is considered to be a variable length array if
-               its size depends on the value of another parameter that is
-               an enumerant.  The params parameter to glTexEnviv is an
-               example of a variable length array parameter.  Arrays whose
-               size depends on a count variable, such as the lists parameter
-               to glCallLists, are not variable length arrays in this
-               sense."""
 
-               return self.count_parameter_list or self.counter or self.width
+       def is_image(self):
+               if self.width:
+                       return 1
+               else:
+                       return 0
 
 
-       def is_array(self):
-               return self.is_pointer
+       def is_variable_length(self):
+               return len(self.count_parameter_list) or self.counter
 
 
-       def count_string(self):
-               """Return a string representing the number of items
-               
-               Returns a string representing the number of items in a
-               parameter.  For scalar types this will always be "1".  For
-               vector types, it will depend on whether or not it is a
-               fixed length vector (like the parameter of glVertex3fv),
-               a counted length (like the vector parameter of
-               glDeleteTextures), or a general variable length vector."""
-
-               if self.is_array():
-                       if self.count_parameter_list:
-                               return "compsize"
-                       elif self.counter != None:
-                               return self.counter
-                       else:
-                               return str(self.p_count)
+       def is_64_bit(self):
+               count = self.type_expr.get_element_count()
+               if count:
+                       if (self.size() / count) == 8:
+                               return 1
                else:
-                       return "1"
+                       if self.size() == 8:
+                               return 1
 
+               return 0
 
-       def size(self):
-               if self.count_parameter_list or self.counter or self.width or self.is_output:
-                       return 0
-               elif self.p_count == 0:
-                       return self.p_type.size
-               else:
-                       return self.p_type.size * self.p_count * self.count_scale
 
-       def size_string(self):
-               s = self.size()
-               if s == 0:
-                       a_prod = "compsize"
-                       b_prod = self.p_type.size
-
-                       # Handle functions like glCompressedTexImage2D that
-                       # have a counted 'void *' parameter.
-
-                       if b_prod == 0: b_prod = 1
-
-                       if not self.count_parameter_list and self.counter != None:
-                               if self.count_scale > 1:
-                                       a_prod = '(%s * %u)' % (self.counter, self.count_scale)
-                               else:
-                                       a_prod = self.counter
-                       elif self.count_parameter_list and self.counter == None:
-                               pass
-                       elif self.count_parameter_list and self.counter != None:
-                               if self.count_scale > 1:
-                                       b_prod = '(%s * %u)' % (self.counter, self.count_scale)
-                               else:
-                                       b_prod = self.counter
-                       elif self.width:
-                               return "compsize"
-                       else:
-                               raise RuntimeError("Parameter '%s' to function '%s' has size 0." % (self.name, self.context.name))
+       def string(self):
+               return self.type_expr.original_string + " " + self.name
 
-                       return "(%s * %s)" % (a_prod, b_prod)
-               else:
-                       return str(s)
 
+       def type_string(self):
+               return self.type_expr.original_string
 
-class glParameterIterator:
-       """Class to iterate over a list of glParameters.
-       
-       Objects of this class are returned by the parameterIterator method of
-       the glFunction class.  They are used to iterate over the list of
-       parameters to the function."""
-
-       def __init__(self, data):
-               self.data = data
-               self.index = 0
-
-       def __iter__(self):
-               return self
-
-       def next(self):
-               if self.index == len( self.data ):
-                       raise StopIteration
-               i = self.index
-               self.index += 1
-               return self.data[i]
-
-
-class glFunction( glItem ):
-       def __init__(self, context, name, attrs):
-               self.fn_alias = attrs.get((None, 'alias'), None)
-               self.fn_parameters = []
-               self.image = None
-               self.count_parameter_list = []
-               self.fn_return_type = "void"
-
-               temp = attrs.get((None, 'offset'), None)
-               if temp == None or temp == "?":
-                       self.fn_offset = -1
-               else:
-                       self.fn_offset = int(temp)
 
-               fn_name = attrs.get((None, 'name'), None)
-               if self.fn_alias != None:
-                       self.real_name = self.fn_alias
-               else:
-                       self.real_name = fn_name
+       def get_base_type_string(self):
+               return self.type_expr.get_base_name()
 
-               self.parameters_by_name = {}
-               self.variable_length_parameters = []
 
-               glItem.__init__(self, name, fn_name, context)
-               return
+       def get_dimensions(self):
+               if not self.width:
+                       return [ 0, "0", "0", "0", "0" ]
 
+               dim = 1
+               w = self.width
+               h = "1"
+               d = "1"
+               e = "1"
 
-       def parameterIterator(self):
-               return glParameterIterator(self.fn_parameters)
+               if self.height:
+                       dim = 2
+                       h = self.height
 
+               if self.depth:
+                       dim = 3
+                       d = self.depth
 
-       def startElementNS(self, name, qname, attrs):
-               [uri, true_name] = name
-               if true_name == "param":
-                       try:
-                               self.context.factory.create(self, true_name, attrs)
-                       except RuntimeError:
-                               print "Error with parameter '%s' in function '%s'." \
-                                       % (attrs.get((None, 'name'),'(unknown)'), self.name)
-                               raise
-               elif true_name == "return":
-                       self.set_return_type(attrs.get((None, 'type'), None))
+               if self.extent:
+                       dim = 4
+                       e = self.extent
 
+               return [ dim, w, h, d, e ]
 
-       def endElementNS(self, name, qname):
-               """Handle the end of a <function> element.
 
-               At the end of a <function> element, there is some semantic
-               checking that can be done.  This prevents some possible
-               exceptions from being thrown elsewhere in the code.
-               """
-
-               [uri, true_name] = name
-               if true_name == "function":
-                       for p in self.variable_length_parameters:
-                               if p.counter:
-                                       counter = self.parameters_by_name[ p.counter ]
-                                       if not self.parameters_by_name.has_key( p.counter ):
-                                               raise RuntimeError("Parameter '%s' of function '%s' has counter '%s', but function has no such parameter." % (p.name, self.name, p.counter))
-                                       elif not self.parameters_by_name[ p.counter ].is_counter:
-                                               raise RuntimeError("Parameter '%s' of function '%s' has counter '%s', but '%s' is not marked as a counter." % (p.name, self.name, p.counter, p.counter))
+       def get_stack_size(self):
+               return self.type_expr.get_stack_size()
 
-                                       for n in p.count_parameter_list:
-                                               if not self.parameters_by_name.has_key( n ):
-                                                       raise RuntimeError("Parameter '%s' of function '%s' has size parameter '%s', but function has no such parameter." % (p.name, self.name, n))
 
-                       return 1
-               else:
+       def size(self):
+               if self.is_image():
                        return 0
+               else:
+                       return self.type_expr.get_element_size()
 
 
-       def append(self, tag_name, p):
-               if tag_name != "param":
-                       raise RuntimeError("Trying to append '%s' to parameter list of function '%s'." % (tag_name, self.name))
-
-               if p.width:
-                       self.image = p
+       def get_element_count(self):
+               c = self.type_expr.get_element_count()
+               if c == 0:
+                       return 1
 
-               self.fn_parameters.append(p)
-               if p.count_parameter_list != []:
-                       self.count_parameter_list.extend( p.count_parameter_list )
+               return c
 
-               if p.is_variable_length_array():
-                       self.variable_length_parameters.append(p)
 
-               self.parameters_by_name[ p.name ] = p
+       def size_string(self, use_parens = 1):
+               s = self.size()
+               if self.counter or self.count_parameter_list:
+                       list = [ "compsize" ]
 
+                       if self.counter and self.count_parameter_list:
+                               list.append( self.counter )
+                       elif self.counter:
+                               list = [ self.counter ]
 
-       def set_return_type(self, t):
-               self.fn_return_type = t
+                       if s > 1:
+                               list.append( str(s) )
 
+                       if len(list) > 1 and use_parens :
+                               return "(%s)" % (string.join(list, " * "))
+                       else:
+                               return string.join(list, " * ")
 
-       def get_parameter_string(self):
-               arg_string = ""
-               comma = ""
-               for p in glFunction.parameterIterator(self):
-                       arg_string = arg_string + comma + p.p_type_string + " " + p.name
-                       comma = ", "
-
-               if arg_string == "":
-                       arg_string = "void"
-
-               return arg_string
-
-
-class glItemFactory:
-       """Factory to create objects derived from glItem."""
-    
-       def create(self, context, name, attrs):
-               if name == "function":
-                       return glFunction(context, name, attrs)
-               elif name == "type":
-                       return glType(context, name, attrs)
-               elif name == "enum":
-                       return glEnum(context, name, attrs)
-               elif name == "param":
-                       return glParameter(context, name, attrs)
+               elif self.is_image():
+                       return "compsize"
                else:
-                       return None
+                       return str(s)
 
 
-class glFunctionIterator:
-       """Class to iterate over a list of glFunctions
+       def format_string(self):
+               if self.type_expr.original_string == "GLenum":
+                       return "0x%x"
+               else:
+                       return self.type_expr.format_string()
 
-       Objects of this classare returned by
-       FilterGLAPISpecBase::functionIterator.  This default version
-       iterates over the functions in order of dispatch table offset.  All
-       of the "true" functions are iterated first, followed by the alias
-       functions."""
 
-       def __init__(self, context):
-               self.context = context
-               self.keys = context.functions.keys()
-               self.keys.sort()
 
-               self.prevk = -1
-               self.direction = 1
+class gl_function( gl_item ):
+       def __init__(self, element, context):
+               self.context = context
+               self.name = None
 
-               for self.index in range(0, len(self.keys)):
-                       if self.keys[ self.index ] >= 0: break
+               self.entry_points = []
+               self.return_type = "void"
+               self.parameters = []
+               self.offset = -1
+               self.uninitialized = 1
+               self.images = []
 
-               if self.index == len(self.keys):
-                       self.direction = -1
-                       self.index -= 1
+               self.process_element( element )
 
-               self.split = self.index - 1
                return
 
+       
+       def process_element(self, element):
+               name = element.nsProp( "name", None )
+               alias = element.nsProp( "alias", None )
 
-       def __iter__(self):
-               return self
+               self.entry_points.append( name )
+               if alias:
+                       true_name = alias
+               else:
+                       true_name = name
+
+                       # Only try to set the offset when a non-alias
+                       # entry-point is being processes.
+
+                       offset = element.nsProp( "offset", None )
+                       if offset:
+                               try:
+                                       o = int( offset )
+                                       self.offset = o
+                               except Exception, e:
+                                       self.offset = -1
+
+
+               if not self.name:
+                       self.name = true_name
+               elif self.name != true_name:
+                       raise RuntimeError("Function true name redefined.  Was %s, now %s." % (self.name, true_name))
+
+
+               # There are two possible cases.  The first time an entry-point
+               # with data is seen, self.uninitialzied will be 1.  On that
+               # pass, we just fill in the data.  The next time an
+               # entry-point with data is seen, self.uninitialized will be 0.
+               # On that pass we have to make that the new values match the
+               # valuse from the previous entry-point.
+
+               child = element.children
+               if self.uninitialized:
+                       while child:
+                               if child.type == "element":
+                                       if child.name == "return":
+                                               self.return_type = child.nsProp( "type", None )
+                                       elif child.name == "param":
+                                               param = self.context.factory.create_item( "parameter", child, self.context)
+                                               self.parameters.append( param )
+
+                               child = child.next
+               else:
+                       parameters = []
+                       while child:
+                               if child.type == "element":
+                                       if child.name == "return":
+                                               return_type = child.nsProp( "type", None )
+                                               if self.return_type != return_type:
+                                                       raise RuntimeError( "Return type changed in %s.  Was %s, now %s." % (name, self.return_type, return_type))
+                                       elif child.name == "param":
+                                               param = self.context.factory.create_item( "parameter", child, self.context)
+                                               parameters.append( param )
+
+                               child = child.next
+
+                       if len(parameters) != len(self.parameters):
+                               raise RuntimeError( "Parameter count mismatch in %s.  Was %d, now %d." % (name, len(self.parameters), len(parameters)))
+
+                       for j in range(0, len(parameters)):
+                               p1 = parameters[j]
+                               p2 = self.parameters[j]
+                               if not p1.compatible( p2 ):
+                                       raise RuntimeError( 'Parameter type mismatch in %s.  "%s" was "%s", now "%s".' % (name, p2.name, p2.type_expr.original_string, p1.type_expr.original_string))
+
+
+                       # This is done becuase we may hit an alias before we
+                       # hit the "real" entry.  The aliases may not have all
+                       # of the parameter information (e.g., counter,
+                       # variable_param, etc. fields) required to generate
+                       # GLX code.
+
+                       if true_name == name:
+                               self.parameters = parameters
+
+                               for param in self.parameters:
+                                       if param.is_image():
+                                               self.images.append( param )
+
+               if true_name == name:
+                       for param in self.parameters:
+                               if param.is_image():
+                                       self.images.append( param )
+
+               if element.children:
+                       self.uninitialized = 0
 
+               return
 
-       def next(self):
-               if self.index < 0:
-                       raise StopIteration
 
-               k = self.keys[ self.index ]
+       def get_images(self):
+               """Return potentially empty list of input images."""
+               return self.images
 
-               #if self.context.functions[k].fn_alias == None:
-               #       if k != self.prevk + 1:
-               #               print 'Missing offset %d' % (prevk)
-               #       self.prevk = int(k)
 
-               self.index += self.direction
+       def parameterIterator(self):
+               return self.parameters.__iter__();
 
-               if self.index == len(self.keys):
-                       self.index = self.split
-                       self.direction = -1
 
-               return self.context.functions[k]
+       def get_parameter_string(self):
+               list = []
+               for p in self.parameters:
+                       list.append( p.string() )
 
+               if len(list) == 0:
+                       return "void"
+               else:
+                       return string.join(list, ", ")
+
+
+class gl_item_factory:
+       """Factory to create objects derived from gl_item."""
+
+       def create_item(self, item_name, element, context):
+               if item_name == "function":
+                       return gl_function(element, context)
+               if item_name == "type":
+                       return gl_type(element, context)
+               elif item_name == "enum":
+                       return gl_enum(element, context)
+               elif item_name == "parameter":
+                       return gl_parameter(element, context)
+               elif item_name == "api":
+                       return gl_api(self)
+               else:
+                       return None
 
-class FilterGLAPISpecBase(saxutils.XMLFilterBase):
-       name = "a"
-       license = "The license for this file is unspecified."
-       next_alias = -2
-       current_object = None
 
-       def __init__(self):
-               saxutils.XMLFilterBase.__init__(self)
-               self.functions = {}
-               self.types = {}
+class gl_api:
+       def __init__(self, factory):
                self.functions_by_name = {}
-               self.factory = glItemFactory()
-               self.header_tag = None
-               self.undef_list = []
-               self.current_category = ""
-
+               self.enums_by_name = {}
+               self.types_by_name = {}
+               self.category_dict = {}
 
-       def find_type(self,type_name):
-               for t in self.types:
-                       if re.compile(t).search(type_name):
-                               return self.types[t]
-               print "Unable to find base type matching \"%s\"." % (type_name)
-               return None
+               self.factory = factory
 
-
-       def find_function(self,function_name):
-               return self.functions_by_name[function_name]
-
-
-       def functionIterator(self):
-               return glFunctionIterator(self)
-
-
-       def printFunctions(self):
-               for f in self.functionIterator():
-                       self.printFunction(f)
+               typeexpr.create_initial_types()
                return
 
 
-       def printHeader(self):
-               """Print the header associated with all files and call the printRealHeader method."""
+       def process_element(self, doc):
+               element = doc.children
+               while element.type != "element" or element.name != "OpenGLAPI":
+                       element = element.next
 
-               print '/* DO NOT EDIT - This file generated automatically by %s script */' \
-                       % (self.name)
-               print ''
-               print '/*'
-               print ' * ' + self.license.replace('\n', '\n * ')
-               print ' */'
-               print ''
-               if self.header_tag:
-                   print '#if !defined( %s )' % (self.header_tag)
-                   print '#  define %s' % (self.header_tag)
-                   print ''
-               self.printRealHeader();
+               if element:
+                       self.process_OpenGLAPI(element)
                return
 
 
-       def printFooter(self):
-               """Print the header associated with all files and call the printRealFooter method."""
-
-               self.printFunctions()
-               self.printRealFooter()
-               if self.header_tag:
-                       if self.undef_list:
-                               print ''
-                               for u in self.undef_list:
-                                       print "#  undef %s" % (u)
-                       print ''
-                       print '#endif /* !defined( %s ) */' % (self.header_tag)
-
+       def process_OpenGLAPI(self, element):
+               child = element.children
+               while child:
+                       if child.type == "element":
+                               if child.name == "category":
+                                       self.process_category( child )
+                               elif child.name == "OpenGLAPI":
+                                       self.process_OpenGLAPI( child )
 
-       def get_category_define(self):
-               """Convert the category name to the #define that would be found in glext.h"""
+                       child = child.next
 
-               if re.compile("[1-9][0-9]*[.][0-9]+").match(self.current_category):
-                       s = self.current_category
-                       return "GL_VERSION_" + s.replace(".", "_")
-               else:
-                       return self.current_category
+               return
 
 
-       def append(self, object_type, obj):
-               if object_type == "function":
-                       # If the function is not an alias and has a negative
-                       # offset, then we do not need to track it.  These are
-                       # functions that don't have an assigned offset
+       def process_category(self, cat):
+               cat_name = cat.nsProp( "name", None )
+               cat_number = cat.nsProp( "number", None )
 
-                       if not self.functions_by_name.has_key(obj.name):
-                               self.functions_by_name[obj.name] = obj
+               child = cat.children
+               while child:
+                       if child.type == "element":
+                               if child.name == "function":
+                                       func_name = real_function_name( child )
 
-                               if obj.fn_offset >= 0 or obj.fn_alias != None:
-                                       if obj.fn_offset >= 0:
-                                               index = obj.fn_offset
+                                       if self.functions_by_name.has_key( func_name ):
+                                               func = self.functions_by_name[ func_name ]
+                                               func.process_element( child )
                                        else:
-                                               index = self.next_alias
-                                               self.next_alias -= 1
+                                               func = self.factory.create_item( "function", child, self )
+                                               self.functions_by_name[ func_name ] = func
 
-                                       self.functions[index] = obj
-                       else:
-                               # We should do some checking here to make
-                               # sure the functions are an identical match.
-                               pass
+                                       if func_name == child.nsProp("name", None):
+                                               self.category_dict[ func.name ] = [cat_name, cat_number]
 
-               elif object_type == "type":
-                       self.types[obj.name] = obj
+                               elif child.name == "enum":
+                                       enum = self.factory.create_item( "enum", child, self )
+                                       self.enums_by_name[ enum.name ] = enum
+                               elif child.name == "type":
+                                       t = self.factory.create_item( "type", child, self )
+                                       self.types_by_name[ "GL" + t.name ] = t
 
-               return
 
+                       child = child.next
 
-       def startElementNS(self, name, qname, attrs):
-               """Start a new element in the XML stream.
-               
-               Starts a new element.  There are three types of elements that
-               are specially handled by this function.  When a "category"
-               element is encountered, the name of the category is saved.
-               If an element is encountered and no API object is
-               in-progress, a new object is created using the API factory.
-               Any future elements, until that API object is closed, are
-               passed to the current objects startElement method.
-       
-               This paradigm was chosen becuase it allows subclasses of the
-               basic API types (i.e., glFunction, glEnum, etc.) to handle
-               additional XML data, GLX protocol information,  that the base
-               classes do not know about."""
-
-               [uri, true_name] = name
-               if uri is None:
-                       if self.current_object != None:
-                               self.current_object.startElementNS(name, qname, attrs)
-                       elif true_name == "category":
-                               self.current_category = attrs.get((None, 'name'), "")
-                       elif true_name == "include":
-                               self.next_include = attrs.get((None, 'name'), "")
-                       else:
-                               self.current_object = self.factory.create(self, true_name, attrs)
                return
 
 
-       def endElementNS(self, name, qname):
-               if self.current_object != None:
-                       if self.current_object.endElementNS(name, qname):
-                               self.current_object = None
-               elif name == "include":
-                       parser = make_parser()
-                       parser.setFeature(feature_namespaces, 1)
-                       parser.setContentHandler(self)
+       def functionIterateByOffset(self):
+               max_offset = -1
+               for func in self.functions_by_name.itervalues():
+                       if func.offset > max_offset:
+                               max_offset = func.offset
 
-                       f = open(self.next_include)
-                       parser.parse(f)
 
-               return
+               temp = [None for i in range(0, max_offset + 1)]
+               for func in self.functions_by_name.itervalues():
+                       if func.offset != -1:
+                               temp[ func.offset ] = func
 
 
-       def printPure(self):
-               self.undef_list.append("PURE")
-               print """#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-#    define PURE __attribute__((pure))
-#  else
-#    define PURE
-#  endif"""
+               list = []
+               for i in range(0, max_offset + 1):
+                       if temp[i]:
+                               list.append(temp[i])
 
-       def printFastcall(self):
-               self.undef_list.append("FASTCALL")
-               print """#  if defined(__i386__) && defined(__GNUC__)
-#    define FASTCALL __attribute__((fastcall))
-#  else
-#    define FASTCALL
-#  endif"""
+               return list.__iter__();
 
-       def printVisibility(self, S, s):
-               self.undef_list.append(S)
-               print """#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
-#    define %s  __attribute__((visibility("%s")))
-#  else
-#    define %s
-#  endif""" % (S, s, S)
 
-       def printNoinline(self):
-               self.undef_list.append("NOINLINE")
-               print """#  if defined(__GNUC__)
-#    define NOINLINE __attribute__((noinline))
-#  else
-#    define NOINLINE
-#  endif"""
+       def functionIterateAll(self):
+               return self.functions_by_name.itervalues()
 
-       def printHaveAlias(self):
-               self.undef_list.append("HAVE_ALIAS")
-               print """#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-#    define HAVE_ALIAS
-#  endif"""
 
-       def printFunction(self,offset):
-               """Print a single function.
+       def enumIterateByName(self):
+               keys = self.enums_by_name.keys()
+               keys.sort()
+               
+               list = []
+               for enum in keys:
+                       list.append( self.enums_by_name[ enum ] )
 
-               In the base class, this function is empty.  All derived
-               classes should over-ride this function."""
-               return
-    
+               return list.__iter__()
 
-       def printRealHeader(self):
-               """Print the "real" header for the created file.
 
-               In the base class, this function is empty.  All derived
-               classes should over-ride this function."""
-               return
+       def get_category_for_name( self, name ):
+               if self.category_dict.has_key(name):
+                       return self.category_dict[name]
+               else:
+                       return ["<unknown category>", None]
 
 
-       def printRealFooter(self):
-               """Print the "real" footer for the created file.
+       def typeIterate(self):
+               return self.types_by_name.itervalues()
 
-               In the base class, this function is empty.  All derived
-               classes should over-ride this function."""
-               return
+
+       def find_type( self, type_name ):
+               if type_name in self.types_by_name:
+                       return self.types_by_name[ type_name ].type_expr
+               else:
+                       print "Unable to find base type matching \"%s\"." % (type_name)
+                       return None
index 6f30a16d99404a0202c26831c9b19f3f2a25e030..32fca646c157c7d902ee518a47c217c8e6f93262 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
-# (C) Copyright IBM Corporation 2004
+# (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -29,54 +29,57 @@ import gl_XML
 import license
 import sys, getopt
 
-class PrintGlOffsets(gl_XML.FilterGLAPISpecBase):
-       name = "gl_apitemp.py (from Mesa)"
-
+class PrintGlOffsets(gl_XML.gl_print_base):
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_apitemp.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
 
-       def printFunction(self, f):
+               self.undef_list.append( "KEYWORD1" )
+               self.undef_list.append( "KEYWORD2" )
+               self.undef_list.append( "NAME" )
+               self.undef_list.append( "DISPATCH" )
+               self.undef_list.append( "RETURN_DISPATCH" )
+               self.undef_list.append( "DISPATCH_TABLE_NAME" )
+               self.undef_list.append( "UNUSED_TABLE_NAME" )
+               self.undef_list.append( "TABLE_ENTRY" )
+
+
+       def printFunction(self, f, name):
                p_string = ""
                o_string = ""
                t_string = ""
                comma = ""
 
                for p in f.parameterIterator():
-                       cast = ""
-
-                       if p.is_pointer:
-                               t = "%p"
+                       if p.is_pointer():
                                cast = "(const void *) "
-                       elif p.p_type_string == 'GLenum':
-                               t = "0x%x"
-                       elif p.p_type_string in ['GLfloat', 'GLdouble', 'GLclampf', 'GLclampd']:
-                               t = "%f"
                        else:
-                               t = "%d"
+                               cast = ""
 
-                       t_string = t_string + comma + t
+                       t_string = t_string + comma + p.format_string()
                        p_string = p_string + comma + p.name
                        o_string = o_string + comma + cast + p.name
                        comma = ", "
 
 
-               if f.fn_return_type != 'void':
+               if f.return_type != 'void':
                        dispatch = "RETURN_DISPATCH"
                else:
                        dispatch = "DISPATCH"
 
                print 'KEYWORD1 %s KEYWORD2 NAME(%s)(%s)' \
-                       % (f.fn_return_type, f.name, f.get_parameter_string())
+                       % (f.return_type, name, f.get_parameter_string())
                print '{'
                if p_string == "":
                        print '   %s(%s, (), (F, "gl%s();\\n"));' \
-                               % (dispatch, f.real_name, f.name)
+                               % (dispatch, f.name, name)
                else:
                        print '   %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
-                               % (dispatch, f.real_name, p_string, f.name, t_string, o_string)
+                               % (dispatch, f.name, p_string, name, t_string, o_string)
                print '}'
                print ''
                return
@@ -130,7 +133,7 @@ class PrintGlOffsets(gl_XML.FilterGLAPISpecBase):
 
     
 
-       def printInitDispatch(self):
+       def printInitDispatch(self, api):
                print """
 #endif /* defined( NAME ) */
 
@@ -145,9 +148,7 @@ class PrintGlOffsets(gl_XML.FilterGLAPISpecBase):
 #endif
 
 static _glapi_proc DISPATCH_TABLE_NAME[] = {"""
-               for f in self.functionIterator():
-                       if f.fn_offset < 0: continue
-
+               for f in api.functionIterateByOffset():
                        print '   TABLE_ENTRY(%s),' % (f.name)
 
                print '   /* A whole bunch of no-op functions.  These might be called'
@@ -162,7 +163,8 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {"""
                print ''
                return
 
-       def printAliasedTable(self):
+
+       def printAliasedTable(self, api):
                print """
 /*
  * This is just used to silence compiler warnings.
@@ -171,30 +173,27 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {"""
 #ifdef UNUSED_TABLE_NAME
 static _glapi_proc UNUSED_TABLE_NAME[] = {"""
 
-               for f in self.functionIterator():
-                       if f.fn_offset < 0:
-                               print '   TABLE_ENTRY(%s),' % (f.name)
+               for f in api.functionIterateByOffset():
+                       for n in f.entry_points:
+                               if n != f.name:
+                                       print '   TABLE_ENTRY(%s),' % (n)
 
                print '};'
                print '#endif /*UNUSED_TABLE_NAME*/'
                print ''
                return
 
-       def printRealFooter(self):
-               self.printInitDispatch()
-               self.printAliasedTable()
-               print"""
-#undef KEYWORD1
-#undef KEYWORD2
-#undef NAME
-#undef DISPATCH
-#undef RETURN_DISPATCH
-#undef DISPATCH_TABLE_NAME
-#undef UNUSED_TABLE_NAME
-#undef TABLE_ENTRY
-"""
+
+       def printBody(self, api):
+               for func in api.functionIterateByOffset():
+                       for n in func.entry_points:
+                               self.printFunction( func, n )
+
+               self.printInitDispatch(api)
+               self.printAliasedTable(api)
                return
 
+
 def show_usage():
        print "Usage: %s [-f input_file_name]" % sys.argv[0]
        sys.exit(1)
@@ -211,5 +210,7 @@ if __name__ == '__main__':
                if arg == "-f":
                        file_name = val
 
-       dh = PrintGlOffsets()
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlOffsets()
+       printer.Print(api)
index 8520d9e33ea3a4054bdce1ee00761a517c98897a..33d621dcd6f02d253b21b246616118401724040f 100644 (file)
@@ -30,10 +30,10 @@ import license
 import gl_XML
 import sys, getopt
 
-class PrintGlEnums(gl_XML.FilterGLAPISpecBase):
+class PrintGlEnums(gl_XML.gl_print_base):
 
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
 
                self.name = "gl_enums.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
@@ -53,7 +53,7 @@ class PrintGlEnums(gl_XML.FilterGLAPISpecBase):
                print ''
                return
 
-       def printBody(self):
+       def print_code(self):
                print """
 #define Elements(x) sizeof(x)/sizeof(*x)
 
@@ -124,7 +124,10 @@ int _mesa_lookup_enum_by_name( const char *symbol )
 """
                return
 
-       def printFunctions(self):
+
+       def printBody(self, api):
+               self.process_enums( api )
+
                keys = self.enum_table.keys()
                keys.sort()
 
@@ -175,50 +178,21 @@ int _mesa_lookup_enum_by_name( const char *symbol )
                print '};'
 
 
-               self.printBody();
+               self.print_code()
                return
 
 
-       def append(self, object_type, obj):
-               if object_type == "enum":
+       def process_enums(self, api):
+               self.enum_table = {}
+               
+               for obj in api.enumIterateByName():
                        if obj.value not in self.enum_table:
                                self.enum_table[ obj.value ] = []
 
 
-                       # Prevent duplicate names in the enum table.
-
-                       found_it = 0
-                       for [n, junk] in self.enum_table[ obj.value ]:
-                               if n == obj.name:
-                                       found_it = 1
-                                       break
-
-                       if not found_it:
-
-                               # Calculate a "priority" for this enum name.
-                               # When we lookup an enum by number, there may
-                               # be many possible names, but only one can be
-                               # returned.  The priority is used by this
-                               # script to select which name is the "best".
-                               #
-                               # Highest precedence is given to "core" name.
-                               # ARB extension names have the next highest,
-                               # followed by EXT extension names.  Vendor
-                               # extension names are the lowest.
-
-                               if obj.category.startswith( "GL_VERSION_" ):
-                                       priority = 0
-                               elif obj.category.startswith( "GL_ARB_" ):
-                                       priority = 1
-                               elif obj.category.startswith( "GL_EXT_" ):
-                                       priority = 2
-                               else:
-                                       priority = 3
-
-                               self.enum_table[ obj.value ].append( [obj.name, priority] )
-
-               else:
-                       gl_XML.FilterGLAPISpecBase.append(self, object_type, obj)
+                       name = "GL_" + obj.name
+                       priority = obj.priority()
+                       self.enum_table[ obj.value ].append( [name, priority] )
 
 
 def show_usage():
@@ -237,5 +211,7 @@ if __name__ == '__main__':
                if arg == "-f":
                        file_name = val
 
-       dh = PrintGlEnums()
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlEnums()
+       printer.Print( api )
index f47eaa26b30be7567c5319df129e6d268f334051..dfd7fda9d77ad3c6f468a98c24a7d0e9c893fe2c 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
-# (C) Copyright IBM Corporation 2004
+# (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -29,19 +29,20 @@ import gl_XML
 import license
 import sys, getopt
 
-class PrintGlOffsets(gl_XML.FilterGLAPISpecBase):
-       name = "gl_offsets.py (from Mesa)"
-
+class PrintGlOffsets(gl_XML.gl_print_base):
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_offsets.py (from Mesa)"
                self.header_tag = '_GLAPI_OFFSETS_H_'
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+               return
 
-       def printFunction(self, f):
-               if f.fn_offset < 0: return
-               print '#define _gloffset_%s %d' % (f.name, f.fn_offset)
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       print '#define _gloffset_%s %d' % (f.name, f.offset)
 
 
 def show_usage():
@@ -60,5 +61,7 @@ if __name__ == '__main__':
                if arg == "-f":
                        file_name = val
 
-       dh = PrintGlOffsets()
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlOffsets()
+       printer.Print( api )
index 75bb844a335823c138ed7288d0000a934d3614cd..1ad683de5c708f5a6ebef275783fb0bffd095ff4 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
-# (C) Copyright IBM Corporation 2004
+# (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -29,12 +29,12 @@ import license
 import gl_XML
 import sys, getopt
 
-class PrintGlProcs(gl_XML.FilterGLAPISpecBase):
-       name = "gl_procs.py (from Mesa)"
-
+class PrintGlProcs(gl_XML.gl_print_base):
        def __init__(self, long_strings):
+               gl_XML.gl_print_base.__init__(self)
+
                self.long_strings = long_strings
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               self.name = "gl_procs.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
@@ -66,29 +66,43 @@ class PrintGlProcs(gl_XML.FilterGLAPISpecBase):
                print '#undef NAME_FUNC_OFFSET'
                return
 
-       def printFunctionString(self, f):
+       def printFunctionString(self, name):
                if self.long_strings:
-                       print '    "gl%s\\0"' % (f.name)
+                       print '    "gl%s\\0"' % (name)
                else:
                        print "    'g','l',",
-                       for c in f.name:
+                       for c in name:
                                print "'%s'," % (c),
                        
                        print "'\\0',"
 
-       def printFunctionOffset(self, f, offset_of_name):
-               print '    NAME_FUNC_OFFSET( % 5u, gl%s, _gloffset_%s ),' % (offset_of_name, f.name, f.real_name)
-
 
-       def printFunctions(self):
+       def printBody(self, api):
                print ''
                if self.long_strings:
                        print 'static const char gl_string_table[] ='
                else:
                        print 'static const char gl_string_table[] = {'
 
-               for f in self.functionIterator():
-                       self.printFunctionString(f)
+               base_offset = 0
+               table = []
+               for func in api.functionIterateByOffset():
+                       self.printFunctionString( func.name )
+                       table.append((base_offset, func.name, func.name))
+
+                       # The length of the function's name, plus 2 for "gl",
+                       # plus 1 for the NUL.
+
+                       base_offset += len(func.name) + 3
+
+
+               for func in api.functionIterateByOffset():
+                       for n in func.entry_points:
+                               if n != func.name:
+                                       self.printFunctionString( n )
+                                       table.append((base_offset, n, func.name))
+                                       base_offset += len(n) + 3
+
 
                if self.long_strings:
                        print '    ;'
@@ -98,15 +112,8 @@ class PrintGlProcs(gl_XML.FilterGLAPISpecBase):
                print ''
                print 'static const glprocs_table_t static_functions[] = {'
 
-               base_offset = 0
-
-               for f in self.functionIterator():
-                       self.printFunctionOffset(f, base_offset)
-
-                       # The length of the function's name, plus 2 for "gl",
-                       # plus 1 for the NUL.
-
-                       base_offset += len(f.name) + 3
+               for (offset, disp_name, real_name) in table:
+                       print '    NAME_FUNC_OFFSET( % 5u, gl%s, _gloffset_%s ),' % (offset, disp_name, real_name)
 
                print '    NAME_FUNC_OFFSET( -1, NULL, 0 )'
                print '};'
@@ -142,5 +149,7 @@ if __name__ == '__main__':
                        else:
                                show_usage()
 
-       dh = PrintGlProcs( long_string )
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlProcs( long_string )
+       printer.Print( api )
index 7585efa947cb8c255823d9962cbad2412cb3b2bd..a3b49438b70e65923cd170553bbb30bc7efe5dd3 100644 (file)
@@ -29,23 +29,23 @@ import gl_XML
 import license
 import sys, getopt
 
-class PrintGlTable(gl_XML.FilterGLAPISpecBase):
+class PrintGlTable(gl_XML.gl_print_base):
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
 
                self.header_tag = '_GLAPI_TABLE_H_'
                self.name = "gl_table.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+               return
 
 
-       def printFunction(self, f):
-               if f.fn_offset < 0: return
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       arg_string = f.get_parameter_string()
+                       print '   %s (GLAPIENTRYP %s)(%s); /* %d */' % (f.return_type, f.name, arg_string, f.offset)
 
-               arg_string = f.get_parameter_string()
-               print '   %s (GLAPIENTRYP %s)(%s); /* %d */' % \
-                       (f.fn_return_type, f.name, arg_string, f.fn_offset)
 
        def printRealHeader(self):
                print '#ifndef GLAPIENTRYP'
@@ -56,6 +56,7 @@ class PrintGlTable(gl_XML.FilterGLAPISpecBase):
                print '{'
                return
 
+
        def printRealFooter(self):
                print '};'
                return
@@ -77,5 +78,7 @@ if __name__ == '__main__':
                if arg == "-f":
                        file_name = val
 
-       dh = PrintGlTable()
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlTable()
+       printer.Print( api )
index 85a5c2be0500d0bfe6903b5e27a3c712283c694a..caaa9e83e5333b9a341cdb5cefbfb64b82fec6a2 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/python2
+#!/usr/bin/env python
 
 # (C) Copyright IBM Corporation 2004, 2005
 # All Rights Reserved.
 # Authors:
 #    Ian Romanick <idr@us.ibm.com>
 
-import gl_XML
-import license
+import gl_XML, license
 import sys, getopt
 
-class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
-       name = "gl_x86_asm.py (from Mesa)"
+class PrintGenericStubs(gl_XML.gl_print_base):
 
        def __init__(self):
-               gl_XML.FilterGLAPISpecBase.__init__(self)
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_x86_asm.py (from Mesa)"
                self.license = license.bsd_license_template % ( \
 """Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
 (C) Copyright IBM Corporation 2004, 2005""", "BRIAN PAUL, IBM")
+               return
 
 
        def get_stack_size(self, f):
                size = 0
                for p in f.parameterIterator():
-                       t = p.p_type
-
-                       if p.is_array() or t.size != 8:
-                               size += 4
-                       else:
-                               size += 8
+                       size += p.get_stack_size()
 
                return size
 
+
        def printRealHeader(self):
                print '#include "assyntax.h"'
                print '#include "glapioffsets.h"'
@@ -183,6 +180,7 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
                print ''
                return
 
+
        def printRealFooter(self):
                print ''
                print '\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)'
@@ -206,16 +204,24 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
                print '#endif  /* __WIN32__ */'
                return
 
-       def printFunction(self, f):
-               stack = self.get_stack_size(f)
 
-               alt = "%s@%u" % (f.name, stack)
-               if f.fn_alias == None:
-                       print '\tGL_STUB(%s, _gloffset_%s, %s)' % (f.name, f.real_name, alt)
-               else:
-                       alias_alt = "%s@%u" % (f.real_name, stack)
-                       print '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % \
-                           (f.name, f.real_name, alt, f.real_name, alias_alt)
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       stack = self.get_stack_size(f)
+
+                       alt = "%s@%u" % (f.name, stack)
+                       print '\tGL_STUB(%s, _gloffset_%s, %s)' % (f.name, f.name, alt)
+
+               for f in api.functionIterateByOffset():
+                       stack = self.get_stack_size(f)
+
+                       alt = "%s@%u" % (f.name, stack)
+
+                       for n in f.entry_points:
+                               if n != f.name:
+                                       alt2 = "%s@%u" % (n, stack)
+                                       print '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, f.name, alt)
+
                return
 
 def show_usage():
@@ -238,9 +244,11 @@ if __name__ == '__main__':
                        file_name = val
 
        if mode == "generic":
-               dh = PrintGenericStubs()
+               printer = PrintGenericStubs()
        else:
                print "ERROR: Invalid mode \"%s\" specified." % mode
                show_usage()
 
-       gl_XML.parse_GL_API( dh, file_name )
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer.Print( api )
index fd68cb8a554ff7dd2d7b0e2b1c11977a520647ab..7cc0cdd739907d94e7747c87907969f5fb456f13 100644 (file)
@@ -1605,11 +1605,21 @@ KEYWORD1 void KEYWORD2 NAME(ArrayElement)(GLint i)
    DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);\n", i));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i)
+{
+   DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i));
+}
+
 KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture)
 {
    DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture));
 }
 
+KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture)
+{
+   DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
    DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
@@ -1625,6 +1635,11 @@ KEYWORD1 void KEYWORD2 NAME(DrawArrays)(GLenum mode, GLint first, GLsizei count)
    DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArrays(0x%x, %d, %d);\n", mode, first, count));
 }
 
+KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
+{
+   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count));
+}
+
 KEYWORD1 void KEYWORD2 NAME(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
 {
    DISPATCH(DrawElements, (mode, count, type, indices), (F, "glDrawElements(0x%x, %d, 0x%x, %p);\n", mode, count, type, (const void *) indices));
@@ -1690,26 +1705,51 @@ KEYWORD1 void KEYWORD2 NAME(CopyTexImage1D)(GLenum target, GLint level, GLenum i
    DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+{
+   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
 {
    DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
 {
    DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1D(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
    DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2D(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
+}
+
 KEYWORD1 void KEYWORD2 NAME(DeleteTextures)(GLsizei n, const GLuint * textures)
 {
    DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%d, %p);\n", n, (const void *) textures));
 }
 
+KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures)
+{
+   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures));
+}
+
 KEYWORD1 void KEYWORD2 NAME(GenTextures)(GLsizei n, GLuint * textures)
 {
    DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%d, %p);\n", n, (const void *) textures));
@@ -1720,6 +1760,11 @@ KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params)
    DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params)
+{
+   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params));
+}
+
 KEYWORD1 GLboolean KEYWORD2 NAME(IsTexture)(GLuint texture)
 {
    RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);\n", texture));
@@ -1730,16 +1775,31 @@ KEYWORD1 void KEYWORD2 NAME(PrioritizeTextures)(GLsizei n, const GLuint * textur
    DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
 }
 
+KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
+{
+   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
+}
+
 KEYWORD1 void KEYWORD2 NAME(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
 {
    DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
 }
 
+KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
+}
+
 KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
 {
    DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
 }
 
+KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
+}
+
 KEYWORD1 void KEYWORD2 NAME(PopClientAttrib)(void)
 {
    DISPATCH(PopClientAttrib, (), (F, "glPopClientAttrib();\n"));
@@ -1755,36 +1815,76 @@ KEYWORD1 void KEYWORD2 NAME(BlendColor)(GLclampf red, GLclampf green, GLclampf b
    DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
 }
 
+KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
 KEYWORD1 void KEYWORD2 NAME(BlendEquation)(GLenum mode)
 {
    DISPATCH(BlendEquation, (mode), (F, "glBlendEquation(0x%x);\n", mode));
 }
 
+KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode)
+{
+   DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode));
+}
+
 KEYWORD1 void KEYWORD2 NAME(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
 {
    DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElements(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
 }
 
+KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
+{
+   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
 {
    DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTable(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+{
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+{
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
 {
    DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params)
 {
    DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
 {
    DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTable(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+}
+
 KEYWORD1 void KEYWORD2 NAME(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table)
 {
    DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTable(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
@@ -1805,51 +1905,101 @@ KEYWORD1 void KEYWORD2 NAME(ColorSubTable)(GLenum target, GLsizei start, GLsizei
    DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTable(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
+{
+   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
 {
    DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTable(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
 {
    DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1D(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
+{
+   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
 {
    DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
+{
+   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params)
 {
    DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterf(0x%x, 0x%x, %f);\n", target, pname, params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params)
+{
+   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
 {
    DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params)
 {
    DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteri(0x%x, 0x%x, %d);\n", target, pname, params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params)
+{
+   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params)
 {
    DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
 {
    DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1D(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
 {
    DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2D(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
+}
+
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image)
 {
    DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilter(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
@@ -1875,6 +2025,11 @@ KEYWORD1 void KEYWORD2 NAME(SeparableFilter2D)(GLenum target, GLenum internalfor
    DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
 }
 
+KEYWORD1 void KEYWORD2 NAME(SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
+{
+   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
+}
+
 KEYWORD1 void KEYWORD2 NAME(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
 {
    DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogram(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
@@ -1910,226 +2065,456 @@ KEYWORD1 void KEYWORD2 NAME(Histogram)(GLenum target, GLsizei width, GLenum inte
    DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogram(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
 }
 
+KEYWORD1 void KEYWORD2 NAME(HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+{
+   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
+}
+
 KEYWORD1 void KEYWORD2 NAME(Minmax)(GLenum target, GLenum internalformat, GLboolean sink)
 {
    DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmax(0x%x, 0x%x, %d);\n", target, internalformat, sink));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink)
+{
+   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ResetHistogram)(GLenum target)
 {
    DISPATCH(ResetHistogram, (target), (F, "glResetHistogram(0x%x);\n", target));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ResetHistogramEXT)(GLenum target)
+{
+   DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ResetMinmax)(GLenum target)
 {
    DISPATCH(ResetMinmax, (target), (F, "glResetMinmax(0x%x);\n", target));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ResetMinmaxEXT)(GLenum target)
+{
+   DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target));
+}
+
 KEYWORD1 void KEYWORD2 NAME(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
 {
    DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
 }
 
+KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
+}
+
 KEYWORD1 void KEYWORD2 NAME(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
 {
    DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
 }
 
+KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
+}
+
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
    DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
 }
 
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture)
+{
+   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ActiveTextureARB)(GLenum texture)
 {
    DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTextureARB(0x%x);\n", texture));
 }
 
+KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture)
+{
+   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ClientActiveTextureARB)(GLenum texture)
 {
    DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTextureARB(0x%x);\n", texture));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s)
+{
+   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dARB)(GLenum target, GLdouble s)
 {
    DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1dARB(0x%x, %f);\n", target, s));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dvARB)(GLenum target, const GLdouble * v)
 {
    DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s)
+{
+   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fARB)(GLenum target, GLfloat s)
 {
    DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1fARB(0x%x, %f);\n", target, s));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
 {
    DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s)
+{
+   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iARB)(GLenum target, GLint s)
 {
    DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1iARB(0x%x, %d);\n", target, s));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1ivARB)(GLenum target, const GLint * v)
 {
    DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1ivARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s)
+{
+   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sARB)(GLenum target, GLshort s)
 {
    DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1sARB(0x%x, %d);\n", target, s));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1svARB)(GLenum target, const GLshort * v)
 {
    DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1svARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
+{
+   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t)
 {
    DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2dARB(0x%x, %f, %f);\n", target, s, t));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dvARB)(GLenum target, const GLdouble * v)
 {
    DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
+{
+   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t)
 {
    DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2fARB(0x%x, %f, %f);\n", target, s, t));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
 {
    DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
+{
+   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t)
 {
    DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2iARB(0x%x, %d, %d);\n", target, s, t));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2ivARB)(GLenum target, const GLint * v)
 {
    DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2ivARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
+{
+   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t)
 {
    DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2sARB(0x%x, %d, %d);\n", target, s, t));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2svARB)(GLenum target, const GLshort * v)
 {
    DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2svARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
+{
+   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
 {
    DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3dARB(0x%x, %f, %f, %f);\n", target, s, t, r));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dvARB)(GLenum target, const GLdouble * v)
 {
    DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
+{
+   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
 {
    DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3fARB(0x%x, %f, %f, %f);\n", target, s, t, r));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
 {
    DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
+{
+   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r)
 {
    DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3iARB(0x%x, %d, %d, %d);\n", target, s, t, r));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3ivARB)(GLenum target, const GLint * v)
 {
    DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3ivARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
+{
+   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r)
 {
    DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3sARB(0x%x, %d, %d, %d);\n", target, s, t, r));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3svARB)(GLenum target, const GLshort * v)
 {
    DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3svARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+{
+   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
 {
    DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4dARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dvARB)(GLenum target, const GLdouble * v)
 {
    DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+{
+   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
 {
    DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4fARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
 {
    DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
+{
+   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q)
 {
    DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4iARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4ivARB)(GLenum target, const GLint * v)
 {
    DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4ivARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+{
+   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
 {
    DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4sARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4svARB)(GLenum target, const GLshort * v)
 {
    DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4svARB(0x%x, %p);\n", target, (const void *) v));
 }
 
+KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m)
+{
+   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m));
+}
+
 KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixfARB)(const GLfloat * m)
 {
    DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p);\n", (const void *) m));
 }
 
+KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
+{
+   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m));
+}
+
 KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixdARB)(const GLdouble * m)
 {
    DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixdARB(%p);\n", (const void *) m));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m)
+{
+   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixfARB)(const GLfloat * m)
 {
    DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixfARB(%p);\n", (const void *) m));
 }
 
+KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m)
+{
+   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m));
+}
+
 KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixdARB)(const GLdouble * m)
 {
    DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixdARB(%p);\n", (const void *) m));
 }
 
+KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert)
+{
+   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert));
+}
+
 KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert)
 {
    DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert));
@@ -2140,6 +2525,11 @@ KEYWORD1 void KEYWORD2 NAME(DrawBuffersARB)(GLsizei n, const GLenum * bufs)
    DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersARB(%d, %p);\n", n, (const void *) bufs));
 }
 
+KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
+{
+   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
+}
+
 KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
 {
    DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias));
@@ -2305,11 +2695,21 @@ KEYWORD1 void KEYWORD2 NAME(SampleMaskSGIS)(GLclampf value, GLboolean invert)
    DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert));
 }
 
+KEYWORD1 void KEYWORD2 NAME(SampleMaskEXT)(GLclampf value, GLboolean invert)
+{
+   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskEXT(%f, %d);\n", value, invert));
+}
+
 KEYWORD1 void KEYWORD2 NAME(SamplePatternSGIS)(GLenum pattern)
 {
    DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern));
 }
 
+KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern)
+{
+   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern));
+}
+
 KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
 {
    DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
@@ -2360,16 +2760,46 @@ KEYWORD1 void KEYWORD2 NAME(SpriteParameterivSGIX)(GLenum pname, const GLint * p
    DISPATCH(SpriteParameterivSGIX, (pname, params), (F, "glSpriteParameterivSGIX(0x%x, %p);\n", pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(PointParameterf)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterf(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param));
+}
+
 KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param)
 {
    DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param));
 }
 
+KEYWORD1 void KEYWORD2 NAME(PointParameterfSGIS)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfv)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params));
+}
+
 KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params)
 {
    DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
 }
 
+KEYWORD1 void KEYWORD2 NAME(PointParameterfvSGIS)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
+}
+
 KEYWORD1 GLint KEYWORD2 NAME(GetInstrumentsSGIX)(void)
 {
    RETURN_DISPATCH(GetInstrumentsSGIX, (), (F, "glGetInstrumentsSGIX();\n"));
@@ -2635,2409 +3065,1979 @@ KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void)
    DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();\n"));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2d)(GLdouble x, GLdouble y)
 {
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y));
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2d(%f, %f);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
 {
-   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y)
 {
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y));
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dv)(const GLdouble * v)
 {
-   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * v)
 {
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y));
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v)
 {
-   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2f)(GLfloat x, GLfloat y)
 {
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y));
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2f(%f, %f);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
 {
-   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y)
 {
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z));
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fv)(const GLfloat * v)
 {
-   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * v)
 {
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z));
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v)
 {
-   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2i)(GLint x, GLint y)
 {
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z));
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2i(%d, %d);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
 {
-   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y)
 {
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z));
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iv)(const GLint * v)
 {
-   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2iv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * v)
 {
-   DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v)
 {
-   DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2s)(GLshort x, GLshort y)
 {
-   DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2s(%d, %d);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
 {
-   DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y)
 {
-   DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sv)(const GLshort * v)
 {
-   DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2sv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * v)
 {
-   DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v)
 {
-   DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v));
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3d(%f, %f, %f);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(IndexMaterialEXT)(GLenum face, GLenum mode)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(IndexMaterialEXT, (face, mode), (F, "glIndexMaterialEXT(0x%x, 0x%x);\n", face, mode));
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(IndexFuncEXT)(GLenum func, GLclampf ref)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(IndexFuncEXT, (func, ref), (F, "glIndexFuncEXT(0x%x, %f);\n", func, ref));
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dv)(const GLdouble * v)
 {
-   DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count));
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * v)
 {
-   DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n"));
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CullParameterdvEXT)(GLenum pname, GLdouble * params)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v)
 {
-   DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CullParameterfvEXT)(GLenum pname, GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3f(%f, %f, %f);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(HintPGI)(GLenum target, GLint mode)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(HintPGI, (target, mode), (F, "glHintPGI(0x%x, %d);\n", target, mode));
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fv)(const GLfloat * v)
 {
-   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord));
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * v)
 {
-   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord));
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v)
 {
-   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord));
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3i)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3i(%d, %d, %d);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(GetColorTableEXT, (target, format, type, data), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) data));
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(GetColorTableParameterivEXT, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iv)(const GLint * v)
 {
-   DISPATCH(GetColorTableParameterfvEXT, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3iv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(TbufferMask3DFX)(GLuint mask)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * v)
 {
-   DISPATCH(TbufferMask3DFX, (mask), (F, "glTbufferMask3DFX(%d);\n", mask));
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v)
 {
-   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3s)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v)
 {
-   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * v)
 {
-   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svARB(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img)
+KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v)
 {
-   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img));
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v)
 {
-   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v));
+   DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v)
 {
-   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (const void *) v));
+   DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
 {
-   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v)
 {
-   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (const void *) v));
+   DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
 {
-   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
 {
-   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v));
+   DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
+KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
 {
-   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
 {
-   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v));
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
+KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
 {
-   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v)
+KEYWORD1 void KEYWORD2 NAME(IndexMaterialEXT)(GLenum face, GLenum mode)
 {
-   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v));
+   DISPATCH(IndexMaterialEXT, (face, mode), (F, "glIndexMaterialEXT(0x%x, 0x%x);\n", face, mode));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
+KEYWORD1 void KEYWORD2 NAME(IndexFuncEXT)(GLenum func, GLclampf ref)
 {
-   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(IndexFuncEXT, (func, ref), (F, "glIndexFuncEXT(0x%x, %f);\n", func, ref));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v)
+KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count)
 {
-   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v));
+   DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
+KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void)
 {
-   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n"));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v)
+KEYWORD1 void KEYWORD2 NAME(CullParameterdvEXT)(GLenum pname, GLdouble * params)
 {
-   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v));
+   DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+KEYWORD1 void KEYWORD2 NAME(CullParameterfvEXT)(GLenum pname, GLfloat * params)
 {
-   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+   DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences)
+KEYWORD1 void KEYWORD2 NAME(HintPGI)(GLenum target, GLint mode)
 {
-   RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences));
+   DISPATCH(HintPGI, (target, mode), (F, "glHintPGI(0x%x, %d);\n", target, mode));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint id)
+KEYWORD1 void KEYWORD2 NAME(FogCoordf)(GLfloat coord)
 {
-   DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramNV(0x%x, %d);\n", target, id));
+   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordf(%f);\n", coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * ids)
+KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
 {
-   DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) ids));
+   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(FogCoordfv)(const GLfloat * coord)
 {
-   DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params));
+   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfv(%p);\n", (const void *) coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * ids)
+KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord)
 {
-   DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) ids));
+   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
+KEYWORD1 void KEYWORD2 NAME(FogCoordd)(GLdouble coord)
 {
-   DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
+   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoordd(%f);\n", coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord)
 {
-   DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
+   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(FogCoorddv)(const GLdouble * coord)
 {
-   DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddv(%p);\n", (const void *) coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program)
+KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord)
 {
-   DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program));
+   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);\n", target, address, pname, (const void *) params));
+   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params)
+KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * data)
 {
-   DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+   DISPATCH(GetColorTableEXT, (target, format, type, data), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+   DISPATCH(GetColorTableParameterivEXT, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer)
+KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
+   DISPATCH(GetColorTableParameterfvEXT, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint id)
+KEYWORD1 void KEYWORD2 NAME(TbufferMask3DFX)(GLuint mask)
 {
-   RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramNV(%d);\n", id));
+   DISPATCH(TbufferMask3DFX, (mask), (F, "glTbufferMask3DFX(%d);\n", mask));
 }
 
-KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program));
+   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(ProgramParameter4dNV, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(ProgramParameter4dvNV, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
+   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(ProgramParameter4fNV, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(ProgramParameter4fvNV, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
+   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
+   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
+   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids));
+   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform));
+   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
+   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dARB)(GLuint index, GLdouble x)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1dARB(%d, %f);\n", index, x));
+   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvARB)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fARB)(GLuint index, GLfloat x)
+KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img)
 {
-   DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1fARB(%d, %f);\n", index, x));
+   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img)
 {
-   DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sARB)(GLuint index, GLshort x)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
 {
-   DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1sARB(%d, %d);\n", index, x));
+   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3b(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svARB)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
 {
-   DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1svARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bv)(const GLbyte * v)
 {
-   DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2dARB(%d, %f, %f);\n", index, x, y));
+   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvARB)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v)
 {
-   DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
 {
-   DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2fARB(%d, %f, %f);\n", index, x, y));
+   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3d(%f, %f, %f);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
 {
-   DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dv)(const GLdouble * v)
 {
-   DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2sARB(%d, %d, %d);\n", index, x, y));
+   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svARB)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v)
 {
-   DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2svARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue)
 {
-   DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3dARB(%d, %f, %f, %f);\n", index, x, y, z));
+   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3f(%f, %f, %f);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvARB)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
 {
-   DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fv)(const GLfloat * v)
 {
-   DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3fARB(%d, %f, %f, %f);\n", index, x, y, z));
+   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v)
 {
-   DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3i)(GLint red, GLint green, GLint blue)
 {
-   DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3sARB(%d, %d, %d, %d);\n", index, x, y, z));
+   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3i(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svARB)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
 {
-   DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3svARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iv)(const GLint * v)
 {
-   DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4dARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3iv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvARB)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v)
 {
-   DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
 {
-   DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4fARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3s(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
 {
-   DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sv)(const GLshort * v)
 {
-   DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4sARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3sv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svARB)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v)
 {
-   DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4svARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
 {
-   DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4NubARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ub(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubvARB)(GLuint index, const GLubyte * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
 {
-   DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4NubvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubv)(const GLubyte * v)
 {
-   DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v)
 {
-   DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
 {
-   DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3ui(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
 {
-   DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiv)(const GLuint * v)
 {
-   DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uiv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v)
 {
-   DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
 {
-   DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3us(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
 {
-   DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usv)(const GLushort * v)
 {
-   DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usv(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v)
 {
-   DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v));
+   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v)
+KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences)
 {
-   DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v));
+   RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint params)
+KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint id)
 {
-   DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteriNV(0x%x, %d);\n", pname, params));
+   DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramARB(0x%x, %d);\n", target, id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * params)
+KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint id)
 {
-   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramNV(0x%x, %d);\n", target, id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * ids)
 {
-   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
+   DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * ids)
 {
-   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElementsEXT(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
+   DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ActiveStencilFaceEXT)(GLenum face)
+KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
 {
-   DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face));
+   DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteFencesNV)(GLsizei n, const GLuint * fences)
+KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * ids)
 {
-   DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences));
+   DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenFencesNV)(GLsizei n, GLuint * fences)
+KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * ids)
 {
-   DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences));
+   DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsFenceNV)(GLuint fence)
+KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
 {
-   RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence));
+   DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(TestFenceNV)(GLuint fence)
+KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params)
 {
-   RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence));
+   DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetFenceivNV)(GLuint fence, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params)
 {
-   DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params));
+   DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FinishFenceNV)(GLuint fence)
+KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program)
 {
-   DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence));
+   DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SetFenceNV)(GLuint fence, GLenum condition)
+KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params)
 {
-   DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition));
+   DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);\n", target, address, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params)
 {
-   DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params)
 {
-   DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params)
 {
-   DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** pointer)
 {
-   DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer)
 {
-   DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint id)
 {
-   DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v));
+   RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramARB(%d);\n", id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint id)
 {
-   DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v));
+   RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramNV(%d);\n", id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
 {
-   DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(ProgramParameter4dNV, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params)
 {
-   DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v));
+   DISPATCH(ProgramParameter4dvNV, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointerARB(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
+   DISPATCH(ProgramParameter4fNV, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params)
 {
-   DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index));
+   DISPATCH(ProgramParameter4fvNV, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params)
 {
-   DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index));
+   DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string)
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params)
 {
-   DISPATCH(ProgramStringARB, (target, format, len, string), (F, "glProgramStringARB(0x%x, 0x%x, %d, %p);\n", target, format, len, (const void *) string));
+   DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids)
 {
-   DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+   DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
-{
-   DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
-{
-   DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(ProgramLocalParameter4dARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
-{
-   DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
-{
-   DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
-{
-   DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
-{
-   DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
-{
-   DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
-{
-   DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string)
-{
-   DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramNamedParameter4fNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4fNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(ProgramNamedParameter4dNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4dNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)
-{
-   DISPATCH(ProgramNamedParameter4fvNV, (id, len, name, v), (F, "glProgramNamedParameter4fvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)
-{
-   DISPATCH(ProgramNamedParameter4dvNV, (id, len, name, v), (F, "glProgramNamedParameter4dvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)
-{
-   DISPATCH(GetProgramNamedParameterfvNV, (id, len, name, params), (F, "glGetProgramNamedParameterfvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)
-{
-   DISPATCH(GetProgramNamedParameterdvNV, (id, len, name, params), (F, "glGetProgramNamedParameterdvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer)
-{
-   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)
-{
-   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
-{
-   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteBuffersARB)(GLsizei n, const GLuint * buffer)
-{
-   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenBuffersARB)(GLsizei n, GLuint * buffer)
-{
-   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params)
-{
-   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)
-{
-   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer)
-{
-   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer));
-}
-
-KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access)
-{
-   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target)
-{
-   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DepthBoundsEXT)(GLclampd zmin, GLclampd zmax)
-{
-   DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenQueriesARB)(GLsizei n, GLuint * ids)
-{
-   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteQueriesARB)(GLsizei n, const GLuint * ids)
-{
-   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id)
-{
-   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id)
-{
-   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target)
-{
-   DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params)
-{
-   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params)
-{
-   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)
-{
-   DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride)
-{
-   DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA)
-{
-   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteObjectARB)(GLhandleARB obj)
-{
-   DISPATCH(DeleteObjectARB, (obj), (F, "glDeleteObjectARB(%d);\n", obj));
-}
-
-KEYWORD1 GLhandleARB KEYWORD2 NAME(GetHandleARB)(GLenum pname)
-{
-   RETURN_DISPATCH(GetHandleARB, (pname), (F, "glGetHandleARB(0x%x);\n", pname));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj)
-{
-   DISPATCH(DetachObjectARB, (containerObj, attachedObj), (F, "glDetachObjectARB(%d, %d);\n", containerObj, attachedObj));
-}
-
-KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateShaderObjectARB)(GLenum shaderType)
-{
-   RETURN_DISPATCH(CreateShaderObjectARB, (shaderType), (F, "glCreateShaderObjectARB(0x%x);\n", shaderType));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ShaderSourceARB)(GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint * length)
-{
-   DISPATCH(ShaderSourceARB, (shaderObj, count, string, length), (F, "glShaderSourceARB(%d, %d, %p, %p);\n", shaderObj, count, (const void *) string, (const void *) length));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompileShaderARB)(GLhandleARB shaderObj)
-{
-   DISPATCH(CompileShaderARB, (shaderObj), (F, "glCompileShaderARB(%d);\n", shaderObj));
-}
-
-KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateProgramObjectARB)(void)
-{
-   RETURN_DISPATCH(CreateProgramObjectARB, (), (F, "glCreateProgramObjectARB();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj)
-{
-   DISPATCH(AttachObjectARB, (containerObj, obj), (F, "glAttachObjectARB(%d, %d);\n", containerObj, obj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LinkProgramARB)(GLhandleARB programObj)
-{
-   DISPATCH(LinkProgramARB, (programObj), (F, "glLinkProgramARB(%d);\n", programObj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UseProgramObjectARB)(GLhandleARB programObj)
-{
-   DISPATCH(UseProgramObjectARB, (programObj), (F, "glUseProgramObjectARB(%d);\n", programObj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ValidateProgramARB)(GLhandleARB programObj)
-{
-   DISPATCH(ValidateProgramARB, (programObj), (F, "glValidateProgramARB(%d);\n", programObj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1fARB)(GLint location, GLfloat v0)
-{
-   DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1fARB(%d, %f);\n", location, v0));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1)
-{
-   DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2fARB(%d, %f, %f);\n", location, v0, v1));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
-{
-   DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3fARB(%d, %f, %f, %f);\n", location, v0, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
-{
-   DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4fARB(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1iARB)(GLint location, GLint v0)
-{
-   DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1iARB(%d, %d);\n", location, v0));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2iARB)(GLint location, GLint v0, GLint v1)
-{
-   DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2iARB(%d, %d, %d);\n", location, v0, v1));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2)
-{
-   DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3iARB(%d, %d, %d, %d);\n", location, v0, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
-{
-   DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4iARB(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetObjectParameterfvARB, (obj, pname, params), (F, "glGetObjectParameterfvARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params)
-{
-   DISPATCH(GetObjectParameterivARB, (obj, pname, params), (F, "glGetObjectParameterivARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
-{
-   DISPATCH(GetInfoLogARB, (obj, maxLength, length, infoLog), (F, "glGetInfoLogARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) infoLog));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog)
-{
-   DISPATCH(GetAttachedObjectsARB, (containerObj, maxLength, length, infoLog), (F, "glGetAttachedObjectsARB(%d, %d, %p, %p);\n", containerObj, maxLength, (const void *) length, (const void *) infoLog));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocationARB)(GLhandleARB programObj, const GLcharARB * name)
-{
-   RETURN_DISPATCH(GetUniformLocationARB, (programObj, name), (F, "glGetUniformLocationARB(%d, %p);\n", programObj, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetActiveUniformARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
-{
-   DISPATCH(GetActiveUniformARB, (programObj, index, maxLength, length, size, type, name), (F, "glGetActiveUniformARB(%d, %d, %d, %p, %p, %p, %p);\n", programObj, index, maxLength, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetUniformfvARB)(GLhandleARB programObj, GLint location, GLfloat * params)
-{
-   DISPATCH(GetUniformfvARB, (programObj, location, params), (F, "glGetUniformfvARB(%d, %d, %p);\n", programObj, location, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetUniformivARB)(GLhandleARB programObj, GLint location, GLint * params)
-{
-   DISPATCH(GetUniformivARB, (programObj, location, params), (F, "glGetUniformivARB(%d, %d, %p);\n", programObj, location, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetShaderSourceARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source)
-{
-   DISPATCH(GetShaderSourceARB, (obj, maxLength, length, source), (F, "glGetShaderSourceARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) source));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindAttribLocationARB)(GLhandleARB programObj, GLuint index, const GLcharARB * name)
-{
-   DISPATCH(BindAttribLocationARB, (programObj, index, name), (F, "glBindAttribLocationARB(%d, %d, %p);\n", programObj, index, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetActiveAttribARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
-{
-   DISPATCH(GetActiveAttribARB, (programObj, index, maxLength, length, size, type, name), (F, "glGetActiveAttribARB(%d, %d, %d, %p, %p, %p, %p);\n", programObj, index, maxLength, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocationARB)(GLhandleARB programObj, const GLcharARB * name)
-{
-   RETURN_DISPATCH(GetAttribLocationARB, (programObj, name), (F, "glGetAttribLocationARB(%d, %p);\n", programObj, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
 {
-   DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+   DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x));
+   DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dARB)(GLuint index, GLdouble x)
 {
-   DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1dARB(%d, %f);\n", index, x));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvARB)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x));
+   DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fARB)(GLuint index, GLfloat x)
 {
-   DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1fARB(%d, %f);\n", index, x));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x));
+   DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sARB)(GLuint index, GLshort x)
 {
-   DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1sARB(%d, %d);\n", index, x));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svARB)(GLuint index, const GLshort * v)
 {
-   DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y));
+   DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1svARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y)
 {
-   DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2dARB(%d, %f, %f);\n", index, x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvARB)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y));
+   DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
 {
-   DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2fARB(%d, %f, %f);\n", index, x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y));
+   DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y)
 {
-   DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2sARB(%d, %d, %d);\n", index, x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svARB)(GLuint index, const GLshort * v)
 {
-   DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z));
+   DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2svARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3dARB(%d, %f, %f, %f);\n", index, x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvARB)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z));
+   DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3fARB(%d, %f, %f, %f);\n", index, x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z));
+   DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3sARB(%d, %d, %d, %d);\n", index, x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svARB)(GLuint index, const GLshort * v)
 {
-   DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+   DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3svARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4dARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvARB)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+   DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4fARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+   DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
 {
-   DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4sARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svARB)(GLuint index, const GLshort * v)
 {
-   DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+   DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4svARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
 {
-   DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v));
+   DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4NubARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
 }
 
-KEYWORD1 GLuint KEYWORD2 NAME(GenFragmentShadersATI)(GLuint range)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubvARB)(GLuint index, const GLubyte * v)
 {
-   RETURN_DISPATCH(GenFragmentShadersATI, (range), (F, "glGenFragmentShadersATI(%d);\n", range));
+   DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4NubvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindFragmentShaderATI)(GLuint id)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v)
 {
-   DISPATCH(BindFragmentShaderATI, (id), (F, "glBindFragmentShaderATI(%d);\n", id));
+   DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteFragmentShaderATI)(GLuint id)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v)
 {
-   DISPATCH(DeleteFragmentShaderATI, (id), (F, "glDeleteFragmentShaderATI(%d);\n", id));
+   DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BeginFragmentShaderATI)(void)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v)
 {
-   DISPATCH(BeginFragmentShaderATI, (), (F, "glBeginFragmentShaderATI();\n"));
+   DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(EndFragmentShaderATI)(void)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v)
 {
-   DISPATCH(EndFragmentShaderATI, (), (F, "glEndFragmentShaderATI();\n"));
+   DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v)
 {
-   DISPATCH(PassTexCoordATI, (dst, coord, swizzle), (F, "glPassTexCoordATI(%d, %d, 0x%x);\n", dst, coord, swizzle));
+   DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v)
 {
-   DISPATCH(SampleMapATI, (dst, interp, swizzle), (F, "glSampleMapATI(%d, %d, 0x%x);\n", dst, interp, swizzle));
+   DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v)
 {
-   DISPATCH(ColorFragmentOp1ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), (F, "glColorFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod));
+   DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v)
 {
-   DISPATCH(ColorFragmentOp2ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glColorFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
+   DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp3ATI)(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)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v)
 {
-   DISPATCH(ColorFragmentOp3ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glColorFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
+   DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v)
 {
-   DISPATCH(AlphaFragmentOp1ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod), (F, "glAlphaFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod));
+   DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v)
 {
-   DISPATCH(AlphaFragmentOp2ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glAlphaFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
+   DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v)
 {
-   DISPATCH(AlphaFragmentOp3ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glAlphaFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
+   DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v)
 {
-   DISPATCH(SetFragmentShaderConstantATI, (dst, value), (F, "glSetFragmentShaderConstantATI(%d, %p);\n", dst, (const void *) value));
+   DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbufferEXT)(GLuint renderbuffer)
+KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint params)
 {
-   RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbufferEXT(%d);\n", renderbuffer));
+   DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteri(0x%x, %d);\n", pname, params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer)
+KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint params)
 {
-   DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbufferEXT(0x%x, %d);\n", target, renderbuffer));
+   DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteriNV(0x%x, %d);\n", pname, params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers)
+KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params)
 {
-   DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
+   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameteriv(0x%x, %p);\n", pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers)
+KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * params)
 {
-   DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
+   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+KEYWORD1 void KEYWORD2 NAME(MultiDrawArrays)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
 {
-   DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorageEXT(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
+   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArrays(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
 {
-   DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebufferEXT)(GLuint framebuffer)
+KEYWORD1 void KEYWORD2 NAME(MultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
 {
-   RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebufferEXT(%d);\n", framebuffer));
+   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElements(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindFramebufferEXT)(GLenum target, GLuint framebuffer)
+KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
 {
-   DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebufferEXT(0x%x, %d);\n", target, framebuffer));
+   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElementsEXT(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers)
+KEYWORD1 void KEYWORD2 NAME(ActiveStencilFaceEXT)(GLenum face)
 {
-   DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
+   DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers)
+KEYWORD1 void KEYWORD2 NAME(DeleteFencesNV)(GLsizei n, const GLuint * fences)
 {
-   DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
+   DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences));
 }
 
-KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatusEXT)(GLenum target)
+KEYWORD1 void KEYWORD2 NAME(GenFencesNV)(GLsizei n, GLuint * fences)
 {
-   RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatusEXT(0x%x);\n", target));
+   DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsFenceNV)(GLuint fence)
 {
-   DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
+   RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+KEYWORD1 GLboolean KEYWORD2 NAME(TestFenceNV)(GLuint fence)
 {
-   DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
+   RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+KEYWORD1 void KEYWORD2 NAME(GetFenceivNV)(GLuint fence, GLenum pname, GLint * params)
 {
-   DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3DEXT(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
+   DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+KEYWORD1 void KEYWORD2 NAME(FinishFenceNV)(GLuint fence)
 {
-   DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbufferEXT(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
+   DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(SetFenceNV)(GLuint fence, GLenum condition)
 {
-   DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameterivEXT(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
+   DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenerateMipmapEXT)(GLenum target)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v)
 {
-   DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmapEXT(0x%x);\n", target));
+   DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v)
 {
-   DISPATCH(StencilFuncSeparate, (face, func, ref, mask), (F, "glStencilFuncSeparate(0x%x, 0x%x, %d, %d);\n", face, func, ref, mask));
+   DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(StencilOpSeparate)(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v)
 {
-   DISPATCH(StencilOpSeparate, (face, fail, zfail, zpass), (F, "glStencilOpSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", face, fail, zfail, zpass));
+   DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(StencilMaskSeparate)(GLenum face, GLuint mask)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v)
 {
-   DISPATCH(StencilMaskSeparate, (face, mask), (F, "glStencilMaskSeparate(0x%x, %d);\n", face, mask));
+   DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v)
 {
-   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture));
+   DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v)
 {
-   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture));
+   DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s));
+   DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v)
 {
-   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v)
 {
-   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s));
+   DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v)
 {
-   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s)
+KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s));
+   DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointerARB(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index)
 {
-   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s)
+KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index)
 {
-   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s));
+   DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string)
 {
-   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramStringARB, (target, format, len, string), (F, "glProgramStringARB(0x%x, 0x%x, %d, %p);\n", target, format, len, (const void *) string));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t));
+   DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
 {
-   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t));
+   DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
 {
-   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t));
+   DISPATCH(ProgramLocalParameter4dARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
 {
-   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t));
+   DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
 {
-   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
+KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
 {
-   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r));
+   DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
 {
-   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
+KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
 {
-   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r));
+   DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
 {
-   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
+KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r));
+   DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string)
 {
-   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r));
+   DISPATCH(ProgramNamedParameter4fNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4fNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramNamedParameter4dNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4dNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+   DISPATCH(ProgramNamedParameter4fvNV, (id, len, name, v), (F, "glProgramNamedParameter4fvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(ProgramNamedParameter4dvNV, (id, len, name, v), (F, "glProgramNamedParameter4dvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)
 {
-   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+   DISPATCH(GetProgramNamedParameterfvNV, (id, len, name, params), (F, "glGetProgramNamedParameterfvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)
 {
-   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(GetProgramNamedParameterdvNV, (id, len, name, params), (F, "glGetProgramNamedParameterdvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
+KEYWORD1 void KEYWORD2 NAME(BindBuffer)(GLenum target, GLuint buffer)
 {
-   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer)
 {
-   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)
 {
-   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)
 {
-   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v));
+   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
 }
 
-KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m)
+KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
 {
-   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m));
+   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
+KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
 {
-   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m));
+   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m)
+KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer)
 {
-   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m));
+   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m)
+KEYWORD1 void KEYWORD2 NAME(DeleteBuffersARB)(GLsizei n, const GLuint * buffer)
 {
-   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m));
+   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert)
+KEYWORD1 void KEYWORD2 NAME(GenBuffers)(GLsizei n, GLuint * buffer)
 {
-   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert));
+   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GenBuffersARB)(GLsizei n, GLuint * buffer)
 {
-   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
+   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
+   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
+   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params)
 {
-   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
+   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params)
 {
-   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
+   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
+   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img)
+KEYWORD1 void KEYWORD2 NAME(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)
 {
-   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img));
+   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer)
 {
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordf)(GLfloat coord)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer)
 {
-   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordf(%f);\n", coord));
+   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordfv)(const GLfloat * coord)
+KEYWORD1 GLvoid * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access)
 {
-   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfv(%p);\n", (const void *) coord));
+   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordd)(GLdouble coord)
+KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access)
 {
-   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoordd(%f);\n", coord));
+   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoorddv)(const GLdouble * coord)
+KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target)
 {
-   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddv(%p);\n", (const void *) coord));
+   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target));
 }
 
-KEYWORD1 void KEYWORD2 NAME(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
+KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target)
 {
-   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
+   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiDrawArrays)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(DepthBoundsEXT)(GLclampd zmin, GLclampd zmax)
 {
-   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArrays(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
+   DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
+KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids)
 {
-   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElements(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
+   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterf)(GLenum pname, GLfloat param)
+KEYWORD1 void KEYWORD2 NAME(GenQueriesARB)(GLsizei n, GLuint * ids)
 {
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterf(0x%x, %f);\n", pname, param));
+   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterfv)(GLenum pname, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(DeleteQueries)(GLsizei n, const GLuint * ids)
 {
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfv(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint param)
+KEYWORD1 void KEYWORD2 NAME(DeleteQueriesARB)(GLsizei n, const GLuint * ids)
 {
-   DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteri(0x%x, %d);\n", pname, param));
+   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id)
 {
-   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameteriv(0x%x, %p);\n", pname, (const void *) params));
+   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id)
 {
-   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3b(%d, %d, %d);\n", red, green, blue));
+   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bv)(const GLbyte * v)
+KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id)
 {
-   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bv(%p);\n", (const void *) v));
+   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
+KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id)
 {
-   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3d(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dv)(const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(EndQuery)(GLenum target)
 {
-   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p);\n", (const void *) v));
+   DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue)
+KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target)
 {
-   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3f(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fv)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p);\n", (const void *) v));
+   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3i)(GLint red, GLint green, GLint blue)
+KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3i(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iv)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params)
 {
-   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3iv(%p);\n", (const void *) v));
+   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params)
 {
-   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3s(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sv)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params)
 {
-   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3sv(%p);\n", (const void *) v));
+   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params)
 {
-   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ub(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubv)(const GLubyte * v)
+KEYWORD1 void KEYWORD2 NAME(MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)
 {
-   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubv(%p);\n", (const void *) v));
+   DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
+KEYWORD1 void KEYWORD2 NAME(MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride)
 {
-   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3ui(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiv)(const GLuint * v)
+KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA)
 {
-   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uiv(%p);\n", (const void *) v));
+   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
+KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateATI)(GLenum modeRGB, GLenum modeA)
 {
-   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3us(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateATI(0x%x, 0x%x);\n", modeRGB, modeA));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usv)(const GLushort * v)
+KEYWORD1 void KEYWORD2 NAME(DeleteObjectARB)(GLhandleARB obj)
 {
-   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usv(%p);\n", (const void *) v));
+   DISPATCH(DeleteObjectARB, (obj), (F, "glDeleteObjectARB(%d);\n", obj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+KEYWORD1 GLhandleARB KEYWORD2 NAME(GetHandleARB)(GLenum pname)
 {
-   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+   RETURN_DISPATCH(GetHandleARB, (pname), (F, "glGetHandleARB(0x%x);\n", pname));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2d)(GLdouble x, GLdouble y)
+KEYWORD1 void KEYWORD2 NAME(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj)
 {
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2d(%f, %f);\n", x, y));
+   DISPATCH(DetachObjectARB, (containerObj, attachedObj), (F, "glDetachObjectARB(%d, %d);\n", containerObj, attachedObj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dv)(const GLdouble * v)
+KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateShaderObjectARB)(GLenum shaderType)
 {
-   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p);\n", (const void *) v));
+   RETURN_DISPATCH(CreateShaderObjectARB, (shaderType), (F, "glCreateShaderObjectARB(0x%x);\n", shaderType));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2f)(GLfloat x, GLfloat y)
+KEYWORD1 void KEYWORD2 NAME(ShaderSourceARB)(GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint * length)
 {
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2f(%f, %f);\n", x, y));
+   DISPATCH(ShaderSourceARB, (shaderObj, count, string, length), (F, "glShaderSourceARB(%d, %d, %p, %p);\n", shaderObj, count, (const void *) string, (const void *) length));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fv)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(CompileShaderARB)(GLhandleARB shaderObj)
 {
-   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p);\n", (const void *) v));
+   DISPATCH(CompileShaderARB, (shaderObj), (F, "glCompileShaderARB(%d);\n", shaderObj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2i)(GLint x, GLint y)
+KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateProgramObjectARB)(void)
 {
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2i(%d, %d);\n", x, y));
+   RETURN_DISPATCH(CreateProgramObjectARB, (), (F, "glCreateProgramObjectARB();\n"));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2iv)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj)
 {
-   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2iv(%p);\n", (const void *) v));
+   DISPATCH(AttachObjectARB, (containerObj, obj), (F, "glAttachObjectARB(%d, %d);\n", containerObj, obj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2s)(GLshort x, GLshort y)
+KEYWORD1 void KEYWORD2 NAME(LinkProgramARB)(GLhandleARB programObj)
 {
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2s(%d, %d);\n", x, y));
+   DISPATCH(LinkProgramARB, (programObj), (F, "glLinkProgramARB(%d);\n", programObj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2sv)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(UseProgramObjectARB)(GLhandleARB programObj)
 {
-   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2sv(%p);\n", (const void *) v));
+   DISPATCH(UseProgramObjectARB, (programObj), (F, "glUseProgramObjectARB(%d);\n", programObj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z)
+KEYWORD1 void KEYWORD2 NAME(ValidateProgramARB)(GLhandleARB programObj)
 {
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3d(%f, %f, %f);\n", x, y, z));
+   DISPATCH(ValidateProgramARB, (programObj), (F, "glValidateProgramARB(%d);\n", programObj));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dv)(const GLdouble * v)
+KEYWORD1 void KEYWORD2 NAME(Uniform1fARB)(GLint location, GLfloat v0)
 {
-   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p);\n", (const void *) v));
+   DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1fARB(%d, %f);\n", location, v0));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z)
+KEYWORD1 void KEYWORD2 NAME(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1)
 {
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3f(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2fARB(%d, %f, %f);\n", location, v0, v1));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fv)(const GLfloat * v)
+KEYWORD1 void KEYWORD2 NAME(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
 {
-   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p);\n", (const void *) v));
+   DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3fARB(%d, %f, %f, %f);\n", location, v0, v1, v2));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3i)(GLint x, GLint y, GLint z)
+KEYWORD1 void KEYWORD2 NAME(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
 {
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3i(%d, %d, %d);\n", x, y, z));
+   DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4fARB(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3iv)(const GLint * v)
+KEYWORD1 void KEYWORD2 NAME(Uniform1iARB)(GLint location, GLint v0)
 {
-   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3iv(%p);\n", (const void *) v));
+   DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1iARB(%d, %d);\n", location, v0));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3s)(GLshort x, GLshort y, GLshort z)
+KEYWORD1 void KEYWORD2 NAME(Uniform2iARB)(GLint location, GLint v0, GLint v1)
 {
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z));
+   DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2iARB(%d, %d, %d);\n", location, v0, v1));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v)
+KEYWORD1 void KEYWORD2 NAME(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2)
 {
-   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v));
+   DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3iARB(%d, %d, %d, %d);\n", location, v0, v1, v2));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindBuffer)(GLenum target, GLuint buffer)
+KEYWORD1 void KEYWORD2 NAME(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
 {
-   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer));
+   DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4iARB(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)
+KEYWORD1 void KEYWORD2 NAME(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value)
 {
-   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
+   DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fvARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value)
 {
-   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
+   DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fvARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer)
+KEYWORD1 void KEYWORD2 NAME(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value)
 {
-   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer));
+   DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fvARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenBuffers)(GLsizei n, GLuint * buffer)
+KEYWORD1 void KEYWORD2 NAME(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value)
 {
-   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer));
+   DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fvARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(Uniform1ivARB)(GLint location, GLsizei count, const GLint * value)
 {
-   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1ivARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params)
+KEYWORD1 void KEYWORD2 NAME(Uniform2ivARB)(GLint location, GLsizei count, const GLint * value)
 {
-   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2ivARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(Uniform3ivARB)(GLint location, GLsizei count, const GLint * value)
 {
-   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
+   DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3ivARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer)
+KEYWORD1 void KEYWORD2 NAME(Uniform4ivARB)(GLint location, GLsizei count, const GLint * value)
 {
-   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer));
+   DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4ivARB(%d, %d, %p);\n", location, count, (const void *) value));
 }
 
-KEYWORD1 GLvoid * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access)
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
 {
-   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access));
+   DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target)
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
 {
-   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target));
+   DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids)
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
 {
-   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids));
+   DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteQueries)(GLsizei n, const GLuint * ids)
+KEYWORD1 void KEYWORD2 NAME(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params)
 {
-   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids));
+   DISPATCH(GetObjectParameterfvARB, (obj, pname, params), (F, "glGetObjectParameterfvARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id)
+KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params)
 {
-   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id));
+   DISPATCH(GetObjectParameterivARB, (obj, pname, params), (F, "glGetObjectParameterivARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id)
+KEYWORD1 void KEYWORD2 NAME(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
 {
-   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id));
+   DISPATCH(GetInfoLogARB, (obj, maxLength, length, infoLog), (F, "glGetInfoLogARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) infoLog));
 }
 
-KEYWORD1 void KEYWORD2 NAME(EndQuery)(GLenum target)
+KEYWORD1 void KEYWORD2 NAME(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog)
 {
-   DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target));
+   DISPATCH(GetAttachedObjectsARB, (containerObj, maxLength, length, infoLog), (F, "glGetAttachedObjectsARB(%d, %d, %p, %p);\n", containerObj, maxLength, (const void *) length, (const void *) infoLog));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params)
+KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocationARB)(GLhandleARB programObj, const GLcharARB * name)
 {
-   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   RETURN_DISPATCH(GetUniformLocationARB, (programObj, name), (F, "glGetUniformLocationARB(%d, %p);\n", programObj, (const void *) name));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params)
+KEYWORD1 void KEYWORD2 NAME(GetActiveUniformARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
 {
-   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+   DISPATCH(GetActiveUniformARB, (programObj, index, maxLength, length, size, type, name), (F, "glGetActiveUniformARB(%d, %d, %d, %p, %p, %p, %p);\n", programObj, index, maxLength, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params)
+KEYWORD1 void KEYWORD2 NAME(GetUniformfvARB)(GLhandleARB programObj, GLint location, GLfloat * params)
 {
-   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+   DISPATCH(GetUniformfvARB, (programObj, location, params), (F, "glGetUniformfvARB(%d, %d, %p);\n", programObj, location, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param)
+KEYWORD1 void KEYWORD2 NAME(GetUniformivARB)(GLhandleARB programObj, GLint location, GLint * params)
 {
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param));
+   DISPATCH(GetUniformivARB, (programObj, location, params), (F, "glGetUniformivARB(%d, %d, %p);\n", programObj, location, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(GetShaderSourceARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source)
 {
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(GetShaderSourceARB, (obj, maxLength, length, source), (F, "glGetShaderSourceARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) source));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
+KEYWORD1 void KEYWORD2 NAME(BindAttribLocationARB)(GLhandleARB programObj, GLuint index, const GLcharARB * name)
 {
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y));
+   DISPATCH(BindAttribLocationARB, (programObj, index, name), (F, "glBindAttribLocationARB(%d, %d, %p);\n", programObj, index, (const void *) name));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
+KEYWORD1 void KEYWORD2 NAME(GetActiveAttribARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
 {
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y));
+   DISPATCH(GetActiveAttribARB, (programObj, index, maxLength, length, size, type, name), (F, "glGetActiveAttribARB(%d, %d, %d, %p, %p, %p, %p);\n", programObj, index, maxLength, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
+KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocationARB)(GLhandleARB programObj, const GLcharARB * name)
 {
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y));
+   RETURN_DISPATCH(GetAttribLocationARB, (programObj, name), (F, "glGetAttribLocationARB(%d, %p);\n", programObj, (const void *) name));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params)
 {
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y));
+   DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * p)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params)
 {
-   DISPATCH(WindowPos2dvMESA, (p), (F, "glWindowPos2dvARB(%p);\n", (const void *) p));
+   DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * p)
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params)
 {
-   DISPATCH(WindowPos2fvMESA, (p), (F, "glWindowPos2fvARB(%p);\n", (const void *) p));
+   DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * p)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x)
 {
-   DISPATCH(WindowPos2ivMESA, (p), (F, "glWindowPos2ivARB(%p);\n", (const void *) p));
+   DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * p)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(WindowPos2svMESA, (p), (F, "glWindowPos2svARB(%p);\n", (const void *) p));
+   DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x)
 {
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z));
+   DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z));
+   DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x)
 {
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z));
+   DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v)
 {
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z));
+   DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * p)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
 {
-   DISPATCH(WindowPos3dvMESA, (p), (F, "glWindowPos3dvARB(%p);\n", (const void *) p));
+   DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * p)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(WindowPos3fvMESA, (p), (F, "glWindowPos3fvARB(%p);\n", (const void *) p));
+   DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * p)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
 {
-   DISPATCH(WindowPos3ivMESA, (p), (F, "glWindowPos3ivARB(%p);\n", (const void *) p));
+   DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * p)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(WindowPos3svMESA, (p), (F, "glWindowPos3svARB(%p);\n", (const void *) p));
+   DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint program)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
 {
-   DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramARB(0x%x, %d);\n", target, program));
+   DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * programs)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v)
 {
-   DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) programs));
+   DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * programs)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) programs));
+   DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z));
 }
 
-KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint program)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v)
 {
-   RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramARB(%d);\n", program));
+   DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** params)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(GetVertexAttribPointervNV, (index, pname, params), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+   DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
+   DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z));
 }
 
-KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v)
 {
-   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
+   DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
+   DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v)
 {
-   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
+   DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
+   DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
 {
-   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
+   DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
 {
-   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
+   DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v)
 {
-   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
+   DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
 {
-   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
+   DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
 }
 
-KEYWORD1 void KEYWORD2 NAME(HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v)
 {
-   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
+   DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v));
 }
 
-KEYWORD1 void KEYWORD2 NAME(MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink)
+KEYWORD1 GLuint KEYWORD2 NAME(GenFragmentShadersATI)(GLuint range)
 {
-   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink));
+   RETURN_DISPATCH(GenFragmentShadersATI, (range), (F, "glGenFragmentShadersATI(%d);\n", range));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ResetHistogramEXT)(GLenum target)
+KEYWORD1 void KEYWORD2 NAME(BindFragmentShaderATI)(GLuint id)
 {
-   DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target));
+   DISPATCH(BindFragmentShaderATI, (id), (F, "glBindFragmentShaderATI(%d);\n", id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ResetMinmaxEXT)(GLenum target)
+KEYWORD1 void KEYWORD2 NAME(DeleteFragmentShaderATI)(GLuint id)
 {
-   DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target));
+   DISPATCH(DeleteFragmentShaderATI, (id), (F, "glDeleteFragmentShaderATI(%d);\n", id));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
+KEYWORD1 void KEYWORD2 NAME(BeginFragmentShaderATI)(void)
 {
-   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
+   DISPATCH(BeginFragmentShaderATI, (), (F, "glBeginFragmentShaderATI();\n"));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
+KEYWORD1 void KEYWORD2 NAME(EndFragmentShaderATI)(void)
 {
-   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
+   DISPATCH(EndFragmentShaderATI, (), (F, "glEndFragmentShaderATI();\n"));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params)
+KEYWORD1 void KEYWORD2 NAME(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle)
 {
-   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params));
+   DISPATCH(PassTexCoordATI, (dst, coord, swizzle), (F, "glPassTexCoordATI(%d, %d, 0x%x);\n", dst, coord, swizzle));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle)
 {
-   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(SampleMapATI, (dst, interp, swizzle), (F, "glSampleMapATI(%d, %d, 0x%x);\n", dst, interp, swizzle));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params)
+KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
 {
-   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params));
+   DISPATCH(ColorFragmentOp1ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), (F, "glColorFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint * params)
+KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
 {
-   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(ColorFragmentOp2ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glColorFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp3ATI)(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)
 {
-   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+   DISPATCH(ColorFragmentOp3ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glColorFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
 {
-   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
+   DISPATCH(AlphaFragmentOp1ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod), (F, "glAlphaFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
+KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
 {
-   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
+   DISPATCH(AlphaFragmentOp2ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glAlphaFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
 {
-   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
+   DISPATCH(AlphaFragmentOp3ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glAlphaFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value)
 {
-   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   DISPATCH(SetFragmentShaderConstantATI, (dst, value), (F, "glSetFragmentShaderConstantATI(%d, %p);\n", dst, (const void *) value));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint * params)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbufferEXT)(GLuint renderbuffer)
 {
-   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+   RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbufferEXT(%d);\n", renderbuffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+KEYWORD1 void KEYWORD2 NAME(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer)
 {
-   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+   DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbufferEXT(0x%x, %d);\n", target, renderbuffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture)
+KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers)
 {
-   DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture));
+   DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures)
+KEYWORD1 void KEYWORD2 NAME(GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers)
 {
-   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures));
+   DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
+KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
 {
-   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
+   DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorageEXT(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i)
+KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i));
+   DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
+KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebufferEXT)(GLuint framebuffer)
 {
-   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count));
+   RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebufferEXT(%d);\n", framebuffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params)
+KEYWORD1 void KEYWORD2 NAME(BindFramebufferEXT)(GLenum target, GLuint framebuffer)
 {
-   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebufferEXT(0x%x, %d);\n", target, framebuffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode)
+KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers)
 {
-   DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode));
+   DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
+KEYWORD1 void KEYWORD2 NAME(GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers)
 {
-   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
+   DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
 }
 
-KEYWORD1 void KEYWORD2 NAME(CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
+KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatusEXT)(GLenum target)
 {
-   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
+   RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatusEXT(0x%x);\n", target));
 }
 
-KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
 {
-   DISPATCH(ColorTable, (target, internalFormat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalFormat, width, format, type, (const void *) table));
+   DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
 {
-   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
+   DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SampleMaskEXT)(GLclampf value, GLboolean invert)
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
 {
-   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskEXT(%f, %d);\n", value, invert));
+   DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3DEXT(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
 }
 
-KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern)
+KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
 {
-   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern));
+   DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbufferEXT(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
 }
 
-KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
+KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
 {
-   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
+   DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameterivEXT(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateATI)(GLenum modeRGB, GLenum modeA)
+KEYWORD1 void KEYWORD2 NAME(GenerateMipmapEXT)(GLenum target)
 {
-   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateATI(0x%x, 0x%x);\n", modeRGB, modeA));
+   DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmapEXT(0x%x);\n", target));
 }
 
-KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+KEYWORD1 void KEYWORD2 NAME(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask)
 {
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+   DISPATCH(StencilFuncSeparate, (face, func, ref, mask), (F, "glStencilFuncSeparate(0x%x, 0x%x, %d, %d);\n", face, func, ref, mask));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterfSGIS)(GLenum pname, GLfloat param)
+KEYWORD1 void KEYWORD2 NAME(StencilOpSeparate)(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
 {
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
+   DISPATCH(StencilOpSeparate, (face, fail, zfail, zpass), (F, "glStencilOpSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", face, fail, zfail, zpass));
 }
 
-KEYWORD1 void KEYWORD2 NAME(PointParameterfvSGIS)(GLenum pname, const GLfloat * params)
+KEYWORD1 void KEYWORD2 NAME(StencilMaskSeparate)(GLenum face, GLuint mask)
 {
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
+   DISPATCH(StencilMaskSeparate, (face, mask), (F, "glStencilMaskSeparate(0x%x, %d);\n", face, mask));
 }
 
 
@@ -5983,6 +5983,44 @@ static _glapi_proc DISPATCH_TABLE_NAME[] = {
  */
 #ifdef UNUSED_TABLE_NAME
 static _glapi_proc UNUSED_TABLE_NAME[] = {
+   TABLE_ENTRY(ArrayElementEXT),
+   TABLE_ENTRY(BindTextureEXT),
+   TABLE_ENTRY(DrawArraysEXT),
+   TABLE_ENTRY(CopyTexImage1DEXT),
+   TABLE_ENTRY(CopyTexImage2DEXT),
+   TABLE_ENTRY(CopyTexSubImage1DEXT),
+   TABLE_ENTRY(CopyTexSubImage2DEXT),
+   TABLE_ENTRY(DeleteTexturesEXT),
+   TABLE_ENTRY(GetPointervEXT),
+   TABLE_ENTRY(PrioritizeTexturesEXT),
+   TABLE_ENTRY(TexSubImage1DEXT),
+   TABLE_ENTRY(TexSubImage2DEXT),
+   TABLE_ENTRY(BlendColorEXT),
+   TABLE_ENTRY(BlendEquationEXT),
+   TABLE_ENTRY(DrawRangeElementsEXT),
+   TABLE_ENTRY(ColorTableSGI),
+   TABLE_ENTRY(ColorTableEXT),
+   TABLE_ENTRY(ColorTableParameterfvSGI),
+   TABLE_ENTRY(ColorTableParameterivSGI),
+   TABLE_ENTRY(CopyColorTableSGI),
+   TABLE_ENTRY(ColorSubTableEXT),
+   TABLE_ENTRY(CopyColorSubTableEXT),
+   TABLE_ENTRY(ConvolutionFilter1DEXT),
+   TABLE_ENTRY(ConvolutionFilter2DEXT),
+   TABLE_ENTRY(ConvolutionParameterfEXT),
+   TABLE_ENTRY(ConvolutionParameterfvEXT),
+   TABLE_ENTRY(ConvolutionParameteriEXT),
+   TABLE_ENTRY(ConvolutionParameterivEXT),
+   TABLE_ENTRY(CopyConvolutionFilter1DEXT),
+   TABLE_ENTRY(CopyConvolutionFilter2DEXT),
+   TABLE_ENTRY(SeparableFilter2DEXT),
+   TABLE_ENTRY(HistogramEXT),
+   TABLE_ENTRY(MinmaxEXT),
+   TABLE_ENTRY(ResetHistogramEXT),
+   TABLE_ENTRY(ResetMinmaxEXT),
+   TABLE_ENTRY(TexImage3DEXT),
+   TABLE_ENTRY(TexSubImage3DEXT),
+   TABLE_ENTRY(CopyTexSubImage3DEXT),
    TABLE_ENTRY(ActiveTexture),
    TABLE_ENTRY(ClientActiveTexture),
    TABLE_ENTRY(MultiTexCoord1d),
@@ -6022,6 +6060,54 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
    TABLE_ENTRY(MultTransposeMatrixf),
    TABLE_ENTRY(MultTransposeMatrixd),
    TABLE_ENTRY(SampleCoverage),
+   TABLE_ENTRY(DrawBuffersATI),
+   TABLE_ENTRY(SampleMaskEXT),
+   TABLE_ENTRY(SamplePatternEXT),
+   TABLE_ENTRY(PointParameterf),
+   TABLE_ENTRY(PointParameterfARB),
+   TABLE_ENTRY(PointParameterfSGIS),
+   TABLE_ENTRY(PointParameterfv),
+   TABLE_ENTRY(PointParameterfvARB),
+   TABLE_ENTRY(PointParameterfvSGIS),
+   TABLE_ENTRY(WindowPos2d),
+   TABLE_ENTRY(WindowPos2dARB),
+   TABLE_ENTRY(WindowPos2dv),
+   TABLE_ENTRY(WindowPos2dvARB),
+   TABLE_ENTRY(WindowPos2f),
+   TABLE_ENTRY(WindowPos2fARB),
+   TABLE_ENTRY(WindowPos2fv),
+   TABLE_ENTRY(WindowPos2fvARB),
+   TABLE_ENTRY(WindowPos2i),
+   TABLE_ENTRY(WindowPos2iARB),
+   TABLE_ENTRY(WindowPos2iv),
+   TABLE_ENTRY(WindowPos2ivARB),
+   TABLE_ENTRY(WindowPos2s),
+   TABLE_ENTRY(WindowPos2sARB),
+   TABLE_ENTRY(WindowPos2sv),
+   TABLE_ENTRY(WindowPos2svARB),
+   TABLE_ENTRY(WindowPos3d),
+   TABLE_ENTRY(WindowPos3dARB),
+   TABLE_ENTRY(WindowPos3dv),
+   TABLE_ENTRY(WindowPos3dvARB),
+   TABLE_ENTRY(WindowPos3f),
+   TABLE_ENTRY(WindowPos3fARB),
+   TABLE_ENTRY(WindowPos3fv),
+   TABLE_ENTRY(WindowPos3fvARB),
+   TABLE_ENTRY(WindowPos3i),
+   TABLE_ENTRY(WindowPos3iARB),
+   TABLE_ENTRY(WindowPos3iv),
+   TABLE_ENTRY(WindowPos3ivARB),
+   TABLE_ENTRY(WindowPos3s),
+   TABLE_ENTRY(WindowPos3sARB),
+   TABLE_ENTRY(WindowPos3sv),
+   TABLE_ENTRY(WindowPos3svARB),
+   TABLE_ENTRY(BlendFuncSeparate),
+   TABLE_ENTRY(BlendFuncSeparateINGR),
+   TABLE_ENTRY(FogCoordf),
+   TABLE_ENTRY(FogCoordfv),
+   TABLE_ENTRY(FogCoordd),
+   TABLE_ENTRY(FogCoorddv),
+   TABLE_ENTRY(FogCoordPointer),
    TABLE_ENTRY(CompressedTexImage3D),
    TABLE_ENTRY(CompressedTexImage2D),
    TABLE_ENTRY(CompressedTexImage1D),
@@ -6029,18 +6115,6 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
    TABLE_ENTRY(CompressedTexSubImage2D),
    TABLE_ENTRY(CompressedTexSubImage1D),
    TABLE_ENTRY(GetCompressedTexImage),
-   TABLE_ENTRY(BlendFuncSeparate),
-   TABLE_ENTRY(FogCoordf),
-   TABLE_ENTRY(FogCoordfv),
-   TABLE_ENTRY(FogCoordd),
-   TABLE_ENTRY(FogCoorddv),
-   TABLE_ENTRY(FogCoordPointer),
-   TABLE_ENTRY(MultiDrawArrays),
-   TABLE_ENTRY(MultiDrawElements),
-   TABLE_ENTRY(PointParameterf),
-   TABLE_ENTRY(PointParameterfv),
-   TABLE_ENTRY(PointParameteri),
-   TABLE_ENTRY(PointParameteriv),
    TABLE_ENTRY(SecondaryColor3b),
    TABLE_ENTRY(SecondaryColor3bv),
    TABLE_ENTRY(SecondaryColor3d),
@@ -6058,22 +6132,15 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
    TABLE_ENTRY(SecondaryColor3us),
    TABLE_ENTRY(SecondaryColor3usv),
    TABLE_ENTRY(SecondaryColorPointer),
-   TABLE_ENTRY(WindowPos2d),
-   TABLE_ENTRY(WindowPos2dv),
-   TABLE_ENTRY(WindowPos2f),
-   TABLE_ENTRY(WindowPos2fv),
-   TABLE_ENTRY(WindowPos2i),
-   TABLE_ENTRY(WindowPos2iv),
-   TABLE_ENTRY(WindowPos2s),
-   TABLE_ENTRY(WindowPos2sv),
-   TABLE_ENTRY(WindowPos3d),
-   TABLE_ENTRY(WindowPos3dv),
-   TABLE_ENTRY(WindowPos3f),
-   TABLE_ENTRY(WindowPos3fv),
-   TABLE_ENTRY(WindowPos3i),
-   TABLE_ENTRY(WindowPos3iv),
-   TABLE_ENTRY(WindowPos3s),
-   TABLE_ENTRY(WindowPos3sv),
+   TABLE_ENTRY(BindProgramARB),
+   TABLE_ENTRY(DeleteProgramsARB),
+   TABLE_ENTRY(GenProgramsARB),
+   TABLE_ENTRY(GetVertexAttribPointervARB),
+   TABLE_ENTRY(IsProgramARB),
+   TABLE_ENTRY(PointParameteri),
+   TABLE_ENTRY(PointParameteriv),
+   TABLE_ENTRY(MultiDrawArrays),
+   TABLE_ENTRY(MultiDrawElements),
    TABLE_ENTRY(BindBuffer),
    TABLE_ENTRY(BufferData),
    TABLE_ENTRY(BufferSubData),
@@ -6093,84 +6160,16 @@ static _glapi_proc UNUSED_TABLE_NAME[] = {
    TABLE_ENTRY(GetQueryiv),
    TABLE_ENTRY(GetQueryObjectiv),
    TABLE_ENTRY(GetQueryObjectuiv),
-   TABLE_ENTRY(PointParameterfARB),
-   TABLE_ENTRY(PointParameterfvARB),
-   TABLE_ENTRY(WindowPos2dARB),
-   TABLE_ENTRY(WindowPos2fARB),
-   TABLE_ENTRY(WindowPos2iARB),
-   TABLE_ENTRY(WindowPos2sARB),
-   TABLE_ENTRY(WindowPos2dvARB),
-   TABLE_ENTRY(WindowPos2fvARB),
-   TABLE_ENTRY(WindowPos2ivARB),
-   TABLE_ENTRY(WindowPos2svARB),
-   TABLE_ENTRY(WindowPos3dARB),
-   TABLE_ENTRY(WindowPos3fARB),
-   TABLE_ENTRY(WindowPos3iARB),
-   TABLE_ENTRY(WindowPos3sARB),
-   TABLE_ENTRY(WindowPos3dvARB),
-   TABLE_ENTRY(WindowPos3fvARB),
-   TABLE_ENTRY(WindowPos3ivARB),
-   TABLE_ENTRY(WindowPos3svARB),
-   TABLE_ENTRY(BindProgramARB),
-   TABLE_ENTRY(DeleteProgramsARB),
-   TABLE_ENTRY(GenProgramsARB),
-   TABLE_ENTRY(IsProgramARB),
-   TABLE_ENTRY(GetVertexAttribPointervARB),
-   TABLE_ENTRY(BlendColorEXT),
-   TABLE_ENTRY(TexImage3DEXT),
-   TABLE_ENTRY(TexSubImage3DEXT),
-   TABLE_ENTRY(TexSubImage1DEXT),
-   TABLE_ENTRY(TexSubImage2DEXT),
-   TABLE_ENTRY(CopyTexImage1DEXT),
-   TABLE_ENTRY(CopyTexImage2DEXT),
-   TABLE_ENTRY(CopyTexSubImage1DEXT),
-   TABLE_ENTRY(CopyTexSubImage2DEXT),
-   TABLE_ENTRY(CopyTexSubImage3DEXT),
-   TABLE_ENTRY(HistogramEXT),
-   TABLE_ENTRY(MinmaxEXT),
-   TABLE_ENTRY(ResetHistogramEXT),
-   TABLE_ENTRY(ResetMinmaxEXT),
-   TABLE_ENTRY(ConvolutionFilter1DEXT),
-   TABLE_ENTRY(ConvolutionFilter2DEXT),
-   TABLE_ENTRY(ConvolutionParameterfEXT),
-   TABLE_ENTRY(ConvolutionParameterfvEXT),
-   TABLE_ENTRY(ConvolutionParameteriEXT),
-   TABLE_ENTRY(ConvolutionParameterivEXT),
-   TABLE_ENTRY(CopyConvolutionFilter1DEXT),
-   TABLE_ENTRY(CopyConvolutionFilter2DEXT),
-   TABLE_ENTRY(SeparableFilter2DEXT),
-   TABLE_ENTRY(ColorTableSGI),
-   TABLE_ENTRY(ColorTableParameterfvSGI),
-   TABLE_ENTRY(ColorTableParameterivSGI),
-   TABLE_ENTRY(CopyColorTableSGI),
-   TABLE_ENTRY(BindTextureEXT),
-   TABLE_ENTRY(DeleteTexturesEXT),
-   TABLE_ENTRY(PrioritizeTexturesEXT),
-   TABLE_ENTRY(ArrayElementEXT),
-   TABLE_ENTRY(DrawArraysEXT),
-   TABLE_ENTRY(GetPointervEXT),
-   TABLE_ENTRY(BlendEquationEXT),
-   TABLE_ENTRY(ColorSubTableEXT),
-   TABLE_ENTRY(CopyColorSubTableEXT),
-   TABLE_ENTRY(ColorTableEXT),
-   TABLE_ENTRY(DrawRangeElementsEXT),
-   TABLE_ENTRY(SampleMaskEXT),
-   TABLE_ENTRY(SamplePatternEXT),
-   TABLE_ENTRY(DrawBuffersATI),
    TABLE_ENTRY(BlendEquationSeparateATI),
-   TABLE_ENTRY(BlendFuncSeparateINGR),
-   TABLE_ENTRY(PointParameterfSGIS),
-   TABLE_ENTRY(PointParameterfvSGIS),
 };
 #endif /*UNUSED_TABLE_NAME*/
 
 
-#undef KEYWORD1
-#undef KEYWORD2
-#undef NAME
-#undef DISPATCH
-#undef RETURN_DISPATCH
-#undef DISPATCH_TABLE_NAME
-#undef UNUSED_TABLE_NAME
-#undef TABLE_ENTRY
-
+#  undef KEYWORD1
+#  undef KEYWORD2
+#  undef NAME
+#  undef DISPATCH
+#  undef RETURN_DISPATCH
+#  undef DISPATCH_TABLE_NAME
+#  undef UNUSED_TABLE_NAME
+#  undef TABLE_ENTRY
index 37fe22ed41164ece214a7a4eb362819db62760a9..596a3e4cf9a0472fa3ff337be6254159cfbc1228 100644 (file)
@@ -862,6 +862,44 @@ static const char gl_string_table[] =
     "glStencilFuncSeparate\0"
     "glStencilOpSeparate\0"
     "glStencilMaskSeparate\0"
+    "glArrayElementEXT\0"
+    "glBindTextureEXT\0"
+    "glDrawArraysEXT\0"
+    "glCopyTexImage1DEXT\0"
+    "glCopyTexImage2DEXT\0"
+    "glCopyTexSubImage1DEXT\0"
+    "glCopyTexSubImage2DEXT\0"
+    "glDeleteTexturesEXT\0"
+    "glGetPointervEXT\0"
+    "glPrioritizeTexturesEXT\0"
+    "glTexSubImage1DEXT\0"
+    "glTexSubImage2DEXT\0"
+    "glBlendColorEXT\0"
+    "glBlendEquationEXT\0"
+    "glDrawRangeElementsEXT\0"
+    "glColorTableSGI\0"
+    "glColorTableEXT\0"
+    "glColorTableParameterfvSGI\0"
+    "glColorTableParameterivSGI\0"
+    "glCopyColorTableSGI\0"
+    "glColorSubTableEXT\0"
+    "glCopyColorSubTableEXT\0"
+    "glConvolutionFilter1DEXT\0"
+    "glConvolutionFilter2DEXT\0"
+    "glConvolutionParameterfEXT\0"
+    "glConvolutionParameterfvEXT\0"
+    "glConvolutionParameteriEXT\0"
+    "glConvolutionParameterivEXT\0"
+    "glCopyConvolutionFilter1DEXT\0"
+    "glCopyConvolutionFilter2DEXT\0"
+    "glSeparableFilter2DEXT\0"
+    "glHistogramEXT\0"
+    "glMinmaxEXT\0"
+    "glResetHistogramEXT\0"
+    "glResetMinmaxEXT\0"
+    "glTexImage3DEXT\0"
+    "glTexSubImage3DEXT\0"
+    "glCopyTexSubImage3DEXT\0"
     "glActiveTexture\0"
     "glClientActiveTexture\0"
     "glMultiTexCoord1d\0"
@@ -901,6 +939,54 @@ static const char gl_string_table[] =
     "glMultTransposeMatrixf\0"
     "glMultTransposeMatrixd\0"
     "glSampleCoverage\0"
+    "glDrawBuffersATI\0"
+    "glSampleMaskEXT\0"
+    "glSamplePatternEXT\0"
+    "glPointParameterf\0"
+    "glPointParameterfARB\0"
+    "glPointParameterfSGIS\0"
+    "glPointParameterfv\0"
+    "glPointParameterfvARB\0"
+    "glPointParameterfvSGIS\0"
+    "glWindowPos2d\0"
+    "glWindowPos2dARB\0"
+    "glWindowPos2dv\0"
+    "glWindowPos2dvARB\0"
+    "glWindowPos2f\0"
+    "glWindowPos2fARB\0"
+    "glWindowPos2fv\0"
+    "glWindowPos2fvARB\0"
+    "glWindowPos2i\0"
+    "glWindowPos2iARB\0"
+    "glWindowPos2iv\0"
+    "glWindowPos2ivARB\0"
+    "glWindowPos2s\0"
+    "glWindowPos2sARB\0"
+    "glWindowPos2sv\0"
+    "glWindowPos2svARB\0"
+    "glWindowPos3d\0"
+    "glWindowPos3dARB\0"
+    "glWindowPos3dv\0"
+    "glWindowPos3dvARB\0"
+    "glWindowPos3f\0"
+    "glWindowPos3fARB\0"
+    "glWindowPos3fv\0"
+    "glWindowPos3fvARB\0"
+    "glWindowPos3i\0"
+    "glWindowPos3iARB\0"
+    "glWindowPos3iv\0"
+    "glWindowPos3ivARB\0"
+    "glWindowPos3s\0"
+    "glWindowPos3sARB\0"
+    "glWindowPos3sv\0"
+    "glWindowPos3svARB\0"
+    "glBlendFuncSeparate\0"
+    "glBlendFuncSeparateINGR\0"
+    "glFogCoordf\0"
+    "glFogCoordfv\0"
+    "glFogCoordd\0"
+    "glFogCoorddv\0"
+    "glFogCoordPointer\0"
     "glCompressedTexImage3D\0"
     "glCompressedTexImage2D\0"
     "glCompressedTexImage1D\0"
@@ -908,18 +994,6 @@ static const char gl_string_table[] =
     "glCompressedTexSubImage2D\0"
     "glCompressedTexSubImage1D\0"
     "glGetCompressedTexImage\0"
-    "glBlendFuncSeparate\0"
-    "glFogCoordf\0"
-    "glFogCoordfv\0"
-    "glFogCoordd\0"
-    "glFogCoorddv\0"
-    "glFogCoordPointer\0"
-    "glMultiDrawArrays\0"
-    "glMultiDrawElements\0"
-    "glPointParameterf\0"
-    "glPointParameterfv\0"
-    "glPointParameteri\0"
-    "glPointParameteriv\0"
     "glSecondaryColor3b\0"
     "glSecondaryColor3bv\0"
     "glSecondaryColor3d\0"
@@ -937,22 +1011,15 @@ static const char gl_string_table[] =
     "glSecondaryColor3us\0"
     "glSecondaryColor3usv\0"
     "glSecondaryColorPointer\0"
-    "glWindowPos2d\0"
-    "glWindowPos2dv\0"
-    "glWindowPos2f\0"
-    "glWindowPos2fv\0"
-    "glWindowPos2i\0"
-    "glWindowPos2iv\0"
-    "glWindowPos2s\0"
-    "glWindowPos2sv\0"
-    "glWindowPos3d\0"
-    "glWindowPos3dv\0"
-    "glWindowPos3f\0"
-    "glWindowPos3fv\0"
-    "glWindowPos3i\0"
-    "glWindowPos3iv\0"
-    "glWindowPos3s\0"
-    "glWindowPos3sv\0"
+    "glBindProgramARB\0"
+    "glDeleteProgramsARB\0"
+    "glGenProgramsARB\0"
+    "glGetVertexAttribPointervARB\0"
+    "glIsProgramARB\0"
+    "glPointParameteri\0"
+    "glPointParameteriv\0"
+    "glMultiDrawArrays\0"
+    "glMultiDrawElements\0"
     "glBindBuffer\0"
     "glBufferData\0"
     "glBufferSubData\0"
@@ -972,74 +1039,7 @@ static const char gl_string_table[] =
     "glGetQueryiv\0"
     "glGetQueryObjectiv\0"
     "glGetQueryObjectuiv\0"
-    "glPointParameterfARB\0"
-    "glPointParameterfvARB\0"
-    "glWindowPos2dARB\0"
-    "glWindowPos2fARB\0"
-    "glWindowPos2iARB\0"
-    "glWindowPos2sARB\0"
-    "glWindowPos2dvARB\0"
-    "glWindowPos2fvARB\0"
-    "glWindowPos2ivARB\0"
-    "glWindowPos2svARB\0"
-    "glWindowPos3dARB\0"
-    "glWindowPos3fARB\0"
-    "glWindowPos3iARB\0"
-    "glWindowPos3sARB\0"
-    "glWindowPos3dvARB\0"
-    "glWindowPos3fvARB\0"
-    "glWindowPos3ivARB\0"
-    "glWindowPos3svARB\0"
-    "glBindProgramARB\0"
-    "glDeleteProgramsARB\0"
-    "glGenProgramsARB\0"
-    "glIsProgramARB\0"
-    "glGetVertexAttribPointervARB\0"
-    "glBlendColorEXT\0"
-    "glTexImage3DEXT\0"
-    "glTexSubImage3DEXT\0"
-    "glTexSubImage1DEXT\0"
-    "glTexSubImage2DEXT\0"
-    "glCopyTexImage1DEXT\0"
-    "glCopyTexImage2DEXT\0"
-    "glCopyTexSubImage1DEXT\0"
-    "glCopyTexSubImage2DEXT\0"
-    "glCopyTexSubImage3DEXT\0"
-    "glHistogramEXT\0"
-    "glMinmaxEXT\0"
-    "glResetHistogramEXT\0"
-    "glResetMinmaxEXT\0"
-    "glConvolutionFilter1DEXT\0"
-    "glConvolutionFilter2DEXT\0"
-    "glConvolutionParameterfEXT\0"
-    "glConvolutionParameterfvEXT\0"
-    "glConvolutionParameteriEXT\0"
-    "glConvolutionParameterivEXT\0"
-    "glCopyConvolutionFilter1DEXT\0"
-    "glCopyConvolutionFilter2DEXT\0"
-    "glSeparableFilter2DEXT\0"
-    "glColorTableSGI\0"
-    "glColorTableParameterfvSGI\0"
-    "glColorTableParameterivSGI\0"
-    "glCopyColorTableSGI\0"
-    "glBindTextureEXT\0"
-    "glDeleteTexturesEXT\0"
-    "glPrioritizeTexturesEXT\0"
-    "glArrayElementEXT\0"
-    "glDrawArraysEXT\0"
-    "glGetPointervEXT\0"
-    "glBlendEquationEXT\0"
-    "glColorSubTableEXT\0"
-    "glCopyColorSubTableEXT\0"
-    "glColorTableEXT\0"
-    "glDrawRangeElementsEXT\0"
-    "glSampleMaskEXT\0"
-    "glSamplePatternEXT\0"
-    "glDrawBuffersATI\0"
     "glBlendEquationSeparateATI\0"
-    "glBlendFuncSeparateINGR\0"
-    "glPointParameterfSGIS\0"
-    "glPointParameterfvSGIS\0"
     ;
 
 static const glprocs_table_t static_functions[] = {
@@ -1640,403 +1640,403 @@ static const glprocs_table_t static_functions[] = {
     NAME_FUNC_OFFSET(  9934, glProgramParameter4dNV, _gloffset_ProgramParameter4dNV ),
     NAME_FUNC_OFFSET(  9957, glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV ),
     NAME_FUNC_OFFSET(  9981, glProgramParameter4fNV, _gloffset_ProgramParameter4fNV ),
-    NAME_FUNC_OFFSET(  10004, glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV ),
-    NAME_FUNC_OFFSET(  10028, glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV ),
-    NAME_FUNC_OFFSET(  10053, glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV ),
-    NAME_FUNC_OFFSET(  10078, glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV ),
-    NAME_FUNC_OFFSET(  10106, glTrackMatrixNV, _gloffset_TrackMatrixNV ),
-    NAME_FUNC_OFFSET(  10122, glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV ),
-    NAME_FUNC_OFFSET(  10146, glVertexAttrib1dARB, _gloffset_VertexAttrib1dARB ),
-    NAME_FUNC_OFFSET(  10166, glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB ),
-    NAME_FUNC_OFFSET(  10187, glVertexAttrib1fARB, _gloffset_VertexAttrib1fARB ),
-    NAME_FUNC_OFFSET(  10207, glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB ),
-    NAME_FUNC_OFFSET(  10228, glVertexAttrib1sARB, _gloffset_VertexAttrib1sARB ),
-    NAME_FUNC_OFFSET(  10248, glVertexAttrib1svARB, _gloffset_VertexAttrib1svARB ),
-    NAME_FUNC_OFFSET(  10269, glVertexAttrib2dARB, _gloffset_VertexAttrib2dARB ),
-    NAME_FUNC_OFFSET(  10289, glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB ),
-    NAME_FUNC_OFFSET(  10310, glVertexAttrib2fARB, _gloffset_VertexAttrib2fARB ),
-    NAME_FUNC_OFFSET(  10330, glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB ),
-    NAME_FUNC_OFFSET(  10351, glVertexAttrib2sARB, _gloffset_VertexAttrib2sARB ),
-    NAME_FUNC_OFFSET(  10371, glVertexAttrib2svARB, _gloffset_VertexAttrib2svARB ),
-    NAME_FUNC_OFFSET(  10392, glVertexAttrib3dARB, _gloffset_VertexAttrib3dARB ),
-    NAME_FUNC_OFFSET(  10412, glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB ),
-    NAME_FUNC_OFFSET(  10433, glVertexAttrib3fARB, _gloffset_VertexAttrib3fARB ),
-    NAME_FUNC_OFFSET(  10453, glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB ),
-    NAME_FUNC_OFFSET(  10474, glVertexAttrib3sARB, _gloffset_VertexAttrib3sARB ),
-    NAME_FUNC_OFFSET(  10494, glVertexAttrib3svARB, _gloffset_VertexAttrib3svARB ),
-    NAME_FUNC_OFFSET(  10515, glVertexAttrib4dARB, _gloffset_VertexAttrib4dARB ),
-    NAME_FUNC_OFFSET(  10535, glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB ),
-    NAME_FUNC_OFFSET(  10556, glVertexAttrib4fARB, _gloffset_VertexAttrib4fARB ),
-    NAME_FUNC_OFFSET(  10576, glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB ),
-    NAME_FUNC_OFFSET(  10597, glVertexAttrib4sARB, _gloffset_VertexAttrib4sARB ),
-    NAME_FUNC_OFFSET(  10617, glVertexAttrib4svARB, _gloffset_VertexAttrib4svARB ),
-    NAME_FUNC_OFFSET(  10638, glVertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB ),
-    NAME_FUNC_OFFSET(  10660, glVertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB ),
-    NAME_FUNC_OFFSET(  10683, glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV ),
-    NAME_FUNC_OFFSET(  10704, glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV ),
-    NAME_FUNC_OFFSET(  10725, glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV ),
-    NAME_FUNC_OFFSET(  10746, glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV ),
-    NAME_FUNC_OFFSET(  10767, glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV ),
-    NAME_FUNC_OFFSET(  10788, glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV ),
-    NAME_FUNC_OFFSET(  10809, glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV ),
-    NAME_FUNC_OFFSET(  10830, glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV ),
-    NAME_FUNC_OFFSET(  10851, glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV ),
-    NAME_FUNC_OFFSET(  10872, glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV ),
-    NAME_FUNC_OFFSET(  10893, glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV ),
-    NAME_FUNC_OFFSET(  10914, glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV ),
-    NAME_FUNC_OFFSET(  10935, glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV ),
-    NAME_FUNC_OFFSET(  10957, glPointParameteriNV, _gloffset_PointParameteriNV ),
-    NAME_FUNC_OFFSET(  10977, glPointParameterivNV, _gloffset_PointParameterivNV ),
-    NAME_FUNC_OFFSET(  10998, glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT ),
-    NAME_FUNC_OFFSET(  11019, glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT ),
-    NAME_FUNC_OFFSET(  11042, glActiveStencilFaceEXT, _gloffset_ActiveStencilFaceEXT ),
-    NAME_FUNC_OFFSET(  11065, glDeleteFencesNV, _gloffset_DeleteFencesNV ),
-    NAME_FUNC_OFFSET(  11082, glGenFencesNV, _gloffset_GenFencesNV ),
-    NAME_FUNC_OFFSET(  11096, glIsFenceNV, _gloffset_IsFenceNV ),
-    NAME_FUNC_OFFSET(  11108, glTestFenceNV, _gloffset_TestFenceNV ),
-    NAME_FUNC_OFFSET(  11122, glGetFenceivNV, _gloffset_GetFenceivNV ),
-    NAME_FUNC_OFFSET(  11137, glFinishFenceNV, _gloffset_FinishFenceNV ),
-    NAME_FUNC_OFFSET(  11153, glSetFenceNV, _gloffset_SetFenceNV ),
-    NAME_FUNC_OFFSET(  11166, glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB ),
-    NAME_FUNC_OFFSET(  11187, glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB ),
-    NAME_FUNC_OFFSET(  11208, glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB ),
-    NAME_FUNC_OFFSET(  11230, glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB ),
-    NAME_FUNC_OFFSET(  11252, glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB ),
-    NAME_FUNC_OFFSET(  11274, glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB ),
-    NAME_FUNC_OFFSET(  11296, glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB ),
-    NAME_FUNC_OFFSET(  11318, glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB ),
-    NAME_FUNC_OFFSET(  11340, glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB ),
-    NAME_FUNC_OFFSET(  11363, glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB ),
-    NAME_FUNC_OFFSET(  11386, glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB ),
-    NAME_FUNC_OFFSET(  11411, glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB ),
-    NAME_FUNC_OFFSET(  11440, glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB ),
-    NAME_FUNC_OFFSET(  11470, glProgramStringARB, _gloffset_ProgramStringARB ),
-    NAME_FUNC_OFFSET(  11489, glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB ),
-    NAME_FUNC_OFFSET(  11516, glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB ),
-    NAME_FUNC_OFFSET(  11544, glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB ),
-    NAME_FUNC_OFFSET(  11571, glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB ),
-    NAME_FUNC_OFFSET(  11599, glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB ),
-    NAME_FUNC_OFFSET(  11628, glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB ),
-    NAME_FUNC_OFFSET(  11658, glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB ),
-    NAME_FUNC_OFFSET(  11687, glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB ),
-    NAME_FUNC_OFFSET(  11717, glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB ),
-    NAME_FUNC_OFFSET(  11747, glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB ),
-    NAME_FUNC_OFFSET(  11777, glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB ),
-    NAME_FUNC_OFFSET(  11809, glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB ),
-    NAME_FUNC_OFFSET(  11841, glGetProgramivARB, _gloffset_GetProgramivARB ),
-    NAME_FUNC_OFFSET(  11859, glGetProgramStringARB, _gloffset_GetProgramStringARB ),
-    NAME_FUNC_OFFSET(  11881, glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV ),
-    NAME_FUNC_OFFSET(  11909, glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV ),
-    NAME_FUNC_OFFSET(  11937, glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV ),
-    NAME_FUNC_OFFSET(  11966, glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV ),
-    NAME_FUNC_OFFSET(  11995, glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV ),
-    NAME_FUNC_OFFSET(  12026, glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV ),
-    NAME_FUNC_OFFSET(  12057, glBindBufferARB, _gloffset_BindBufferARB ),
-    NAME_FUNC_OFFSET(  12073, glBufferDataARB, _gloffset_BufferDataARB ),
-    NAME_FUNC_OFFSET(  12089, glBufferSubDataARB, _gloffset_BufferSubDataARB ),
-    NAME_FUNC_OFFSET(  12108, glDeleteBuffersARB, _gloffset_DeleteBuffersARB ),
-    NAME_FUNC_OFFSET(  12127, glGenBuffersARB, _gloffset_GenBuffersARB ),
-    NAME_FUNC_OFFSET(  12143, glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB ),
-    NAME_FUNC_OFFSET(  12169, glGetBufferPointervARB, _gloffset_GetBufferPointervARB ),
-    NAME_FUNC_OFFSET(  12192, glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB ),
-    NAME_FUNC_OFFSET(  12214, glIsBufferARB, _gloffset_IsBufferARB ),
-    NAME_FUNC_OFFSET(  12228, glMapBufferARB, _gloffset_MapBufferARB ),
-    NAME_FUNC_OFFSET(  12243, glUnmapBufferARB, _gloffset_UnmapBufferARB ),
-    NAME_FUNC_OFFSET(  12260, glDepthBoundsEXT, _gloffset_DepthBoundsEXT ),
-    NAME_FUNC_OFFSET(  12277, glGenQueriesARB, _gloffset_GenQueriesARB ),
-    NAME_FUNC_OFFSET(  12293, glDeleteQueriesARB, _gloffset_DeleteQueriesARB ),
-    NAME_FUNC_OFFSET(  12312, glIsQueryARB, _gloffset_IsQueryARB ),
-    NAME_FUNC_OFFSET(  12325, glBeginQueryARB, _gloffset_BeginQueryARB ),
-    NAME_FUNC_OFFSET(  12341, glEndQueryARB, _gloffset_EndQueryARB ),
-    NAME_FUNC_OFFSET(  12355, glGetQueryivARB, _gloffset_GetQueryivARB ),
-    NAME_FUNC_OFFSET(  12371, glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB ),
-    NAME_FUNC_OFFSET(  12393, glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB ),
-    NAME_FUNC_OFFSET(  12416, glMultiModeDrawArraysIBM, _gloffset_MultiModeDrawArraysIBM ),
-    NAME_FUNC_OFFSET(  12441, glMultiModeDrawElementsIBM, _gloffset_MultiModeDrawElementsIBM ),
-    NAME_FUNC_OFFSET(  12468, glBlendEquationSeparateEXT, _gloffset_BlendEquationSeparateEXT ),
-    NAME_FUNC_OFFSET(  12495, glDeleteObjectARB, _gloffset_DeleteObjectARB ),
-    NAME_FUNC_OFFSET(  12513, glGetHandleARB, _gloffset_GetHandleARB ),
-    NAME_FUNC_OFFSET(  12528, glDetachObjectARB, _gloffset_DetachObjectARB ),
-    NAME_FUNC_OFFSET(  12546, glCreateShaderObjectARB, _gloffset_CreateShaderObjectARB ),
-    NAME_FUNC_OFFSET(  12570, glShaderSourceARB, _gloffset_ShaderSourceARB ),
-    NAME_FUNC_OFFSET(  12588, glCompileShaderARB, _gloffset_CompileShaderARB ),
-    NAME_FUNC_OFFSET(  12607, glCreateProgramObjectARB, _gloffset_CreateProgramObjectARB ),
-    NAME_FUNC_OFFSET(  12632, glAttachObjectARB, _gloffset_AttachObjectARB ),
-    NAME_FUNC_OFFSET(  12650, glLinkProgramARB, _gloffset_LinkProgramARB ),
-    NAME_FUNC_OFFSET(  12667, glUseProgramObjectARB, _gloffset_UseProgramObjectARB ),
-    NAME_FUNC_OFFSET(  12689, glValidateProgramARB, _gloffset_ValidateProgramARB ),
-    NAME_FUNC_OFFSET(  12710, glUniform1fARB, _gloffset_Uniform1fARB ),
-    NAME_FUNC_OFFSET(  12725, glUniform2fARB, _gloffset_Uniform2fARB ),
-    NAME_FUNC_OFFSET(  12740, glUniform3fARB, _gloffset_Uniform3fARB ),
-    NAME_FUNC_OFFSET(  12755, glUniform4fARB, _gloffset_Uniform4fARB ),
-    NAME_FUNC_OFFSET(  12770, glUniform1iARB, _gloffset_Uniform1iARB ),
-    NAME_FUNC_OFFSET(  12785, glUniform2iARB, _gloffset_Uniform2iARB ),
-    NAME_FUNC_OFFSET(  12800, glUniform3iARB, _gloffset_Uniform3iARB ),
-    NAME_FUNC_OFFSET(  12815, glUniform4iARB, _gloffset_Uniform4iARB ),
-    NAME_FUNC_OFFSET(  12830, glUniform1fvARB, _gloffset_Uniform1fvARB ),
-    NAME_FUNC_OFFSET(  12846, glUniform2fvARB, _gloffset_Uniform2fvARB ),
-    NAME_FUNC_OFFSET(  12862, glUniform3fvARB, _gloffset_Uniform3fvARB ),
-    NAME_FUNC_OFFSET(  12878, glUniform4fvARB, _gloffset_Uniform4fvARB ),
-    NAME_FUNC_OFFSET(  12894, glUniform1ivARB, _gloffset_Uniform1ivARB ),
-    NAME_FUNC_OFFSET(  12910, glUniform2ivARB, _gloffset_Uniform2ivARB ),
-    NAME_FUNC_OFFSET(  12926, glUniform3ivARB, _gloffset_Uniform3ivARB ),
-    NAME_FUNC_OFFSET(  12942, glUniform4ivARB, _gloffset_Uniform4ivARB ),
-    NAME_FUNC_OFFSET(  12958, glUniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB ),
-    NAME_FUNC_OFFSET(  12980, glUniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB ),
-    NAME_FUNC_OFFSET(  13002, glUniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB ),
-    NAME_FUNC_OFFSET(  13024, glGetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB ),
-    NAME_FUNC_OFFSET(  13050, glGetObjectParameterivARB, _gloffset_GetObjectParameterivARB ),
-    NAME_FUNC_OFFSET(  13076, glGetInfoLogARB, _gloffset_GetInfoLogARB ),
-    NAME_FUNC_OFFSET(  13092, glGetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB ),
-    NAME_FUNC_OFFSET(  13116, glGetUniformLocationARB, _gloffset_GetUniformLocationARB ),
-    NAME_FUNC_OFFSET(  13140, glGetActiveUniformARB, _gloffset_GetActiveUniformARB ),
-    NAME_FUNC_OFFSET(  13162, glGetUniformfvARB, _gloffset_GetUniformfvARB ),
-    NAME_FUNC_OFFSET(  13180, glGetUniformivARB, _gloffset_GetUniformivARB ),
-    NAME_FUNC_OFFSET(  13198, glGetShaderSourceARB, _gloffset_GetShaderSourceARB ),
-    NAME_FUNC_OFFSET(  13219, glBindAttribLocationARB, _gloffset_BindAttribLocationARB ),
-    NAME_FUNC_OFFSET(  13243, glGetActiveAttribARB, _gloffset_GetActiveAttribARB ),
-    NAME_FUNC_OFFSET(  13264, glGetAttribLocationARB, _gloffset_GetAttribLocationARB ),
-    NAME_FUNC_OFFSET(  13287, glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV ),
-    NAME_FUNC_OFFSET(  13309, glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV ),
-    NAME_FUNC_OFFSET(  13331, glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV ),
-    NAME_FUNC_OFFSET(  13353, glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV ),
-    NAME_FUNC_OFFSET(  13372, glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV ),
-    NAME_FUNC_OFFSET(  13392, glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV ),
-    NAME_FUNC_OFFSET(  13411, glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV ),
-    NAME_FUNC_OFFSET(  13431, glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV ),
-    NAME_FUNC_OFFSET(  13450, glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV ),
-    NAME_FUNC_OFFSET(  13470, glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV ),
-    NAME_FUNC_OFFSET(  13489, glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV ),
-    NAME_FUNC_OFFSET(  13509, glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV ),
-    NAME_FUNC_OFFSET(  13528, glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV ),
-    NAME_FUNC_OFFSET(  13548, glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV ),
-    NAME_FUNC_OFFSET(  13567, glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV ),
-    NAME_FUNC_OFFSET(  13587, glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV ),
-    NAME_FUNC_OFFSET(  13606, glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV ),
-    NAME_FUNC_OFFSET(  13626, glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV ),
-    NAME_FUNC_OFFSET(  13645, glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV ),
-    NAME_FUNC_OFFSET(  13665, glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV ),
-    NAME_FUNC_OFFSET(  13684, glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV ),
-    NAME_FUNC_OFFSET(  13704, glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV ),
-    NAME_FUNC_OFFSET(  13723, glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV ),
-    NAME_FUNC_OFFSET(  13743, glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV ),
-    NAME_FUNC_OFFSET(  13762, glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV ),
-    NAME_FUNC_OFFSET(  13782, glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV ),
-    NAME_FUNC_OFFSET(  13801, glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV ),
-    NAME_FUNC_OFFSET(  13821, glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV ),
-    NAME_FUNC_OFFSET(  13841, glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV ),
-    NAME_FUNC_OFFSET(  13862, glGenFragmentShadersATI, _gloffset_GenFragmentShadersATI ),
-    NAME_FUNC_OFFSET(  13886, glBindFragmentShaderATI, _gloffset_BindFragmentShaderATI ),
-    NAME_FUNC_OFFSET(  13910, glDeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI ),
-    NAME_FUNC_OFFSET(  13936, glBeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI ),
-    NAME_FUNC_OFFSET(  13961, glEndFragmentShaderATI, _gloffset_EndFragmentShaderATI ),
-    NAME_FUNC_OFFSET(  13984, glPassTexCoordATI, _gloffset_PassTexCoordATI ),
-    NAME_FUNC_OFFSET(  14002, glSampleMapATI, _gloffset_SampleMapATI ),
-    NAME_FUNC_OFFSET(  14017, glColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI ),
-    NAME_FUNC_OFFSET(  14039, glColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI ),
-    NAME_FUNC_OFFSET(  14061, glColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI ),
-    NAME_FUNC_OFFSET(  14083, glAlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI ),
-    NAME_FUNC_OFFSET(  14105, glAlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI ),
-    NAME_FUNC_OFFSET(  14127, glAlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI ),
-    NAME_FUNC_OFFSET(  14149, glSetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI ),
-    NAME_FUNC_OFFSET(  14180, glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT ),
-    NAME_FUNC_OFFSET(  14200, glBindRenderbufferEXT, _gloffset_BindRenderbufferEXT ),
-    NAME_FUNC_OFFSET(  14222, glDeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT ),
-    NAME_FUNC_OFFSET(  14247, glGenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT ),
-    NAME_FUNC_OFFSET(  14269, glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT ),
-    NAME_FUNC_OFFSET(  14294, glGetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT ),
-    NAME_FUNC_OFFSET(  14326, glIsFramebufferEXT, _gloffset_IsFramebufferEXT ),
-    NAME_FUNC_OFFSET(  14345, glBindFramebufferEXT, _gloffset_BindFramebufferEXT ),
-    NAME_FUNC_OFFSET(  14366, glDeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT ),
-    NAME_FUNC_OFFSET(  14390, glGenFramebuffersEXT, _gloffset_GenFramebuffersEXT ),
-    NAME_FUNC_OFFSET(  14411, glCheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT ),
-    NAME_FUNC_OFFSET(  14439, glFramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT ),
-    NAME_FUNC_OFFSET(  14465, glFramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT ),
-    NAME_FUNC_OFFSET(  14491, glFramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT ),
-    NAME_FUNC_OFFSET(  14517, glFramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT ),
-    NAME_FUNC_OFFSET(  14546, glGetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT ),
-    NAME_FUNC_OFFSET(  14587, glGenerateMipmapEXT, _gloffset_GenerateMipmapEXT ),
-    NAME_FUNC_OFFSET(  14607, glStencilFuncSeparate, _gloffset_StencilFuncSeparate ),
-    NAME_FUNC_OFFSET(  14629, glStencilOpSeparate, _gloffset_StencilOpSeparate ),
-    NAME_FUNC_OFFSET(  14649, glStencilMaskSeparate, _gloffset_StencilMaskSeparate ),
-    NAME_FUNC_OFFSET(  14671, glActiveTexture, _gloffset_ActiveTextureARB ),
-    NAME_FUNC_OFFSET(  14687, glClientActiveTexture, _gloffset_ClientActiveTextureARB ),
-    NAME_FUNC_OFFSET(  14709, glMultiTexCoord1d, _gloffset_MultiTexCoord1dARB ),
-    NAME_FUNC_OFFSET(  14727, glMultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB ),
-    NAME_FUNC_OFFSET(  14746, glMultiTexCoord1f, _gloffset_MultiTexCoord1fARB ),
-    NAME_FUNC_OFFSET(  14764, glMultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB ),
-    NAME_FUNC_OFFSET(  14783, glMultiTexCoord1i, _gloffset_MultiTexCoord1iARB ),
-    NAME_FUNC_OFFSET(  14801, glMultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB ),
-    NAME_FUNC_OFFSET(  14820, glMultiTexCoord1s, _gloffset_MultiTexCoord1sARB ),
-    NAME_FUNC_OFFSET(  14838, glMultiTexCoord1sv, _gloffset_MultiTexCoord1svARB ),
-    NAME_FUNC_OFFSET(  14857, glMultiTexCoord2d, _gloffset_MultiTexCoord2dARB ),
-    NAME_FUNC_OFFSET(  14875, glMultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB ),
-    NAME_FUNC_OFFSET(  14894, glMultiTexCoord2f, _gloffset_MultiTexCoord2fARB ),
-    NAME_FUNC_OFFSET(  14912, glMultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB ),
-    NAME_FUNC_OFFSET(  14931, glMultiTexCoord2i, _gloffset_MultiTexCoord2iARB ),
-    NAME_FUNC_OFFSET(  14949, glMultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB ),
-    NAME_FUNC_OFFSET(  14968, glMultiTexCoord2s, _gloffset_MultiTexCoord2sARB ),
-    NAME_FUNC_OFFSET(  14986, glMultiTexCoord2sv, _gloffset_MultiTexCoord2svARB ),
-    NAME_FUNC_OFFSET(  15005, glMultiTexCoord3d, _gloffset_MultiTexCoord3dARB ),
-    NAME_FUNC_OFFSET(  15023, glMultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB ),
-    NAME_FUNC_OFFSET(  15042, glMultiTexCoord3f, _gloffset_MultiTexCoord3fARB ),
-    NAME_FUNC_OFFSET(  15060, glMultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB ),
-    NAME_FUNC_OFFSET(  15079, glMultiTexCoord3i, _gloffset_MultiTexCoord3iARB ),
-    NAME_FUNC_OFFSET(  15097, glMultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB ),
-    NAME_FUNC_OFFSET(  15116, glMultiTexCoord3s, _gloffset_MultiTexCoord3sARB ),
-    NAME_FUNC_OFFSET(  15134, glMultiTexCoord3sv, _gloffset_MultiTexCoord3svARB ),
-    NAME_FUNC_OFFSET(  15153, glMultiTexCoord4d, _gloffset_MultiTexCoord4dARB ),
-    NAME_FUNC_OFFSET(  15171, glMultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB ),
-    NAME_FUNC_OFFSET(  15190, glMultiTexCoord4f, _gloffset_MultiTexCoord4fARB ),
-    NAME_FUNC_OFFSET(  15208, glMultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB ),
-    NAME_FUNC_OFFSET(  15227, glMultiTexCoord4i, _gloffset_MultiTexCoord4iARB ),
-    NAME_FUNC_OFFSET(  15245, glMultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB ),
-    NAME_FUNC_OFFSET(  15264, glMultiTexCoord4s, _gloffset_MultiTexCoord4sARB ),
-    NAME_FUNC_OFFSET(  15282, glMultiTexCoord4sv, _gloffset_MultiTexCoord4svARB ),
-    NAME_FUNC_OFFSET(  15301, glLoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB ),
-    NAME_FUNC_OFFSET(  15324, glLoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB ),
-    NAME_FUNC_OFFSET(  15347, glMultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB ),
-    NAME_FUNC_OFFSET(  15370, glMultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB ),
-    NAME_FUNC_OFFSET(  15393, glSampleCoverage, _gloffset_SampleCoverageARB ),
-    NAME_FUNC_OFFSET(  15410, glCompressedTexImage3D, _gloffset_CompressedTexImage3DARB ),
-    NAME_FUNC_OFFSET(  15433, glCompressedTexImage2D, _gloffset_CompressedTexImage2DARB ),
-    NAME_FUNC_OFFSET(  15456, glCompressedTexImage1D, _gloffset_CompressedTexImage1DARB ),
-    NAME_FUNC_OFFSET(  15479, glCompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB ),
-    NAME_FUNC_OFFSET(  15505, glCompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB ),
-    NAME_FUNC_OFFSET(  15531, glCompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB ),
-    NAME_FUNC_OFFSET(  15557, glGetCompressedTexImage, _gloffset_GetCompressedTexImageARB ),
-    NAME_FUNC_OFFSET(  15581, glBlendFuncSeparate, _gloffset_BlendFuncSeparateEXT ),
-    NAME_FUNC_OFFSET(  15601, glFogCoordf, _gloffset_FogCoordfEXT ),
-    NAME_FUNC_OFFSET(  15613, glFogCoordfv, _gloffset_FogCoordfvEXT ),
-    NAME_FUNC_OFFSET(  15626, glFogCoordd, _gloffset_FogCoorddEXT ),
-    NAME_FUNC_OFFSET(  15638, glFogCoorddv, _gloffset_FogCoorddvEXT ),
-    NAME_FUNC_OFFSET(  15651, glFogCoordPointer, _gloffset_FogCoordPointerEXT ),
-    NAME_FUNC_OFFSET(  15669, glMultiDrawArrays, _gloffset_MultiDrawArraysEXT ),
-    NAME_FUNC_OFFSET(  15687, glMultiDrawElements, _gloffset_MultiDrawElementsEXT ),
-    NAME_FUNC_OFFSET(  15707, glPointParameterf, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET(  15725, glPointParameterfv, _gloffset_PointParameterfvEXT ),
-    NAME_FUNC_OFFSET(  15744, glPointParameteri, _gloffset_PointParameteriNV ),
-    NAME_FUNC_OFFSET(  15762, glPointParameteriv, _gloffset_PointParameterivNV ),
-    NAME_FUNC_OFFSET(  15781, glSecondaryColor3b, _gloffset_SecondaryColor3bEXT ),
-    NAME_FUNC_OFFSET(  15800, glSecondaryColor3bv, _gloffset_SecondaryColor3bvEXT ),
-    NAME_FUNC_OFFSET(  15820, glSecondaryColor3d, _gloffset_SecondaryColor3dEXT ),
-    NAME_FUNC_OFFSET(  15839, glSecondaryColor3dv, _gloffset_SecondaryColor3dvEXT ),
-    NAME_FUNC_OFFSET(  15859, glSecondaryColor3f, _gloffset_SecondaryColor3fEXT ),
-    NAME_FUNC_OFFSET(  15878, glSecondaryColor3fv, _gloffset_SecondaryColor3fvEXT ),
-    NAME_FUNC_OFFSET(  15898, glSecondaryColor3i, _gloffset_SecondaryColor3iEXT ),
-    NAME_FUNC_OFFSET(  15917, glSecondaryColor3iv, _gloffset_SecondaryColor3ivEXT ),
-    NAME_FUNC_OFFSET(  15937, glSecondaryColor3s, _gloffset_SecondaryColor3sEXT ),
-    NAME_FUNC_OFFSET(  15956, glSecondaryColor3sv, _gloffset_SecondaryColor3svEXT ),
-    NAME_FUNC_OFFSET(  15976, glSecondaryColor3ub, _gloffset_SecondaryColor3ubEXT ),
-    NAME_FUNC_OFFSET(  15996, glSecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT ),
-    NAME_FUNC_OFFSET(  16017, glSecondaryColor3ui, _gloffset_SecondaryColor3uiEXT ),
-    NAME_FUNC_OFFSET(  16037, glSecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT ),
-    NAME_FUNC_OFFSET(  16058, glSecondaryColor3us, _gloffset_SecondaryColor3usEXT ),
-    NAME_FUNC_OFFSET(  16078, glSecondaryColor3usv, _gloffset_SecondaryColor3usvEXT ),
-    NAME_FUNC_OFFSET(  16099, glSecondaryColorPointer, _gloffset_SecondaryColorPointerEXT ),
-    NAME_FUNC_OFFSET(  16123, glWindowPos2d, _gloffset_WindowPos2dMESA ),
-    NAME_FUNC_OFFSET(  16137, glWindowPos2dv, _gloffset_WindowPos2dvMESA ),
-    NAME_FUNC_OFFSET(  16152, glWindowPos2f, _gloffset_WindowPos2fMESA ),
-    NAME_FUNC_OFFSET(  16166, glWindowPos2fv, _gloffset_WindowPos2fvMESA ),
-    NAME_FUNC_OFFSET(  16181, glWindowPos2i, _gloffset_WindowPos2iMESA ),
-    NAME_FUNC_OFFSET(  16195, glWindowPos2iv, _gloffset_WindowPos2ivMESA ),
-    NAME_FUNC_OFFSET(  16210, glWindowPos2s, _gloffset_WindowPos2sMESA ),
-    NAME_FUNC_OFFSET(  16224, glWindowPos2sv, _gloffset_WindowPos2svMESA ),
-    NAME_FUNC_OFFSET(  16239, glWindowPos3d, _gloffset_WindowPos3dMESA ),
-    NAME_FUNC_OFFSET(  16253, glWindowPos3dv, _gloffset_WindowPos3dvMESA ),
-    NAME_FUNC_OFFSET(  16268, glWindowPos3f, _gloffset_WindowPos3fMESA ),
-    NAME_FUNC_OFFSET(  16282, glWindowPos3fv, _gloffset_WindowPos3fvMESA ),
-    NAME_FUNC_OFFSET(  16297, glWindowPos3i, _gloffset_WindowPos3iMESA ),
-    NAME_FUNC_OFFSET(  16311, glWindowPos3iv, _gloffset_WindowPos3ivMESA ),
-    NAME_FUNC_OFFSET(  16326, glWindowPos3s, _gloffset_WindowPos3sMESA ),
-    NAME_FUNC_OFFSET(  16340, glWindowPos3sv, _gloffset_WindowPos3svMESA ),
-    NAME_FUNC_OFFSET(  16355, glBindBuffer, _gloffset_BindBufferARB ),
-    NAME_FUNC_OFFSET(  16368, glBufferData, _gloffset_BufferDataARB ),
-    NAME_FUNC_OFFSET(  16381, glBufferSubData, _gloffset_BufferSubDataARB ),
-    NAME_FUNC_OFFSET(  16397, glDeleteBuffers, _gloffset_DeleteBuffersARB ),
-    NAME_FUNC_OFFSET(  16413, glGenBuffers, _gloffset_GenBuffersARB ),
-    NAME_FUNC_OFFSET(  16426, glGetBufferParameteriv, _gloffset_GetBufferParameterivARB ),
-    NAME_FUNC_OFFSET(  16449, glGetBufferPointerv, _gloffset_GetBufferPointervARB ),
-    NAME_FUNC_OFFSET(  16469, glGetBufferSubData, _gloffset_GetBufferSubDataARB ),
-    NAME_FUNC_OFFSET(  16488, glIsBuffer, _gloffset_IsBufferARB ),
-    NAME_FUNC_OFFSET(  16499, glMapBuffer, _gloffset_MapBufferARB ),
-    NAME_FUNC_OFFSET(  16511, glUnmapBuffer, _gloffset_UnmapBufferARB ),
-    NAME_FUNC_OFFSET(  16525, glGenQueries, _gloffset_GenQueriesARB ),
-    NAME_FUNC_OFFSET(  16538, glDeleteQueries, _gloffset_DeleteQueriesARB ),
-    NAME_FUNC_OFFSET(  16554, glIsQuery, _gloffset_IsQueryARB ),
-    NAME_FUNC_OFFSET(  16564, glBeginQuery, _gloffset_BeginQueryARB ),
-    NAME_FUNC_OFFSET(  16577, glEndQuery, _gloffset_EndQueryARB ),
-    NAME_FUNC_OFFSET(  16588, glGetQueryiv, _gloffset_GetQueryivARB ),
-    NAME_FUNC_OFFSET(  16601, glGetQueryObjectiv, _gloffset_GetQueryObjectivARB ),
-    NAME_FUNC_OFFSET(  16620, glGetQueryObjectuiv, _gloffset_GetQueryObjectuivARB ),
-    NAME_FUNC_OFFSET(  16640, glPointParameterfARB, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET(  16661, glPointParameterfvARB, _gloffset_PointParameterfvEXT ),
-    NAME_FUNC_OFFSET(  16683, glWindowPos2dARB, _gloffset_WindowPos2dMESA ),
-    NAME_FUNC_OFFSET(  16700, glWindowPos2fARB, _gloffset_WindowPos2fMESA ),
-    NAME_FUNC_OFFSET(  16717, glWindowPos2iARB, _gloffset_WindowPos2iMESA ),
-    NAME_FUNC_OFFSET(  16734, glWindowPos2sARB, _gloffset_WindowPos2sMESA ),
-    NAME_FUNC_OFFSET(  16751, glWindowPos2dvARB, _gloffset_WindowPos2dvMESA ),
-    NAME_FUNC_OFFSET(  16769, glWindowPos2fvARB, _gloffset_WindowPos2fvMESA ),
-    NAME_FUNC_OFFSET(  16787, glWindowPos2ivARB, _gloffset_WindowPos2ivMESA ),
-    NAME_FUNC_OFFSET(  16805, glWindowPos2svARB, _gloffset_WindowPos2svMESA ),
-    NAME_FUNC_OFFSET(  16823, glWindowPos3dARB, _gloffset_WindowPos3dMESA ),
-    NAME_FUNC_OFFSET(  16840, glWindowPos3fARB, _gloffset_WindowPos3fMESA ),
-    NAME_FUNC_OFFSET(  16857, glWindowPos3iARB, _gloffset_WindowPos3iMESA ),
-    NAME_FUNC_OFFSET(  16874, glWindowPos3sARB, _gloffset_WindowPos3sMESA ),
-    NAME_FUNC_OFFSET(  16891, glWindowPos3dvARB, _gloffset_WindowPos3dvMESA ),
-    NAME_FUNC_OFFSET(  16909, glWindowPos3fvARB, _gloffset_WindowPos3fvMESA ),
-    NAME_FUNC_OFFSET(  16927, glWindowPos3ivARB, _gloffset_WindowPos3ivMESA ),
-    NAME_FUNC_OFFSET(  16945, glWindowPos3svARB, _gloffset_WindowPos3svMESA ),
-    NAME_FUNC_OFFSET(  16963, glBindProgramARB, _gloffset_BindProgramNV ),
-    NAME_FUNC_OFFSET(  16980, glDeleteProgramsARB, _gloffset_DeleteProgramsNV ),
-    NAME_FUNC_OFFSET(  17000, glGenProgramsARB, _gloffset_GenProgramsNV ),
-    NAME_FUNC_OFFSET(  17017, glIsProgramARB, _gloffset_IsProgramNV ),
-    NAME_FUNC_OFFSET(  17032, glGetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV ),
-    NAME_FUNC_OFFSET(  17061, glBlendColorEXT, _gloffset_BlendColor ),
-    NAME_FUNC_OFFSET(  17077, glTexImage3DEXT, _gloffset_TexImage3D ),
-    NAME_FUNC_OFFSET(  17093, glTexSubImage3DEXT, _gloffset_TexSubImage3D ),
-    NAME_FUNC_OFFSET(  17112, glTexSubImage1DEXT, _gloffset_TexSubImage1D ),
-    NAME_FUNC_OFFSET(  17131, glTexSubImage2DEXT, _gloffset_TexSubImage2D ),
-    NAME_FUNC_OFFSET(  17150, glCopyTexImage1DEXT, _gloffset_CopyTexImage1D ),
-    NAME_FUNC_OFFSET(  17170, glCopyTexImage2DEXT, _gloffset_CopyTexImage2D ),
-    NAME_FUNC_OFFSET(  17190, glCopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D ),
-    NAME_FUNC_OFFSET(  17213, glCopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D ),
-    NAME_FUNC_OFFSET(  17236, glCopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D ),
-    NAME_FUNC_OFFSET(  17259, glHistogramEXT, _gloffset_Histogram ),
-    NAME_FUNC_OFFSET(  17274, glMinmaxEXT, _gloffset_Minmax ),
-    NAME_FUNC_OFFSET(  17286, glResetHistogramEXT, _gloffset_ResetHistogram ),
-    NAME_FUNC_OFFSET(  17306, glResetMinmaxEXT, _gloffset_ResetMinmax ),
-    NAME_FUNC_OFFSET(  17323, glConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D ),
-    NAME_FUNC_OFFSET(  17348, glConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D ),
-    NAME_FUNC_OFFSET(  17373, glConvolutionParameterfEXT, _gloffset_ConvolutionParameterf ),
-    NAME_FUNC_OFFSET(  17400, glConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv ),
-    NAME_FUNC_OFFSET(  17428, glConvolutionParameteriEXT, _gloffset_ConvolutionParameteri ),
-    NAME_FUNC_OFFSET(  17455, glConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv ),
-    NAME_FUNC_OFFSET(  17483, glCopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D ),
-    NAME_FUNC_OFFSET(  17512, glCopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D ),
-    NAME_FUNC_OFFSET(  17541, glSeparableFilter2DEXT, _gloffset_SeparableFilter2D ),
-    NAME_FUNC_OFFSET(  17564, glColorTableSGI, _gloffset_ColorTable ),
-    NAME_FUNC_OFFSET(  17580, glColorTableParameterfvSGI, _gloffset_ColorTableParameterfv ),
-    NAME_FUNC_OFFSET(  17607, glColorTableParameterivSGI, _gloffset_ColorTableParameteriv ),
-    NAME_FUNC_OFFSET(  17634, glCopyColorTableSGI, _gloffset_CopyColorTable ),
-    NAME_FUNC_OFFSET(  17654, glBindTextureEXT, _gloffset_BindTexture ),
-    NAME_FUNC_OFFSET(  17671, glDeleteTexturesEXT, _gloffset_DeleteTextures ),
-    NAME_FUNC_OFFSET(  17691, glPrioritizeTexturesEXT, _gloffset_PrioritizeTextures ),
-    NAME_FUNC_OFFSET(  17715, glArrayElementEXT, _gloffset_ArrayElement ),
-    NAME_FUNC_OFFSET(  17733, glDrawArraysEXT, _gloffset_DrawArrays ),
-    NAME_FUNC_OFFSET(  17749, glGetPointervEXT, _gloffset_GetPointerv ),
-    NAME_FUNC_OFFSET(  17766, glBlendEquationEXT, _gloffset_BlendEquation ),
-    NAME_FUNC_OFFSET(  17785, glColorSubTableEXT, _gloffset_ColorSubTable ),
-    NAME_FUNC_OFFSET(  17804, glCopyColorSubTableEXT, _gloffset_CopyColorSubTable ),
-    NAME_FUNC_OFFSET(  17827, glColorTableEXT, _gloffset_ColorTable ),
-    NAME_FUNC_OFFSET(  17843, glDrawRangeElementsEXT, _gloffset_DrawRangeElements ),
-    NAME_FUNC_OFFSET(  17866, glSampleMaskEXT, _gloffset_SampleMaskSGIS ),
-    NAME_FUNC_OFFSET(  17882, glSamplePatternEXT, _gloffset_SamplePatternSGIS ),
-    NAME_FUNC_OFFSET(  17901, glDrawBuffersATI, _gloffset_DrawBuffersARB ),
-    NAME_FUNC_OFFSET(  17918, glBlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT ),
-    NAME_FUNC_OFFSET(  17945, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ),
-    NAME_FUNC_OFFSET(  17969, glPointParameterfSGIS, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET(  17991, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET( 10004, glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV ),
+    NAME_FUNC_OFFSET( 10028, glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV ),
+    NAME_FUNC_OFFSET( 10053, glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV ),
+    NAME_FUNC_OFFSET( 10078, glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV ),
+    NAME_FUNC_OFFSET( 10106, glTrackMatrixNV, _gloffset_TrackMatrixNV ),
+    NAME_FUNC_OFFSET( 10122, glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV ),
+    NAME_FUNC_OFFSET( 10146, glVertexAttrib1dARB, _gloffset_VertexAttrib1dARB ),
+    NAME_FUNC_OFFSET( 10166, glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB ),
+    NAME_FUNC_OFFSET( 10187, glVertexAttrib1fARB, _gloffset_VertexAttrib1fARB ),
+    NAME_FUNC_OFFSET( 10207, glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB ),
+    NAME_FUNC_OFFSET( 10228, glVertexAttrib1sARB, _gloffset_VertexAttrib1sARB ),
+    NAME_FUNC_OFFSET( 10248, glVertexAttrib1svARB, _gloffset_VertexAttrib1svARB ),
+    NAME_FUNC_OFFSET( 10269, glVertexAttrib2dARB, _gloffset_VertexAttrib2dARB ),
+    NAME_FUNC_OFFSET( 10289, glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB ),
+    NAME_FUNC_OFFSET( 10310, glVertexAttrib2fARB, _gloffset_VertexAttrib2fARB ),
+    NAME_FUNC_OFFSET( 10330, glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB ),
+    NAME_FUNC_OFFSET( 10351, glVertexAttrib2sARB, _gloffset_VertexAttrib2sARB ),
+    NAME_FUNC_OFFSET( 10371, glVertexAttrib2svARB, _gloffset_VertexAttrib2svARB ),
+    NAME_FUNC_OFFSET( 10392, glVertexAttrib3dARB, _gloffset_VertexAttrib3dARB ),
+    NAME_FUNC_OFFSET( 10412, glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB ),
+    NAME_FUNC_OFFSET( 10433, glVertexAttrib3fARB, _gloffset_VertexAttrib3fARB ),
+    NAME_FUNC_OFFSET( 10453, glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB ),
+    NAME_FUNC_OFFSET( 10474, glVertexAttrib3sARB, _gloffset_VertexAttrib3sARB ),
+    NAME_FUNC_OFFSET( 10494, glVertexAttrib3svARB, _gloffset_VertexAttrib3svARB ),
+    NAME_FUNC_OFFSET( 10515, glVertexAttrib4dARB, _gloffset_VertexAttrib4dARB ),
+    NAME_FUNC_OFFSET( 10535, glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB ),
+    NAME_FUNC_OFFSET( 10556, glVertexAttrib4fARB, _gloffset_VertexAttrib4fARB ),
+    NAME_FUNC_OFFSET( 10576, glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB ),
+    NAME_FUNC_OFFSET( 10597, glVertexAttrib4sARB, _gloffset_VertexAttrib4sARB ),
+    NAME_FUNC_OFFSET( 10617, glVertexAttrib4svARB, _gloffset_VertexAttrib4svARB ),
+    NAME_FUNC_OFFSET( 10638, glVertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB ),
+    NAME_FUNC_OFFSET( 10660, glVertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB ),
+    NAME_FUNC_OFFSET( 10683, glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV ),
+    NAME_FUNC_OFFSET( 10704, glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV ),
+    NAME_FUNC_OFFSET( 10725, glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV ),
+    NAME_FUNC_OFFSET( 10746, glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV ),
+    NAME_FUNC_OFFSET( 10767, glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV ),
+    NAME_FUNC_OFFSET( 10788, glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV ),
+    NAME_FUNC_OFFSET( 10809, glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV ),
+    NAME_FUNC_OFFSET( 10830, glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV ),
+    NAME_FUNC_OFFSET( 10851, glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV ),
+    NAME_FUNC_OFFSET( 10872, glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV ),
+    NAME_FUNC_OFFSET( 10893, glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV ),
+    NAME_FUNC_OFFSET( 10914, glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV ),
+    NAME_FUNC_OFFSET( 10935, glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV ),
+    NAME_FUNC_OFFSET( 10957, glPointParameteriNV, _gloffset_PointParameteriNV ),
+    NAME_FUNC_OFFSET( 10977, glPointParameterivNV, _gloffset_PointParameterivNV ),
+    NAME_FUNC_OFFSET( 10998, glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT ),
+    NAME_FUNC_OFFSET( 11019, glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT ),
+    NAME_FUNC_OFFSET( 11042, glActiveStencilFaceEXT, _gloffset_ActiveStencilFaceEXT ),
+    NAME_FUNC_OFFSET( 11065, glDeleteFencesNV, _gloffset_DeleteFencesNV ),
+    NAME_FUNC_OFFSET( 11082, glGenFencesNV, _gloffset_GenFencesNV ),
+    NAME_FUNC_OFFSET( 11096, glIsFenceNV, _gloffset_IsFenceNV ),
+    NAME_FUNC_OFFSET( 11108, glTestFenceNV, _gloffset_TestFenceNV ),
+    NAME_FUNC_OFFSET( 11122, glGetFenceivNV, _gloffset_GetFenceivNV ),
+    NAME_FUNC_OFFSET( 11137, glFinishFenceNV, _gloffset_FinishFenceNV ),
+    NAME_FUNC_OFFSET( 11153, glSetFenceNV, _gloffset_SetFenceNV ),
+    NAME_FUNC_OFFSET( 11166, glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB ),
+    NAME_FUNC_OFFSET( 11187, glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB ),
+    NAME_FUNC_OFFSET( 11208, glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB ),
+    NAME_FUNC_OFFSET( 11230, glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB ),
+    NAME_FUNC_OFFSET( 11252, glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB ),
+    NAME_FUNC_OFFSET( 11274, glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB ),
+    NAME_FUNC_OFFSET( 11296, glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB ),
+    NAME_FUNC_OFFSET( 11318, glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB ),
+    NAME_FUNC_OFFSET( 11340, glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB ),
+    NAME_FUNC_OFFSET( 11363, glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB ),
+    NAME_FUNC_OFFSET( 11386, glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB ),
+    NAME_FUNC_OFFSET( 11411, glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB ),
+    NAME_FUNC_OFFSET( 11440, glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB ),
+    NAME_FUNC_OFFSET( 11470, glProgramStringARB, _gloffset_ProgramStringARB ),
+    NAME_FUNC_OFFSET( 11489, glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB ),
+    NAME_FUNC_OFFSET( 11516, glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB ),
+    NAME_FUNC_OFFSET( 11544, glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB ),
+    NAME_FUNC_OFFSET( 11571, glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB ),
+    NAME_FUNC_OFFSET( 11599, glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB ),
+    NAME_FUNC_OFFSET( 11628, glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB ),
+    NAME_FUNC_OFFSET( 11658, glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB ),
+    NAME_FUNC_OFFSET( 11687, glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB ),
+    NAME_FUNC_OFFSET( 11717, glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB ),
+    NAME_FUNC_OFFSET( 11747, glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB ),
+    NAME_FUNC_OFFSET( 11777, glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB ),
+    NAME_FUNC_OFFSET( 11809, glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB ),
+    NAME_FUNC_OFFSET( 11841, glGetProgramivARB, _gloffset_GetProgramivARB ),
+    NAME_FUNC_OFFSET( 11859, glGetProgramStringARB, _gloffset_GetProgramStringARB ),
+    NAME_FUNC_OFFSET( 11881, glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV ),
+    NAME_FUNC_OFFSET( 11909, glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV ),
+    NAME_FUNC_OFFSET( 11937, glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV ),
+    NAME_FUNC_OFFSET( 11966, glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV ),
+    NAME_FUNC_OFFSET( 11995, glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV ),
+    NAME_FUNC_OFFSET( 12026, glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV ),
+    NAME_FUNC_OFFSET( 12057, glBindBufferARB, _gloffset_BindBufferARB ),
+    NAME_FUNC_OFFSET( 12073, glBufferDataARB, _gloffset_BufferDataARB ),
+    NAME_FUNC_OFFSET( 12089, glBufferSubDataARB, _gloffset_BufferSubDataARB ),
+    NAME_FUNC_OFFSET( 12108, glDeleteBuffersARB, _gloffset_DeleteBuffersARB ),
+    NAME_FUNC_OFFSET( 12127, glGenBuffersARB, _gloffset_GenBuffersARB ),
+    NAME_FUNC_OFFSET( 12143, glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB ),
+    NAME_FUNC_OFFSET( 12169, glGetBufferPointervARB, _gloffset_GetBufferPointervARB ),
+    NAME_FUNC_OFFSET( 12192, glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB ),
+    NAME_FUNC_OFFSET( 12214, glIsBufferARB, _gloffset_IsBufferARB ),
+    NAME_FUNC_OFFSET( 12228, glMapBufferARB, _gloffset_MapBufferARB ),
+    NAME_FUNC_OFFSET( 12243, glUnmapBufferARB, _gloffset_UnmapBufferARB ),
+    NAME_FUNC_OFFSET( 12260, glDepthBoundsEXT, _gloffset_DepthBoundsEXT ),
+    NAME_FUNC_OFFSET( 12277, glGenQueriesARB, _gloffset_GenQueriesARB ),
+    NAME_FUNC_OFFSET( 12293, glDeleteQueriesARB, _gloffset_DeleteQueriesARB ),
+    NAME_FUNC_OFFSET( 12312, glIsQueryARB, _gloffset_IsQueryARB ),
+    NAME_FUNC_OFFSET( 12325, glBeginQueryARB, _gloffset_BeginQueryARB ),
+    NAME_FUNC_OFFSET( 12341, glEndQueryARB, _gloffset_EndQueryARB ),
+    NAME_FUNC_OFFSET( 12355, glGetQueryivARB, _gloffset_GetQueryivARB ),
+    NAME_FUNC_OFFSET( 12371, glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB ),
+    NAME_FUNC_OFFSET( 12393, glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB ),
+    NAME_FUNC_OFFSET( 12416, glMultiModeDrawArraysIBM, _gloffset_MultiModeDrawArraysIBM ),
+    NAME_FUNC_OFFSET( 12441, glMultiModeDrawElementsIBM, _gloffset_MultiModeDrawElementsIBM ),
+    NAME_FUNC_OFFSET( 12468, glBlendEquationSeparateEXT, _gloffset_BlendEquationSeparateEXT ),
+    NAME_FUNC_OFFSET( 12495, glDeleteObjectARB, _gloffset_DeleteObjectARB ),
+    NAME_FUNC_OFFSET( 12513, glGetHandleARB, _gloffset_GetHandleARB ),
+    NAME_FUNC_OFFSET( 12528, glDetachObjectARB, _gloffset_DetachObjectARB ),
+    NAME_FUNC_OFFSET( 12546, glCreateShaderObjectARB, _gloffset_CreateShaderObjectARB ),
+    NAME_FUNC_OFFSET( 12570, glShaderSourceARB, _gloffset_ShaderSourceARB ),
+    NAME_FUNC_OFFSET( 12588, glCompileShaderARB, _gloffset_CompileShaderARB ),
+    NAME_FUNC_OFFSET( 12607, glCreateProgramObjectARB, _gloffset_CreateProgramObjectARB ),
+    NAME_FUNC_OFFSET( 12632, glAttachObjectARB, _gloffset_AttachObjectARB ),
+    NAME_FUNC_OFFSET( 12650, glLinkProgramARB, _gloffset_LinkProgramARB ),
+    NAME_FUNC_OFFSET( 12667, glUseProgramObjectARB, _gloffset_UseProgramObjectARB ),
+    NAME_FUNC_OFFSET( 12689, glValidateProgramARB, _gloffset_ValidateProgramARB ),
+    NAME_FUNC_OFFSET( 12710, glUniform1fARB, _gloffset_Uniform1fARB ),
+    NAME_FUNC_OFFSET( 12725, glUniform2fARB, _gloffset_Uniform2fARB ),
+    NAME_FUNC_OFFSET( 12740, glUniform3fARB, _gloffset_Uniform3fARB ),
+    NAME_FUNC_OFFSET( 12755, glUniform4fARB, _gloffset_Uniform4fARB ),
+    NAME_FUNC_OFFSET( 12770, glUniform1iARB, _gloffset_Uniform1iARB ),
+    NAME_FUNC_OFFSET( 12785, glUniform2iARB, _gloffset_Uniform2iARB ),
+    NAME_FUNC_OFFSET( 12800, glUniform3iARB, _gloffset_Uniform3iARB ),
+    NAME_FUNC_OFFSET( 12815, glUniform4iARB, _gloffset_Uniform4iARB ),
+    NAME_FUNC_OFFSET( 12830, glUniform1fvARB, _gloffset_Uniform1fvARB ),
+    NAME_FUNC_OFFSET( 12846, glUniform2fvARB, _gloffset_Uniform2fvARB ),
+    NAME_FUNC_OFFSET( 12862, glUniform3fvARB, _gloffset_Uniform3fvARB ),
+    NAME_FUNC_OFFSET( 12878, glUniform4fvARB, _gloffset_Uniform4fvARB ),
+    NAME_FUNC_OFFSET( 12894, glUniform1ivARB, _gloffset_Uniform1ivARB ),
+    NAME_FUNC_OFFSET( 12910, glUniform2ivARB, _gloffset_Uniform2ivARB ),
+    NAME_FUNC_OFFSET( 12926, glUniform3ivARB, _gloffset_Uniform3ivARB ),
+    NAME_FUNC_OFFSET( 12942, glUniform4ivARB, _gloffset_Uniform4ivARB ),
+    NAME_FUNC_OFFSET( 12958, glUniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB ),
+    NAME_FUNC_OFFSET( 12980, glUniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB ),
+    NAME_FUNC_OFFSET( 13002, glUniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB ),
+    NAME_FUNC_OFFSET( 13024, glGetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB ),
+    NAME_FUNC_OFFSET( 13050, glGetObjectParameterivARB, _gloffset_GetObjectParameterivARB ),
+    NAME_FUNC_OFFSET( 13076, glGetInfoLogARB, _gloffset_GetInfoLogARB ),
+    NAME_FUNC_OFFSET( 13092, glGetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB ),
+    NAME_FUNC_OFFSET( 13116, glGetUniformLocationARB, _gloffset_GetUniformLocationARB ),
+    NAME_FUNC_OFFSET( 13140, glGetActiveUniformARB, _gloffset_GetActiveUniformARB ),
+    NAME_FUNC_OFFSET( 13162, glGetUniformfvARB, _gloffset_GetUniformfvARB ),
+    NAME_FUNC_OFFSET( 13180, glGetUniformivARB, _gloffset_GetUniformivARB ),
+    NAME_FUNC_OFFSET( 13198, glGetShaderSourceARB, _gloffset_GetShaderSourceARB ),
+    NAME_FUNC_OFFSET( 13219, glBindAttribLocationARB, _gloffset_BindAttribLocationARB ),
+    NAME_FUNC_OFFSET( 13243, glGetActiveAttribARB, _gloffset_GetActiveAttribARB ),
+    NAME_FUNC_OFFSET( 13264, glGetAttribLocationARB, _gloffset_GetAttribLocationARB ),
+    NAME_FUNC_OFFSET( 13287, glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV ),
+    NAME_FUNC_OFFSET( 13309, glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV ),
+    NAME_FUNC_OFFSET( 13331, glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV ),
+    NAME_FUNC_OFFSET( 13353, glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV ),
+    NAME_FUNC_OFFSET( 13372, glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV ),
+    NAME_FUNC_OFFSET( 13392, glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV ),
+    NAME_FUNC_OFFSET( 13411, glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV ),
+    NAME_FUNC_OFFSET( 13431, glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV ),
+    NAME_FUNC_OFFSET( 13450, glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV ),
+    NAME_FUNC_OFFSET( 13470, glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV ),
+    NAME_FUNC_OFFSET( 13489, glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV ),
+    NAME_FUNC_OFFSET( 13509, glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV ),
+    NAME_FUNC_OFFSET( 13528, glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV ),
+    NAME_FUNC_OFFSET( 13548, glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV ),
+    NAME_FUNC_OFFSET( 13567, glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV ),
+    NAME_FUNC_OFFSET( 13587, glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV ),
+    NAME_FUNC_OFFSET( 13606, glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV ),
+    NAME_FUNC_OFFSET( 13626, glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV ),
+    NAME_FUNC_OFFSET( 13645, glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV ),
+    NAME_FUNC_OFFSET( 13665, glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV ),
+    NAME_FUNC_OFFSET( 13684, glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV ),
+    NAME_FUNC_OFFSET( 13704, glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV ),
+    NAME_FUNC_OFFSET( 13723, glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV ),
+    NAME_FUNC_OFFSET( 13743, glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV ),
+    NAME_FUNC_OFFSET( 13762, glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV ),
+    NAME_FUNC_OFFSET( 13782, glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV ),
+    NAME_FUNC_OFFSET( 13801, glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV ),
+    NAME_FUNC_OFFSET( 13821, glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV ),
+    NAME_FUNC_OFFSET( 13841, glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV ),
+    NAME_FUNC_OFFSET( 13862, glGenFragmentShadersATI, _gloffset_GenFragmentShadersATI ),
+    NAME_FUNC_OFFSET( 13886, glBindFragmentShaderATI, _gloffset_BindFragmentShaderATI ),
+    NAME_FUNC_OFFSET( 13910, glDeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI ),
+    NAME_FUNC_OFFSET( 13936, glBeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI ),
+    NAME_FUNC_OFFSET( 13961, glEndFragmentShaderATI, _gloffset_EndFragmentShaderATI ),
+    NAME_FUNC_OFFSET( 13984, glPassTexCoordATI, _gloffset_PassTexCoordATI ),
+    NAME_FUNC_OFFSET( 14002, glSampleMapATI, _gloffset_SampleMapATI ),
+    NAME_FUNC_OFFSET( 14017, glColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI ),
+    NAME_FUNC_OFFSET( 14039, glColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI ),
+    NAME_FUNC_OFFSET( 14061, glColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI ),
+    NAME_FUNC_OFFSET( 14083, glAlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI ),
+    NAME_FUNC_OFFSET( 14105, glAlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI ),
+    NAME_FUNC_OFFSET( 14127, glAlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI ),
+    NAME_FUNC_OFFSET( 14149, glSetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI ),
+    NAME_FUNC_OFFSET( 14180, glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT ),
+    NAME_FUNC_OFFSET( 14200, glBindRenderbufferEXT, _gloffset_BindRenderbufferEXT ),
+    NAME_FUNC_OFFSET( 14222, glDeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT ),
+    NAME_FUNC_OFFSET( 14247, glGenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT ),
+    NAME_FUNC_OFFSET( 14269, glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT ),
+    NAME_FUNC_OFFSET( 14294, glGetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT ),
+    NAME_FUNC_OFFSET( 14326, glIsFramebufferEXT, _gloffset_IsFramebufferEXT ),
+    NAME_FUNC_OFFSET( 14345, glBindFramebufferEXT, _gloffset_BindFramebufferEXT ),
+    NAME_FUNC_OFFSET( 14366, glDeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT ),
+    NAME_FUNC_OFFSET( 14390, glGenFramebuffersEXT, _gloffset_GenFramebuffersEXT ),
+    NAME_FUNC_OFFSET( 14411, glCheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT ),
+    NAME_FUNC_OFFSET( 14439, glFramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT ),
+    NAME_FUNC_OFFSET( 14465, glFramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT ),
+    NAME_FUNC_OFFSET( 14491, glFramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT ),
+    NAME_FUNC_OFFSET( 14517, glFramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT ),
+    NAME_FUNC_OFFSET( 14546, glGetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT ),
+    NAME_FUNC_OFFSET( 14587, glGenerateMipmapEXT, _gloffset_GenerateMipmapEXT ),
+    NAME_FUNC_OFFSET( 14607, glStencilFuncSeparate, _gloffset_StencilFuncSeparate ),
+    NAME_FUNC_OFFSET( 14629, glStencilOpSeparate, _gloffset_StencilOpSeparate ),
+    NAME_FUNC_OFFSET( 14649, glStencilMaskSeparate, _gloffset_StencilMaskSeparate ),
+    NAME_FUNC_OFFSET( 14671, glArrayElementEXT, _gloffset_ArrayElement ),
+    NAME_FUNC_OFFSET( 14689, glBindTextureEXT, _gloffset_BindTexture ),
+    NAME_FUNC_OFFSET( 14706, glDrawArraysEXT, _gloffset_DrawArrays ),
+    NAME_FUNC_OFFSET( 14722, glCopyTexImage1DEXT, _gloffset_CopyTexImage1D ),
+    NAME_FUNC_OFFSET( 14742, glCopyTexImage2DEXT, _gloffset_CopyTexImage2D ),
+    NAME_FUNC_OFFSET( 14762, glCopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D ),
+    NAME_FUNC_OFFSET( 14785, glCopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D ),
+    NAME_FUNC_OFFSET( 14808, glDeleteTexturesEXT, _gloffset_DeleteTextures ),
+    NAME_FUNC_OFFSET( 14828, glGetPointervEXT, _gloffset_GetPointerv ),
+    NAME_FUNC_OFFSET( 14845, glPrioritizeTexturesEXT, _gloffset_PrioritizeTextures ),
+    NAME_FUNC_OFFSET( 14869, glTexSubImage1DEXT, _gloffset_TexSubImage1D ),
+    NAME_FUNC_OFFSET( 14888, glTexSubImage2DEXT, _gloffset_TexSubImage2D ),
+    NAME_FUNC_OFFSET( 14907, glBlendColorEXT, _gloffset_BlendColor ),
+    NAME_FUNC_OFFSET( 14923, glBlendEquationEXT, _gloffset_BlendEquation ),
+    NAME_FUNC_OFFSET( 14942, glDrawRangeElementsEXT, _gloffset_DrawRangeElements ),
+    NAME_FUNC_OFFSET( 14965, glColorTableSGI, _gloffset_ColorTable ),
+    NAME_FUNC_OFFSET( 14981, glColorTableEXT, _gloffset_ColorTable ),
+    NAME_FUNC_OFFSET( 14997, glColorTableParameterfvSGI, _gloffset_ColorTableParameterfv ),
+    NAME_FUNC_OFFSET( 15024, glColorTableParameterivSGI, _gloffset_ColorTableParameteriv ),
+    NAME_FUNC_OFFSET( 15051, glCopyColorTableSGI, _gloffset_CopyColorTable ),
+    NAME_FUNC_OFFSET( 15071, glColorSubTableEXT, _gloffset_ColorSubTable ),
+    NAME_FUNC_OFFSET( 15090, glCopyColorSubTableEXT, _gloffset_CopyColorSubTable ),
+    NAME_FUNC_OFFSET( 15113, glConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D ),
+    NAME_FUNC_OFFSET( 15138, glConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D ),
+    NAME_FUNC_OFFSET( 15163, glConvolutionParameterfEXT, _gloffset_ConvolutionParameterf ),
+    NAME_FUNC_OFFSET( 15190, glConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv ),
+    NAME_FUNC_OFFSET( 15218, glConvolutionParameteriEXT, _gloffset_ConvolutionParameteri ),
+    NAME_FUNC_OFFSET( 15245, glConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv ),
+    NAME_FUNC_OFFSET( 15273, glCopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D ),
+    NAME_FUNC_OFFSET( 15302, glCopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D ),
+    NAME_FUNC_OFFSET( 15331, glSeparableFilter2DEXT, _gloffset_SeparableFilter2D ),
+    NAME_FUNC_OFFSET( 15354, glHistogramEXT, _gloffset_Histogram ),
+    NAME_FUNC_OFFSET( 15369, glMinmaxEXT, _gloffset_Minmax ),
+    NAME_FUNC_OFFSET( 15381, glResetHistogramEXT, _gloffset_ResetHistogram ),
+    NAME_FUNC_OFFSET( 15401, glResetMinmaxEXT, _gloffset_ResetMinmax ),
+    NAME_FUNC_OFFSET( 15418, glTexImage3DEXT, _gloffset_TexImage3D ),
+    NAME_FUNC_OFFSET( 15434, glTexSubImage3DEXT, _gloffset_TexSubImage3D ),
+    NAME_FUNC_OFFSET( 15453, glCopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D ),
+    NAME_FUNC_OFFSET( 15476, glActiveTexture, _gloffset_ActiveTextureARB ),
+    NAME_FUNC_OFFSET( 15492, glClientActiveTexture, _gloffset_ClientActiveTextureARB ),
+    NAME_FUNC_OFFSET( 15514, glMultiTexCoord1d, _gloffset_MultiTexCoord1dARB ),
+    NAME_FUNC_OFFSET( 15532, glMultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB ),
+    NAME_FUNC_OFFSET( 15551, glMultiTexCoord1f, _gloffset_MultiTexCoord1fARB ),
+    NAME_FUNC_OFFSET( 15569, glMultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB ),
+    NAME_FUNC_OFFSET( 15588, glMultiTexCoord1i, _gloffset_MultiTexCoord1iARB ),
+    NAME_FUNC_OFFSET( 15606, glMultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB ),
+    NAME_FUNC_OFFSET( 15625, glMultiTexCoord1s, _gloffset_MultiTexCoord1sARB ),
+    NAME_FUNC_OFFSET( 15643, glMultiTexCoord1sv, _gloffset_MultiTexCoord1svARB ),
+    NAME_FUNC_OFFSET( 15662, glMultiTexCoord2d, _gloffset_MultiTexCoord2dARB ),
+    NAME_FUNC_OFFSET( 15680, glMultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB ),
+    NAME_FUNC_OFFSET( 15699, glMultiTexCoord2f, _gloffset_MultiTexCoord2fARB ),
+    NAME_FUNC_OFFSET( 15717, glMultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB ),
+    NAME_FUNC_OFFSET( 15736, glMultiTexCoord2i, _gloffset_MultiTexCoord2iARB ),
+    NAME_FUNC_OFFSET( 15754, glMultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB ),
+    NAME_FUNC_OFFSET( 15773, glMultiTexCoord2s, _gloffset_MultiTexCoord2sARB ),
+    NAME_FUNC_OFFSET( 15791, glMultiTexCoord2sv, _gloffset_MultiTexCoord2svARB ),
+    NAME_FUNC_OFFSET( 15810, glMultiTexCoord3d, _gloffset_MultiTexCoord3dARB ),
+    NAME_FUNC_OFFSET( 15828, glMultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB ),
+    NAME_FUNC_OFFSET( 15847, glMultiTexCoord3f, _gloffset_MultiTexCoord3fARB ),
+    NAME_FUNC_OFFSET( 15865, glMultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB ),
+    NAME_FUNC_OFFSET( 15884, glMultiTexCoord3i, _gloffset_MultiTexCoord3iARB ),
+    NAME_FUNC_OFFSET( 15902, glMultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB ),
+    NAME_FUNC_OFFSET( 15921, glMultiTexCoord3s, _gloffset_MultiTexCoord3sARB ),
+    NAME_FUNC_OFFSET( 15939, glMultiTexCoord3sv, _gloffset_MultiTexCoord3svARB ),
+    NAME_FUNC_OFFSET( 15958, glMultiTexCoord4d, _gloffset_MultiTexCoord4dARB ),
+    NAME_FUNC_OFFSET( 15976, glMultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB ),
+    NAME_FUNC_OFFSET( 15995, glMultiTexCoord4f, _gloffset_MultiTexCoord4fARB ),
+    NAME_FUNC_OFFSET( 16013, glMultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB ),
+    NAME_FUNC_OFFSET( 16032, glMultiTexCoord4i, _gloffset_MultiTexCoord4iARB ),
+    NAME_FUNC_OFFSET( 16050, glMultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB ),
+    NAME_FUNC_OFFSET( 16069, glMultiTexCoord4s, _gloffset_MultiTexCoord4sARB ),
+    NAME_FUNC_OFFSET( 16087, glMultiTexCoord4sv, _gloffset_MultiTexCoord4svARB ),
+    NAME_FUNC_OFFSET( 16106, glLoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB ),
+    NAME_FUNC_OFFSET( 16129, glLoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB ),
+    NAME_FUNC_OFFSET( 16152, glMultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB ),
+    NAME_FUNC_OFFSET( 16175, glMultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB ),
+    NAME_FUNC_OFFSET( 16198, glSampleCoverage, _gloffset_SampleCoverageARB ),
+    NAME_FUNC_OFFSET( 16215, glDrawBuffersATI, _gloffset_DrawBuffersARB ),
+    NAME_FUNC_OFFSET( 16232, glSampleMaskEXT, _gloffset_SampleMaskSGIS ),
+    NAME_FUNC_OFFSET( 16248, glSamplePatternEXT, _gloffset_SamplePatternSGIS ),
+    NAME_FUNC_OFFSET( 16267, glPointParameterf, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET( 16285, glPointParameterfARB, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET( 16306, glPointParameterfSGIS, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET( 16328, glPointParameterfv, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET( 16347, glPointParameterfvARB, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET( 16369, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET( 16392, glWindowPos2d, _gloffset_WindowPos2dMESA ),
+    NAME_FUNC_OFFSET( 16406, glWindowPos2dARB, _gloffset_WindowPos2dMESA ),
+    NAME_FUNC_OFFSET( 16423, glWindowPos2dv, _gloffset_WindowPos2dvMESA ),
+    NAME_FUNC_OFFSET( 16438, glWindowPos2dvARB, _gloffset_WindowPos2dvMESA ),
+    NAME_FUNC_OFFSET( 16456, glWindowPos2f, _gloffset_WindowPos2fMESA ),
+    NAME_FUNC_OFFSET( 16470, glWindowPos2fARB, _gloffset_WindowPos2fMESA ),
+    NAME_FUNC_OFFSET( 16487, glWindowPos2fv, _gloffset_WindowPos2fvMESA ),
+    NAME_FUNC_OFFSET( 16502, glWindowPos2fvARB, _gloffset_WindowPos2fvMESA ),
+    NAME_FUNC_OFFSET( 16520, glWindowPos2i, _gloffset_WindowPos2iMESA ),
+    NAME_FUNC_OFFSET( 16534, glWindowPos2iARB, _gloffset_WindowPos2iMESA ),
+    NAME_FUNC_OFFSET( 16551, glWindowPos2iv, _gloffset_WindowPos2ivMESA ),
+    NAME_FUNC_OFFSET( 16566, glWindowPos2ivARB, _gloffset_WindowPos2ivMESA ),
+    NAME_FUNC_OFFSET( 16584, glWindowPos2s, _gloffset_WindowPos2sMESA ),
+    NAME_FUNC_OFFSET( 16598, glWindowPos2sARB, _gloffset_WindowPos2sMESA ),
+    NAME_FUNC_OFFSET( 16615, glWindowPos2sv, _gloffset_WindowPos2svMESA ),
+    NAME_FUNC_OFFSET( 16630, glWindowPos2svARB, _gloffset_WindowPos2svMESA ),
+    NAME_FUNC_OFFSET( 16648, glWindowPos3d, _gloffset_WindowPos3dMESA ),
+    NAME_FUNC_OFFSET( 16662, glWindowPos3dARB, _gloffset_WindowPos3dMESA ),
+    NAME_FUNC_OFFSET( 16679, glWindowPos3dv, _gloffset_WindowPos3dvMESA ),
+    NAME_FUNC_OFFSET( 16694, glWindowPos3dvARB, _gloffset_WindowPos3dvMESA ),
+    NAME_FUNC_OFFSET( 16712, glWindowPos3f, _gloffset_WindowPos3fMESA ),
+    NAME_FUNC_OFFSET( 16726, glWindowPos3fARB, _gloffset_WindowPos3fMESA ),
+    NAME_FUNC_OFFSET( 16743, glWindowPos3fv, _gloffset_WindowPos3fvMESA ),
+    NAME_FUNC_OFFSET( 16758, glWindowPos3fvARB, _gloffset_WindowPos3fvMESA ),
+    NAME_FUNC_OFFSET( 16776, glWindowPos3i, _gloffset_WindowPos3iMESA ),
+    NAME_FUNC_OFFSET( 16790, glWindowPos3iARB, _gloffset_WindowPos3iMESA ),
+    NAME_FUNC_OFFSET( 16807, glWindowPos3iv, _gloffset_WindowPos3ivMESA ),
+    NAME_FUNC_OFFSET( 16822, glWindowPos3ivARB, _gloffset_WindowPos3ivMESA ),
+    NAME_FUNC_OFFSET( 16840, glWindowPos3s, _gloffset_WindowPos3sMESA ),
+    NAME_FUNC_OFFSET( 16854, glWindowPos3sARB, _gloffset_WindowPos3sMESA ),
+    NAME_FUNC_OFFSET( 16871, glWindowPos3sv, _gloffset_WindowPos3svMESA ),
+    NAME_FUNC_OFFSET( 16886, glWindowPos3svARB, _gloffset_WindowPos3svMESA ),
+    NAME_FUNC_OFFSET( 16904, glBlendFuncSeparate, _gloffset_BlendFuncSeparateEXT ),
+    NAME_FUNC_OFFSET( 16924, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ),
+    NAME_FUNC_OFFSET( 16948, glFogCoordf, _gloffset_FogCoordfEXT ),
+    NAME_FUNC_OFFSET( 16960, glFogCoordfv, _gloffset_FogCoordfvEXT ),
+    NAME_FUNC_OFFSET( 16973, glFogCoordd, _gloffset_FogCoorddEXT ),
+    NAME_FUNC_OFFSET( 16985, glFogCoorddv, _gloffset_FogCoorddvEXT ),
+    NAME_FUNC_OFFSET( 16998, glFogCoordPointer, _gloffset_FogCoordPointerEXT ),
+    NAME_FUNC_OFFSET( 17016, glCompressedTexImage3D, _gloffset_CompressedTexImage3DARB ),
+    NAME_FUNC_OFFSET( 17039, glCompressedTexImage2D, _gloffset_CompressedTexImage2DARB ),
+    NAME_FUNC_OFFSET( 17062, glCompressedTexImage1D, _gloffset_CompressedTexImage1DARB ),
+    NAME_FUNC_OFFSET( 17085, glCompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB ),
+    NAME_FUNC_OFFSET( 17111, glCompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB ),
+    NAME_FUNC_OFFSET( 17137, glCompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB ),
+    NAME_FUNC_OFFSET( 17163, glGetCompressedTexImage, _gloffset_GetCompressedTexImageARB ),
+    NAME_FUNC_OFFSET( 17187, glSecondaryColor3b, _gloffset_SecondaryColor3bEXT ),
+    NAME_FUNC_OFFSET( 17206, glSecondaryColor3bv, _gloffset_SecondaryColor3bvEXT ),
+    NAME_FUNC_OFFSET( 17226, glSecondaryColor3d, _gloffset_SecondaryColor3dEXT ),
+    NAME_FUNC_OFFSET( 17245, glSecondaryColor3dv, _gloffset_SecondaryColor3dvEXT ),
+    NAME_FUNC_OFFSET( 17265, glSecondaryColor3f, _gloffset_SecondaryColor3fEXT ),
+    NAME_FUNC_OFFSET( 17284, glSecondaryColor3fv, _gloffset_SecondaryColor3fvEXT ),
+    NAME_FUNC_OFFSET( 17304, glSecondaryColor3i, _gloffset_SecondaryColor3iEXT ),
+    NAME_FUNC_OFFSET( 17323, glSecondaryColor3iv, _gloffset_SecondaryColor3ivEXT ),
+    NAME_FUNC_OFFSET( 17343, glSecondaryColor3s, _gloffset_SecondaryColor3sEXT ),
+    NAME_FUNC_OFFSET( 17362, glSecondaryColor3sv, _gloffset_SecondaryColor3svEXT ),
+    NAME_FUNC_OFFSET( 17382, glSecondaryColor3ub, _gloffset_SecondaryColor3ubEXT ),
+    NAME_FUNC_OFFSET( 17402, glSecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT ),
+    NAME_FUNC_OFFSET( 17423, glSecondaryColor3ui, _gloffset_SecondaryColor3uiEXT ),
+    NAME_FUNC_OFFSET( 17443, glSecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT ),
+    NAME_FUNC_OFFSET( 17464, glSecondaryColor3us, _gloffset_SecondaryColor3usEXT ),
+    NAME_FUNC_OFFSET( 17484, glSecondaryColor3usv, _gloffset_SecondaryColor3usvEXT ),
+    NAME_FUNC_OFFSET( 17505, glSecondaryColorPointer, _gloffset_SecondaryColorPointerEXT ),
+    NAME_FUNC_OFFSET( 17529, glBindProgramARB, _gloffset_BindProgramNV ),
+    NAME_FUNC_OFFSET( 17546, glDeleteProgramsARB, _gloffset_DeleteProgramsNV ),
+    NAME_FUNC_OFFSET( 17566, glGenProgramsARB, _gloffset_GenProgramsNV ),
+    NAME_FUNC_OFFSET( 17583, glGetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV ),
+    NAME_FUNC_OFFSET( 17612, glIsProgramARB, _gloffset_IsProgramNV ),
+    NAME_FUNC_OFFSET( 17627, glPointParameteri, _gloffset_PointParameteriNV ),
+    NAME_FUNC_OFFSET( 17645, glPointParameteriv, _gloffset_PointParameterivNV ),
+    NAME_FUNC_OFFSET( 17664, glMultiDrawArrays, _gloffset_MultiDrawArraysEXT ),
+    NAME_FUNC_OFFSET( 17682, glMultiDrawElements, _gloffset_MultiDrawElementsEXT ),
+    NAME_FUNC_OFFSET( 17702, glBindBuffer, _gloffset_BindBufferARB ),
+    NAME_FUNC_OFFSET( 17715, glBufferData, _gloffset_BufferDataARB ),
+    NAME_FUNC_OFFSET( 17728, glBufferSubData, _gloffset_BufferSubDataARB ),
+    NAME_FUNC_OFFSET( 17744, glDeleteBuffers, _gloffset_DeleteBuffersARB ),
+    NAME_FUNC_OFFSET( 17760, glGenBuffers, _gloffset_GenBuffersARB ),
+    NAME_FUNC_OFFSET( 17773, glGetBufferParameteriv, _gloffset_GetBufferParameterivARB ),
+    NAME_FUNC_OFFSET( 17796, glGetBufferPointerv, _gloffset_GetBufferPointervARB ),
+    NAME_FUNC_OFFSET( 17816, glGetBufferSubData, _gloffset_GetBufferSubDataARB ),
+    NAME_FUNC_OFFSET( 17835, glIsBuffer, _gloffset_IsBufferARB ),
+    NAME_FUNC_OFFSET( 17846, glMapBuffer, _gloffset_MapBufferARB ),
+    NAME_FUNC_OFFSET( 17858, glUnmapBuffer, _gloffset_UnmapBufferARB ),
+    NAME_FUNC_OFFSET( 17872, glGenQueries, _gloffset_GenQueriesARB ),
+    NAME_FUNC_OFFSET( 17885, glDeleteQueries, _gloffset_DeleteQueriesARB ),
+    NAME_FUNC_OFFSET( 17901, glIsQuery, _gloffset_IsQueryARB ),
+    NAME_FUNC_OFFSET( 17911, glBeginQuery, _gloffset_BeginQueryARB ),
+    NAME_FUNC_OFFSET( 17924, glEndQuery, _gloffset_EndQueryARB ),
+    NAME_FUNC_OFFSET( 17935, glGetQueryiv, _gloffset_GetQueryivARB ),
+    NAME_FUNC_OFFSET( 17948, glGetQueryObjectiv, _gloffset_GetQueryObjectivARB ),
+    NAME_FUNC_OFFSET( 17967, glGetQueryObjectuiv, _gloffset_GetQueryObjectuivARB ),
+    NAME_FUNC_OFFSET( 17987, glBlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT ),
     NAME_FUNC_OFFSET( -1, NULL, 0 )
 };
 
diff --git a/src/mesa/glapi/typeexpr.py b/src/mesa/glapi/typeexpr.py
new file mode 100644 (file)
index 0000000..eface2a
--- /dev/null
@@ -0,0 +1,288 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 2005
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# on the rights to use, copy, modify, merge, publish, distribute, sub
+# license, and/or sell copies of the Software, and to permit persons to whom
+# the Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
+# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+# Authors:
+#    Ian Romanick <idr@us.ibm.com>
+
+import string, copy
+
+class type_node:
+       def __init__(self):
+               self.pointer = 0
+               self.const = 0
+               self.signed = 1
+               self.integer = 1
+
+               # If elements is set to non-zero, then field is an array.
+               self.elements = 0
+
+               self.name = None
+               self.size = 0
+               return
+
+
+       def string(self):
+               s = ""
+               
+               if self.pointer:
+                       s = "* "
+
+               if self.const:
+                       s += "const "
+
+               if not self.pointer:
+                       if self.integer:
+                               if self.signed:
+                                       s += "signed "
+                               else:
+                                       s += "unsigned "
+
+                       if self.name:
+                               s += "%s " % (self.name)
+
+               return s
+
+
+class type_table:
+       def __init__(self):
+               self.types_by_name = {}
+               return
+
+
+       def add_type(self, type_expr):
+               self.types_by_name[ type_expr.get_base_name() ] = type_expr
+               return
+
+
+       def find_type(self, name):
+               if name in self.types_by_name:
+                       return self.types_by_name[ name ]
+               else:
+                       return None
+
+
+def create_initial_types():
+       tt = type_table()
+
+       basic_types = [ ["char",   1, 1], \
+                       ["short",  2, 1], \
+                       ["int",    4, 1], \
+                       ["long",   4, 1], \
+                       ["float",  4, 0], \
+                       ["double", 8, 0], \
+                       ["enum",   4, 1] ]
+
+
+       for [type_name, type_size, integer] in basic_types:
+               te = type_expression(None)
+               tn = type_node()
+               tn.name = type_name
+               tn.size = type_size
+               tn.integer = integer
+               te.expr.append(tn)
+               tt.add_type( te )
+
+       type_expression.built_in_types = tt
+       return
+
+
+class type_expression:
+       built_in_types = None
+
+       def __init__(self, type_string, extra_types = None):
+               self.expr = []
+
+               if not type_string: return
+
+               self.original_string = type_string
+
+               if not type_expression.built_in_types:
+                       raise RuntimeError("create_initial_types must be called before creating type_expression objects.")
+
+               
+               elements = string.split( string.replace( type_string, "*", " * " ) )
+
+               const = 0
+               t = None
+               signed = 0
+               unsigned = 0
+
+               for i in elements:
+                       if i == "const":
+                               if t and t.pointer:
+                                       t.const = 1
+                               else:
+                                       const = 1
+                       elif i == "signed":
+                               signed = 1
+                       elif i == "unsigned":
+                               unsigned = 1
+                       elif i == "*":
+                               # This is a quirky special-case because of the
+                               # way the C works for types.  If 'unsigned' is
+                               # specified all by itself, it is treated the
+                               # same as "unsigned int".
+
+                               if unsigned:
+                                       self.set_base_type( "int", signed, unsigned, const, extra_types )
+                                       const = 0
+                                       signed = 0
+                                       unsigned = 0
+
+                               if not self.expr:
+                                       raise RuntimeError("Invalid type expression (dangling pointer)")
+
+                               if signed:
+                                       raise RuntimeError("Invalid type expression (signed / unsigned applied to pointer)")
+
+                               t = type_node()
+                               t.pointer = 1
+                               self.expr.append( t )
+                       else:
+                               if self.expr:
+                                       raise RuntimeError('Invalid type expression (garbage after pointer qualifier -> "%s")' % (self.original_string))
+
+                               self.set_base_type( i, signed, unsigned, const, extra_types )
+                               const = 0
+                               signed = 0
+                               unsigned = 0
+
+                       if signed and unsigned:
+                               raise RuntimeError("Invalid type expression (both signed and unsigned specified)")
+                               
+
+               if const:
+                       raise RuntimeError("Invalid type expression (dangling const)")
+
+               if unsigned:
+                       raise RuntimeError("Invalid type expression (dangling signed)")
+
+               if signed:
+                       raise RuntimeError("Invalid type expression (dangling unsigned)")
+
+               return
+
+
+       def set_base_type(self, type_name, signed, unsigned, const, extra_types):
+               te = type_expression.built_in_types.find_type( type_name )
+               if not te:
+                       te = extra_types.find_type( type_name )
+
+               if not te:
+                       raise RuntimeError('Unknown base type "%s".' % (type_name))
+
+               self.expr = copy.deepcopy(te.expr)
+
+               t = self.expr[ len(self.expr) - 1 ]
+               t.const = const
+               if signed:
+                       t.signed = 1
+               elif unsigned:
+                       t.signed = 0
+
+
+       def set_base_type_node(self, tn):
+               self.expr = [tn]
+               return
+
+
+       def set_elements(self, count):
+               tn = self.expr[0]
+
+               tn.elements = count
+               return
+
+
+       def string(self):
+               s = ""
+               for t in self.expr:
+                       s += t.string()
+
+               return s
+
+
+       def get_base_type_node(self):
+               return self.expr[0]
+
+
+       def get_base_name(self):
+               if len(self.expr):
+                       return self.expr[0].name
+               else:
+                       return None
+
+
+       def get_element_size(self):
+               tn = self.expr[0]
+
+               if tn.elements:
+                       return tn.elements * tn.size
+               else:
+                       return tn.size
+
+
+       def get_element_count(self):
+               tn = self.expr[0]
+               return tn.elements
+
+
+       def get_stack_size(self):
+               tn = self.expr[ len(self.expr) - 1 ]
+
+               if tn.elements or tn.pointer:
+                       return 4
+               elif not tn.integer:
+                       return tn.size
+               else:
+                       return 4
+
+
+       def is_pointer(self):
+               tn = self.expr[ len(self.expr) - 1 ]
+               return tn.pointer
+
+
+       def format_string(self):
+               tn = self.expr[ len(self.expr) - 1 ]
+               if tn.pointer:
+                       return "%p"
+               elif not tn.integer:
+                       return "%f"
+               else:
+                       return "%d"
+
+
+
+if __name__ == '__main__':
+       
+       types_to_try = [ "int", "int *", "const int *", "int * const", "const int * const", \
+                        "unsigned * const *", \
+                        "float", "const double", "double * const"]
+
+       create_initial_types()
+
+       for t in types_to_try:
+               print 'Trying "%s"...' % (t)
+               te = type_expression( t )
+               print 'Got "%s" (%u, %u).' % (te.string(), te.get_stack_size(), te.get_element_size())
index ed63742b368cfe88da496b31e45e5367dd459a74..c653e0c48ff1fe2cf19e211814264ac0285ab0d7 100644 (file)
@@ -2138,1152 +2138,1152 @@ static const enum_elt all_enums[1612] =
    {  9922, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
    {  9954, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
    {  9976, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
-   {  10002, 0x0000802D }, /* GL_HISTOGRAM_SINK */
-   {  10020, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
-   {  10042, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
-   {  10061, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
-   {  10084, 0x0000862A }, /* GL_IDENTITY_NV */
-   {  10099, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
-   {  10119, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
-   {  10159, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
-   {  10197, 0x00001E02 }, /* GL_INCR */
-   {  10205, 0x00008507 }, /* GL_INCR_WRAP */
-   {  10218, 0x00008507 }, /* GL_INCR_WRAP_EXT */
-   {  10235, 0x00008077 }, /* GL_INDEX_ARRAY */
-   {  10250, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
-   {  10280, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
-   {  10314, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
-   {  10337, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
-   {  10359, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
-   {  10379, 0x00000D51 }, /* GL_INDEX_BITS */
-   {  10393, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
-   {  10414, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
-   {  10432, 0x00000C30 }, /* GL_INDEX_MODE */
-   {  10446, 0x00000D13 }, /* GL_INDEX_OFFSET */
-   {  10462, 0x00000D12 }, /* GL_INDEX_SHIFT */
-   {  10477, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
-   {  10496, 0x00001404 }, /* GL_INT */
-   {  10503, 0x00008049 }, /* GL_INTENSITY */
-   {  10516, 0x0000804C }, /* GL_INTENSITY12 */
-   {  10531, 0x0000804C }, /* GL_INTENSITY12_EXT */
-   {  10550, 0x0000804D }, /* GL_INTENSITY16 */
-   {  10565, 0x0000804D }, /* GL_INTENSITY16_EXT */
-   {  10584, 0x0000804A }, /* GL_INTENSITY4 */
-   {  10598, 0x0000804A }, /* GL_INTENSITY4_EXT */
-   {  10616, 0x0000804B }, /* GL_INTENSITY8 */
-   {  10630, 0x0000804B }, /* GL_INTENSITY8_EXT */
-   {  10648, 0x00008049 }, /* GL_INTENSITY_EXT */
-   {  10665, 0x00008575 }, /* GL_INTERPOLATE */
-   {  10680, 0x00008575 }, /* GL_INTERPOLATE_ARB */
-   {  10699, 0x00008575 }, /* GL_INTERPOLATE_EXT */
-   {  10718, 0x00008B53 }, /* GL_INT_VEC2_ARB */
-   {  10734, 0x00008B54 }, /* GL_INT_VEC3_ARB */
-   {  10750, 0x00008B55 }, /* GL_INT_VEC4_ARB */
-   {  10766, 0x00000500 }, /* GL_INVALID_ENUM */
-   {  10782, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
-   {  10819, 0x00000502 }, /* GL_INVALID_OPERATION */
-   {  10840, 0x00000501 }, /* GL_INVALID_VALUE */
-   {  10857, 0x0000862B }, /* GL_INVERSE_NV */
-   {  10871, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
-   {  10895, 0x0000150A }, /* GL_INVERT */
-   {  10905, 0x00001E00 }, /* GL_KEEP */
-   {  10913, 0x00000406 }, /* GL_LEFT */
-   {  10921, 0x00000203 }, /* GL_LEQUAL */
-   {  10931, 0x00000201 }, /* GL_LESS */
-   {  10939, 0x00004000 }, /* GL_LIGHT0 */
-   {  10949, 0x00004001 }, /* GL_LIGHT1 */
-   {  10959, 0x00004002 }, /* GL_LIGHT2 */
-   {  10969, 0x00004003 }, /* GL_LIGHT3 */
-   {  10979, 0x00004004 }, /* GL_LIGHT4 */
-   {  10989, 0x00004005 }, /* GL_LIGHT5 */
-   {  10999, 0x00004006 }, /* GL_LIGHT6 */
-   {  11009, 0x00004007 }, /* GL_LIGHT7 */
-   {  11019, 0x00000B50 }, /* GL_LIGHTING */
-   {  11031, 0x00000040 }, /* GL_LIGHTING_BIT */
-   {  11047, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
-   {  11070, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
-   {  11099, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
-   {  11132, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
-   {  11160, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
-   {  11184, 0x00001B01 }, /* GL_LINE */
-   {  11192, 0x00002601 }, /* GL_LINEAR */
-   {  11202, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
-   {  11224, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
-   {  11254, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
-   {  11285, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
-   {  11309, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
-   {  11334, 0x00000001 }, /* GL_LINES */
-   {  11343, 0x00000004 }, /* GL_LINE_BIT */
-   {  11355, 0x00000002 }, /* GL_LINE_LOOP */
-   {  11368, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
-   {  11388, 0x00000B20 }, /* GL_LINE_SMOOTH */
-   {  11403, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
-   {  11423, 0x00000B24 }, /* GL_LINE_STIPPLE */
-   {  11439, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
-   {  11463, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
-   {  11486, 0x00000003 }, /* GL_LINE_STRIP */
-   {  11500, 0x00000702 }, /* GL_LINE_TOKEN */
-   {  11514, 0x00000B21 }, /* GL_LINE_WIDTH */
-   {  11528, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
-   {  11554, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
-   {  11574, 0x00000B32 }, /* GL_LIST_BASE */
-   {  11587, 0x00020000 }, /* GL_LIST_BIT */
-   {  11599, 0x00000B33 }, /* GL_LIST_INDEX */
-   {  11613, 0x00000B30 }, /* GL_LIST_MODE */
-   {  11626, 0x00000101 }, /* GL_LOAD */
-   {  11634, 0x00000BF1 }, /* GL_LOGIC_OP */
-   {  11646, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
-   {  11663, 0x00001909 }, /* GL_LUMINANCE */
-   {  11676, 0x00008041 }, /* GL_LUMINANCE12 */
-   {  11691, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
-   {  11714, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
-   {  11741, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
-   {  11763, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
-   {  11789, 0x00008041 }, /* GL_LUMINANCE12_EXT */
-   {  11808, 0x00008042 }, /* GL_LUMINANCE16 */
-   {  11823, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
-   {  11846, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
-   {  11873, 0x00008042 }, /* GL_LUMINANCE16_EXT */
-   {  11892, 0x0000803F }, /* GL_LUMINANCE4 */
-   {  11906, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
-   {  11927, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
-   {  11952, 0x0000803F }, /* GL_LUMINANCE4_EXT */
-   {  11970, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
-   {  11991, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
-   {  12016, 0x00008040 }, /* GL_LUMINANCE8 */
-   {  12030, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
-   {  12051, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
-   {  12076, 0x00008040 }, /* GL_LUMINANCE8_EXT */
-   {  12094, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
-   {  12113, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
-   {  12129, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
-   {  12149, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
-   {  12171, 0x00000D91 }, /* GL_MAP1_INDEX */
-   {  12185, 0x00000D92 }, /* GL_MAP1_NORMAL */
-   {  12200, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
-   {  12224, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
-   {  12248, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
-   {  12272, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
-   {  12296, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
-   {  12313, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
-   {  12330, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
-   {  12358, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
-   {  12387, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
-   {  12416, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
-   {  12445, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
-   {  12474, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
-   {  12503, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
-   {  12532, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
-   {  12560, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
-   {  12588, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
-   {  12616, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
-   {  12644, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
-   {  12672, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
-   {  12700, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
-   {  12728, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
-   {  12756, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
-   {  12784, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
-   {  12800, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
-   {  12820, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
-   {  12842, 0x00000DB1 }, /* GL_MAP2_INDEX */
-   {  12856, 0x00000DB2 }, /* GL_MAP2_NORMAL */
-   {  12871, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
-   {  12895, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
-   {  12919, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
-   {  12943, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
-   {  12967, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
-   {  12984, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
-   {  13001, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
-   {  13029, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
-   {  13058, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
-   {  13087, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
-   {  13116, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
-   {  13145, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
-   {  13174, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
-   {  13203, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
-   {  13231, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
-   {  13259, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
-   {  13287, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
-   {  13315, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
-   {  13343, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
-   {  13371, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
-   {  13399, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
-   {  13427, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
-   {  13455, 0x00000D10 }, /* GL_MAP_COLOR */
-   {  13468, 0x00000D11 }, /* GL_MAP_STENCIL */
-   {  13483, 0x000088C0 }, /* GL_MATRIX0_ARB */
-   {  13498, 0x00008630 }, /* GL_MATRIX0_NV */
-   {  13512, 0x000088CA }, /* GL_MATRIX10_ARB */
-   {  13528, 0x000088CB }, /* GL_MATRIX11_ARB */
-   {  13544, 0x000088CC }, /* GL_MATRIX12_ARB */
-   {  13560, 0x000088CD }, /* GL_MATRIX13_ARB */
-   {  13576, 0x000088CE }, /* GL_MATRIX14_ARB */
-   {  13592, 0x000088CF }, /* GL_MATRIX15_ARB */
-   {  13608, 0x000088D0 }, /* GL_MATRIX16_ARB */
-   {  13624, 0x000088D1 }, /* GL_MATRIX17_ARB */
-   {  13640, 0x000088D2 }, /* GL_MATRIX18_ARB */
-   {  13656, 0x000088D3 }, /* GL_MATRIX19_ARB */
-   {  13672, 0x000088C1 }, /* GL_MATRIX1_ARB */
-   {  13687, 0x00008631 }, /* GL_MATRIX1_NV */
-   {  13701, 0x000088D4 }, /* GL_MATRIX20_ARB */
-   {  13717, 0x000088D5 }, /* GL_MATRIX21_ARB */
-   {  13733, 0x000088D6 }, /* GL_MATRIX22_ARB */
-   {  13749, 0x000088D7 }, /* GL_MATRIX23_ARB */
-   {  13765, 0x000088D8 }, /* GL_MATRIX24_ARB */
-   {  13781, 0x000088D9 }, /* GL_MATRIX25_ARB */
-   {  13797, 0x000088DA }, /* GL_MATRIX26_ARB */
-   {  13813, 0x000088DB }, /* GL_MATRIX27_ARB */
-   {  13829, 0x000088DC }, /* GL_MATRIX28_ARB */
-   {  13845, 0x000088DD }, /* GL_MATRIX29_ARB */
-   {  13861, 0x000088C2 }, /* GL_MATRIX2_ARB */
-   {  13876, 0x00008632 }, /* GL_MATRIX2_NV */
-   {  13890, 0x000088DE }, /* GL_MATRIX30_ARB */
-   {  13906, 0x000088DF }, /* GL_MATRIX31_ARB */
-   {  13922, 0x000088C3 }, /* GL_MATRIX3_ARB */
-   {  13937, 0x00008633 }, /* GL_MATRIX3_NV */
-   {  13951, 0x000088C4 }, /* GL_MATRIX4_ARB */
-   {  13966, 0x00008634 }, /* GL_MATRIX4_NV */
-   {  13980, 0x000088C5 }, /* GL_MATRIX5_ARB */
-   {  13995, 0x00008635 }, /* GL_MATRIX5_NV */
-   {  14009, 0x000088C6 }, /* GL_MATRIX6_ARB */
-   {  14024, 0x00008636 }, /* GL_MATRIX6_NV */
-   {  14038, 0x000088C7 }, /* GL_MATRIX7_ARB */
-   {  14053, 0x00008637 }, /* GL_MATRIX7_NV */
-   {  14067, 0x000088C8 }, /* GL_MATRIX8_ARB */
-   {  14082, 0x000088C9 }, /* GL_MATRIX9_ARB */
-   {  14097, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
-   {  14123, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
-   {  14157, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
-   {  14188, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
-   {  14221, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
-   {  14252, 0x00000BA0 }, /* GL_MATRIX_MODE */
-   {  14267, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
-   {  14289, 0x00008008 }, /* GL_MAX */
-   {  14296, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
-   {  14319, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
-   {  14345, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
-   {  14378, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
-   {  14404, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-   {  14438, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
-   {  14457, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
-   {  14486, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
-   {  14518, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
-   {  14554, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
-   {  14594, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
-   {  14620, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
-   {  14650, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
-   {  14675, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
-   {  14704, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
-   {  14733, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
-   {  14766, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
-   {  14790, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
-   {  14814, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
-   {  14838, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
-   {  14863, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
-   {  14881, 0x00008008 }, /* GL_MAX_EXT */
-   {  14892, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
-   {  14931, 0x00000D31 }, /* GL_MAX_LIGHTS */
-   {  14945, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
-   {  14965, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
-   {  15003, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
-   {  15032, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
-   {  15056, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
-   {  15084, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
-   {  15107, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
-   {  15144, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
-   {  15180, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
-   {  15207, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
-   {  15236, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
-   {  15270, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
-   {  15306, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
-   {  15333, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
-   {  15365, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
-   {  15401, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
-   {  15430, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
-   {  15459, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
-   {  15487, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
-   {  15525, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
-   {  15569, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-   {  15612, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
-   {  15646, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-   {  15685, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
-   {  15722, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
-   {  15760, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
-   {  15803, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-   {  15846, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
-   {  15876, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
-   {  15907, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
-   {  15943, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
-   {  15979, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
-   {  16009, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
-   {  16043, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
-   {  16076, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
-   {  16105, 0x00008504 }, /* GL_MAX_SHININESS_NV */
-   {  16125, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
-   {  16149, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
-   {  16175, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
-   {  16206, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
-   {  16230, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
-   {  16264, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
-   {  16284, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
-   {  16311, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
-   {  16332, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
-   {  16357, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
-   {  16382, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
-   {  16417, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
-   {  16443, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
-   {  16469, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
-   {  16507, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
-   {  16544, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
-   {  16568, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
-   {  16589, 0x00008007 }, /* GL_MIN */
-   {  16596, 0x0000802E }, /* GL_MINMAX */
-   {  16606, 0x0000802E }, /* GL_MINMAX_EXT */
-   {  16620, 0x0000802F }, /* GL_MINMAX_FORMAT */
-   {  16637, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
-   {  16658, 0x00008030 }, /* GL_MINMAX_SINK */
-   {  16673, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
-   {  16692, 0x00008007 }, /* GL_MIN_EXT */
-   {  16703, 0x00008370 }, /* GL_MIRRORED_REPEAT */
-   {  16722, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
-   {  16745, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
-   {  16768, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
-   {  16788, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
-   {  16808, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
-   {  16838, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
-   {  16866, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
-   {  16894, 0x00001700 }, /* GL_MODELVIEW */
-   {  16907, 0x00001700 }, /* GL_MODELVIEW0_ARB */
-   {  16925, 0x0000872A }, /* GL_MODELVIEW10_ARB */
-   {  16944, 0x0000872B }, /* GL_MODELVIEW11_ARB */
-   {  16963, 0x0000872C }, /* GL_MODELVIEW12_ARB */
-   {  16982, 0x0000872D }, /* GL_MODELVIEW13_ARB */
-   {  17001, 0x0000872E }, /* GL_MODELVIEW14_ARB */
-   {  17020, 0x0000872F }, /* GL_MODELVIEW15_ARB */
-   {  17039, 0x00008730 }, /* GL_MODELVIEW16_ARB */
-   {  17058, 0x00008731 }, /* GL_MODELVIEW17_ARB */
-   {  17077, 0x00008732 }, /* GL_MODELVIEW18_ARB */
-   {  17096, 0x00008733 }, /* GL_MODELVIEW19_ARB */
-   {  17115, 0x0000850A }, /* GL_MODELVIEW1_ARB */
-   {  17133, 0x00008734 }, /* GL_MODELVIEW20_ARB */
-   {  17152, 0x00008735 }, /* GL_MODELVIEW21_ARB */
-   {  17171, 0x00008736 }, /* GL_MODELVIEW22_ARB */
-   {  17190, 0x00008737 }, /* GL_MODELVIEW23_ARB */
-   {  17209, 0x00008738 }, /* GL_MODELVIEW24_ARB */
-   {  17228, 0x00008739 }, /* GL_MODELVIEW25_ARB */
-   {  17247, 0x0000873A }, /* GL_MODELVIEW26_ARB */
-   {  17266, 0x0000873B }, /* GL_MODELVIEW27_ARB */
-   {  17285, 0x0000873C }, /* GL_MODELVIEW28_ARB */
-   {  17304, 0x0000873D }, /* GL_MODELVIEW29_ARB */
-   {  17323, 0x00008722 }, /* GL_MODELVIEW2_ARB */
-   {  17341, 0x0000873E }, /* GL_MODELVIEW30_ARB */
-   {  17360, 0x0000873F }, /* GL_MODELVIEW31_ARB */
-   {  17379, 0x00008723 }, /* GL_MODELVIEW3_ARB */
-   {  17397, 0x00008724 }, /* GL_MODELVIEW4_ARB */
-   {  17415, 0x00008725 }, /* GL_MODELVIEW5_ARB */
-   {  17433, 0x00008726 }, /* GL_MODELVIEW6_ARB */
-   {  17451, 0x00008727 }, /* GL_MODELVIEW7_ARB */
-   {  17469, 0x00008728 }, /* GL_MODELVIEW8_ARB */
-   {  17487, 0x00008729 }, /* GL_MODELVIEW9_ARB */
-   {  17505, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
-   {  17525, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
-   {  17552, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
-   {  17577, 0x00002100 }, /* GL_MODULATE */
-   {  17589, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
-   {  17609, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
-   {  17636, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
-   {  17661, 0x00000103 }, /* GL_MULT */
-   {  17669, 0x0000809D }, /* GL_MULTISAMPLE */
-   {  17684, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
-   {  17704, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
-   {  17723, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
-   {  17742, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
-   {  17766, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
-   {  17789, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
-   {  17819, 0x00002A25 }, /* GL_N3F_V3F */
-   {  17830, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
-   {  17850, 0x0000150E }, /* GL_NAND */
-   {  17858, 0x00002600 }, /* GL_NEAREST */
-   {  17869, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
-   {  17900, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
-   {  17932, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
-   {  17957, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
-   {  17983, 0x00000200 }, /* GL_NEVER */
-   {  17992, 0x00001102 }, /* GL_NICEST */
-   {  18002, 0x00000000 }, /* GL_NONE */
-   {  18010, 0x00001505 }, /* GL_NOOP */
-   {  18018, 0x00001508 }, /* GL_NOR */
-   {  18025, 0x00000BA1 }, /* GL_NORMALIZE */
-   {  18038, 0x00008075 }, /* GL_NORMAL_ARRAY */
-   {  18054, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
-   {  18085, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
-   {  18120, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
-   {  18144, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
-   {  18167, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
-   {  18188, 0x00008511 }, /* GL_NORMAL_MAP */
-   {  18202, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
-   {  18220, 0x00008511 }, /* GL_NORMAL_MAP_NV */
-   {  18237, 0x00000205 }, /* GL_NOTEQUAL */
-   {  18249, 0x00000000 }, /* GL_NO_ERROR */
-   {  18261, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
-   {  18295, 0x000086A2 }, /* GL_NUM_TEXTURE_COMPRESSED_FORMATS_ARB */
-   {  18333, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
-   {  18365, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
-   {  18407, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
-   {  18437, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
-   {  18477, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
-   {  18508, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
-   {  18537, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
-   {  18565, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
-   {  18595, 0x00002401 }, /* GL_OBJECT_LINEAR */
-   {  18612, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
-   {  18638, 0x00002501 }, /* GL_OBJECT_PLANE */
-   {  18654, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
-   {  18689, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
-   {  18711, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
-   {  18730, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
-   {  18760, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
-   {  18781, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
-   {  18809, 0x00000001 }, /* GL_ONE */
-   {  18816, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
-   {  18844, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
-   {  18876, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
-   {  18904, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
-   {  18936, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
-   {  18959, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
-   {  18982, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
-   {  19005, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
-   {  19028, 0x00008598 }, /* GL_OPERAND0_ALPHA */
-   {  19046, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
-   {  19068, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
-   {  19090, 0x00008590 }, /* GL_OPERAND0_RGB */
-   {  19106, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
-   {  19126, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
-   {  19146, 0x00008599 }, /* GL_OPERAND1_ALPHA */
-   {  19164, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
-   {  19186, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
-   {  19208, 0x00008591 }, /* GL_OPERAND1_RGB */
-   {  19224, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
-   {  19244, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
-   {  19264, 0x0000859A }, /* GL_OPERAND2_ALPHA */
-   {  19282, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
-   {  19304, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
-   {  19326, 0x00008592 }, /* GL_OPERAND2_RGB */
-   {  19342, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
-   {  19362, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
-   {  19382, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
-   {  19403, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
-   {  19422, 0x00001507 }, /* GL_OR */
-   {  19428, 0x00000A01 }, /* GL_ORDER */
-   {  19437, 0x0000150D }, /* GL_OR_INVERTED */
-   {  19452, 0x0000150B }, /* GL_OR_REVERSE */
-   {  19466, 0x00000505 }, /* GL_OUT_OF_MEMORY */
-   {  19483, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
-   {  19501, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
-   {  19522, 0x00008758 }, /* GL_PACK_INVERT_MESA */
-   {  19542, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
-   {  19560, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
-   {  19579, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
-   {  19599, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
-   {  19619, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
-   {  19637, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
-   {  19656, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
-   {  19681, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
-   {  19705, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
-   {  19726, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
-   {  19748, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
-   {  19770, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
-   {  19795, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
-   {  19819, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
-   {  19840, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
-   {  19862, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
-   {  19884, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
-   {  19906, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
-   {  19937, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
-   {  19957, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
-   {  19982, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
-   {  20002, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
-   {  20027, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
-   {  20047, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
-   {  20072, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
-   {  20092, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
-   {  20117, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
-   {  20137, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
-   {  20162, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
-   {  20182, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
-   {  20207, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
-   {  20227, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
-   {  20252, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
-   {  20272, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
-   {  20297, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
-   {  20317, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
-   {  20342, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
-   {  20362, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
-   {  20387, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
-   {  20405, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
-   {  20438, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
-   {  20463, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
-   {  20498, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
-   {  20525, 0x00001B00 }, /* GL_POINT */
-   {  20534, 0x00000000 }, /* GL_POINTS */
-   {  20544, 0x00000002 }, /* GL_POINT_BIT */
-   {  20557, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
-   {  20587, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
-   {  20621, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
-   {  20655, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
-   {  20690, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
-   {  20719, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
-   {  20752, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
-   {  20785, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
-   {  20819, 0x00000B11 }, /* GL_POINT_SIZE */
-   {  20833, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
-   {  20859, 0x00008127 }, /* GL_POINT_SIZE_MAX */
-   {  20877, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
-   {  20899, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
-   {  20921, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
-   {  20944, 0x00008126 }, /* GL_POINT_SIZE_MIN */
-   {  20962, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
-   {  20984, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
-   {  21006, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
-   {  21029, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
-   {  21049, 0x00000B10 }, /* GL_POINT_SMOOTH */
-   {  21065, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
-   {  21086, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
-   {  21106, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
-   {  21135, 0x00008861 }, /* GL_POINT_SPRITE_NV */
-   {  21154, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
-   {  21180, 0x00000701 }, /* GL_POINT_TOKEN */
-   {  21195, 0x00000009 }, /* GL_POLYGON */
-   {  21206, 0x00000008 }, /* GL_POLYGON_BIT */
-   {  21221, 0x00000B40 }, /* GL_POLYGON_MODE */
-   {  21237, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
-   {  21260, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
-   {  21285, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
-   {  21308, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
-   {  21331, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
-   {  21355, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
-   {  21379, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
-   {  21397, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
-   {  21420, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
-   {  21439, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
-   {  21462, 0x00000703 }, /* GL_POLYGON_TOKEN */
-   {  21479, 0x00001203 }, /* GL_POSITION */
-   {  21491, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
-   {  21523, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
-   {  21559, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
-   {  21592, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
-   {  21629, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
-   {  21660, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
-   {  21695, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
-   {  21727, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
-   {  21763, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
-   {  21796, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
-   {  21828, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
-   {  21864, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
-   {  21897, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
-   {  21934, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
-   {  21964, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
-   {  21998, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
-   {  22029, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
-   {  22064, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
-   {  22095, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
-   {  22130, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
-   {  22162, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
-   {  22198, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
-   {  22228, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
-   {  22262, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
-   {  22293, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
-   {  22328, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
-   {  22360, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
-   {  22391, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
-   {  22426, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
-   {  22458, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
-   {  22494, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
-   {  22523, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
-   {  22556, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
-   {  22586, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
-   {  22620, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
-   {  22659, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
-   {  22692, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
-   {  22732, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
-   {  22766, 0x00008578 }, /* GL_PREVIOUS */
-   {  22778, 0x00008578 }, /* GL_PREVIOUS_ARB */
-   {  22794, 0x00008578 }, /* GL_PREVIOUS_EXT */
-   {  22810, 0x00008577 }, /* GL_PRIMARY_COLOR */
-   {  22827, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
-   {  22848, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
-   {  22869, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
-   {  22902, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
-   {  22934, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
-   {  22957, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
-   {  22980, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
-   {  23010, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
-   {  23039, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
-   {  23067, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
-   {  23089, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
-   {  23117, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
-   {  23145, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
-   {  23167, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
-   {  23188, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
-   {  23228, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-   {  23267, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
-   {  23297, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-   {  23332, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
-   {  23365, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
-   {  23399, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
-   {  23438, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-   {  23477, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
-   {  23499, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
-   {  23525, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
-   {  23549, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
-   {  23572, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
-   {  23594, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
-   {  23615, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
-   {  23636, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
-   {  23663, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
-   {  23695, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
-   {  23727, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
-   {  23762, 0x00001701 }, /* GL_PROJECTION */
-   {  23776, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
-   {  23797, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
-   {  23823, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
-   {  23844, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
-   {  23863, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
-   {  23886, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
-   {  23925, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
-   {  23963, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
-   {  23983, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
-   {  24007, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
-   {  24027, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
-   {  24051, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
-   {  24071, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
-   {  24104, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
-   {  24130, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
-   {  24160, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
-   {  24191, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
-   {  24221, 0x00002003 }, /* GL_Q */
-   {  24226, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
-   {  24251, 0x00000007 }, /* GL_QUADS */
-   {  24260, 0x00008614 }, /* GL_QUAD_MESH_SUN */
-   {  24277, 0x00000008 }, /* GL_QUAD_STRIP */
-   {  24291, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
-   {  24313, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
-   {  24339, 0x00008866 }, /* GL_QUERY_RESULT */
-   {  24355, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
-   {  24375, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
-   {  24401, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
-   {  24431, 0x00002002 }, /* GL_R */
-   {  24436, 0x00002A10 }, /* GL_R3_G3_B2 */
-   {  24448, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
-   {  24481, 0x00000C02 }, /* GL_READ_BUFFER */
-   {  24496, 0x000088B8 }, /* GL_READ_ONLY */
-   {  24509, 0x000088B8 }, /* GL_READ_ONLY_ARB */
-   {  24526, 0x000088BA }, /* GL_READ_WRITE */
-   {  24540, 0x000088BA }, /* GL_READ_WRITE_ARB */
-   {  24558, 0x00001903 }, /* GL_RED */
-   {  24565, 0x00008016 }, /* GL_REDUCE */
-   {  24575, 0x00008016 }, /* GL_REDUCE_EXT */
-   {  24589, 0x00000D15 }, /* GL_RED_BIAS */
-   {  24601, 0x00000D52 }, /* GL_RED_BITS */
-   {  24613, 0x00000D14 }, /* GL_RED_SCALE */
-   {  24626, 0x00008512 }, /* GL_REFLECTION_MAP */
-   {  24644, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
-   {  24666, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
-   {  24687, 0x00001C00 }, /* GL_RENDER */
-   {  24697, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
-   {  24725, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
-   {  24745, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
-   {  24772, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
-   {  24808, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
-   {  24834, 0x00001F01 }, /* GL_RENDERER */
-   {  24846, 0x00000C40 }, /* GL_RENDER_MODE */
-   {  24861, 0x00002901 }, /* GL_REPEAT */
-   {  24871, 0x00001E01 }, /* GL_REPLACE */
-   {  24882, 0x00008062 }, /* GL_REPLACE_EXT */
-   {  24897, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
-   {  24920, 0x0000803A }, /* GL_RESCALE_NORMAL */
-   {  24938, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
-   {  24960, 0x00000102 }, /* GL_RETURN */
-   {  24970, 0x00001907 }, /* GL_RGB */
-   {  24977, 0x00008052 }, /* GL_RGB10 */
-   {  24986, 0x00008059 }, /* GL_RGB10_A2 */
-   {  24998, 0x00008059 }, /* GL_RGB10_A2_EXT */
-   {  25014, 0x00008052 }, /* GL_RGB10_EXT */
-   {  25027, 0x00008053 }, /* GL_RGB12 */
-   {  25036, 0x00008053 }, /* GL_RGB12_EXT */
-   {  25049, 0x00008054 }, /* GL_RGB16 */
-   {  25058, 0x00008054 }, /* GL_RGB16_EXT */
-   {  25071, 0x0000804E }, /* GL_RGB2_EXT */
-   {  25083, 0x0000804F }, /* GL_RGB4 */
-   {  25091, 0x0000804F }, /* GL_RGB4_EXT */
-   {  25103, 0x000083A1 }, /* GL_RGB4_S3TC */
-   {  25116, 0x00008050 }, /* GL_RGB5 */
-   {  25124, 0x00008057 }, /* GL_RGB5_A1 */
-   {  25135, 0x00008057 }, /* GL_RGB5_A1_EXT */
-   {  25150, 0x00008050 }, /* GL_RGB5_EXT */
-   {  25162, 0x00008051 }, /* GL_RGB8 */
-   {  25170, 0x00008051 }, /* GL_RGB8_EXT */
-   {  25182, 0x00001908 }, /* GL_RGBA */
-   {  25190, 0x0000805A }, /* GL_RGBA12 */
-   {  25200, 0x0000805A }, /* GL_RGBA12_EXT */
-   {  25214, 0x0000805B }, /* GL_RGBA16 */
-   {  25224, 0x0000805B }, /* GL_RGBA16_EXT */
-   {  25238, 0x00008055 }, /* GL_RGBA2 */
-   {  25247, 0x00008055 }, /* GL_RGBA2_EXT */
-   {  25260, 0x00008056 }, /* GL_RGBA4 */
-   {  25269, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
-   {  25288, 0x00008056 }, /* GL_RGBA4_EXT */
-   {  25301, 0x000083A3 }, /* GL_RGBA4_S3TC */
-   {  25315, 0x00008058 }, /* GL_RGBA8 */
-   {  25324, 0x00008058 }, /* GL_RGBA8_EXT */
-   {  25337, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
-   {  25355, 0x00000C31 }, /* GL_RGBA_MODE */
-   {  25368, 0x000083A2 }, /* GL_RGBA_S3TC */
-   {  25381, 0x000083A0 }, /* GL_RGB_S3TC */
-   {  25393, 0x00008573 }, /* GL_RGB_SCALE */
-   {  25406, 0x00008573 }, /* GL_RGB_SCALE_ARB */
-   {  25423, 0x00008573 }, /* GL_RGB_SCALE_EXT */
-   {  25440, 0x00000407 }, /* GL_RIGHT */
-   {  25449, 0x00002000 }, /* GL_S */
-   {  25454, 0x000080A9 }, /* GL_SAMPLES */
-   {  25465, 0x000086B4 }, /* GL_SAMPLES_3DFX */
-   {  25481, 0x000080A9 }, /* GL_SAMPLES_ARB */
-   {  25496, 0x00008914 }, /* GL_SAMPLES_PASSED */
-   {  25514, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
-   {  25536, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
-   {  25564, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
-   {  25596, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
-   {  25619, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
-   {  25646, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
-   {  25664, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
-   {  25687, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
-   {  25709, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
-   {  25728, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
-   {  25751, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
-   {  25777, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
-   {  25807, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
-   {  25832, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
-   {  25861, 0x00080000 }, /* GL_SCISSOR_BIT */
-   {  25876, 0x00000C10 }, /* GL_SCISSOR_BOX */
-   {  25891, 0x00000C11 }, /* GL_SCISSOR_TEST */
-   {  25907, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
-   {  25932, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
-   {  25972, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
-   {  26016, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
-   {  26049, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
-   {  26079, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
-   {  26111, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
-   {  26141, 0x00001C02 }, /* GL_SELECT */
-   {  26151, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
-   {  26179, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
-   {  26204, 0x00008012 }, /* GL_SEPARABLE_2D */
-   {  26220, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
-   {  26247, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
-   {  26278, 0x0000150F }, /* GL_SET */
-   {  26285, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
-   {  26306, 0x00000B54 }, /* GL_SHADE_MODEL */
-   {  26321, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
-   {  26344, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
-   {  26374, 0x00001601 }, /* GL_SHININESS */
-   {  26387, 0x00001402 }, /* GL_SHORT */
-   {  26396, 0x000081F9 }, /* GL_SINGLE_COLOR */
-   {  26412, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
-   {  26432, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
-   {  26451, 0x00001D01 }, /* GL_SMOOTH */
-   {  26461, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
-   {  26494, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
-   {  26521, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
-   {  26554, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
-   {  26581, 0x00008588 }, /* GL_SOURCE0_ALPHA */
-   {  26598, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
-   {  26619, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
-   {  26640, 0x00008580 }, /* GL_SOURCE0_RGB */
-   {  26655, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
-   {  26674, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
-   {  26693, 0x00008589 }, /* GL_SOURCE1_ALPHA */
-   {  26710, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
-   {  26731, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
-   {  26752, 0x00008581 }, /* GL_SOURCE1_RGB */
-   {  26767, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
-   {  26786, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
-   {  26805, 0x0000858A }, /* GL_SOURCE2_ALPHA */
-   {  26822, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
-   {  26843, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
-   {  26864, 0x00008582 }, /* GL_SOURCE2_RGB */
-   {  26879, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
-   {  26898, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
-   {  26917, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
-   {  26937, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
-   {  26955, 0x00001202 }, /* GL_SPECULAR */
-   {  26967, 0x00002402 }, /* GL_SPHERE_MAP */
-   {  26981, 0x00001206 }, /* GL_SPOT_CUTOFF */
-   {  26996, 0x00001204 }, /* GL_SPOT_DIRECTION */
-   {  27014, 0x00001205 }, /* GL_SPOT_EXPONENT */
-   {  27031, 0x00008588 }, /* GL_SRC0_ALPHA */
-   {  27045, 0x00008580 }, /* GL_SRC0_RGB */
-   {  27057, 0x00008589 }, /* GL_SRC1_ALPHA */
-   {  27071, 0x00008581 }, /* GL_SRC1_RGB */
-   {  27083, 0x0000858A }, /* GL_SRC2_ALPHA */
-   {  27097, 0x00008582 }, /* GL_SRC2_RGB */
-   {  27109, 0x00000302 }, /* GL_SRC_ALPHA */
-   {  27122, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
-   {  27144, 0x00000300 }, /* GL_SRC_COLOR */
-   {  27157, 0x00000503 }, /* GL_STACK_OVERFLOW */
-   {  27175, 0x00000504 }, /* GL_STACK_UNDERFLOW */
-   {  27194, 0x000088E6 }, /* GL_STATIC_COPY */
-   {  27209, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
-   {  27228, 0x000088E4 }, /* GL_STATIC_DRAW */
-   {  27243, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
-   {  27262, 0x000088E5 }, /* GL_STATIC_READ */
-   {  27277, 0x000088E5 }, /* GL_STATIC_READ_ARB */
-   {  27296, 0x00001802 }, /* GL_STENCIL */
-   {  27307, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
-   {  27333, 0x00000D57 }, /* GL_STENCIL_BITS */
-   {  27349, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
-   {  27371, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
-   {  27394, 0x00000B94 }, /* GL_STENCIL_FAIL */
-   {  27410, 0x00000B92 }, /* GL_STENCIL_FUNC */
-   {  27426, 0x00001901 }, /* GL_STENCIL_INDEX */
-   {  27443, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
-   {  27466, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
-   {  27488, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
-   {  27510, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
-   {  27532, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
-   {  27553, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
-   {  27580, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
-   {  27607, 0x00000B97 }, /* GL_STENCIL_REF */
-   {  27622, 0x00000B90 }, /* GL_STENCIL_TEST */
-   {  27638, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
-   {  27667, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
-   {  27689, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
-   {  27710, 0x00000C33 }, /* GL_STEREO */
-   {  27720, 0x000088E2 }, /* GL_STREAM_COPY */
-   {  27735, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
-   {  27754, 0x000088E0 }, /* GL_STREAM_DRAW */
-   {  27769, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
-   {  27788, 0x000088E1 }, /* GL_STREAM_READ */
-   {  27803, 0x000088E1 }, /* GL_STREAM_READ_ARB */
-   {  27822, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
-   {  27839, 0x000084E7 }, /* GL_SUBTRACT */
-   {  27851, 0x000084E7 }, /* GL_SUBTRACT_ARB */
-   {  27867, 0x00002001 }, /* GL_T */
-   {  27872, 0x00002A2A }, /* GL_T2F_C3F_V3F */
-   {  27887, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
-   {  27906, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
-   {  27922, 0x00002A2B }, /* GL_T2F_N3F_V3F */
-   {  27937, 0x00002A27 }, /* GL_T2F_V3F */
-   {  27948, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
-   {  27967, 0x00002A28 }, /* GL_T4F_V4F */
-   {  27978, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
-   {  28001, 0x00001702 }, /* GL_TEXTURE */
-   {  28012, 0x000084C0 }, /* GL_TEXTURE0 */
-   {  28024, 0x000084C0 }, /* GL_TEXTURE0_ARB */
-   {  28040, 0x000084C1 }, /* GL_TEXTURE1 */
-   {  28052, 0x000084CA }, /* GL_TEXTURE10 */
-   {  28065, 0x000084CA }, /* GL_TEXTURE10_ARB */
-   {  28082, 0x000084CB }, /* GL_TEXTURE11 */
-   {  28095, 0x000084CB }, /* GL_TEXTURE11_ARB */
-   {  28112, 0x000084CC }, /* GL_TEXTURE12 */
-   {  28125, 0x000084CC }, /* GL_TEXTURE12_ARB */
-   {  28142, 0x000084CD }, /* GL_TEXTURE13 */
-   {  28155, 0x000084CD }, /* GL_TEXTURE13_ARB */
-   {  28172, 0x000084CE }, /* GL_TEXTURE14 */
-   {  28185, 0x000084CE }, /* GL_TEXTURE14_ARB */
-   {  28202, 0x000084CF }, /* GL_TEXTURE15 */
-   {  28215, 0x000084CF }, /* GL_TEXTURE15_ARB */
-   {  28232, 0x000084D0 }, /* GL_TEXTURE16 */
-   {  28245, 0x000084D0 }, /* GL_TEXTURE16_ARB */
-   {  28262, 0x000084D1 }, /* GL_TEXTURE17 */
-   {  28275, 0x000084D1 }, /* GL_TEXTURE17_ARB */
-   {  28292, 0x000084D2 }, /* GL_TEXTURE18 */
-   {  28305, 0x000084D2 }, /* GL_TEXTURE18_ARB */
-   {  28322, 0x000084D3 }, /* GL_TEXTURE19 */
-   {  28335, 0x000084D3 }, /* GL_TEXTURE19_ARB */
-   {  28352, 0x000084C1 }, /* GL_TEXTURE1_ARB */
-   {  28368, 0x000084C2 }, /* GL_TEXTURE2 */
-   {  28380, 0x000084D4 }, /* GL_TEXTURE20 */
-   {  28393, 0x000084D4 }, /* GL_TEXTURE20_ARB */
-   {  28410, 0x000084D5 }, /* GL_TEXTURE21 */
-   {  28423, 0x000084D5 }, /* GL_TEXTURE21_ARB */
-   {  28440, 0x000084D6 }, /* GL_TEXTURE22 */
-   {  28453, 0x000084D6 }, /* GL_TEXTURE22_ARB */
-   {  28470, 0x000084D7 }, /* GL_TEXTURE23 */
-   {  28483, 0x000084D7 }, /* GL_TEXTURE23_ARB */
-   {  28500, 0x000084D8 }, /* GL_TEXTURE24 */
-   {  28513, 0x000084D8 }, /* GL_TEXTURE24_ARB */
-   {  28530, 0x000084D9 }, /* GL_TEXTURE25 */
-   {  28543, 0x000084D9 }, /* GL_TEXTURE25_ARB */
-   {  28560, 0x000084DA }, /* GL_TEXTURE26 */
-   {  28573, 0x000084DA }, /* GL_TEXTURE26_ARB */
-   {  28590, 0x000084DB }, /* GL_TEXTURE27 */
-   {  28603, 0x000084DB }, /* GL_TEXTURE27_ARB */
-   {  28620, 0x000084DC }, /* GL_TEXTURE28 */
-   {  28633, 0x000084DC }, /* GL_TEXTURE28_ARB */
-   {  28650, 0x000084DD }, /* GL_TEXTURE29 */
-   {  28663, 0x000084DD }, /* GL_TEXTURE29_ARB */
-   {  28680, 0x000084C2 }, /* GL_TEXTURE2_ARB */
-   {  28696, 0x000084C3 }, /* GL_TEXTURE3 */
-   {  28708, 0x000084DE }, /* GL_TEXTURE30 */
-   {  28721, 0x000084DE }, /* GL_TEXTURE30_ARB */
-   {  28738, 0x000084DF }, /* GL_TEXTURE31 */
-   {  28751, 0x000084DF }, /* GL_TEXTURE31_ARB */
-   {  28768, 0x000084C3 }, /* GL_TEXTURE3_ARB */
-   {  28784, 0x000084C4 }, /* GL_TEXTURE4 */
-   {  28796, 0x000084C4 }, /* GL_TEXTURE4_ARB */
-   {  28812, 0x000084C5 }, /* GL_TEXTURE5 */
-   {  28824, 0x000084C5 }, /* GL_TEXTURE5_ARB */
-   {  28840, 0x000084C6 }, /* GL_TEXTURE6 */
-   {  28852, 0x000084C6 }, /* GL_TEXTURE6_ARB */
-   {  28868, 0x000084C7 }, /* GL_TEXTURE7 */
-   {  28880, 0x000084C7 }, /* GL_TEXTURE7_ARB */
-   {  28896, 0x000084C8 }, /* GL_TEXTURE8 */
-   {  28908, 0x000084C8 }, /* GL_TEXTURE8_ARB */
-   {  28924, 0x000084C9 }, /* GL_TEXTURE9 */
-   {  28936, 0x000084C9 }, /* GL_TEXTURE9_ARB */
-   {  28952, 0x00000DE0 }, /* GL_TEXTURE_1D */
-   {  28966, 0x00000DE1 }, /* GL_TEXTURE_2D */
-   {  28980, 0x0000806F }, /* GL_TEXTURE_3D */
-   {  28994, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
-   {  29016, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
-   {  29042, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
-   {  29064, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
-   {  29086, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
-   {  29108, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
-   {  29130, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
-   {  29158, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
-   {  29190, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
-   {  29223, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
-   {  29255, 0x00040000 }, /* GL_TEXTURE_BIT */
-   {  29270, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
-   {  29291, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
-   {  29316, 0x00001005 }, /* GL_TEXTURE_BORDER */
-   {  29334, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
-   {  29358, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
-   {  29389, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
-   {  29419, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
-   {  29449, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
-   {  29484, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
-   {  29515, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-   {  29553, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
-   {  29580, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
-   {  29612, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
-   {  29646, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
-   {  29670, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
-   {  29698, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
-   {  29722, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
-   {  29750, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
-   {  29783, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
-   {  29807, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
-   {  29829, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
-   {  29851, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
-   {  29877, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
-   {  29911, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
-   {  29944, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
-   {  29981, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
-   {  30009, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
-   {  30041, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
-   {  30064, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
-   {  30102, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
-   {  30144, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
-   {  30175, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
-   {  30203, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
-   {  30233, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
-   {  30261, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
-   {  30281, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
-   {  30305, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
-   {  30336, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
-   {  30371, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
-   {  30402, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
-   {  30437, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
-   {  30468, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
-   {  30503, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
-   {  30534, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
-   {  30569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
-   {  30600, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
-   {  30635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
-   {  30666, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
-   {  30701, 0x00008071 }, /* GL_TEXTURE_DEPTH */
-   {  30718, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
-   {  30740, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
-   {  30766, 0x00002300 }, /* GL_TEXTURE_ENV */
-   {  30781, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
-   {  30802, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
-   {  30822, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
-   {  30848, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
-   {  30868, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
-   {  30885, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
-   {  30902, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
-   {  30919, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
-   {  30936, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
-   {  30961, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
-   {  30983, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
-   {  31009, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
-   {  31027, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
-   {  31053, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
-   {  31079, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
-   {  31109, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
-   {  31136, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
-   {  31161, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
-   {  31181, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
-   {  31205, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
-   {  31232, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
-   {  31259, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
-   {  31286, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
-   {  31312, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
-   {  31342, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
-   {  31364, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
-   {  31382, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
-   {  31412, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
-   {  31440, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
-   {  31468, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
-   {  31496, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
-   {  31517, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
-   {  31536, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
-   {  31558, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
-   {  31577, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
-   {  31597, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
-   {  31622, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
-   {  31646, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
-   {  31666, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
-   {  31690, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
-   {  31710, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
-   {  31733, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
-   {  31758, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
-   {  31792, 0x00001000 }, /* GL_TEXTURE_WIDTH */
-   {  31809, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
-   {  31827, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
-   {  31845, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
-   {  31863, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
-   {  31882, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
-   {  31911, 0x00001000 }, /* GL_TRANSFORM_BIT */
-   {  31928, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
-   {  31954, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
-   {  31984, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
-   {  32016, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
-   {  32046, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
-   {  32080, 0x0000862C }, /* GL_TRANSPOSE_NV */
-   {  32096, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
-   {  32127, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
-   {  32162, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
-   {  32190, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
-   {  32222, 0x00000004 }, /* GL_TRIANGLES */
-   {  32235, 0x00000006 }, /* GL_TRIANGLE_FAN */
-   {  32251, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
-   {  32272, 0x00000005 }, /* GL_TRIANGLE_STRIP */
-   {  32290, 0x00000001 }, /* GL_TRUE */
-   {  32298, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
-   {  32318, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
-   {  32341, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
-   {  32361, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
-   {  32382, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
-   {  32404, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
-   {  32426, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
-   {  32446, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
-   {  32467, 0x00001401 }, /* GL_UNSIGNED_BYTE */
-   {  32484, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
-   {  32511, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
-   {  32534, 0x00001405 }, /* GL_UNSIGNED_INT */
-   {  32550, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
-   {  32577, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
-   {  32601, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
-   {  32632, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
-   {  32656, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
-   {  32684, 0x00001403 }, /* GL_UNSIGNED_SHORT */
-   {  32702, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
-   {  32732, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
-   {  32758, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
-   {  32788, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
-   {  32814, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
-   {  32838, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
-   {  32866, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
-   {  32894, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
-   {  32921, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
-   {  32953, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
-   {  32984, 0x00002A20 }, /* GL_V2F */
-   {  32991, 0x00002A21 }, /* GL_V3F */
-   {  32998, 0x00001F00 }, /* GL_VENDOR */
-   {  33008, 0x00001F02 }, /* GL_VERSION */
-   {  33019, 0x00008074 }, /* GL_VERTEX_ARRAY */
-   {  33035, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
-   {  33066, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
-   {  33101, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
-   {  33125, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
-   {  33146, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
-   {  33169, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
-   {  33190, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
-   {  33217, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
-   {  33245, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
-   {  33273, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
-   {  33301, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
-   {  33329, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
-   {  33357, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
-   {  33385, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
-   {  33412, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
-   {  33439, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
-   {  33466, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
-   {  33493, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
-   {  33520, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
-   {  33547, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
-   {  33574, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
-   {  33601, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
-   {  33628, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
-   {  33666, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
-   {  33708, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
-   {  33743, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
-   {  33781, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
-   {  33816, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
-   {  33848, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
-   {  33882, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
-   {  33914, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
-   {  33934, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
-   {  33956, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
-   {  33985, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
-   {  34006, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
-   {  34039, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
-   {  34071, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
-   {  34102, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
-   {  34132, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
-   {  34153, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
-   {  34180, 0x00000BA2 }, /* GL_VIEWPORT */
-   {  34192, 0x00000800 }, /* GL_VIEWPORT_BIT */
-   {  34208, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
-   {  34228, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
-   {  34259, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
-   {  34294, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
-   {  34322, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
-   {  34347, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
-   {  34374, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
-   {  34399, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
-   {  34423, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
-   {  34442, 0x000088B9 }, /* GL_WRITE_ONLY */
-   {  34456, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
-   {  34474, 0x00001506 }, /* GL_XOR */
-   {  34481, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
-   {  34500, 0x00008757 }, /* GL_YCBCR_MESA */
-   {  34514, 0x00000000 }, /* GL_ZERO */
-   {  34522, 0x00000D16 }, /* GL_ZOOM_X */
-   {  34532, 0x00000D17 }, /* GL_ZOOM_Y */
+   { 10002, 0x0000802D }, /* GL_HISTOGRAM_SINK */
+   { 10020, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
+   { 10042, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
+   { 10061, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
+   { 10084, 0x0000862A }, /* GL_IDENTITY_NV */
+   { 10099, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
+   { 10119, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+   { 10159, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+   { 10197, 0x00001E02 }, /* GL_INCR */
+   { 10205, 0x00008507 }, /* GL_INCR_WRAP */
+   { 10218, 0x00008507 }, /* GL_INCR_WRAP_EXT */
+   { 10235, 0x00008077 }, /* GL_INDEX_ARRAY */
+   { 10250, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+   { 10280, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
+   { 10314, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
+   { 10337, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
+   { 10359, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
+   { 10379, 0x00000D51 }, /* GL_INDEX_BITS */
+   { 10393, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
+   { 10414, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
+   { 10432, 0x00000C30 }, /* GL_INDEX_MODE */
+   { 10446, 0x00000D13 }, /* GL_INDEX_OFFSET */
+   { 10462, 0x00000D12 }, /* GL_INDEX_SHIFT */
+   { 10477, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
+   { 10496, 0x00001404 }, /* GL_INT */
+   { 10503, 0x00008049 }, /* GL_INTENSITY */
+   { 10516, 0x0000804C }, /* GL_INTENSITY12 */
+   { 10531, 0x0000804C }, /* GL_INTENSITY12_EXT */
+   { 10550, 0x0000804D }, /* GL_INTENSITY16 */
+   { 10565, 0x0000804D }, /* GL_INTENSITY16_EXT */
+   { 10584, 0x0000804A }, /* GL_INTENSITY4 */
+   { 10598, 0x0000804A }, /* GL_INTENSITY4_EXT */
+   { 10616, 0x0000804B }, /* GL_INTENSITY8 */
+   { 10630, 0x0000804B }, /* GL_INTENSITY8_EXT */
+   { 10648, 0x00008049 }, /* GL_INTENSITY_EXT */
+   { 10665, 0x00008575 }, /* GL_INTERPOLATE */
+   { 10680, 0x00008575 }, /* GL_INTERPOLATE_ARB */
+   { 10699, 0x00008575 }, /* GL_INTERPOLATE_EXT */
+   { 10718, 0x00008B53 }, /* GL_INT_VEC2_ARB */
+   { 10734, 0x00008B54 }, /* GL_INT_VEC3_ARB */
+   { 10750, 0x00008B55 }, /* GL_INT_VEC4_ARB */
+   { 10766, 0x00000500 }, /* GL_INVALID_ENUM */
+   { 10782, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
+   { 10819, 0x00000502 }, /* GL_INVALID_OPERATION */
+   { 10840, 0x00000501 }, /* GL_INVALID_VALUE */
+   { 10857, 0x0000862B }, /* GL_INVERSE_NV */
+   { 10871, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
+   { 10895, 0x0000150A }, /* GL_INVERT */
+   { 10905, 0x00001E00 }, /* GL_KEEP */
+   { 10913, 0x00000406 }, /* GL_LEFT */
+   { 10921, 0x00000203 }, /* GL_LEQUAL */
+   { 10931, 0x00000201 }, /* GL_LESS */
+   { 10939, 0x00004000 }, /* GL_LIGHT0 */
+   { 10949, 0x00004001 }, /* GL_LIGHT1 */
+   { 10959, 0x00004002 }, /* GL_LIGHT2 */
+   { 10969, 0x00004003 }, /* GL_LIGHT3 */
+   { 10979, 0x00004004 }, /* GL_LIGHT4 */
+   { 10989, 0x00004005 }, /* GL_LIGHT5 */
+   { 10999, 0x00004006 }, /* GL_LIGHT6 */
+   { 11009, 0x00004007 }, /* GL_LIGHT7 */
+   { 11019, 0x00000B50 }, /* GL_LIGHTING */
+   { 11031, 0x00000040 }, /* GL_LIGHTING_BIT */
+   { 11047, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
+   { 11070, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+   { 11099, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
+   { 11132, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+   { 11160, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
+   { 11184, 0x00001B01 }, /* GL_LINE */
+   { 11192, 0x00002601 }, /* GL_LINEAR */
+   { 11202, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
+   { 11224, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+   { 11254, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+   { 11285, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
+   { 11309, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
+   { 11334, 0x00000001 }, /* GL_LINES */
+   { 11343, 0x00000004 }, /* GL_LINE_BIT */
+   { 11355, 0x00000002 }, /* GL_LINE_LOOP */
+   { 11368, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
+   { 11388, 0x00000B20 }, /* GL_LINE_SMOOTH */
+   { 11403, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
+   { 11423, 0x00000B24 }, /* GL_LINE_STIPPLE */
+   { 11439, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
+   { 11463, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
+   { 11486, 0x00000003 }, /* GL_LINE_STRIP */
+   { 11500, 0x00000702 }, /* GL_LINE_TOKEN */
+   { 11514, 0x00000B21 }, /* GL_LINE_WIDTH */
+   { 11528, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
+   { 11554, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
+   { 11574, 0x00000B32 }, /* GL_LIST_BASE */
+   { 11587, 0x00020000 }, /* GL_LIST_BIT */
+   { 11599, 0x00000B33 }, /* GL_LIST_INDEX */
+   { 11613, 0x00000B30 }, /* GL_LIST_MODE */
+   { 11626, 0x00000101 }, /* GL_LOAD */
+   { 11634, 0x00000BF1 }, /* GL_LOGIC_OP */
+   { 11646, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
+   { 11663, 0x00001909 }, /* GL_LUMINANCE */
+   { 11676, 0x00008041 }, /* GL_LUMINANCE12 */
+   { 11691, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
+   { 11714, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
+   { 11741, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
+   { 11763, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
+   { 11789, 0x00008041 }, /* GL_LUMINANCE12_EXT */
+   { 11808, 0x00008042 }, /* GL_LUMINANCE16 */
+   { 11823, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
+   { 11846, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
+   { 11873, 0x00008042 }, /* GL_LUMINANCE16_EXT */
+   { 11892, 0x0000803F }, /* GL_LUMINANCE4 */
+   { 11906, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
+   { 11927, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
+   { 11952, 0x0000803F }, /* GL_LUMINANCE4_EXT */
+   { 11970, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
+   { 11991, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
+   { 12016, 0x00008040 }, /* GL_LUMINANCE8 */
+   { 12030, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
+   { 12051, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
+   { 12076, 0x00008040 }, /* GL_LUMINANCE8_EXT */
+   { 12094, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
+   { 12113, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
+   { 12129, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
+   { 12149, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
+   { 12171, 0x00000D91 }, /* GL_MAP1_INDEX */
+   { 12185, 0x00000D92 }, /* GL_MAP1_NORMAL */
+   { 12200, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
+   { 12224, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
+   { 12248, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
+   { 12272, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
+   { 12296, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
+   { 12313, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
+   { 12330, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+   { 12358, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+   { 12387, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+   { 12416, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+   { 12445, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+   { 12474, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+   { 12503, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+   { 12532, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+   { 12560, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+   { 12588, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+   { 12616, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+   { 12644, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+   { 12672, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+   { 12700, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+   { 12728, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+   { 12756, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+   { 12784, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
+   { 12800, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
+   { 12820, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
+   { 12842, 0x00000DB1 }, /* GL_MAP2_INDEX */
+   { 12856, 0x00000DB2 }, /* GL_MAP2_NORMAL */
+   { 12871, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
+   { 12895, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
+   { 12919, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
+   { 12943, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
+   { 12967, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
+   { 12984, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
+   { 13001, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+   { 13029, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+   { 13058, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+   { 13087, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+   { 13116, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+   { 13145, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+   { 13174, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+   { 13203, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+   { 13231, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+   { 13259, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+   { 13287, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+   { 13315, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+   { 13343, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+   { 13371, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
+   { 13399, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+   { 13427, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+   { 13455, 0x00000D10 }, /* GL_MAP_COLOR */
+   { 13468, 0x00000D11 }, /* GL_MAP_STENCIL */
+   { 13483, 0x000088C0 }, /* GL_MATRIX0_ARB */
+   { 13498, 0x00008630 }, /* GL_MATRIX0_NV */
+   { 13512, 0x000088CA }, /* GL_MATRIX10_ARB */
+   { 13528, 0x000088CB }, /* GL_MATRIX11_ARB */
+   { 13544, 0x000088CC }, /* GL_MATRIX12_ARB */
+   { 13560, 0x000088CD }, /* GL_MATRIX13_ARB */
+   { 13576, 0x000088CE }, /* GL_MATRIX14_ARB */
+   { 13592, 0x000088CF }, /* GL_MATRIX15_ARB */
+   { 13608, 0x000088D0 }, /* GL_MATRIX16_ARB */
+   { 13624, 0x000088D1 }, /* GL_MATRIX17_ARB */
+   { 13640, 0x000088D2 }, /* GL_MATRIX18_ARB */
+   { 13656, 0x000088D3 }, /* GL_MATRIX19_ARB */
+   { 13672, 0x000088C1 }, /* GL_MATRIX1_ARB */
+   { 13687, 0x00008631 }, /* GL_MATRIX1_NV */
+   { 13701, 0x000088D4 }, /* GL_MATRIX20_ARB */
+   { 13717, 0x000088D5 }, /* GL_MATRIX21_ARB */
+   { 13733, 0x000088D6 }, /* GL_MATRIX22_ARB */
+   { 13749, 0x000088D7 }, /* GL_MATRIX23_ARB */
+   { 13765, 0x000088D8 }, /* GL_MATRIX24_ARB */
+   { 13781, 0x000088D9 }, /* GL_MATRIX25_ARB */
+   { 13797, 0x000088DA }, /* GL_MATRIX26_ARB */
+   { 13813, 0x000088DB }, /* GL_MATRIX27_ARB */
+   { 13829, 0x000088DC }, /* GL_MATRIX28_ARB */
+   { 13845, 0x000088DD }, /* GL_MATRIX29_ARB */
+   { 13861, 0x000088C2 }, /* GL_MATRIX2_ARB */
+   { 13876, 0x00008632 }, /* GL_MATRIX2_NV */
+   { 13890, 0x000088DE }, /* GL_MATRIX30_ARB */
+   { 13906, 0x000088DF }, /* GL_MATRIX31_ARB */
+   { 13922, 0x000088C3 }, /* GL_MATRIX3_ARB */
+   { 13937, 0x00008633 }, /* GL_MATRIX3_NV */
+   { 13951, 0x000088C4 }, /* GL_MATRIX4_ARB */
+   { 13966, 0x00008634 }, /* GL_MATRIX4_NV */
+   { 13980, 0x000088C5 }, /* GL_MATRIX5_ARB */
+   { 13995, 0x00008635 }, /* GL_MATRIX5_NV */
+   { 14009, 0x000088C6 }, /* GL_MATRIX6_ARB */
+   { 14024, 0x00008636 }, /* GL_MATRIX6_NV */
+   { 14038, 0x000088C7 }, /* GL_MATRIX7_ARB */
+   { 14053, 0x00008637 }, /* GL_MATRIX7_NV */
+   { 14067, 0x000088C8 }, /* GL_MATRIX8_ARB */
+   { 14082, 0x000088C9 }, /* GL_MATRIX9_ARB */
+   { 14097, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
+   { 14123, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+   { 14157, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+   { 14188, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+   { 14221, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+   { 14252, 0x00000BA0 }, /* GL_MATRIX_MODE */
+   { 14267, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
+   { 14289, 0x00008008 }, /* GL_MAX */
+   { 14296, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
+   { 14319, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
+   { 14345, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+   { 14378, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+   { 14404, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+   { 14438, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
+   { 14457, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
+   { 14486, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+   { 14518, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
+   { 14554, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
+   { 14594, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
+   { 14620, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
+   { 14650, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
+   { 14675, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
+   { 14704, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+   { 14733, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
+   { 14766, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
+   { 14790, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
+   { 14814, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
+   { 14838, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
+   { 14863, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
+   { 14881, 0x00008008 }, /* GL_MAX_EXT */
+   { 14892, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
+   { 14931, 0x00000D31 }, /* GL_MAX_LIGHTS */
+   { 14945, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
+   { 14965, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+   { 15003, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+   { 15032, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
+   { 15056, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
+   { 15084, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
+   { 15107, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+   { 15144, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+   { 15180, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+   { 15207, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+   { 15236, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+   { 15270, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+   { 15306, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+   { 15333, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+   { 15365, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+   { 15401, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+   { 15430, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+   { 15459, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
+   { 15487, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+   { 15525, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+   { 15569, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+   { 15612, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+   { 15646, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+   { 15685, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+   { 15722, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+   { 15760, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+   { 15803, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+   { 15846, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+   { 15876, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+   { 15907, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+   { 15943, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+   { 15979, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
+   { 16009, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
+   { 16043, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
+   { 16076, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
+   { 16105, 0x00008504 }, /* GL_MAX_SHININESS_NV */
+   { 16125, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
+   { 16149, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
+   { 16175, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
+   { 16206, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
+   { 16230, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+   { 16264, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
+   { 16284, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
+   { 16311, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
+   { 16332, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
+   { 16357, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
+   { 16382, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
+   { 16417, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
+   { 16443, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
+   { 16469, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+   { 16507, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
+   { 16544, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
+   { 16568, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
+   { 16589, 0x00008007 }, /* GL_MIN */
+   { 16596, 0x0000802E }, /* GL_MINMAX */
+   { 16606, 0x0000802E }, /* GL_MINMAX_EXT */
+   { 16620, 0x0000802F }, /* GL_MINMAX_FORMAT */
+   { 16637, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
+   { 16658, 0x00008030 }, /* GL_MINMAX_SINK */
+   { 16673, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
+   { 16692, 0x00008007 }, /* GL_MIN_EXT */
+   { 16703, 0x00008370 }, /* GL_MIRRORED_REPEAT */
+   { 16722, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
+   { 16745, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
+   { 16768, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
+   { 16788, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
+   { 16808, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+   { 16838, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
+   { 16866, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+   { 16894, 0x00001700 }, /* GL_MODELVIEW */
+   { 16907, 0x00001700 }, /* GL_MODELVIEW0_ARB */
+   { 16925, 0x0000872A }, /* GL_MODELVIEW10_ARB */
+   { 16944, 0x0000872B }, /* GL_MODELVIEW11_ARB */
+   { 16963, 0x0000872C }, /* GL_MODELVIEW12_ARB */
+   { 16982, 0x0000872D }, /* GL_MODELVIEW13_ARB */
+   { 17001, 0x0000872E }, /* GL_MODELVIEW14_ARB */
+   { 17020, 0x0000872F }, /* GL_MODELVIEW15_ARB */
+   { 17039, 0x00008730 }, /* GL_MODELVIEW16_ARB */
+   { 17058, 0x00008731 }, /* GL_MODELVIEW17_ARB */
+   { 17077, 0x00008732 }, /* GL_MODELVIEW18_ARB */
+   { 17096, 0x00008733 }, /* GL_MODELVIEW19_ARB */
+   { 17115, 0x0000850A }, /* GL_MODELVIEW1_ARB */
+   { 17133, 0x00008734 }, /* GL_MODELVIEW20_ARB */
+   { 17152, 0x00008735 }, /* GL_MODELVIEW21_ARB */
+   { 17171, 0x00008736 }, /* GL_MODELVIEW22_ARB */
+   { 17190, 0x00008737 }, /* GL_MODELVIEW23_ARB */
+   { 17209, 0x00008738 }, /* GL_MODELVIEW24_ARB */
+   { 17228, 0x00008739 }, /* GL_MODELVIEW25_ARB */
+   { 17247, 0x0000873A }, /* GL_MODELVIEW26_ARB */
+   { 17266, 0x0000873B }, /* GL_MODELVIEW27_ARB */
+   { 17285, 0x0000873C }, /* GL_MODELVIEW28_ARB */
+   { 17304, 0x0000873D }, /* GL_MODELVIEW29_ARB */
+   { 17323, 0x00008722 }, /* GL_MODELVIEW2_ARB */
+   { 17341, 0x0000873E }, /* GL_MODELVIEW30_ARB */
+   { 17360, 0x0000873F }, /* GL_MODELVIEW31_ARB */
+   { 17379, 0x00008723 }, /* GL_MODELVIEW3_ARB */
+   { 17397, 0x00008724 }, /* GL_MODELVIEW4_ARB */
+   { 17415, 0x00008725 }, /* GL_MODELVIEW5_ARB */
+   { 17433, 0x00008726 }, /* GL_MODELVIEW6_ARB */
+   { 17451, 0x00008727 }, /* GL_MODELVIEW7_ARB */
+   { 17469, 0x00008728 }, /* GL_MODELVIEW8_ARB */
+   { 17487, 0x00008729 }, /* GL_MODELVIEW9_ARB */
+   { 17505, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
+   { 17525, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
+   { 17552, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
+   { 17577, 0x00002100 }, /* GL_MODULATE */
+   { 17589, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
+   { 17609, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
+   { 17636, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
+   { 17661, 0x00000103 }, /* GL_MULT */
+   { 17669, 0x0000809D }, /* GL_MULTISAMPLE */
+   { 17684, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
+   { 17704, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
+   { 17723, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
+   { 17742, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
+   { 17766, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
+   { 17789, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+   { 17819, 0x00002A25 }, /* GL_N3F_V3F */
+   { 17830, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
+   { 17850, 0x0000150E }, /* GL_NAND */
+   { 17858, 0x00002600 }, /* GL_NEAREST */
+   { 17869, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+   { 17900, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+   { 17932, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
+   { 17957, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
+   { 17983, 0x00000200 }, /* GL_NEVER */
+   { 17992, 0x00001102 }, /* GL_NICEST */
+   { 18002, 0x00000000 }, /* GL_NONE */
+   { 18010, 0x00001505 }, /* GL_NOOP */
+   { 18018, 0x00001508 }, /* GL_NOR */
+   { 18025, 0x00000BA1 }, /* GL_NORMALIZE */
+   { 18038, 0x00008075 }, /* GL_NORMAL_ARRAY */
+   { 18054, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+   { 18085, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
+   { 18120, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
+   { 18144, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
+   { 18167, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
+   { 18188, 0x00008511 }, /* GL_NORMAL_MAP */
+   { 18202, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
+   { 18220, 0x00008511 }, /* GL_NORMAL_MAP_NV */
+   { 18237, 0x00000205 }, /* GL_NOTEQUAL */
+   { 18249, 0x00000000 }, /* GL_NO_ERROR */
+   { 18261, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+   { 18295, 0x000086A2 }, /* GL_NUM_TEXTURE_COMPRESSED_FORMATS_ARB */
+   { 18333, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
+   { 18365, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
+   { 18407, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
+   { 18437, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
+   { 18477, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
+   { 18508, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
+   { 18537, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
+   { 18565, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
+   { 18595, 0x00002401 }, /* GL_OBJECT_LINEAR */
+   { 18612, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
+   { 18638, 0x00002501 }, /* GL_OBJECT_PLANE */
+   { 18654, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
+   { 18689, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
+   { 18711, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
+   { 18730, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
+   { 18760, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
+   { 18781, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
+   { 18809, 0x00000001 }, /* GL_ONE */
+   { 18816, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+   { 18844, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
+   { 18876, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
+   { 18904, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
+   { 18936, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
+   { 18959, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
+   { 18982, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
+   { 19005, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
+   { 19028, 0x00008598 }, /* GL_OPERAND0_ALPHA */
+   { 19046, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
+   { 19068, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
+   { 19090, 0x00008590 }, /* GL_OPERAND0_RGB */
+   { 19106, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
+   { 19126, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
+   { 19146, 0x00008599 }, /* GL_OPERAND1_ALPHA */
+   { 19164, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
+   { 19186, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
+   { 19208, 0x00008591 }, /* GL_OPERAND1_RGB */
+   { 19224, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
+   { 19244, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
+   { 19264, 0x0000859A }, /* GL_OPERAND2_ALPHA */
+   { 19282, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
+   { 19304, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
+   { 19326, 0x00008592 }, /* GL_OPERAND2_RGB */
+   { 19342, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
+   { 19362, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
+   { 19382, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
+   { 19403, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
+   { 19422, 0x00001507 }, /* GL_OR */
+   { 19428, 0x00000A01 }, /* GL_ORDER */
+   { 19437, 0x0000150D }, /* GL_OR_INVERTED */
+   { 19452, 0x0000150B }, /* GL_OR_REVERSE */
+   { 19466, 0x00000505 }, /* GL_OUT_OF_MEMORY */
+   { 19483, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
+   { 19501, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
+   { 19522, 0x00008758 }, /* GL_PACK_INVERT_MESA */
+   { 19542, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
+   { 19560, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
+   { 19579, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
+   { 19599, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
+   { 19619, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
+   { 19637, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
+   { 19656, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
+   { 19681, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
+   { 19705, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
+   { 19726, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
+   { 19748, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
+   { 19770, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
+   { 19795, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
+   { 19819, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
+   { 19840, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
+   { 19862, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
+   { 19884, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
+   { 19906, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
+   { 19937, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
+   { 19957, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+   { 19982, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
+   { 20002, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+   { 20027, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
+   { 20047, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+   { 20072, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
+   { 20092, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+   { 20117, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
+   { 20137, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+   { 20162, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
+   { 20182, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+   { 20207, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
+   { 20227, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+   { 20252, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
+   { 20272, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+   { 20297, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
+   { 20317, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+   { 20342, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
+   { 20362, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+   { 20387, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
+   { 20405, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
+   { 20438, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
+   { 20463, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
+   { 20498, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
+   { 20525, 0x00001B00 }, /* GL_POINT */
+   { 20534, 0x00000000 }, /* GL_POINTS */
+   { 20544, 0x00000002 }, /* GL_POINT_BIT */
+   { 20557, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
+   { 20587, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
+   { 20621, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
+   { 20655, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
+   { 20690, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
+   { 20719, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
+   { 20752, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
+   { 20785, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
+   { 20819, 0x00000B11 }, /* GL_POINT_SIZE */
+   { 20833, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
+   { 20859, 0x00008127 }, /* GL_POINT_SIZE_MAX */
+   { 20877, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
+   { 20899, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
+   { 20921, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
+   { 20944, 0x00008126 }, /* GL_POINT_SIZE_MIN */
+   { 20962, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
+   { 20984, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
+   { 21006, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
+   { 21029, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
+   { 21049, 0x00000B10 }, /* GL_POINT_SMOOTH */
+   { 21065, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
+   { 21086, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
+   { 21106, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
+   { 21135, 0x00008861 }, /* GL_POINT_SPRITE_NV */
+   { 21154, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
+   { 21180, 0x00000701 }, /* GL_POINT_TOKEN */
+   { 21195, 0x00000009 }, /* GL_POLYGON */
+   { 21206, 0x00000008 }, /* GL_POLYGON_BIT */
+   { 21221, 0x00000B40 }, /* GL_POLYGON_MODE */
+   { 21237, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
+   { 21260, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
+   { 21285, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
+   { 21308, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
+   { 21331, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
+   { 21355, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
+   { 21379, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
+   { 21397, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
+   { 21420, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
+   { 21439, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
+   { 21462, 0x00000703 }, /* GL_POLYGON_TOKEN */
+   { 21479, 0x00001203 }, /* GL_POSITION */
+   { 21491, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+   { 21523, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
+   { 21559, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+   { 21592, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
+   { 21629, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+   { 21660, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
+   { 21695, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+   { 21727, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
+   { 21763, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+   { 21796, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+   { 21828, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
+   { 21864, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+   { 21897, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
+   { 21934, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+   { 21964, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
+   { 21998, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+   { 22029, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
+   { 22064, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+   { 22095, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
+   { 22130, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+   { 22162, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
+   { 22198, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+   { 22228, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
+   { 22262, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+   { 22293, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
+   { 22328, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+   { 22360, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+   { 22391, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
+   { 22426, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+   { 22458, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
+   { 22494, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
+   { 22523, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
+   { 22556, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
+   { 22586, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
+   { 22620, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+   { 22659, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+   { 22692, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+   { 22732, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+   { 22766, 0x00008578 }, /* GL_PREVIOUS */
+   { 22778, 0x00008578 }, /* GL_PREVIOUS_ARB */
+   { 22794, 0x00008578 }, /* GL_PREVIOUS_EXT */
+   { 22810, 0x00008577 }, /* GL_PRIMARY_COLOR */
+   { 22827, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
+   { 22848, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
+   { 22869, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+   { 22902, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+   { 22934, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
+   { 22957, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
+   { 22980, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
+   { 23010, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
+   { 23039, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
+   { 23067, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
+   { 23089, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+   { 23117, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+   { 23145, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
+   { 23167, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
+   { 23188, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+   { 23228, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+   { 23267, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+   { 23297, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+   { 23332, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+   { 23365, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+   { 23399, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+   { 23438, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+   { 23477, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
+   { 23499, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
+   { 23525, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
+   { 23549, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
+   { 23572, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
+   { 23594, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
+   { 23615, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
+   { 23636, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
+   { 23663, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+   { 23695, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+   { 23727, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+   { 23762, 0x00001701 }, /* GL_PROJECTION */
+   { 23776, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
+   { 23797, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
+   { 23823, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
+   { 23844, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
+   { 23863, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
+   { 23886, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+   { 23925, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+   { 23963, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
+   { 23983, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
+   { 24007, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
+   { 24027, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
+   { 24051, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
+   { 24071, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+   { 24104, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
+   { 24130, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
+   { 24160, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+   { 24191, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
+   { 24221, 0x00002003 }, /* GL_Q */
+   { 24226, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
+   { 24251, 0x00000007 }, /* GL_QUADS */
+   { 24260, 0x00008614 }, /* GL_QUAD_MESH_SUN */
+   { 24277, 0x00000008 }, /* GL_QUAD_STRIP */
+   { 24291, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
+   { 24313, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
+   { 24339, 0x00008866 }, /* GL_QUERY_RESULT */
+   { 24355, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
+   { 24375, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
+   { 24401, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
+   { 24431, 0x00002002 }, /* GL_R */
+   { 24436, 0x00002A10 }, /* GL_R3_G3_B2 */
+   { 24448, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+   { 24481, 0x00000C02 }, /* GL_READ_BUFFER */
+   { 24496, 0x000088B8 }, /* GL_READ_ONLY */
+   { 24509, 0x000088B8 }, /* GL_READ_ONLY_ARB */
+   { 24526, 0x000088BA }, /* GL_READ_WRITE */
+   { 24540, 0x000088BA }, /* GL_READ_WRITE_ARB */
+   { 24558, 0x00001903 }, /* GL_RED */
+   { 24565, 0x00008016 }, /* GL_REDUCE */
+   { 24575, 0x00008016 }, /* GL_REDUCE_EXT */
+   { 24589, 0x00000D15 }, /* GL_RED_BIAS */
+   { 24601, 0x00000D52 }, /* GL_RED_BITS */
+   { 24613, 0x00000D14 }, /* GL_RED_SCALE */
+   { 24626, 0x00008512 }, /* GL_REFLECTION_MAP */
+   { 24644, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
+   { 24666, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
+   { 24687, 0x00001C00 }, /* GL_RENDER */
+   { 24697, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
+   { 24725, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
+   { 24745, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
+   { 24772, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+   { 24808, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
+   { 24834, 0x00001F01 }, /* GL_RENDERER */
+   { 24846, 0x00000C40 }, /* GL_RENDER_MODE */
+   { 24861, 0x00002901 }, /* GL_REPEAT */
+   { 24871, 0x00001E01 }, /* GL_REPLACE */
+   { 24882, 0x00008062 }, /* GL_REPLACE_EXT */
+   { 24897, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
+   { 24920, 0x0000803A }, /* GL_RESCALE_NORMAL */
+   { 24938, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
+   { 24960, 0x00000102 }, /* GL_RETURN */
+   { 24970, 0x00001907 }, /* GL_RGB */
+   { 24977, 0x00008052 }, /* GL_RGB10 */
+   { 24986, 0x00008059 }, /* GL_RGB10_A2 */
+   { 24998, 0x00008059 }, /* GL_RGB10_A2_EXT */
+   { 25014, 0x00008052 }, /* GL_RGB10_EXT */
+   { 25027, 0x00008053 }, /* GL_RGB12 */
+   { 25036, 0x00008053 }, /* GL_RGB12_EXT */
+   { 25049, 0x00008054 }, /* GL_RGB16 */
+   { 25058, 0x00008054 }, /* GL_RGB16_EXT */
+   { 25071, 0x0000804E }, /* GL_RGB2_EXT */
+   { 25083, 0x0000804F }, /* GL_RGB4 */
+   { 25091, 0x0000804F }, /* GL_RGB4_EXT */
+   { 25103, 0x000083A1 }, /* GL_RGB4_S3TC */
+   { 25116, 0x00008050 }, /* GL_RGB5 */
+   { 25124, 0x00008057 }, /* GL_RGB5_A1 */
+   { 25135, 0x00008057 }, /* GL_RGB5_A1_EXT */
+   { 25150, 0x00008050 }, /* GL_RGB5_EXT */
+   { 25162, 0x00008051 }, /* GL_RGB8 */
+   { 25170, 0x00008051 }, /* GL_RGB8_EXT */
+   { 25182, 0x00001908 }, /* GL_RGBA */
+   { 25190, 0x0000805A }, /* GL_RGBA12 */
+   { 25200, 0x0000805A }, /* GL_RGBA12_EXT */
+   { 25214, 0x0000805B }, /* GL_RGBA16 */
+   { 25224, 0x0000805B }, /* GL_RGBA16_EXT */
+   { 25238, 0x00008055 }, /* GL_RGBA2 */
+   { 25247, 0x00008055 }, /* GL_RGBA2_EXT */
+   { 25260, 0x00008056 }, /* GL_RGBA4 */
+   { 25269, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
+   { 25288, 0x00008056 }, /* GL_RGBA4_EXT */
+   { 25301, 0x000083A3 }, /* GL_RGBA4_S3TC */
+   { 25315, 0x00008058 }, /* GL_RGBA8 */
+   { 25324, 0x00008058 }, /* GL_RGBA8_EXT */
+   { 25337, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
+   { 25355, 0x00000C31 }, /* GL_RGBA_MODE */
+   { 25368, 0x000083A2 }, /* GL_RGBA_S3TC */
+   { 25381, 0x000083A0 }, /* GL_RGB_S3TC */
+   { 25393, 0x00008573 }, /* GL_RGB_SCALE */
+   { 25406, 0x00008573 }, /* GL_RGB_SCALE_ARB */
+   { 25423, 0x00008573 }, /* GL_RGB_SCALE_EXT */
+   { 25440, 0x00000407 }, /* GL_RIGHT */
+   { 25449, 0x00002000 }, /* GL_S */
+   { 25454, 0x000080A9 }, /* GL_SAMPLES */
+   { 25465, 0x000086B4 }, /* GL_SAMPLES_3DFX */
+   { 25481, 0x000080A9 }, /* GL_SAMPLES_ARB */
+   { 25496, 0x00008914 }, /* GL_SAMPLES_PASSED */
+   { 25514, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
+   { 25536, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+   { 25564, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
+   { 25596, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
+   { 25619, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
+   { 25646, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
+   { 25664, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
+   { 25687, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
+   { 25709, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
+   { 25728, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
+   { 25751, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
+   { 25777, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
+   { 25807, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
+   { 25832, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
+   { 25861, 0x00080000 }, /* GL_SCISSOR_BIT */
+   { 25876, 0x00000C10 }, /* GL_SCISSOR_BOX */
+   { 25891, 0x00000C11 }, /* GL_SCISSOR_TEST */
+   { 25907, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
+   { 25932, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+   { 25972, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
+   { 26016, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+   { 26049, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+   { 26079, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+   { 26111, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+   { 26141, 0x00001C02 }, /* GL_SELECT */
+   { 26151, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
+   { 26179, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
+   { 26204, 0x00008012 }, /* GL_SEPARABLE_2D */
+   { 26220, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
+   { 26247, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
+   { 26278, 0x0000150F }, /* GL_SET */
+   { 26285, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
+   { 26306, 0x00000B54 }, /* GL_SHADE_MODEL */
+   { 26321, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
+   { 26344, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+   { 26374, 0x00001601 }, /* GL_SHININESS */
+   { 26387, 0x00001402 }, /* GL_SHORT */
+   { 26396, 0x000081F9 }, /* GL_SINGLE_COLOR */
+   { 26412, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
+   { 26432, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
+   { 26451, 0x00001D01 }, /* GL_SMOOTH */
+   { 26461, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
+   { 26494, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
+   { 26521, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
+   { 26554, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
+   { 26581, 0x00008588 }, /* GL_SOURCE0_ALPHA */
+   { 26598, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
+   { 26619, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
+   { 26640, 0x00008580 }, /* GL_SOURCE0_RGB */
+   { 26655, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
+   { 26674, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
+   { 26693, 0x00008589 }, /* GL_SOURCE1_ALPHA */
+   { 26710, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
+   { 26731, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
+   { 26752, 0x00008581 }, /* GL_SOURCE1_RGB */
+   { 26767, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
+   { 26786, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
+   { 26805, 0x0000858A }, /* GL_SOURCE2_ALPHA */
+   { 26822, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
+   { 26843, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
+   { 26864, 0x00008582 }, /* GL_SOURCE2_RGB */
+   { 26879, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
+   { 26898, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
+   { 26917, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
+   { 26937, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
+   { 26955, 0x00001202 }, /* GL_SPECULAR */
+   { 26967, 0x00002402 }, /* GL_SPHERE_MAP */
+   { 26981, 0x00001206 }, /* GL_SPOT_CUTOFF */
+   { 26996, 0x00001204 }, /* GL_SPOT_DIRECTION */
+   { 27014, 0x00001205 }, /* GL_SPOT_EXPONENT */
+   { 27031, 0x00008588 }, /* GL_SRC0_ALPHA */
+   { 27045, 0x00008580 }, /* GL_SRC0_RGB */
+   { 27057, 0x00008589 }, /* GL_SRC1_ALPHA */
+   { 27071, 0x00008581 }, /* GL_SRC1_RGB */
+   { 27083, 0x0000858A }, /* GL_SRC2_ALPHA */
+   { 27097, 0x00008582 }, /* GL_SRC2_RGB */
+   { 27109, 0x00000302 }, /* GL_SRC_ALPHA */
+   { 27122, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
+   { 27144, 0x00000300 }, /* GL_SRC_COLOR */
+   { 27157, 0x00000503 }, /* GL_STACK_OVERFLOW */
+   { 27175, 0x00000504 }, /* GL_STACK_UNDERFLOW */
+   { 27194, 0x000088E6 }, /* GL_STATIC_COPY */
+   { 27209, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
+   { 27228, 0x000088E4 }, /* GL_STATIC_DRAW */
+   { 27243, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
+   { 27262, 0x000088E5 }, /* GL_STATIC_READ */
+   { 27277, 0x000088E5 }, /* GL_STATIC_READ_ARB */
+   { 27296, 0x00001802 }, /* GL_STENCIL */
+   { 27307, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
+   { 27333, 0x00000D57 }, /* GL_STENCIL_BITS */
+   { 27349, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
+   { 27371, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
+   { 27394, 0x00000B94 }, /* GL_STENCIL_FAIL */
+   { 27410, 0x00000B92 }, /* GL_STENCIL_FUNC */
+   { 27426, 0x00001901 }, /* GL_STENCIL_INDEX */
+   { 27443, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
+   { 27466, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
+   { 27488, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
+   { 27510, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
+   { 27532, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
+   { 27553, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
+   { 27580, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
+   { 27607, 0x00000B97 }, /* GL_STENCIL_REF */
+   { 27622, 0x00000B90 }, /* GL_STENCIL_TEST */
+   { 27638, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+   { 27667, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
+   { 27689, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
+   { 27710, 0x00000C33 }, /* GL_STEREO */
+   { 27720, 0x000088E2 }, /* GL_STREAM_COPY */
+   { 27735, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
+   { 27754, 0x000088E0 }, /* GL_STREAM_DRAW */
+   { 27769, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
+   { 27788, 0x000088E1 }, /* GL_STREAM_READ */
+   { 27803, 0x000088E1 }, /* GL_STREAM_READ_ARB */
+   { 27822, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
+   { 27839, 0x000084E7 }, /* GL_SUBTRACT */
+   { 27851, 0x000084E7 }, /* GL_SUBTRACT_ARB */
+   { 27867, 0x00002001 }, /* GL_T */
+   { 27872, 0x00002A2A }, /* GL_T2F_C3F_V3F */
+   { 27887, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
+   { 27906, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
+   { 27922, 0x00002A2B }, /* GL_T2F_N3F_V3F */
+   { 27937, 0x00002A27 }, /* GL_T2F_V3F */
+   { 27948, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
+   { 27967, 0x00002A28 }, /* GL_T4F_V4F */
+   { 27978, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
+   { 28001, 0x00001702 }, /* GL_TEXTURE */
+   { 28012, 0x000084C0 }, /* GL_TEXTURE0 */
+   { 28024, 0x000084C0 }, /* GL_TEXTURE0_ARB */
+   { 28040, 0x000084C1 }, /* GL_TEXTURE1 */
+   { 28052, 0x000084CA }, /* GL_TEXTURE10 */
+   { 28065, 0x000084CA }, /* GL_TEXTURE10_ARB */
+   { 28082, 0x000084CB }, /* GL_TEXTURE11 */
+   { 28095, 0x000084CB }, /* GL_TEXTURE11_ARB */
+   { 28112, 0x000084CC }, /* GL_TEXTURE12 */
+   { 28125, 0x000084CC }, /* GL_TEXTURE12_ARB */
+   { 28142, 0x000084CD }, /* GL_TEXTURE13 */
+   { 28155, 0x000084CD }, /* GL_TEXTURE13_ARB */
+   { 28172, 0x000084CE }, /* GL_TEXTURE14 */
+   { 28185, 0x000084CE }, /* GL_TEXTURE14_ARB */
+   { 28202, 0x000084CF }, /* GL_TEXTURE15 */
+   { 28215, 0x000084CF }, /* GL_TEXTURE15_ARB */
+   { 28232, 0x000084D0 }, /* GL_TEXTURE16 */
+   { 28245, 0x000084D0 }, /* GL_TEXTURE16_ARB */
+   { 28262, 0x000084D1 }, /* GL_TEXTURE17 */
+   { 28275, 0x000084D1 }, /* GL_TEXTURE17_ARB */
+   { 28292, 0x000084D2 }, /* GL_TEXTURE18 */
+   { 28305, 0x000084D2 }, /* GL_TEXTURE18_ARB */
+   { 28322, 0x000084D3 }, /* GL_TEXTURE19 */
+   { 28335, 0x000084D3 }, /* GL_TEXTURE19_ARB */
+   { 28352, 0x000084C1 }, /* GL_TEXTURE1_ARB */
+   { 28368, 0x000084C2 }, /* GL_TEXTURE2 */
+   { 28380, 0x000084D4 }, /* GL_TEXTURE20 */
+   { 28393, 0x000084D4 }, /* GL_TEXTURE20_ARB */
+   { 28410, 0x000084D5 }, /* GL_TEXTURE21 */
+   { 28423, 0x000084D5 }, /* GL_TEXTURE21_ARB */
+   { 28440, 0x000084D6 }, /* GL_TEXTURE22 */
+   { 28453, 0x000084D6 }, /* GL_TEXTURE22_ARB */
+   { 28470, 0x000084D7 }, /* GL_TEXTURE23 */
+   { 28483, 0x000084D7 }, /* GL_TEXTURE23_ARB */
+   { 28500, 0x000084D8 }, /* GL_TEXTURE24 */
+   { 28513, 0x000084D8 }, /* GL_TEXTURE24_ARB */
+   { 28530, 0x000084D9 }, /* GL_TEXTURE25 */
+   { 28543, 0x000084D9 }, /* GL_TEXTURE25_ARB */
+   { 28560, 0x000084DA }, /* GL_TEXTURE26 */
+   { 28573, 0x000084DA }, /* GL_TEXTURE26_ARB */
+   { 28590, 0x000084DB }, /* GL_TEXTURE27 */
+   { 28603, 0x000084DB }, /* GL_TEXTURE27_ARB */
+   { 28620, 0x000084DC }, /* GL_TEXTURE28 */
+   { 28633, 0x000084DC }, /* GL_TEXTURE28_ARB */
+   { 28650, 0x000084DD }, /* GL_TEXTURE29 */
+   { 28663, 0x000084DD }, /* GL_TEXTURE29_ARB */
+   { 28680, 0x000084C2 }, /* GL_TEXTURE2_ARB */
+   { 28696, 0x000084C3 }, /* GL_TEXTURE3 */
+   { 28708, 0x000084DE }, /* GL_TEXTURE30 */
+   { 28721, 0x000084DE }, /* GL_TEXTURE30_ARB */
+   { 28738, 0x000084DF }, /* GL_TEXTURE31 */
+   { 28751, 0x000084DF }, /* GL_TEXTURE31_ARB */
+   { 28768, 0x000084C3 }, /* GL_TEXTURE3_ARB */
+   { 28784, 0x000084C4 }, /* GL_TEXTURE4 */
+   { 28796, 0x000084C4 }, /* GL_TEXTURE4_ARB */
+   { 28812, 0x000084C5 }, /* GL_TEXTURE5 */
+   { 28824, 0x000084C5 }, /* GL_TEXTURE5_ARB */
+   { 28840, 0x000084C6 }, /* GL_TEXTURE6 */
+   { 28852, 0x000084C6 }, /* GL_TEXTURE6_ARB */
+   { 28868, 0x000084C7 }, /* GL_TEXTURE7 */
+   { 28880, 0x000084C7 }, /* GL_TEXTURE7_ARB */
+   { 28896, 0x000084C8 }, /* GL_TEXTURE8 */
+   { 28908, 0x000084C8 }, /* GL_TEXTURE8_ARB */
+   { 28924, 0x000084C9 }, /* GL_TEXTURE9 */
+   { 28936, 0x000084C9 }, /* GL_TEXTURE9_ARB */
+   { 28952, 0x00000DE0 }, /* GL_TEXTURE_1D */
+   { 28966, 0x00000DE1 }, /* GL_TEXTURE_2D */
+   { 28980, 0x0000806F }, /* GL_TEXTURE_3D */
+   { 28994, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
+   { 29016, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
+   { 29042, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
+   { 29064, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
+   { 29086, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
+   { 29108, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
+   { 29130, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
+   { 29158, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
+   { 29190, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+   { 29223, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
+   { 29255, 0x00040000 }, /* GL_TEXTURE_BIT */
+   { 29270, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
+   { 29291, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
+   { 29316, 0x00001005 }, /* GL_TEXTURE_BORDER */
+   { 29334, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
+   { 29358, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+   { 29389, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+   { 29419, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+   { 29449, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+   { 29484, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+   { 29515, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+   { 29553, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
+   { 29580, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+   { 29612, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+   { 29646, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
+   { 29670, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
+   { 29698, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
+   { 29722, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
+   { 29750, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+   { 29783, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
+   { 29807, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
+   { 29829, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
+   { 29851, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
+   { 29877, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
+   { 29911, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+   { 29944, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
+   { 29981, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
+   { 30009, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
+   { 30041, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
+   { 30064, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+   { 30102, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
+   { 30144, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+   { 30175, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+   { 30203, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+   { 30233, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+   { 30261, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
+   { 30281, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
+   { 30305, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+   { 30336, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
+   { 30371, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+   { 30402, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
+   { 30437, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+   { 30468, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
+   { 30503, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+   { 30534, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
+   { 30569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+   { 30600, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
+   { 30635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+   { 30666, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
+   { 30701, 0x00008071 }, /* GL_TEXTURE_DEPTH */
+   { 30718, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
+   { 30740, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
+   { 30766, 0x00002300 }, /* GL_TEXTURE_ENV */
+   { 30781, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
+   { 30802, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
+   { 30822, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
+   { 30848, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
+   { 30868, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
+   { 30885, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
+   { 30902, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
+   { 30919, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
+   { 30936, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
+   { 30961, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
+   { 30983, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
+   { 31009, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
+   { 31027, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
+   { 31053, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
+   { 31079, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
+   { 31109, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
+   { 31136, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
+   { 31161, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
+   { 31181, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
+   { 31205, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+   { 31232, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+   { 31259, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+   { 31286, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
+   { 31312, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
+   { 31342, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
+   { 31364, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
+   { 31382, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+   { 31412, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+   { 31440, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+   { 31468, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+   { 31496, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
+   { 31517, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
+   { 31536, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
+   { 31558, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
+   { 31577, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
+   { 31597, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
+   { 31622, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
+   { 31646, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
+   { 31666, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
+   { 31690, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
+   { 31710, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
+   { 31733, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
+   { 31758, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+   { 31792, 0x00001000 }, /* GL_TEXTURE_WIDTH */
+   { 31809, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
+   { 31827, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
+   { 31845, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
+   { 31863, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
+   { 31882, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+   { 31911, 0x00001000 }, /* GL_TRANSFORM_BIT */
+   { 31928, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
+   { 31954, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
+   { 31984, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+   { 32016, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+   { 32046, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
+   { 32080, 0x0000862C }, /* GL_TRANSPOSE_NV */
+   { 32096, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+   { 32127, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
+   { 32162, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+   { 32190, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
+   { 32222, 0x00000004 }, /* GL_TRIANGLES */
+   { 32235, 0x00000006 }, /* GL_TRIANGLE_FAN */
+   { 32251, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
+   { 32272, 0x00000005 }, /* GL_TRIANGLE_STRIP */
+   { 32290, 0x00000001 }, /* GL_TRUE */
+   { 32298, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
+   { 32318, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
+   { 32341, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
+   { 32361, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
+   { 32382, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
+   { 32404, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
+   { 32426, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
+   { 32446, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
+   { 32467, 0x00001401 }, /* GL_UNSIGNED_BYTE */
+   { 32484, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+   { 32511, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
+   { 32534, 0x00001405 }, /* GL_UNSIGNED_INT */
+   { 32550, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
+   { 32577, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
+   { 32601, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+   { 32632, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
+   { 32656, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+   { 32684, 0x00001403 }, /* GL_UNSIGNED_SHORT */
+   { 32702, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+   { 32732, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+   { 32758, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+   { 32788, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+   { 32814, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
+   { 32838, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+   { 32866, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+   { 32894, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
+   { 32921, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+   { 32953, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
+   { 32984, 0x00002A20 }, /* GL_V2F */
+   { 32991, 0x00002A21 }, /* GL_V3F */
+   { 32998, 0x00001F00 }, /* GL_VENDOR */
+   { 33008, 0x00001F02 }, /* GL_VERSION */
+   { 33019, 0x00008074 }, /* GL_VERTEX_ARRAY */
+   { 33035, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+   { 33066, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+   { 33101, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+   { 33125, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+   { 33146, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+   { 33169, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+   { 33190, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+   { 33217, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+   { 33245, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+   { 33273, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+   { 33301, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+   { 33329, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+   { 33357, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+   { 33385, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+   { 33412, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+   { 33439, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+   { 33466, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+   { 33493, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+   { 33520, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+   { 33547, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+   { 33574, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+   { 33601, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+   { 33628, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+   { 33666, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+   { 33708, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+   { 33743, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+   { 33781, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+   { 33816, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+   { 33848, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+   { 33882, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+   { 33914, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+   { 33934, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+   { 33956, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+   { 33985, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+   { 34006, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+   { 34039, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+   { 34071, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+   { 34102, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+   { 34132, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+   { 34153, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+   { 34180, 0x00000BA2 }, /* GL_VIEWPORT */
+   { 34192, 0x00000800 }, /* GL_VIEWPORT_BIT */
+   { 34208, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+   { 34228, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+   { 34259, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+   { 34294, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+   { 34322, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+   { 34347, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+   { 34374, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+   { 34399, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+   { 34423, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+   { 34442, 0x000088B9 }, /* GL_WRITE_ONLY */
+   { 34456, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+   { 34474, 0x00001506 }, /* GL_XOR */
+   { 34481, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+   { 34500, 0x00008757 }, /* GL_YCBCR_MESA */
+   { 34514, 0x00000000 }, /* GL_ZERO */
+   { 34522, 0x00000D16 }, /* GL_ZOOM_X */
+   { 34532, 0x00000D17 }, /* GL_ZOOM_Y */
 };
 
 static const unsigned reduced_enums[1232] =
 {
        389, /* GL_FALSE */
-       1519, /* GL_TRUE */
+       561, /* GL_LINES */
        563, /* GL_LINE_LOOP */
        570, /* GL_LINE_STRIP */
-       1515, /* GL_TRIANGLES */
-       1518, /* GL_TRIANGLE_STRIP */
-       1516, /* GL_TRIANGLE_FAN */
-       1112, /* GL_QUADS */
-       1114, /* GL_QUAD_STRIP */
-       1002, /* GL_POLYGON */
-       1014, /* GL_POLYGON_STIPPLE_BIT */
+      1515, /* GL_TRIANGLES */
+      1518, /* GL_TRIANGLE_STRIP */
+      1516, /* GL_TRIANGLE_FAN */
+      1112, /* GL_QUADS */
+      1114, /* GL_QUAD_STRIP */
+      1002, /* GL_POLYGON */
+      1014, /* GL_POLYGON_STIPPLE_BIT */
        968, /* GL_PIXEL_MODE_BIT */
        548, /* GL_LIGHTING_BIT */
        405, /* GL_FOG_BIT */
          8, /* GL_ACCUM */
        579, /* GL_LOAD */
-       1152, /* GL_RETURN */
+      1152, /* GL_RETURN */
        841, /* GL_MULT */
         19, /* GL_ADD */
        857, /* GL_NEVER */
@@ -3294,15 +3294,15 @@ static const unsigned reduced_enums[1232] =
        872, /* GL_NOTEQUAL */
        466, /* GL_GEQUAL */
         42, /* GL_ALWAYS */
-       1276, /* GL_SRC_COLOR */
+      1276, /* GL_SRC_COLOR */
        901, /* GL_ONE_MINUS_SRC_COLOR */
-       1274, /* GL_SRC_ALPHA */
+      1274, /* GL_SRC_ALPHA */
        900, /* GL_ONE_MINUS_SRC_ALPHA */
        359, /* GL_DST_ALPHA */
        898, /* GL_ONE_MINUS_DST_ALPHA */
        360, /* GL_DST_COLOR */
        899, /* GL_ONE_MINUS_DST_COLOR */
-       1275, /* GL_SRC_ALPHA_SATURATE */
+      1275, /* GL_SRC_ALPHA_SATURATE */
        454, /* GL_FRONT_LEFT */
        455, /* GL_FRONT_RIGHT */
         64, /* GL_BACK_LEFT */
@@ -3310,7 +3310,7 @@ static const unsigned reduced_enums[1232] =
        451, /* GL_FRONT */
         63, /* GL_BACK */
        536, /* GL_LEFT */
-       1192, /* GL_RIGHT */
+      1192, /* GL_RIGHT */
        452, /* GL_FRONT_AND_BACK */
         58, /* GL_AUX0 */
         59, /* GL_AUX1 */
@@ -3319,8 +3319,8 @@ static const unsigned reduced_enums[1232] =
        528, /* GL_INVALID_ENUM */
        531, /* GL_INVALID_VALUE */
        530, /* GL_INVALID_OPERATION */
-       1277, /* GL_STACK_OVERFLOW */
-       1278, /* GL_STACK_UNDERFLOW */
+      1277, /* GL_STACK_OVERFLOW */
+      1278, /* GL_STACK_UNDERFLOW */
        926, /* GL_OUT_OF_MEMORY */
        529, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
          0, /* GL_2D */
@@ -3329,9 +3329,9 @@ static const unsigned reduced_enums[1232] =
          4, /* GL_3D_COLOR_TEXTURE */
          6, /* GL_4D_COLOR_TEXTURE */
        946, /* GL_PASS_THROUGH_TOKEN */
-       1001, /* GL_POINT_TOKEN */
+      1001, /* GL_POINT_TOKEN */
        571, /* GL_LINE_TOKEN */
-       1015, /* GL_POLYGON_TOKEN */
+      1015, /* GL_POLYGON_TOKEN */
         69, /* GL_BITMAP_TOKEN */
        358, /* GL_DRAW_PIXEL_TOKEN */
        248, /* GL_COPY_PIXEL_TOKEN */
@@ -3368,9 +3368,9 @@ static const unsigned reduced_enums[1232] =
        732, /* GL_MAX_LIST_NESTING */
        575, /* GL_LIST_BASE */
        577, /* GL_LIST_INDEX */
-       1004, /* GL_POLYGON_MODE */
-       1011, /* GL_POLYGON_SMOOTH */
-       1013, /* GL_POLYGON_STIPPLE */
+      1004, /* GL_POLYGON_MODE */
+      1011, /* GL_POLYGON_SMOOTH */
+      1013, /* GL_POLYGON_STIPPLE */
        367, /* GL_EDGE_FLAG */
        249, /* GL_CULL_FACE */
        250, /* GL_CULL_FACE_MODE */
@@ -3379,7 +3379,7 @@ static const unsigned reduced_enums[1232] =
        552, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
        553, /* GL_LIGHT_MODEL_TWO_SIDE */
        549, /* GL_LIGHT_MODEL_AMBIENT */
-       1230, /* GL_SHADE_MODEL */
+      1230, /* GL_SHADE_MODEL */
        158, /* GL_COLOR_MATERIAL_FACE */
        159, /* GL_COLOR_MATERIAL_PARAMETER */
        157, /* GL_COLOR_MATERIAL */
@@ -3396,24 +3396,24 @@ static const unsigned reduced_enums[1232] =
        292, /* GL_DEPTH_CLEAR_VALUE */
        303, /* GL_DEPTH_FUNC */
         12, /* GL_ACCUM_CLEAR_VALUE */
-       1301, /* GL_STENCIL_TEST */
-       1289, /* GL_STENCIL_CLEAR_VALUE */
-       1291, /* GL_STENCIL_FUNC */
-       1303, /* GL_STENCIL_VALUE_MASK */
-       1290, /* GL_STENCIL_FAIL */
-       1298, /* GL_STENCIL_PASS_DEPTH_FAIL */
-       1299, /* GL_STENCIL_PASS_DEPTH_PASS */
-       1300, /* GL_STENCIL_REF */
-       1304, /* GL_STENCIL_WRITEMASK */
+      1301, /* GL_STENCIL_TEST */
+      1289, /* GL_STENCIL_CLEAR_VALUE */
+      1291, /* GL_STENCIL_FUNC */
+      1303, /* GL_STENCIL_VALUE_MASK */
+      1290, /* GL_STENCIL_FAIL */
+      1298, /* GL_STENCIL_PASS_DEPTH_FAIL */
+      1299, /* GL_STENCIL_PASS_DEPTH_PASS */
+      1300, /* GL_STENCIL_REF */
+      1304, /* GL_STENCIL_WRITEMASK */
        705, /* GL_MATRIX_MODE */
        862, /* GL_NORMALIZE */
-       1593, /* GL_VIEWPORT */
+      1593, /* GL_VIEWPORT */
        836, /* GL_MODELVIEW_STACK_DEPTH */
-       1094, /* GL_PROJECTION_STACK_DEPTH */
-       1495, /* GL_TEXTURE_STACK_DEPTH */
+      1094, /* GL_PROJECTION_STACK_DEPTH */
+      1495, /* GL_TEXTURE_STACK_DEPTH */
        834, /* GL_MODELVIEW_MATRIX */
-       1093, /* GL_PROJECTION_MATRIX */
-       1480, /* GL_TEXTURE_MATRIX */
+      1093, /* GL_PROJECTION_MATRIX */
+      1480, /* GL_TEXTURE_MATRIX */
         56, /* GL_ATTRIB_STACK_DEPTH */
        117, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
         39, /* GL_ALPHA_TEST */
@@ -3424,31 +3424,31 @@ static const unsigned reduced_enums[1232] =
         80, /* GL_BLEND_SRC */
         70, /* GL_BLEND */
        581, /* GL_LOGIC_OP_MODE */
-       580, /* GL_LOGIC_OP */
+       506, /* GL_INDEX_LOGIC_OP */
        156, /* GL_COLOR_LOGIC_OP */
         62, /* GL_AUX_BUFFERS */
        325, /* GL_DRAW_BUFFER */
-       1124, /* GL_READ_BUFFER */
-       1213, /* GL_SCISSOR_BOX */
-       1214, /* GL_SCISSOR_TEST */
+      1124, /* GL_READ_BUFFER */
+      1213, /* GL_SCISSOR_BOX */
+      1214, /* GL_SCISSOR_TEST */
        505, /* GL_INDEX_CLEAR_VALUE */
        510, /* GL_INDEX_WRITEMASK */
        153, /* GL_COLOR_CLEAR_VALUE */
        185, /* GL_COLOR_WRITEMASK */
        507, /* GL_INDEX_MODE */
-       1186, /* GL_RGBA_MODE */
+      1186, /* GL_RGBA_MODE */
        324, /* GL_DOUBLEBUFFER */
-       1305, /* GL_STEREO */
-       1145, /* GL_RENDER_MODE */
+      1305, /* GL_STEREO */
+      1145, /* GL_RENDER_MODE */
        947, /* GL_PERSPECTIVE_CORRECTION_HINT */
        996, /* GL_POINT_SMOOTH_HINT */
        566, /* GL_LINE_SMOOTH_HINT */
-       1012, /* GL_POLYGON_SMOOTH_HINT */
+      1012, /* GL_POLYGON_SMOOTH_HINT */
        425, /* GL_FOG_HINT */
-       1461, /* GL_TEXTURE_GEN_S */
-       1462, /* GL_TEXTURE_GEN_T */
-       1460, /* GL_TEXTURE_GEN_R */
-       1459, /* GL_TEXTURE_GEN_Q */
+      1461, /* GL_TEXTURE_GEN_S */
+      1462, /* GL_TEXTURE_GEN_T */
+      1460, /* GL_TEXTURE_GEN_R */
+      1459, /* GL_TEXTURE_GEN_Q */
        960, /* GL_PIXEL_MAP_I_TO_I */
        966, /* GL_PIXEL_MAP_S_TO_S */
        962, /* GL_PIXEL_MAP_I_TO_R */
@@ -3469,12 +3469,12 @@ static const unsigned reduced_enums[1232] =
        953, /* GL_PIXEL_MAP_G_TO_G_SIZE */
        951, /* GL_PIXEL_MAP_B_TO_B_SIZE */
        949, /* GL_PIXEL_MAP_A_TO_A_SIZE */
-       1527, /* GL_UNPACK_SWAP_BYTES */
-       1522, /* GL_UNPACK_LSB_FIRST */
-       1523, /* GL_UNPACK_ROW_LENGTH */
-       1526, /* GL_UNPACK_SKIP_ROWS */
-       1525, /* GL_UNPACK_SKIP_PIXELS */
-       1520, /* GL_UNPACK_ALIGNMENT */
+      1527, /* GL_UNPACK_SWAP_BYTES */
+      1522, /* GL_UNPACK_LSB_FIRST */
+      1523, /* GL_UNPACK_ROW_LENGTH */
+      1526, /* GL_UNPACK_SKIP_ROWS */
+      1525, /* GL_UNPACK_SKIP_PIXELS */
+      1520, /* GL_UNPACK_ALIGNMENT */
        935, /* GL_PACK_SWAP_BYTES */
        930, /* GL_PACK_LSB_FIRST */
        931, /* GL_PACK_ROW_LENGTH */
@@ -3485,10 +3485,10 @@ static const unsigned reduced_enums[1232] =
        659, /* GL_MAP_STENCIL */
        509, /* GL_INDEX_SHIFT */
        508, /* GL_INDEX_OFFSET */
-       1134, /* GL_RED_SCALE */
-       1132, /* GL_RED_BIAS */
-       1610, /* GL_ZOOM_X */
-       1611, /* GL_ZOOM_Y */
+      1134, /* GL_RED_SCALE */
+      1132, /* GL_RED_BIAS */
+      1610, /* GL_ZOOM_X */
+      1611, /* GL_ZOOM_Y */
        471, /* GL_GREEN_SCALE */
        469, /* GL_GREEN_BIAS */
         86, /* GL_BLUE_SCALE */
@@ -3509,14 +3509,14 @@ static const unsigned reduced_enums[1232] =
        774, /* GL_MAX_TEXTURE_STACK_DEPTH */
        784, /* GL_MAX_VIEWPORT_DIMS */
        710, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
-       1312, /* GL_SUBPIXEL_BITS */
+      1312, /* GL_SUBPIXEL_BITS */
        504, /* GL_INDEX_BITS */
-       1133, /* GL_RED_BITS */
+      1133, /* GL_RED_BITS */
        470, /* GL_GREEN_BITS */
         85, /* GL_BLUE_BITS */
         37, /* GL_ALPHA_BITS */
        287, /* GL_DEPTH_BITS */
-       1287, /* GL_STENCIL_BITS */
+      1287, /* GL_STENCIL_BITS */
         14, /* GL_ACCUM_RED_BITS */
         13, /* GL_ACCUM_GREEN_BITS */
         10, /* GL_ACCUM_BLUE_BITS */
@@ -3545,39 +3545,39 @@ static const unsigned reduced_enums[1232] =
        606, /* GL_MAP1_GRID_SEGMENTS */
        632, /* GL_MAP2_GRID_DOMAIN */
        633, /* GL_MAP2_GRID_SEGMENTS */
-       1389, /* GL_TEXTURE_1D */
-       1390, /* GL_TEXTURE_2D */
+      1389, /* GL_TEXTURE_1D */
+      1390, /* GL_TEXTURE_2D */
        392, /* GL_FEEDBACK_BUFFER_POINTER */
        393, /* GL_FEEDBACK_BUFFER_SIZE */
        394, /* GL_FEEDBACK_BUFFER_TYPE */
-       1223, /* GL_SELECTION_BUFFER_POINTER */
-       1224, /* GL_SELECTION_BUFFER_SIZE */
-       1498, /* GL_TEXTURE_WIDTH */
-       1466, /* GL_TEXTURE_HEIGHT */
-       1422, /* GL_TEXTURE_COMPONENTS */
-       1406, /* GL_TEXTURE_BORDER_COLOR */
-       1405, /* GL_TEXTURE_BORDER */
+      1223, /* GL_SELECTION_BUFFER_POINTER */
+      1224, /* GL_SELECTION_BUFFER_SIZE */
+      1498, /* GL_TEXTURE_WIDTH */
+      1466, /* GL_TEXTURE_HEIGHT */
+      1422, /* GL_TEXTURE_COMPONENTS */
+      1406, /* GL_TEXTURE_BORDER_COLOR */
+      1405, /* GL_TEXTURE_BORDER */
        316, /* GL_DONT_CARE */
        390, /* GL_FASTEST */
        858, /* GL_NICEST */
         43, /* GL_AMBIENT */
        313, /* GL_DIFFUSE */
-       1263, /* GL_SPECULAR */
-       1016, /* GL_POSITION */
-       1266, /* GL_SPOT_DIRECTION */
-       1267, /* GL_SPOT_EXPONENT */
-       1265, /* GL_SPOT_CUTOFF */
+      1263, /* GL_SPECULAR */
+      1016, /* GL_POSITION */
+      1266, /* GL_SPOT_DIRECTION */
+      1267, /* GL_SPOT_EXPONENT */
+      1265, /* GL_SPOT_CUTOFF */
        223, /* GL_CONSTANT_ATTENUATION */
        556, /* GL_LINEAR_ATTENUATION */
-       1111, /* GL_QUADRATIC_ATTENUATION */
+      1111, /* GL_QUADRATIC_ATTENUATION */
        198, /* GL_COMPILE */
        199, /* GL_COMPILE_AND_EXECUTE */
        101, /* GL_BYTE */
-       1528, /* GL_UNSIGNED_BYTE */
-       1234, /* GL_SHORT */
-       1537, /* GL_UNSIGNED_SHORT */
+      1528, /* GL_UNSIGNED_BYTE */
+      1234, /* GL_SHORT */
+      1537, /* GL_UNSIGNED_SHORT */
        511, /* GL_INT */
-       1531, /* GL_UNSIGNED_INT */
+      1531, /* GL_UNSIGNED_INT */
        397, /* GL_FLOAT */
          1, /* GL_2_BYTES */
          5, /* GL_3_BYTES */
@@ -3589,7 +3589,7 @@ static const unsigned reduced_enums[1232] =
        246, /* GL_COPY */
         46, /* GL_AND_INVERTED */
        860, /* GL_NOOP */
-       1606, /* GL_XOR */
+      1606, /* GL_XOR */
        922, /* GL_OR */
        861, /* GL_NOR */
        380, /* GL_EQUIV */
@@ -3598,58 +3598,58 @@ static const unsigned reduced_enums[1232] =
        247, /* GL_COPY_INVERTED */
        924, /* GL_OR_INVERTED */
        851, /* GL_NAND */
-       1228, /* GL_SET */
+      1228, /* GL_SET */
        377, /* GL_EMISSION */
-       1233, /* GL_SHININESS */
+      1233, /* GL_SHININESS */
         44, /* GL_AMBIENT_AND_DIFFUSE */
        155, /* GL_COLOR_INDEXES */
        801, /* GL_MODELVIEW */
-       1092, /* GL_PROJECTION */
-       1324, /* GL_TEXTURE */
+      1092, /* GL_PROJECTION */
+      1324, /* GL_TEXTURE */
        128, /* GL_COLOR */
        284, /* GL_DEPTH */
-       1285, /* GL_STENCIL */
+      1285, /* GL_STENCIL */
        154, /* GL_COLOR_INDEX */
-       1292, /* GL_STENCIL_INDEX */
+      1292, /* GL_STENCIL_INDEX */
        293, /* GL_DEPTH_COMPONENT */
-       1129, /* GL_RED */
+      1129, /* GL_RED */
        468, /* GL_GREEN */
         83, /* GL_BLUE */
         27, /* GL_ALPHA */
-       1153, /* GL_RGB */
-       1172, /* GL_RGBA */
+      1153, /* GL_RGB */
+      1172, /* GL_RGBA */
        582, /* GL_LUMINANCE */
        603, /* GL_LUMINANCE_ALPHA */
         68, /* GL_BITMAP */
        973, /* GL_POINT */
        554, /* GL_LINE */
        395, /* GL_FILL */
-       1138, /* GL_RENDER */
+      1138, /* GL_RENDER */
        391, /* GL_FEEDBACK */
-       1222, /* GL_SELECT */
+      1222, /* GL_SELECT */
        396, /* GL_FLAT */
-       1238, /* GL_SMOOTH */
+      1238, /* GL_SMOOTH */
        535, /* GL_KEEP */
-       1147, /* GL_REPLACE */
+      1147, /* GL_REPLACE */
        495, /* GL_INCR */
        281, /* GL_DECR */
-       1550, /* GL_VENDOR */
-       1144, /* GL_RENDERER */
-       1551, /* GL_VERSION */
+      1550, /* GL_VENDOR */
+      1144, /* GL_RENDERER */
+      1551, /* GL_VERSION */
        384, /* GL_EXTENSIONS */
-       1193, /* GL_S */
-       1315, /* GL_T */
-       1121, /* GL_R */
-       1110, /* GL_Q */
+      1193, /* GL_S */
+      1315, /* GL_T */
+      1121, /* GL_R */
+      1110, /* GL_Q */
        837, /* GL_MODULATE */
        280, /* GL_DECAL */
-       1456, /* GL_TEXTURE_ENV_MODE */
-       1455, /* GL_TEXTURE_ENV_COLOR */
-       1454, /* GL_TEXTURE_ENV */
+      1456, /* GL_TEXTURE_ENV_MODE */
+      1455, /* GL_TEXTURE_ENV_COLOR */
+      1454, /* GL_TEXTURE_ENV */
        385, /* GL_EYE_LINEAR */
        884, /* GL_OBJECT_LINEAR */
-       1264, /* GL_SPHERE_MAP */
-       1458, /* GL_TEXTURE_GEN_MODE */
+      1264, /* GL_SPHERE_MAP */
+      1458, /* GL_TEXTURE_GEN_MODE */
        886, /* GL_OBJECT_PLANE */
        386, /* GL_EYE_PLANE */
        852, /* GL_NEAREST */
@@ -3658,30 +3658,30 @@ static const unsigned reduced_enums[1232] =
        560, /* GL_LINEAR_MIPMAP_NEAREST */
        855, /* GL_NEAREST_MIPMAP_LINEAR */
        559, /* GL_LINEAR_MIPMAP_LINEAR */
-       1479, /* GL_TEXTURE_MAG_FILTER */
-       1487, /* GL_TEXTURE_MIN_FILTER */
-       1500, /* GL_TEXTURE_WRAP_S */
-       1501, /* GL_TEXTURE_WRAP_T */
+      1479, /* GL_TEXTURE_MAG_FILTER */
+      1487, /* GL_TEXTURE_MIN_FILTER */
+      1500, /* GL_TEXTURE_WRAP_S */
+      1501, /* GL_TEXTURE_WRAP_T */
        107, /* GL_CLAMP */
-       1146, /* GL_REPEAT */
-       1010, /* GL_POLYGON_OFFSET_UNITS */
-       1009, /* GL_POLYGON_OFFSET_POINT */
-       1008, /* GL_POLYGON_OFFSET_LINE */
-       1122, /* GL_R3_G3_B2 */
-       1548, /* GL_V2F */
-       1549, /* GL_V3F */
+      1146, /* GL_REPEAT */
+      1010, /* GL_POLYGON_OFFSET_UNITS */
+      1009, /* GL_POLYGON_OFFSET_POINT */
+      1008, /* GL_POLYGON_OFFSET_LINE */
+      1122, /* GL_R3_G3_B2 */
+      1548, /* GL_V2F */
+      1549, /* GL_V3F */
        104, /* GL_C4UB_V2F */
        105, /* GL_C4UB_V3F */
        102, /* GL_C3F_V3F */
        849, /* GL_N3F_V3F */
        103, /* GL_C4F_N3F_V3F */
-       1320, /* GL_T2F_V3F */
-       1322, /* GL_T4F_V4F */
-       1318, /* GL_T2F_C4UB_V3F */
-       1316, /* GL_T2F_C3F_V3F */
-       1319, /* GL_T2F_N3F_V3F */
-       1317, /* GL_T2F_C4F_N3F_V3F */
-       1321, /* GL_T4F_C4F_N3F_V4F */
+      1320, /* GL_T2F_V3F */
+      1322, /* GL_T4F_V4F */
+      1318, /* GL_T2F_C4UB_V3F */
+      1316, /* GL_T2F_C3F_V3F */
+      1319, /* GL_T2F_N3F_V3F */
+      1317, /* GL_T2F_C4F_N3F_V3F */
+      1321, /* GL_T4F_C4F_N3F_V4F */
        120, /* GL_CLIP_PLANE0 */
        121, /* GL_CLIP_PLANE1 */
        122, /* GL_CLIP_PLANE2 */
@@ -3710,26 +3710,26 @@ static const unsigned reduced_enums[1232] =
        458, /* GL_FUNC_REVERSE_SUBTRACT */
        228, /* GL_CONVOLUTION_1D */
        229, /* GL_CONVOLUTION_2D */
-       1225, /* GL_SEPARABLE_2D */
+      1225, /* GL_SEPARABLE_2D */
        232, /* GL_CONVOLUTION_BORDER_MODE */
        236, /* GL_CONVOLUTION_FILTER_SCALE */
        234, /* GL_CONVOLUTION_FILTER_BIAS */
-       1130, /* GL_REDUCE */
+      1130, /* GL_REDUCE */
        238, /* GL_CONVOLUTION_FORMAT */
        242, /* GL_CONVOLUTION_WIDTH */
        240, /* GL_CONVOLUTION_HEIGHT */
        720, /* GL_MAX_CONVOLUTION_WIDTH */
        718, /* GL_MAX_CONVOLUTION_HEIGHT */
-       1049, /* GL_POST_CONVOLUTION_RED_SCALE */
-       1045, /* GL_POST_CONVOLUTION_GREEN_SCALE */
-       1040, /* GL_POST_CONVOLUTION_BLUE_SCALE */
-       1036, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
-       1047, /* GL_POST_CONVOLUTION_RED_BIAS */
-       1043, /* GL_POST_CONVOLUTION_GREEN_BIAS */
-       1038, /* GL_POST_CONVOLUTION_BLUE_BIAS */
-       1034, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+      1049, /* GL_POST_CONVOLUTION_RED_SCALE */
+      1045, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+      1040, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+      1036, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+      1047, /* GL_POST_CONVOLUTION_RED_BIAS */
+      1043, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+      1038, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+      1034, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
        473, /* GL_HISTOGRAM */
-       1096, /* GL_PROXY_HISTOGRAM */
+      1096, /* GL_PROXY_HISTOGRAM */
        489, /* GL_HISTOGRAM_WIDTH */
        479, /* GL_HISTOGRAM_FORMAT */
        485, /* GL_HISTOGRAM_RED_SIZE */
@@ -3741,16 +3741,16 @@ static const unsigned reduced_enums[1232] =
        786, /* GL_MINMAX */
        788, /* GL_MINMAX_FORMAT */
        790, /* GL_MINMAX_SINK */
-       1323, /* GL_TABLE_TOO_LARGE_EXT */
-       1530, /* GL_UNSIGNED_BYTE_3_3_2 */
-       1539, /* GL_UNSIGNED_SHORT_4_4_4_4 */
-       1541, /* GL_UNSIGNED_SHORT_5_5_5_1 */
-       1535, /* GL_UNSIGNED_INT_8_8_8_8 */
-       1532, /* GL_UNSIGNED_INT_10_10_10_2 */
-       1007, /* GL_POLYGON_OFFSET_FILL */
-       1006, /* GL_POLYGON_OFFSET_FACTOR */
-       1005, /* GL_POLYGON_OFFSET_BIAS */
-       1150, /* GL_RESCALE_NORMAL */
+      1323, /* GL_TABLE_TOO_LARGE_EXT */
+      1530, /* GL_UNSIGNED_BYTE_3_3_2 */
+      1539, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+      1541, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+      1535, /* GL_UNSIGNED_INT_8_8_8_8 */
+      1532, /* GL_UNSIGNED_INT_10_10_10_2 */
+      1007, /* GL_POLYGON_OFFSET_FILL */
+      1006, /* GL_POLYGON_OFFSET_FACTOR */
+      1005, /* GL_POLYGON_OFFSET_BIAS */
+      1150, /* GL_RESCALE_NORMAL */
         32, /* GL_ALPHA4 */
         34, /* GL_ALPHA8 */
         28, /* GL_ALPHA12 */
@@ -3770,53 +3770,53 @@ static const unsigned reduced_enums[1232] =
        519, /* GL_INTENSITY8 */
        513, /* GL_INTENSITY12 */
        515, /* GL_INTENSITY16 */
-       1162, /* GL_RGB2_EXT */
-       1163, /* GL_RGB4 */
-       1166, /* GL_RGB5 */
-       1170, /* GL_RGB8 */
-       1154, /* GL_RGB10 */
-       1158, /* GL_RGB12 */
-       1160, /* GL_RGB16 */
-       1177, /* GL_RGBA2 */
-       1179, /* GL_RGBA4 */
-       1167, /* GL_RGB5_A1 */
-       1183, /* GL_RGBA8 */
-       1155, /* GL_RGB10_A2 */
-       1173, /* GL_RGBA12 */
-       1175, /* GL_RGBA16 */
-       1492, /* GL_TEXTURE_RED_SIZE */
-       1464, /* GL_TEXTURE_GREEN_SIZE */
-       1403, /* GL_TEXTURE_BLUE_SIZE */
-       1392, /* GL_TEXTURE_ALPHA_SIZE */
-       1477, /* GL_TEXTURE_LUMINANCE_SIZE */
-       1468, /* GL_TEXTURE_INTENSITY_SIZE */
-       1148, /* GL_REPLACE_EXT */
-       1100, /* GL_PROXY_TEXTURE_1D */
-       1102, /* GL_PROXY_TEXTURE_2D */
-       1496, /* GL_TEXTURE_TOO_LARGE_EXT */
-       1489, /* GL_TEXTURE_PRIORITY */
-       1494, /* GL_TEXTURE_RESIDENT */
-       1395, /* GL_TEXTURE_BINDING_1D */
-       1396, /* GL_TEXTURE_BINDING_2D */
-       1397, /* GL_TEXTURE_BINDING_3D */
+      1162, /* GL_RGB2_EXT */
+      1163, /* GL_RGB4 */
+      1166, /* GL_RGB5 */
+      1170, /* GL_RGB8 */
+      1154, /* GL_RGB10 */
+      1158, /* GL_RGB12 */
+      1160, /* GL_RGB16 */
+      1177, /* GL_RGBA2 */
+      1179, /* GL_RGBA4 */
+      1167, /* GL_RGB5_A1 */
+      1183, /* GL_RGBA8 */
+      1155, /* GL_RGB10_A2 */
+      1173, /* GL_RGBA12 */
+      1175, /* GL_RGBA16 */
+      1492, /* GL_TEXTURE_RED_SIZE */
+      1464, /* GL_TEXTURE_GREEN_SIZE */
+      1403, /* GL_TEXTURE_BLUE_SIZE */
+      1392, /* GL_TEXTURE_ALPHA_SIZE */
+      1477, /* GL_TEXTURE_LUMINANCE_SIZE */
+      1468, /* GL_TEXTURE_INTENSITY_SIZE */
+      1148, /* GL_REPLACE_EXT */
+      1100, /* GL_PROXY_TEXTURE_1D */
+      1102, /* GL_PROXY_TEXTURE_2D */
+      1496, /* GL_TEXTURE_TOO_LARGE_EXT */
+      1489, /* GL_TEXTURE_PRIORITY */
+      1494, /* GL_TEXTURE_RESIDENT */
+      1395, /* GL_TEXTURE_BINDING_1D */
+      1396, /* GL_TEXTURE_BINDING_2D */
+      1397, /* GL_TEXTURE_BINDING_3D */
        932, /* GL_PACK_SKIP_IMAGES */
        928, /* GL_PACK_IMAGE_HEIGHT */
-       1524, /* GL_UNPACK_SKIP_IMAGES */
-       1521, /* GL_UNPACK_IMAGE_HEIGHT */
-       1391, /* GL_TEXTURE_3D */
-       1104, /* GL_PROXY_TEXTURE_3D */
-       1451, /* GL_TEXTURE_DEPTH */
-       1499, /* GL_TEXTURE_WRAP_R */
+      1524, /* GL_UNPACK_SKIP_IMAGES */
+      1521, /* GL_UNPACK_IMAGE_HEIGHT */
+      1391, /* GL_TEXTURE_3D */
+      1104, /* GL_PROXY_TEXTURE_3D */
+      1451, /* GL_TEXTURE_DEPTH */
+      1499, /* GL_TEXTURE_WRAP_R */
        708, /* GL_MAX_3D_TEXTURE_SIZE */
-       1552, /* GL_VERTEX_ARRAY */
+      1552, /* GL_VERTEX_ARRAY */
        863, /* GL_NORMAL_ARRAY */
        129, /* GL_COLOR_ARRAY */
        498, /* GL_INDEX_ARRAY */
-       1430, /* GL_TEXTURE_COORD_ARRAY */
+      1430, /* GL_TEXTURE_COORD_ARRAY */
        368, /* GL_EDGE_FLAG_ARRAY */
-       1556, /* GL_VERTEX_ARRAY_SIZE */
-       1558, /* GL_VERTEX_ARRAY_TYPE */
-       1557, /* GL_VERTEX_ARRAY_STRIDE */
+      1556, /* GL_VERTEX_ARRAY_SIZE */
+      1558, /* GL_VERTEX_ARRAY_TYPE */
+      1557, /* GL_VERTEX_ARRAY_STRIDE */
        868, /* GL_NORMAL_ARRAY_TYPE */
        867, /* GL_NORMAL_ARRAY_STRIDE */
        133, /* GL_COLOR_ARRAY_SIZE */
@@ -3824,48 +3824,48 @@ static const unsigned reduced_enums[1232] =
        134, /* GL_COLOR_ARRAY_STRIDE */
        503, /* GL_INDEX_ARRAY_TYPE */
        502, /* GL_INDEX_ARRAY_STRIDE */
-       1434, /* GL_TEXTURE_COORD_ARRAY_SIZE */
-       1436, /* GL_TEXTURE_COORD_ARRAY_TYPE */
-       1435, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+      1434, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+      1436, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+      1435, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
        372, /* GL_EDGE_FLAG_ARRAY_STRIDE */
-       1555, /* GL_VERTEX_ARRAY_POINTER */
+      1555, /* GL_VERTEX_ARRAY_POINTER */
        866, /* GL_NORMAL_ARRAY_POINTER */
        132, /* GL_COLOR_ARRAY_POINTER */
        501, /* GL_INDEX_ARRAY_POINTER */
-       1433, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+      1433, /* GL_TEXTURE_COORD_ARRAY_POINTER */
        371, /* GL_EDGE_FLAG_ARRAY_POINTER */
        842, /* GL_MULTISAMPLE */
-       1199, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
-       1201, /* GL_SAMPLE_ALPHA_TO_ONE */
-       1206, /* GL_SAMPLE_COVERAGE */
-       1203, /* GL_SAMPLE_BUFFERS */
-       1194, /* GL_SAMPLES */
-       1210, /* GL_SAMPLE_COVERAGE_VALUE */
-       1208, /* GL_SAMPLE_COVERAGE_INVERT */
+      1199, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+      1201, /* GL_SAMPLE_ALPHA_TO_ONE */
+      1206, /* GL_SAMPLE_COVERAGE */
+      1203, /* GL_SAMPLE_BUFFERS */
+      1194, /* GL_SAMPLES */
+      1210, /* GL_SAMPLE_COVERAGE_VALUE */
+      1208, /* GL_SAMPLE_COVERAGE_INVERT */
        160, /* GL_COLOR_MATRIX */
        162, /* GL_COLOR_MATRIX_STACK_DEPTH */
        715, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
-       1032, /* GL_POST_COLOR_MATRIX_RED_SCALE */
-       1028, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
-       1023, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
-       1019, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
-       1030, /* GL_POST_COLOR_MATRIX_RED_BIAS */
-       1026, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
-       1021, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
-       1017, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
-       1413, /* GL_TEXTURE_COLOR_TABLE_SGI */
-       1105, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
-       1415, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+      1032, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+      1028, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+      1023, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+      1019, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+      1030, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+      1026, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+      1021, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+      1017, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+      1413, /* GL_TEXTURE_COLOR_TABLE_SGI */
+      1105, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+      1415, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
         75, /* GL_BLEND_DST_RGB */
         82, /* GL_BLEND_SRC_RGB */
         74, /* GL_BLEND_DST_ALPHA */
         81, /* GL_BLEND_SRC_ALPHA */
        166, /* GL_COLOR_TABLE */
-       1042, /* GL_POST_CONVOLUTION_COLOR_TABLE */
-       1025, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
-       1095, /* GL_PROXY_COLOR_TABLE */
-       1099, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
-       1098, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+      1042, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+      1025, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+      1095, /* GL_PROXY_COLOR_TABLE */
+      1099, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+      1098, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
        182, /* GL_COLOR_TABLE_SCALE */
        169, /* GL_COLOR_TABLE_BIAS */
        172, /* GL_COLOR_TABLE_FORMAT */
@@ -3880,7 +3880,7 @@ static const unsigned reduced_enums[1232] =
         67, /* GL_BGRA */
        727, /* GL_MAX_ELEMENTS_VERTICES */
        726, /* GL_MAX_ELEMENTS_INDICES */
-       1467, /* GL_TEXTURE_INDEX_SIZE_EXT */
+      1467, /* GL_TEXTURE_INDEX_SIZE_EXT */
        126, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
        990, /* GL_POINT_SIZE_MIN */
        986, /* GL_POINT_SIZE_MAX */
@@ -3888,69 +3888,69 @@ static const unsigned reduced_enums[1232] =
        976, /* GL_POINT_DISTANCE_ATTENUATION */
        108, /* GL_CLAMP_TO_BORDER */
        111, /* GL_CLAMP_TO_EDGE */
-       1488, /* GL_TEXTURE_MIN_LOD */
-       1486, /* GL_TEXTURE_MAX_LOD */
-       1394, /* GL_TEXTURE_BASE_LEVEL */
-       1485, /* GL_TEXTURE_MAX_LEVEL */
+      1488, /* GL_TEXTURE_MIN_LOD */
+      1486, /* GL_TEXTURE_MAX_LOD */
+      1394, /* GL_TEXTURE_BASE_LEVEL */
+      1485, /* GL_TEXTURE_MAX_LEVEL */
        492, /* GL_IGNORE_BORDER_HP */
        224, /* GL_CONSTANT_BORDER_HP */
-       1149, /* GL_REPLICATE_BORDER_HP */
+      1149, /* GL_REPLICATE_BORDER_HP */
        230, /* GL_CONVOLUTION_BORDER_COLOR */
        891, /* GL_OCCLUSION_TEST_HP */
        892, /* GL_OCCLUSION_TEST_RESULT_HP */
        557, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
-       1407, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
-       1409, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
-       1411, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
-       1412, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-       1410, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
-       1408, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+      1407, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+      1409, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+      1411, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+      1412, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+      1410, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+      1408, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
        711, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
        712, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
-       1052, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
-       1054, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
-       1051, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
-       1053, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
-       1475, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
-       1476, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
-       1474, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+      1052, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+      1054, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+      1051, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+      1053, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+      1475, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+      1476, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+      1474, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
        462, /* GL_GENERATE_MIPMAP */
        463, /* GL_GENERATE_MIPMAP_HINT */
        428, /* GL_FOG_OFFSET_SGIX */
        429, /* GL_FOG_OFFSET_VALUE_SGIX */
-       1421, /* GL_TEXTURE_COMPARE_SGIX */
-       1420, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
-       1471, /* GL_TEXTURE_LEQUAL_R_SGIX */
-       1463, /* GL_TEXTURE_GEQUAL_R_SGIX */
+      1421, /* GL_TEXTURE_COMPARE_SGIX */
+      1420, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+      1471, /* GL_TEXTURE_LEQUAL_R_SGIX */
+      1463, /* GL_TEXTURE_GEQUAL_R_SGIX */
        294, /* GL_DEPTH_COMPONENT16 */
        297, /* GL_DEPTH_COMPONENT24 */
        300, /* GL_DEPTH_COMPONENT32 */
        251, /* GL_CULL_VERTEX_EXT */
        253, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
        252, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
-       1603, /* GL_WRAP_BORDER_SUN */
-       1414, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+      1603, /* GL_WRAP_BORDER_SUN */
+      1414, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
        550, /* GL_LIGHT_MODEL_COLOR_CONTROL */
-       1235, /* GL_SINGLE_COLOR */
-       1226, /* GL_SEPARATE_SPECULAR_COLOR */
-       1232, /* GL_SHARED_TEXTURE_PALETTE_EXT */
-       1529, /* GL_UNSIGNED_BYTE_2_3_3_REV */
-       1542, /* GL_UNSIGNED_SHORT_5_6_5 */
-       1543, /* GL_UNSIGNED_SHORT_5_6_5_REV */
-       1540, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
-       1538, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
-       1536, /* GL_UNSIGNED_INT_8_8_8_8_REV */
-       1534, /* GL_UNSIGNED_INT_2_10_10_10_REV */
-       1483, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
-       1484, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
-       1482, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+      1235, /* GL_SINGLE_COLOR */
+      1226, /* GL_SEPARATE_SPECULAR_COLOR */
+      1232, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+      1529, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+      1542, /* GL_UNSIGNED_SHORT_5_6_5 */
+      1543, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+      1540, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+      1538, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+      1536, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+      1534, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+      1483, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+      1484, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+      1482, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
        793, /* GL_MIRRORED_REPEAT */
-       1188, /* GL_RGB_S3TC */
-       1165, /* GL_RGB4_S3TC */
-       1187, /* GL_RGBA_S3TC */
-       1182, /* GL_RGBA4_S3TC */
-       1185, /* GL_RGBA_DXT5_S3TC */
-       1180, /* GL_RGBA4_DXT5_S3TC */
+      1188, /* GL_RGB_S3TC */
+      1165, /* GL_RGB4_S3TC */
+      1187, /* GL_RGBA_S3TC */
+      1182, /* GL_RGBA4_S3TC */
+      1185, /* GL_RGBA_DXT5_S3TC */
+      1180, /* GL_RGBA4_DXT5_S3TC */
        217, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
        212, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
        213, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
@@ -3959,62 +3959,62 @@ static const unsigned reduced_enums[1232] =
        853, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
        558, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
        415, /* GL_FOG_COORDINATE_SOURCE */
-       408, /* GL_FOG_COORDINATE */
+       407, /* GL_FOG_COORD */
        431, /* GL_FRAGMENT_DEPTH */
-       258, /* GL_CURRENT_FOG_COORDINATE */
+       257, /* GL_CURRENT_FOG_COORD */
        414, /* GL_FOG_COORDINATE_ARRAY_TYPE */
        413, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
        412, /* GL_FOG_COORDINATE_ARRAY_POINTER */
        409, /* GL_FOG_COORDINATE_ARRAY */
        164, /* GL_COLOR_SUM */
        275, /* GL_CURRENT_SECONDARY_COLOR */
-       1219, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
-       1221, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
-       1220, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
-       1218, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
-       1215, /* GL_SECONDARY_COLOR_ARRAY */
+      1219, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+      1221, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+      1220, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+      1218, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+      1215, /* GL_SECONDARY_COLOR_ARRAY */
         24, /* GL_ALIASED_POINT_SIZE_RANGE */
         23, /* GL_ALIASED_LINE_WIDTH_RANGE */
-       1325, /* GL_TEXTURE0 */
-       1327, /* GL_TEXTURE1 */
-       1349, /* GL_TEXTURE2 */
-       1371, /* GL_TEXTURE3 */
-       1377, /* GL_TEXTURE4 */
-       1379, /* GL_TEXTURE5 */
-       1381, /* GL_TEXTURE6 */
-       1383, /* GL_TEXTURE7 */
-       1385, /* GL_TEXTURE8 */
-       1387, /* GL_TEXTURE9 */
-       1328, /* GL_TEXTURE10 */
-       1330, /* GL_TEXTURE11 */
-       1332, /* GL_TEXTURE12 */
-       1334, /* GL_TEXTURE13 */
-       1336, /* GL_TEXTURE14 */
-       1338, /* GL_TEXTURE15 */
-       1340, /* GL_TEXTURE16 */
-       1342, /* GL_TEXTURE17 */
-       1344, /* GL_TEXTURE18 */
-       1346, /* GL_TEXTURE19 */
-       1350, /* GL_TEXTURE20 */
-       1352, /* GL_TEXTURE21 */
-       1354, /* GL_TEXTURE22 */
-       1356, /* GL_TEXTURE23 */
-       1358, /* GL_TEXTURE24 */
-       1360, /* GL_TEXTURE25 */
-       1362, /* GL_TEXTURE26 */
-       1364, /* GL_TEXTURE27 */
-       1366, /* GL_TEXTURE28 */
-       1368, /* GL_TEXTURE29 */
-       1372, /* GL_TEXTURE30 */
-       1374, /* GL_TEXTURE31 */
+      1325, /* GL_TEXTURE0 */
+      1327, /* GL_TEXTURE1 */
+      1349, /* GL_TEXTURE2 */
+      1371, /* GL_TEXTURE3 */
+      1377, /* GL_TEXTURE4 */
+      1379, /* GL_TEXTURE5 */
+      1381, /* GL_TEXTURE6 */
+      1383, /* GL_TEXTURE7 */
+      1385, /* GL_TEXTURE8 */
+      1387, /* GL_TEXTURE9 */
+      1328, /* GL_TEXTURE10 */
+      1330, /* GL_TEXTURE11 */
+      1332, /* GL_TEXTURE12 */
+      1334, /* GL_TEXTURE13 */
+      1336, /* GL_TEXTURE14 */
+      1338, /* GL_TEXTURE15 */
+      1340, /* GL_TEXTURE16 */
+      1342, /* GL_TEXTURE17 */
+      1344, /* GL_TEXTURE18 */
+      1346, /* GL_TEXTURE19 */
+      1350, /* GL_TEXTURE20 */
+      1352, /* GL_TEXTURE21 */
+      1354, /* GL_TEXTURE22 */
+      1356, /* GL_TEXTURE23 */
+      1358, /* GL_TEXTURE24 */
+      1360, /* GL_TEXTURE25 */
+      1362, /* GL_TEXTURE26 */
+      1364, /* GL_TEXTURE27 */
+      1366, /* GL_TEXTURE28 */
+      1368, /* GL_TEXTURE29 */
+      1372, /* GL_TEXTURE30 */
+      1374, /* GL_TEXTURE31 */
         16, /* GL_ACTIVE_TEXTURE */
        114, /* GL_CLIENT_ACTIVE_TEXTURE */
        775, /* GL_MAX_TEXTURE_UNITS */
-       1508, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
-       1511, /* GL_TRANSPOSE_PROJECTION_MATRIX */
-       1513, /* GL_TRANSPOSE_TEXTURE_MATRIX */
-       1505, /* GL_TRANSPOSE_COLOR_MATRIX */
-       1313, /* GL_SUBTRACT */
+      1508, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+      1511, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+      1513, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+      1505, /* GL_TRANSPOSE_COLOR_MATRIX */
+      1313, /* GL_SUBTRACT */
        766, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
        200, /* GL_COMPRESSED_ALPHA */
        204, /* GL_COMPRESSED_LUMINANCE */
@@ -4022,18 +4022,18 @@ static const unsigned reduced_enums[1232] =
        202, /* GL_COMPRESSED_INTENSITY */
        208, /* GL_COMPRESSED_RGB */
        209, /* GL_COMPRESSED_RGBA */
-       1428, /* GL_TEXTURE_COMPRESSION_HINT */
-       1490, /* GL_TEXTURE_RECTANGLE_ARB */
-       1400, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
-       1108, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+      1428, /* GL_TEXTURE_COMPRESSION_HINT */
+      1490, /* GL_TEXTURE_RECTANGLE_ARB */
+      1400, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+      1108, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
        764, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
        306, /* GL_DEPTH_STENCIL_NV */
-       1533, /* GL_UNSIGNED_INT_24_8_NV */
+      1533, /* GL_UNSIGNED_INT_24_8_NV */
        771, /* GL_MAX_TEXTURE_LOD_BIAS */
-       1481, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+      1481, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
        772, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
-       1457, /* GL_TEXTURE_FILTER_CONTROL */
-       1472, /* GL_TEXTURE_LOD_BIAS */
+      1457, /* GL_TEXTURE_FILTER_CONTROL */
+      1472, /* GL_TEXTURE_LOD_BIAS */
        187, /* GL_COMBINE4 */
        767, /* GL_MAX_SHININESS_NV */
        768, /* GL_MAX_SPOT_EXPONENT_NV */
@@ -4041,16 +4041,16 @@ static const unsigned reduced_enums[1232] =
        282, /* GL_DECR_WRAP */
        813, /* GL_MODELVIEW1_ARB */
        869, /* GL_NORMAL_MAP */
-       1135, /* GL_REFLECTION_MAP */
-       1437, /* GL_TEXTURE_CUBE_MAP */
-       1398, /* GL_TEXTURE_BINDING_CUBE_MAP */
-       1445, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
-       1439, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
-       1447, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
-       1441, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
-       1449, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
-       1443, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
-       1106, /* GL_PROXY_TEXTURE_CUBE_MAP */
+      1135, /* GL_REFLECTION_MAP */
+      1437, /* GL_TEXTURE_CUBE_MAP */
+      1398, /* GL_TEXTURE_BINDING_CUBE_MAP */
+      1445, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+      1439, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+      1447, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+      1441, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+      1449, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+      1443, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+      1106, /* GL_PROXY_TEXTURE_CUBE_MAP */
        722, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
        848, /* GL_MULTISAMPLE_FILTER_HINT_NV */
        423, /* GL_FOG_DISTANCE_MODE_NV */
@@ -4059,20 +4059,20 @@ static const unsigned reduced_enums[1232] =
        186, /* GL_COMBINE */
        193, /* GL_COMBINE_RGB */
        188, /* GL_COMBINE_ALPHA */
-       1189, /* GL_RGB_SCALE */
+      1189, /* GL_RGB_SCALE */
         20, /* GL_ADD_SIGNED */
        522, /* GL_INTERPOLATE */
        219, /* GL_CONSTANT */
-       1058, /* GL_PRIMARY_COLOR */
-       1055, /* GL_PREVIOUS */
-       1246, /* GL_SOURCE0_RGB */
-       1252, /* GL_SOURCE1_RGB */
-       1258, /* GL_SOURCE2_RGB */
-       1262, /* GL_SOURCE3_RGB_NV */
-       1243, /* GL_SOURCE0_ALPHA */
-       1249, /* GL_SOURCE1_ALPHA */
-       1255, /* GL_SOURCE2_ALPHA */
-       1261, /* GL_SOURCE3_ALPHA_NV */
+      1058, /* GL_PRIMARY_COLOR */
+      1055, /* GL_PREVIOUS */
+      1246, /* GL_SOURCE0_RGB */
+      1252, /* GL_SOURCE1_RGB */
+      1258, /* GL_SOURCE2_RGB */
+      1262, /* GL_SOURCE3_RGB_NV */
+      1243, /* GL_SOURCE0_ALPHA */
+      1249, /* GL_SOURCE1_ALPHA */
+      1255, /* GL_SOURCE2_ALPHA */
+      1261, /* GL_SOURCE3_ALPHA_NV */
        905, /* GL_OPERAND0_RGB */
        911, /* GL_OPERAND1_RGB */
        917, /* GL_OPERAND2_RGB */
@@ -4081,25 +4081,25 @@ static const unsigned reduced_enums[1232] =
        908, /* GL_OPERAND1_ALPHA */
        914, /* GL_OPERAND2_ALPHA */
        920, /* GL_OPERAND3_ALPHA_NV */
-       1607, /* GL_YCBCR_422_APPLE */
-       1544, /* GL_UNSIGNED_SHORT_8_8_APPLE */
-       1546, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
-       1237, /* GL_SLICE_ACCUM_SUN */
-       1113, /* GL_QUAD_MESH_SUN */
-       1517, /* GL_TRIANGLE_MESH_SUN */
-       1584, /* GL_VERTEX_PROGRAM_ARB */
-       1592, /* GL_VERTEX_STATE_PROGRAM_NV */
-       1577, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
-       1580, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
-       1581, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
-       1582, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+      1607, /* GL_YCBCR_422_APPLE */
+      1544, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+      1546, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+      1237, /* GL_SLICE_ACCUM_SUN */
+      1113, /* GL_QUAD_MESH_SUN */
+      1517, /* GL_TRIANGLE_MESH_SUN */
+      1584, /* GL_VERTEX_PROGRAM_ARB */
+      1592, /* GL_VERTEX_STATE_PROGRAM_NV */
+      1577, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+      1580, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+      1581, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+      1582, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
        277, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
-       1071, /* GL_PROGRAM_LENGTH_ARB */
-       1085, /* GL_PROGRAM_STRING_ARB */
+      1071, /* GL_PROGRAM_LENGTH_ARB */
+      1085, /* GL_PROGRAM_STRING_ARB */
        835, /* GL_MODELVIEW_PROJECTION_NV */
        491, /* GL_IDENTITY_NV */
        532, /* GL_INVERSE_NV */
-       1510, /* GL_TRANSPOSE_NV */
+      1510, /* GL_TRANSPOSE_NV */
        533, /* GL_INVERSE_TRANSPOSE_NV */
        750, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
        749, /* GL_MAX_PROGRAM_MATRICES_ARB */
@@ -4113,33 +4113,33 @@ static const unsigned reduced_enums[1232] =
        697, /* GL_MATRIX7_NV */
        263, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
        260, /* GL_CURRENT_MATRIX_ARB */
-       1587, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
-       1589, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
-       1083, /* GL_PROGRAM_PARAMETER_NV */
-       1579, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
-       1087, /* GL_PROGRAM_TARGET_NV */
-       1084, /* GL_PROGRAM_RESIDENT_NV */
-       1502, /* GL_TRACK_MATRIX_NV */
-       1503, /* GL_TRACK_MATRIX_TRANSFORM_NV */
-       1585, /* GL_VERTEX_PROGRAM_BINDING_NV */
-       1065, /* GL_PROGRAM_ERROR_POSITION_ARB */
+      1587, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+      1589, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+      1083, /* GL_PROGRAM_PARAMETER_NV */
+      1579, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+      1087, /* GL_PROGRAM_TARGET_NV */
+      1084, /* GL_PROGRAM_RESIDENT_NV */
+      1502, /* GL_TRACK_MATRIX_NV */
+      1503, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+      1585, /* GL_VERTEX_PROGRAM_BINDING_NV */
+      1065, /* GL_PROGRAM_ERROR_POSITION_ARB */
        291, /* GL_DEPTH_CLAMP_NV */
-       1559, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
-       1566, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
-       1567, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
-       1568, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
-       1569, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
-       1570, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
-       1571, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
-       1572, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
-       1573, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
-       1574, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
-       1560, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
-       1561, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
-       1562, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
-       1563, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
-       1564, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
-       1565, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+      1559, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+      1566, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+      1567, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+      1568, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+      1569, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+      1570, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+      1571, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+      1572, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+      1573, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+      1574, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+      1560, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+      1561, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+      1562, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+      1563, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+      1564, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+      1565, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
        615, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
        622, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
        623, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
@@ -4163,7 +4163,7 @@ static const unsigned reduced_enums[1232] =
        652, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
        653, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
        654, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
-       1064, /* GL_PROGRAM_BINDING_ARB */
+      1064, /* GL_PROGRAM_BINDING_ARB */
        656, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
        657, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
        643, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
@@ -4172,27 +4172,27 @@ static const unsigned reduced_enums[1232] =
        646, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
        647, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
        648, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
-       1426, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
-       1423, /* GL_TEXTURE_COMPRESSED */
+      1426, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+      1423, /* GL_TEXTURE_COMPRESSED */
        874, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
        218, /* GL_COMPRESSED_TEXTURE_FORMATS */
        783, /* GL_MAX_VERTEX_UNITS_ARB */
         18, /* GL_ACTIVE_VERTEX_UNITS_ARB */
-       1602, /* GL_WEIGHT_SUM_UNITY_ARB */
-       1583, /* GL_VERTEX_BLEND_ARB */
+      1602, /* GL_WEIGHT_SUM_UNITY_ARB */
+      1583, /* GL_VERTEX_BLEND_ARB */
        278, /* GL_CURRENT_WEIGHT_ARB */
-       1601, /* GL_WEIGHT_ARRAY_TYPE_ARB */
-       1600, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
-       1599, /* GL_WEIGHT_ARRAY_SIZE_ARB */
-       1598, /* GL_WEIGHT_ARRAY_POINTER_ARB */
-       1595, /* GL_WEIGHT_ARRAY_ARB */
+      1601, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+      1600, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+      1599, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+      1598, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+      1595, /* GL_WEIGHT_ARRAY_ARB */
        317, /* GL_DOT3_RGB */
        318, /* GL_DOT3_RGBA */
        216, /* GL_COMPRESSED_RGB_FXT1_3DFX */
        211, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
        843, /* GL_MULTISAMPLE_3DFX */
-       1204, /* GL_SAMPLE_BUFFERS_3DFX */
-       1195, /* GL_SAMPLES_3DFX */
+      1204, /* GL_SAMPLE_BUFFERS_3DFX */
+      1195, /* GL_SAMPLES_3DFX */
        824, /* GL_MODELVIEW2_ARB */
        827, /* GL_MODELVIEW3_ARB */
        828, /* GL_MODELVIEW4_ARB */
@@ -4230,17 +4230,17 @@ static const unsigned reduced_enums[1232] =
        838, /* GL_MODULATE_ADD_ATI */
        839, /* GL_MODULATE_SIGNED_ADD_ATI */
        840, /* GL_MODULATE_SUBTRACT_ATI */
-       1608, /* GL_YCBCR_MESA */
+      1608, /* GL_YCBCR_MESA */
        929, /* GL_PACK_INVERT_MESA */
         97, /* GL_BUFFER_SIZE */
         99, /* GL_BUFFER_USAGE */
        432, /* GL_FRAGMENT_PROGRAM_ARB */
-       1062, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
-       1090, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
-       1089, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
-       1074, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
-       1080, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
-       1079, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+      1062, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+      1090, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+      1089, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+      1074, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+      1080, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+      1079, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
        739, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
        762, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
        761, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
@@ -4275,71 +4275,71 @@ static const unsigned reduced_enums[1232] =
        704, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
        703, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
        701, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
-       1452, /* GL_TEXTURE_DEPTH_SIZE */
+      1452, /* GL_TEXTURE_DEPTH_SIZE */
        310, /* GL_DEPTH_TEXTURE_MODE */
-       1418, /* GL_TEXTURE_COMPARE_MODE */
-       1416, /* GL_TEXTURE_COMPARE_FUNC */
+      1418, /* GL_TEXTURE_COMPARE_MODE */
+      1416, /* GL_TEXTURE_COMPARE_FUNC */
        196, /* GL_COMPARE_R_TO_TEXTURE */
        997, /* GL_POINT_SPRITE_ARB */
        244, /* GL_COORD_REPLACE_ARB */
-       1000, /* GL_POINT_SPRITE_R_MODE_NV */
-       1115, /* GL_QUERY_COUNTER_BITS */
+      1000, /* GL_POINT_SPRITE_R_MODE_NV */
+      1115, /* GL_QUERY_COUNTER_BITS */
        267, /* GL_CURRENT_QUERY */
-       1117, /* GL_QUERY_RESULT */
-       1119, /* GL_QUERY_RESULT_AVAILABLE */
+      1117, /* GL_QUERY_RESULT */
+      1119, /* GL_QUERY_RESULT_AVAILABLE */
        780, /* GL_MAX_VERTEX_ATTRIBS_ARB */
-       1578, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+      1578, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
        308, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
        307, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
        769, /* GL_MAX_TEXTURE_COORDS_ARB */
        770, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
-       1067, /* GL_PROGRAM_ERROR_STRING_ARB */
-       1069, /* GL_PROGRAM_FORMAT_ASCII_ARB */
-       1068, /* GL_PROGRAM_FORMAT_ARB */
-       1497, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+      1067, /* GL_PROGRAM_ERROR_STRING_ARB */
+      1069, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+      1068, /* GL_PROGRAM_FORMAT_ARB */
+      1497, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
        289, /* GL_DEPTH_BOUNDS_TEST_EXT */
        288, /* GL_DEPTH_BOUNDS_EXT */
         48, /* GL_ARRAY_BUFFER */
        373, /* GL_ELEMENT_ARRAY_BUFFER */
         50, /* GL_ARRAY_BUFFER_BINDING */
        375, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
-       1553, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+      1553, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
        864, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
        130, /* GL_COLOR_ARRAY_BUFFER_BINDING */
        499, /* GL_INDEX_ARRAY_BUFFER_BINDING */
-       1431, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+      1431, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
        369, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
-       1216, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+      1216, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
        410, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
-       1596, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
-       1575, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
-       1070, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+      1596, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+      1575, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+      1070, /* GL_PROGRAM_INSTRUCTIONS_ARB */
        745, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
-       1076, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+      1076, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
        754, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
-       1088, /* GL_PROGRAM_TEMPORARIES_ARB */
+      1088, /* GL_PROGRAM_TEMPORARIES_ARB */
        760, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
-       1078, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+      1078, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
        756, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
-       1082, /* GL_PROGRAM_PARAMETERS_ARB */
+      1082, /* GL_PROGRAM_PARAMETERS_ARB */
        759, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
-       1077, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+      1077, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
        755, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
-       1063, /* GL_PROGRAM_ATTRIBS_ARB */
+      1063, /* GL_PROGRAM_ATTRIBS_ARB */
        740, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
-       1075, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+      1075, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
        753, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
-       1061, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+      1061, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
        738, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
-       1073, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+      1073, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
        751, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
        746, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
        742, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
-       1091, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
-       1507, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
-       1125, /* GL_READ_ONLY */
-       1604, /* GL_WRITE_ONLY */
-       1127, /* GL_READ_WRITE */
+      1091, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+      1507, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+      1125, /* GL_READ_ONLY */
+      1604, /* GL_WRITE_ONLY */
+      1127, /* GL_READ_WRITE */
         91, /* GL_BUFFER_ACCESS */
         93, /* GL_BUFFER_MAPPED */
         95, /* GL_BUFFER_MAP_POINTER */
@@ -4375,12 +4375,12 @@ static const unsigned reduced_enums[1232] =
        683, /* GL_MATRIX29_ARB */
        686, /* GL_MATRIX30_ARB */
        687, /* GL_MATRIX31_ARB */
-       1308, /* GL_STREAM_DRAW */
-       1310, /* GL_STREAM_READ */
-       1306, /* GL_STREAM_COPY */
-       1281, /* GL_STATIC_DRAW */
-       1283, /* GL_STATIC_READ */
-       1279, /* GL_STATIC_COPY */
+      1308, /* GL_STREAM_DRAW */
+      1310, /* GL_STREAM_READ */
+      1306, /* GL_STREAM_COPY */
+      1281, /* GL_STATIC_DRAW */
+      1283, /* GL_STATIC_READ */
+      1279, /* GL_STATIC_COPY */
        363, /* GL_DYNAMIC_DRAW */
        365, /* GL_DYNAMIC_READ */
        361, /* GL_DYNAMIC_COPY */
@@ -4393,14 +4393,14 @@ static const unsigned reduced_enums[1232] =
        744, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
        748, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
        747, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
-       1302, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+      1302, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
         15, /* GL_ACTIVE_STENCIL_FACE_EXT */
        798, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
-       1197, /* GL_SAMPLES_PASSED */
+      1197, /* GL_SAMPLES_PASSED */
        433, /* GL_FRAGMENT_SHADER_ARB */
-       1591, /* GL_VERTEX_SHADER_ARB */
-       1081, /* GL_PROGRAM_OBJECT_ARB */
-       1229, /* GL_SHADER_OBJECT_ARB */
+      1591, /* GL_VERTEX_SHADER_ARB */
+      1081, /* GL_PROGRAM_OBJECT_ARB */
+      1229, /* GL_SHADER_OBJECT_ARB */
        730, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
        782, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
        779, /* GL_MAX_VARYING_FLOATS_ARB */
@@ -4446,7 +4446,7 @@ static const unsigned reduced_enums[1232] =
        493, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
        998, /* GL_POINT_SPRITE_COORD_ORIGIN */
        439, /* GL_FRAMEBUFFER_BINDING_EXT */
-       1139, /* GL_RENDERBUFFER_BINDING_EXT */
+      1139, /* GL_RENDERBUFFER_BINDING_EXT */
        435, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
        434, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
        438, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
@@ -4480,22 +4480,22 @@ static const unsigned reduced_enums[1232] =
        141, /* GL_COLOR_ATTACHMENT14_EXT */
        142, /* GL_COLOR_ATTACHMENT15_EXT */
        285, /* GL_DEPTH_ATTACHMENT_EXT */
-       1286, /* GL_STENCIL_ATTACHMENT_EXT */
+      1286, /* GL_STENCIL_ATTACHMENT_EXT */
        441, /* GL_FRAMEBUFFER_EXT */
-       1140, /* GL_RENDERBUFFER_EXT */
-       1143, /* GL_RENDERBUFFER_WIDTH_EXT */
-       1141, /* GL_RENDERBUFFER_HEIGHT_EXT */
-       1142, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
-       1297, /* GL_STENCIL_INDEX_EXT */
-       1294, /* GL_STENCIL_INDEX1_EXT */
-       1295, /* GL_STENCIL_INDEX4_EXT */
-       1296, /* GL_STENCIL_INDEX8_EXT */
-       1293, /* GL_STENCIL_INDEX16_EXT */
+      1140, /* GL_RENDERBUFFER_EXT */
+      1143, /* GL_RENDERBUFFER_WIDTH_EXT */
+      1141, /* GL_RENDERBUFFER_HEIGHT_EXT */
+      1142, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+      1297, /* GL_STENCIL_INDEX_EXT */
+      1294, /* GL_STENCIL_INDEX1_EXT */
+      1295, /* GL_STENCIL_INDEX4_EXT */
+      1296, /* GL_STENCIL_INDEX8_EXT */
+      1293, /* GL_STENCIL_INDEX16_EXT */
        381, /* GL_EVAL_BIT */
-       1123, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+      1123, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
        576, /* GL_LIST_BIT */
-       1402, /* GL_TEXTURE_BIT */
-       1212, /* GL_SCISSOR_BIT */
+      1402, /* GL_TEXTURE_BIT */
+      1212, /* GL_SCISSOR_BIT */
         25, /* GL_ALL_ATTRIB_BITS */
        845, /* GL_MULTISAMPLE_BIT */
         26, /* GL_ALL_CLIENT_ATTRIB_BITS */
index c0a971bd53b1776aa038492942430f05a7484354..42e61e261e9cfc6bf7366dd7a3ade73d716f352b 100644 (file)
@@ -969,6 +969,44 @@ GLNAME(gl_dispatch_functions_start):
        GL_STUB(StencilFuncSeparate, _gloffset_StencilFuncSeparate, StencilFuncSeparate@16)
        GL_STUB(StencilOpSeparate, _gloffset_StencilOpSeparate, StencilOpSeparate@16)
        GL_STUB(StencilMaskSeparate, _gloffset_StencilMaskSeparate, StencilMaskSeparate@8)
+       GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
+       GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8)
+       GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12)
+       GL_STUB_ALIAS(CopyTexImage1DEXT, _gloffset_CopyTexImage1D, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28)
+       GL_STUB_ALIAS(CopyTexImage2DEXT, _gloffset_CopyTexImage2D, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32)
+       GL_STUB_ALIAS(CopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24)
+       GL_STUB_ALIAS(CopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32)
+       GL_STUB_ALIAS(DeleteTexturesEXT, _gloffset_DeleteTextures, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8)
+       GL_STUB_ALIAS(GetPointervEXT, _gloffset_GetPointerv, GetPointervEXT@8, GetPointerv, GetPointerv@8)
+       GL_STUB_ALIAS(PrioritizeTexturesEXT, _gloffset_PrioritizeTextures, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12)
+       GL_STUB_ALIAS(TexSubImage1DEXT, _gloffset_TexSubImage1D, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28)
+       GL_STUB_ALIAS(TexSubImage2DEXT, _gloffset_TexSubImage2D, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36)
+       GL_STUB_ALIAS(BlendColorEXT, _gloffset_BlendColor, BlendColorEXT@16, BlendColor, BlendColor@16)
+       GL_STUB_ALIAS(BlendEquationEXT, _gloffset_BlendEquation, BlendEquationEXT@4, BlendEquation, BlendEquation@4)
+       GL_STUB_ALIAS(DrawRangeElementsEXT, _gloffset_DrawRangeElements, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24)
+       GL_STUB_ALIAS(ColorTableSGI, _gloffset_ColorTable, ColorTableSGI@24, ColorTable, ColorTable@24)
+       GL_STUB_ALIAS(ColorTableEXT, _gloffset_ColorTable, ColorTableEXT@24, ColorTable, ColorTable@24)
+       GL_STUB_ALIAS(ColorTableParameterfvSGI, _gloffset_ColorTableParameterfv, ColorTableParameterfvSGI@12, ColorTableParameterfv, ColorTableParameterfv@12)
+       GL_STUB_ALIAS(ColorTableParameterivSGI, _gloffset_ColorTableParameteriv, ColorTableParameterivSGI@12, ColorTableParameteriv, ColorTableParameteriv@12)
+       GL_STUB_ALIAS(CopyColorTableSGI, _gloffset_CopyColorTable, CopyColorTableSGI@20, CopyColorTable, CopyColorTable@20)
+       GL_STUB_ALIAS(ColorSubTableEXT, _gloffset_ColorSubTable, ColorSubTableEXT@24, ColorSubTable, ColorSubTable@24)
+       GL_STUB_ALIAS(CopyColorSubTableEXT, _gloffset_CopyColorSubTable, CopyColorSubTableEXT@20, CopyColorSubTable, CopyColorSubTable@20)
+       GL_STUB_ALIAS(ConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D, ConvolutionFilter1DEXT@24, ConvolutionFilter1D, ConvolutionFilter1D@24)
+       GL_STUB_ALIAS(ConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D, ConvolutionFilter2DEXT@28, ConvolutionFilter2D, ConvolutionFilter2D@28)
+       GL_STUB_ALIAS(ConvolutionParameterfEXT, _gloffset_ConvolutionParameterf, ConvolutionParameterfEXT@12, ConvolutionParameterf, ConvolutionParameterf@12)
+       GL_STUB_ALIAS(ConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv, ConvolutionParameterfvEXT@12, ConvolutionParameterfv, ConvolutionParameterfv@12)
+       GL_STUB_ALIAS(ConvolutionParameteriEXT, _gloffset_ConvolutionParameteri, ConvolutionParameteriEXT@12, ConvolutionParameteri, ConvolutionParameteri@12)
+       GL_STUB_ALIAS(ConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv, ConvolutionParameterivEXT@12, ConvolutionParameteriv, ConvolutionParameteriv@12)
+       GL_STUB_ALIAS(CopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D, CopyConvolutionFilter1DEXT@20, CopyConvolutionFilter1D, CopyConvolutionFilter1D@20)
+       GL_STUB_ALIAS(CopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D, CopyConvolutionFilter2DEXT@24, CopyConvolutionFilter2D, CopyConvolutionFilter2D@24)
+       GL_STUB_ALIAS(SeparableFilter2DEXT, _gloffset_SeparableFilter2D, SeparableFilter2DEXT@32, SeparableFilter2D, SeparableFilter2D@32)
+       GL_STUB_ALIAS(HistogramEXT, _gloffset_Histogram, HistogramEXT@16, Histogram, Histogram@16)
+       GL_STUB_ALIAS(MinmaxEXT, _gloffset_Minmax, MinmaxEXT@12, Minmax, Minmax@12)
+       GL_STUB_ALIAS(ResetHistogramEXT, _gloffset_ResetHistogram, ResetHistogramEXT@4, ResetHistogram, ResetHistogram@4)
+       GL_STUB_ALIAS(ResetMinmaxEXT, _gloffset_ResetMinmax, ResetMinmaxEXT@4, ResetMinmax, ResetMinmax@4)
+       GL_STUB_ALIAS(TexImage3DEXT, _gloffset_TexImage3D, TexImage3DEXT@40, TexImage3D, TexImage3D@40)
+       GL_STUB_ALIAS(TexSubImage3DEXT, _gloffset_TexSubImage3D, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44)
+       GL_STUB_ALIAS(CopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36)
        GL_STUB_ALIAS(ActiveTexture, _gloffset_ActiveTextureARB, ActiveTexture@4, ActiveTextureARB, ActiveTextureARB@4)
        GL_STUB_ALIAS(ClientActiveTexture, _gloffset_ClientActiveTextureARB, ClientActiveTexture@4, ClientActiveTextureARB, ClientActiveTextureARB@4)
        GL_STUB_ALIAS(MultiTexCoord1d, _gloffset_MultiTexCoord1dARB, MultiTexCoord1d@12, MultiTexCoord1dARB, MultiTexCoord1dARB@12)
@@ -1008,6 +1046,54 @@ GLNAME(gl_dispatch_functions_start):
        GL_STUB_ALIAS(MultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixf@4, MultTransposeMatrixfARB, MultTransposeMatrixfARB@4)
        GL_STUB_ALIAS(MultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixd@4, MultTransposeMatrixdARB, MultTransposeMatrixdARB@4)
        GL_STUB_ALIAS(SampleCoverage, _gloffset_SampleCoverageARB, SampleCoverage@8, SampleCoverageARB, SampleCoverageARB@8)
+       GL_STUB_ALIAS(DrawBuffersATI, _gloffset_DrawBuffersARB, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8)
+       GL_STUB_ALIAS(SampleMaskEXT, _gloffset_SampleMaskSGIS, SampleMaskEXT@8, SampleMaskSGIS, SampleMaskSGIS@8)
+       GL_STUB_ALIAS(SamplePatternEXT, _gloffset_SamplePatternSGIS, SamplePatternEXT@4, SamplePatternSGIS, SamplePatternSGIS@4)
+       GL_STUB_ALIAS(PointParameterf, _gloffset_PointParameterfEXT, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8)
+       GL_STUB_ALIAS(PointParameterfARB, _gloffset_PointParameterfEXT, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8)
+       GL_STUB_ALIAS(PointParameterfSGIS, _gloffset_PointParameterfEXT, PointParameterfSGIS@8, PointParameterfEXT, PointParameterfEXT@8)
+       GL_STUB_ALIAS(PointParameterfv, _gloffset_PointParameterfvEXT, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8)
+       GL_STUB_ALIAS(PointParameterfvARB, _gloffset_PointParameterfvEXT, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8)
+       GL_STUB_ALIAS(PointParameterfvSGIS, _gloffset_PointParameterfvEXT, PointParameterfvSGIS@8, PointParameterfvEXT, PointParameterfvEXT@8)
+       GL_STUB_ALIAS(WindowPos2d, _gloffset_WindowPos2dMESA, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16)
+       GL_STUB_ALIAS(WindowPos2dARB, _gloffset_WindowPos2dMESA, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16)
+       GL_STUB_ALIAS(WindowPos2dv, _gloffset_WindowPos2dvMESA, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
+       GL_STUB_ALIAS(WindowPos2dvARB, _gloffset_WindowPos2dvMESA, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
+       GL_STUB_ALIAS(WindowPos2f, _gloffset_WindowPos2fMESA, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8)
+       GL_STUB_ALIAS(WindowPos2fARB, _gloffset_WindowPos2fMESA, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8)
+       GL_STUB_ALIAS(WindowPos2fv, _gloffset_WindowPos2fvMESA, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
+       GL_STUB_ALIAS(WindowPos2fvARB, _gloffset_WindowPos2fvMESA, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
+       GL_STUB_ALIAS(WindowPos2i, _gloffset_WindowPos2iMESA, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8)
+       GL_STUB_ALIAS(WindowPos2iARB, _gloffset_WindowPos2iMESA, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8)
+       GL_STUB_ALIAS(WindowPos2iv, _gloffset_WindowPos2ivMESA, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
+       GL_STUB_ALIAS(WindowPos2ivARB, _gloffset_WindowPos2ivMESA, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
+       GL_STUB_ALIAS(WindowPos2s, _gloffset_WindowPos2sMESA, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8)
+       GL_STUB_ALIAS(WindowPos2sARB, _gloffset_WindowPos2sMESA, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8)
+       GL_STUB_ALIAS(WindowPos2sv, _gloffset_WindowPos2svMESA, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4)
+       GL_STUB_ALIAS(WindowPos2svARB, _gloffset_WindowPos2svMESA, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4)
+       GL_STUB_ALIAS(WindowPos3d, _gloffset_WindowPos3dMESA, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24)
+       GL_STUB_ALIAS(WindowPos3dARB, _gloffset_WindowPos3dMESA, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24)
+       GL_STUB_ALIAS(WindowPos3dv, _gloffset_WindowPos3dvMESA, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
+       GL_STUB_ALIAS(WindowPos3dvARB, _gloffset_WindowPos3dvMESA, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
+       GL_STUB_ALIAS(WindowPos3f, _gloffset_WindowPos3fMESA, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12)
+       GL_STUB_ALIAS(WindowPos3fARB, _gloffset_WindowPos3fMESA, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12)
+       GL_STUB_ALIAS(WindowPos3fv, _gloffset_WindowPos3fvMESA, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
+       GL_STUB_ALIAS(WindowPos3fvARB, _gloffset_WindowPos3fvMESA, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
+       GL_STUB_ALIAS(WindowPos3i, _gloffset_WindowPos3iMESA, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12)
+       GL_STUB_ALIAS(WindowPos3iARB, _gloffset_WindowPos3iMESA, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12)
+       GL_STUB_ALIAS(WindowPos3iv, _gloffset_WindowPos3ivMESA, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
+       GL_STUB_ALIAS(WindowPos3ivARB, _gloffset_WindowPos3ivMESA, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
+       GL_STUB_ALIAS(WindowPos3s, _gloffset_WindowPos3sMESA, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12)
+       GL_STUB_ALIAS(WindowPos3sARB, _gloffset_WindowPos3sMESA, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12)
+       GL_STUB_ALIAS(WindowPos3sv, _gloffset_WindowPos3svMESA, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4)
+       GL_STUB_ALIAS(WindowPos3svARB, _gloffset_WindowPos3svMESA, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4)
+       GL_STUB_ALIAS(BlendFuncSeparate, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
+       GL_STUB_ALIAS(BlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparateINGR@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
+       GL_STUB_ALIAS(FogCoordf, _gloffset_FogCoordfEXT, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4)
+       GL_STUB_ALIAS(FogCoordfv, _gloffset_FogCoordfvEXT, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4)
+       GL_STUB_ALIAS(FogCoordd, _gloffset_FogCoorddEXT, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8)
+       GL_STUB_ALIAS(FogCoorddv, _gloffset_FogCoorddvEXT, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4)
+       GL_STUB_ALIAS(FogCoordPointer, _gloffset_FogCoordPointerEXT, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12)
        GL_STUB_ALIAS(CompressedTexImage3D, _gloffset_CompressedTexImage3DARB, CompressedTexImage3D@36, CompressedTexImage3DARB, CompressedTexImage3DARB@36)
        GL_STUB_ALIAS(CompressedTexImage2D, _gloffset_CompressedTexImage2DARB, CompressedTexImage2D@32, CompressedTexImage2DARB, CompressedTexImage2DARB@32)
        GL_STUB_ALIAS(CompressedTexImage1D, _gloffset_CompressedTexImage1DARB, CompressedTexImage1D@28, CompressedTexImage1DARB, CompressedTexImage1DARB@28)
@@ -1015,18 +1101,6 @@ GLNAME(gl_dispatch_functions_start):
        GL_STUB_ALIAS(CompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2D@36, CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36)
        GL_STUB_ALIAS(CompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1D@28, CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28)
        GL_STUB_ALIAS(GetCompressedTexImage, _gloffset_GetCompressedTexImageARB, GetCompressedTexImage@12, GetCompressedTexImageARB, GetCompressedTexImageARB@12)
-       GL_STUB_ALIAS(BlendFuncSeparate, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
-       GL_STUB_ALIAS(FogCoordf, _gloffset_FogCoordfEXT, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4)
-       GL_STUB_ALIAS(FogCoordfv, _gloffset_FogCoordfvEXT, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4)
-       GL_STUB_ALIAS(FogCoordd, _gloffset_FogCoorddEXT, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8)
-       GL_STUB_ALIAS(FogCoorddv, _gloffset_FogCoorddvEXT, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4)
-       GL_STUB_ALIAS(FogCoordPointer, _gloffset_FogCoordPointerEXT, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12)
-       GL_STUB_ALIAS(MultiDrawArrays, _gloffset_MultiDrawArraysEXT, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16)
-       GL_STUB_ALIAS(MultiDrawElements, _gloffset_MultiDrawElementsEXT, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20)
-       GL_STUB_ALIAS(PointParameterf, _gloffset_PointParameterfEXT, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8)
-       GL_STUB_ALIAS(PointParameterfv, _gloffset_PointParameterfvEXT, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8)
-       GL_STUB_ALIAS(PointParameteri, _gloffset_PointParameteriNV, PointParameteri@8, PointParameteriNV, PointParameteriNV@8)
-       GL_STUB_ALIAS(PointParameteriv, _gloffset_PointParameterivNV, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8)
        GL_STUB_ALIAS(SecondaryColor3b, _gloffset_SecondaryColor3bEXT, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12)
        GL_STUB_ALIAS(SecondaryColor3bv, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4)
        GL_STUB_ALIAS(SecondaryColor3d, _gloffset_SecondaryColor3dEXT, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24)
@@ -1044,22 +1118,15 @@ GLNAME(gl_dispatch_functions_start):
        GL_STUB_ALIAS(SecondaryColor3us, _gloffset_SecondaryColor3usEXT, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12)
        GL_STUB_ALIAS(SecondaryColor3usv, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4)
        GL_STUB_ALIAS(SecondaryColorPointer, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16)
-       GL_STUB_ALIAS(WindowPos2d, _gloffset_WindowPos2dMESA, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16)
-       GL_STUB_ALIAS(WindowPos2dv, _gloffset_WindowPos2dvMESA, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
-       GL_STUB_ALIAS(WindowPos2f, _gloffset_WindowPos2fMESA, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8)
-       GL_STUB_ALIAS(WindowPos2fv, _gloffset_WindowPos2fvMESA, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
-       GL_STUB_ALIAS(WindowPos2i, _gloffset_WindowPos2iMESA, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8)
-       GL_STUB_ALIAS(WindowPos2iv, _gloffset_WindowPos2ivMESA, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
-       GL_STUB_ALIAS(WindowPos2s, _gloffset_WindowPos2sMESA, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8)
-       GL_STUB_ALIAS(WindowPos2sv, _gloffset_WindowPos2svMESA, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4)
-       GL_STUB_ALIAS(WindowPos3d, _gloffset_WindowPos3dMESA, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24)
-       GL_STUB_ALIAS(WindowPos3dv, _gloffset_WindowPos3dvMESA, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
-       GL_STUB_ALIAS(WindowPos3f, _gloffset_WindowPos3fMESA, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12)
-       GL_STUB_ALIAS(WindowPos3fv, _gloffset_WindowPos3fvMESA, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
-       GL_STUB_ALIAS(WindowPos3i, _gloffset_WindowPos3iMESA, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12)
-       GL_STUB_ALIAS(WindowPos3iv, _gloffset_WindowPos3ivMESA, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
-       GL_STUB_ALIAS(WindowPos3s, _gloffset_WindowPos3sMESA, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12)
-       GL_STUB_ALIAS(WindowPos3sv, _gloffset_WindowPos3svMESA, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4)
+       GL_STUB_ALIAS(BindProgramARB, _gloffset_BindProgramNV, BindProgramARB@8, BindProgramNV, BindProgramNV@8)
+       GL_STUB_ALIAS(DeleteProgramsARB, _gloffset_DeleteProgramsNV, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8)
+       GL_STUB_ALIAS(GenProgramsARB, _gloffset_GenProgramsNV, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8)
+       GL_STUB_ALIAS(GetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
+       GL_STUB_ALIAS(IsProgramARB, _gloffset_IsProgramNV, IsProgramARB@4, IsProgramNV, IsProgramNV@4)
+       GL_STUB_ALIAS(PointParameteri, _gloffset_PointParameteriNV, PointParameteri@8, PointParameteriNV, PointParameteriNV@8)
+       GL_STUB_ALIAS(PointParameteriv, _gloffset_PointParameterivNV, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8)
+       GL_STUB_ALIAS(MultiDrawArrays, _gloffset_MultiDrawArraysEXT, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16)
+       GL_STUB_ALIAS(MultiDrawElements, _gloffset_MultiDrawElementsEXT, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20)
        GL_STUB_ALIAS(BindBuffer, _gloffset_BindBufferARB, BindBuffer@8, BindBufferARB, BindBufferARB@8)
        GL_STUB_ALIAS(BufferData, _gloffset_BufferDataARB, BufferData@16, BufferDataARB, BufferDataARB@16)
        GL_STUB_ALIAS(BufferSubData, _gloffset_BufferSubDataARB, BufferSubData@16, BufferSubDataARB, BufferSubDataARB@16)
@@ -1079,74 +1146,7 @@ GLNAME(gl_dispatch_functions_start):
        GL_STUB_ALIAS(GetQueryiv, _gloffset_GetQueryivARB, GetQueryiv@12, GetQueryivARB, GetQueryivARB@12)
        GL_STUB_ALIAS(GetQueryObjectiv, _gloffset_GetQueryObjectivARB, GetQueryObjectiv@12, GetQueryObjectivARB, GetQueryObjectivARB@12)
        GL_STUB_ALIAS(GetQueryObjectuiv, _gloffset_GetQueryObjectuivARB, GetQueryObjectuiv@12, GetQueryObjectuivARB, GetQueryObjectuivARB@12)
-       GL_STUB_ALIAS(PointParameterfARB, _gloffset_PointParameterfEXT, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8)
-       GL_STUB_ALIAS(PointParameterfvARB, _gloffset_PointParameterfvEXT, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8)
-       GL_STUB_ALIAS(WindowPos2dARB, _gloffset_WindowPos2dMESA, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16)
-       GL_STUB_ALIAS(WindowPos2fARB, _gloffset_WindowPos2fMESA, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8)
-       GL_STUB_ALIAS(WindowPos2iARB, _gloffset_WindowPos2iMESA, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8)
-       GL_STUB_ALIAS(WindowPos2sARB, _gloffset_WindowPos2sMESA, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8)
-       GL_STUB_ALIAS(WindowPos2dvARB, _gloffset_WindowPos2dvMESA, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
-       GL_STUB_ALIAS(WindowPos2fvARB, _gloffset_WindowPos2fvMESA, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
-       GL_STUB_ALIAS(WindowPos2ivARB, _gloffset_WindowPos2ivMESA, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
-       GL_STUB_ALIAS(WindowPos2svARB, _gloffset_WindowPos2svMESA, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4)
-       GL_STUB_ALIAS(WindowPos3dARB, _gloffset_WindowPos3dMESA, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24)
-       GL_STUB_ALIAS(WindowPos3fARB, _gloffset_WindowPos3fMESA, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12)
-       GL_STUB_ALIAS(WindowPos3iARB, _gloffset_WindowPos3iMESA, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12)
-       GL_STUB_ALIAS(WindowPos3sARB, _gloffset_WindowPos3sMESA, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12)
-       GL_STUB_ALIAS(WindowPos3dvARB, _gloffset_WindowPos3dvMESA, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
-       GL_STUB_ALIAS(WindowPos3fvARB, _gloffset_WindowPos3fvMESA, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
-       GL_STUB_ALIAS(WindowPos3ivARB, _gloffset_WindowPos3ivMESA, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
-       GL_STUB_ALIAS(WindowPos3svARB, _gloffset_WindowPos3svMESA, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4)
-       GL_STUB_ALIAS(BindProgramARB, _gloffset_BindProgramNV, BindProgramARB@8, BindProgramNV, BindProgramNV@8)
-       GL_STUB_ALIAS(DeleteProgramsARB, _gloffset_DeleteProgramsNV, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8)
-       GL_STUB_ALIAS(GenProgramsARB, _gloffset_GenProgramsNV, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8)
-       GL_STUB_ALIAS(IsProgramARB, _gloffset_IsProgramNV, IsProgramARB@4, IsProgramNV, IsProgramNV@4)
-       GL_STUB_ALIAS(GetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
-       GL_STUB_ALIAS(BlendColorEXT, _gloffset_BlendColor, BlendColorEXT@16, BlendColor, BlendColor@16)
-       GL_STUB_ALIAS(TexImage3DEXT, _gloffset_TexImage3D, TexImage3DEXT@40, TexImage3D, TexImage3D@40)
-       GL_STUB_ALIAS(TexSubImage3DEXT, _gloffset_TexSubImage3D, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44)
-       GL_STUB_ALIAS(TexSubImage1DEXT, _gloffset_TexSubImage1D, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28)
-       GL_STUB_ALIAS(TexSubImage2DEXT, _gloffset_TexSubImage2D, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36)
-       GL_STUB_ALIAS(CopyTexImage1DEXT, _gloffset_CopyTexImage1D, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28)
-       GL_STUB_ALIAS(CopyTexImage2DEXT, _gloffset_CopyTexImage2D, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32)
-       GL_STUB_ALIAS(CopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24)
-       GL_STUB_ALIAS(CopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32)
-       GL_STUB_ALIAS(CopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36)
-       GL_STUB_ALIAS(HistogramEXT, _gloffset_Histogram, HistogramEXT@16, Histogram, Histogram@16)
-       GL_STUB_ALIAS(MinmaxEXT, _gloffset_Minmax, MinmaxEXT@12, Minmax, Minmax@12)
-       GL_STUB_ALIAS(ResetHistogramEXT, _gloffset_ResetHistogram, ResetHistogramEXT@4, ResetHistogram, ResetHistogram@4)
-       GL_STUB_ALIAS(ResetMinmaxEXT, _gloffset_ResetMinmax, ResetMinmaxEXT@4, ResetMinmax, ResetMinmax@4)
-       GL_STUB_ALIAS(ConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D, ConvolutionFilter1DEXT@24, ConvolutionFilter1D, ConvolutionFilter1D@24)
-       GL_STUB_ALIAS(ConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D, ConvolutionFilter2DEXT@28, ConvolutionFilter2D, ConvolutionFilter2D@28)
-       GL_STUB_ALIAS(ConvolutionParameterfEXT, _gloffset_ConvolutionParameterf, ConvolutionParameterfEXT@12, ConvolutionParameterf, ConvolutionParameterf@12)
-       GL_STUB_ALIAS(ConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv, ConvolutionParameterfvEXT@12, ConvolutionParameterfv, ConvolutionParameterfv@12)
-       GL_STUB_ALIAS(ConvolutionParameteriEXT, _gloffset_ConvolutionParameteri, ConvolutionParameteriEXT@12, ConvolutionParameteri, ConvolutionParameteri@12)
-       GL_STUB_ALIAS(ConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv, ConvolutionParameterivEXT@12, ConvolutionParameteriv, ConvolutionParameteriv@12)
-       GL_STUB_ALIAS(CopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D, CopyConvolutionFilter1DEXT@20, CopyConvolutionFilter1D, CopyConvolutionFilter1D@20)
-       GL_STUB_ALIAS(CopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D, CopyConvolutionFilter2DEXT@24, CopyConvolutionFilter2D, CopyConvolutionFilter2D@24)
-       GL_STUB_ALIAS(SeparableFilter2DEXT, _gloffset_SeparableFilter2D, SeparableFilter2DEXT@32, SeparableFilter2D, SeparableFilter2D@32)
-       GL_STUB_ALIAS(ColorTableSGI, _gloffset_ColorTable, ColorTableSGI@24, ColorTable, ColorTable@24)
-       GL_STUB_ALIAS(ColorTableParameterfvSGI, _gloffset_ColorTableParameterfv, ColorTableParameterfvSGI@12, ColorTableParameterfv, ColorTableParameterfv@12)
-       GL_STUB_ALIAS(ColorTableParameterivSGI, _gloffset_ColorTableParameteriv, ColorTableParameterivSGI@12, ColorTableParameteriv, ColorTableParameteriv@12)
-       GL_STUB_ALIAS(CopyColorTableSGI, _gloffset_CopyColorTable, CopyColorTableSGI@20, CopyColorTable, CopyColorTable@20)
-       GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8)
-       GL_STUB_ALIAS(DeleteTexturesEXT, _gloffset_DeleteTextures, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8)
-       GL_STUB_ALIAS(PrioritizeTexturesEXT, _gloffset_PrioritizeTextures, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12)
-       GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
-       GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12)
-       GL_STUB_ALIAS(GetPointervEXT, _gloffset_GetPointerv, GetPointervEXT@8, GetPointerv, GetPointerv@8)
-       GL_STUB_ALIAS(BlendEquationEXT, _gloffset_BlendEquation, BlendEquationEXT@4, BlendEquation, BlendEquation@4)
-       GL_STUB_ALIAS(ColorSubTableEXT, _gloffset_ColorSubTable, ColorSubTableEXT@24, ColorSubTable, ColorSubTable@24)
-       GL_STUB_ALIAS(CopyColorSubTableEXT, _gloffset_CopyColorSubTable, CopyColorSubTableEXT@20, CopyColorSubTable, CopyColorSubTable@20)
-       GL_STUB_ALIAS(ColorTableEXT, _gloffset_ColorTable, ColorTableEXT@24, ColorTable, ColorTable@24)
-       GL_STUB_ALIAS(DrawRangeElementsEXT, _gloffset_DrawRangeElements, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24)
-       GL_STUB_ALIAS(SampleMaskEXT, _gloffset_SampleMaskSGIS, SampleMaskEXT@8, SampleMaskSGIS, SampleMaskSGIS@8)
-       GL_STUB_ALIAS(SamplePatternEXT, _gloffset_SamplePatternSGIS, SamplePatternEXT@4, SamplePatternSGIS, SamplePatternSGIS@4)
-       GL_STUB_ALIAS(DrawBuffersATI, _gloffset_DrawBuffersARB, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8)
        GL_STUB_ALIAS(BlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT, BlendEquationSeparateATI@8, BlendEquationSeparateEXT, BlendEquationSeparateEXT@8)
-       GL_STUB_ALIAS(BlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparateINGR@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
-       GL_STUB_ALIAS(PointParameterfSGIS, _gloffset_PointParameterfEXT, PointParameterfSGIS@8, PointParameterfEXT, PointParameterfEXT@8)
-       GL_STUB_ALIAS(PointParameterfvSGIS, _gloffset_PointParameterfvEXT, PointParameterfvSGIS@8, PointParameterfvEXT, PointParameterfvEXT@8)
 
                GLOBL   GLNAME(gl_dispatch_functions_end)
                HIDDEN(GLNAME(gl_dispatch_functions_end))