]> git.cworth.org Git - apitrace/commitdiff
Move all API specs to a separate dir.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Tue, 27 Sep 2011 08:21:38 +0000 (09:21 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Tue, 27 Sep 2011 08:21:38 +0000 (09:21 +0100)
90 files changed:
CMakeLists.txt
apigen/.gitignore [deleted file]
apigen/Makefile [deleted file]
apigen/README [deleted file]
apigen/cdecl.py [deleted file]
apigen/glparams.sed [deleted file]
apigen/glspec.py [deleted file]
apigen/gltxt.py [deleted file]
apigen/reference-opengl-arb.sh [deleted file]
apigen/reference-opengl-man.sh [deleted file]
apigen/sort.sh [deleted file]
apigen/wglenum.sh [deleted file]
cglapi.py [deleted file]
cgltrace.py
d3d.py [deleted file]
d3d10.py [deleted file]
d3d10_1.py [deleted file]
d3d10misc.py [deleted file]
d3d10trace.py
d3d8.py [deleted file]
d3d8caps.py [deleted file]
d3d8trace.py
d3d8types.py [deleted file]
d3d9.py [deleted file]
d3d9caps.py [deleted file]
d3d9trace.py
d3d9types.py [deleted file]
d3dcaps.py [deleted file]
d3dtypes.py [deleted file]
ddraw.py [deleted file]
ddrawtrace.py
debug.py [deleted file]
dispatch.py
dxgi.py [deleted file]
dxgiformat.py [deleted file]
dxgitype.py [deleted file]
glapi.py [deleted file]
glparams.py [deleted file]
glproc.py
glretrace.py
glstate.py
gltrace.py
gltypes.py [deleted file]
glxapi.py [deleted file]
glxtrace.py
retrace.py
specs/__init__.py [new file with mode: 0644]
specs/cglapi.py [new file with mode: 0644]
specs/d3d.py [new file with mode: 0644]
specs/d3d10.py [new file with mode: 0644]
specs/d3d10_1.py [new file with mode: 0644]
specs/d3d10misc.py [new file with mode: 0644]
specs/d3d8.py [new file with mode: 0644]
specs/d3d8caps.py [new file with mode: 0644]
specs/d3d8types.py [new file with mode: 0644]
specs/d3d9.py [new file with mode: 0644]
specs/d3d9caps.py [new file with mode: 0644]
specs/d3d9types.py [new file with mode: 0644]
specs/d3dcaps.py [new file with mode: 0644]
specs/d3dtypes.py [new file with mode: 0644]
specs/ddraw.py [new file with mode: 0644]
specs/debug.py [new file with mode: 0644]
specs/dxgi.py [new file with mode: 0644]
specs/dxgiformat.py [new file with mode: 0644]
specs/dxgitype.py [new file with mode: 0644]
specs/glapi.py [new file with mode: 0644]
specs/glparams.py [new file with mode: 0644]
specs/gltypes.py [new file with mode: 0644]
specs/glxapi.py [new file with mode: 0644]
specs/scripts/.gitignore [new file with mode: 0644]
specs/scripts/Makefile [new file with mode: 0644]
specs/scripts/README [new file with mode: 0644]
specs/scripts/cdecl.py [new file with mode: 0755]
specs/scripts/glparams.sed [new file with mode: 0644]
specs/scripts/glspec.py [new file with mode: 0755]
specs/scripts/gltxt.py [new file with mode: 0755]
specs/scripts/reference-opengl-arb.sh [new file with mode: 0755]
specs/scripts/reference-opengl-man.sh [new file with mode: 0755]
specs/scripts/sort.sh [new file with mode: 0755]
specs/scripts/wglenum.sh [new file with mode: 0755]
specs/stdapi.py [new file with mode: 0644]
specs/wglapi.py [new file with mode: 0644]
specs/wglenum.py [new file with mode: 0644]
specs/winapi.py [new file with mode: 0644]
stdapi.py [deleted file]
trace.py
wglapi.py [deleted file]
wglenum.py [deleted file]
wgltrace.py
winapi.py [deleted file]

index 9370f47103aa022a916214298a210e230da3f17d..8c767908ae6d39d7e03775246bb2ccfde9145327 100755 (executable)
@@ -188,7 +188,7 @@ include_directories (
 add_custom_command (
     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/glproc.hpp
     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glproc.py > ${CMAKE_CURRENT_BINARY_DIR}/glproc.hpp
-    DEPENDS glproc.py dispatch.py wglapi.py glxapi.py cglapi.py glapi.py gltypes.py stdapi.py
+    DEPENDS glproc.py dispatch.py specs/wglapi.py specs/glxapi.py specs/cglapi.py specs/glapi.py specs/gltypes.py specs/stdapi.py
 )
 
 if (WIN32)
@@ -236,7 +236,7 @@ if (WIN32)
         add_custom_command (
             OUTPUT ddrawtrace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/ddrawtrace.cpp
-            DEPENDS ddrawtrace.py d3d.py d3dtypes.py d3dcaps.py ddraw.py trace.py winapi.py stdapi.py
+            DEPENDS ddrawtrace.py trace.py specs/d3d.py specs/d3dtypes.py specs/d3dcaps.py specs/ddraw.py specs/winapi.py specs/stdapi.py
         )
         add_library (ddraw MODULE ddraw.def ddrawtrace.cpp)
         set_target_properties (ddraw
@@ -253,7 +253,7 @@ if (WIN32)
         add_custom_command (
             OUTPUT d3d8trace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
-            DEPENDS d3d8trace.py d3d8.py trace.py d3d8types.py d3d8caps.py winapi.py stdapi.py
+            DEPENDS d3d8trace.py trace.py specs/d3d8.py specs/d3d8types.py specs/d3d8caps.py specs/winapi.py specs/stdapi.py
         )
         add_library (d3d8 MODULE d3d8.def d3d8trace.cpp d3dshader.cpp)
         set_target_properties (d3d8
@@ -270,7 +270,7 @@ if (WIN32)
         add_custom_command (
             OUTPUT d3d9trace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9trace.cpp
-            DEPENDS d3d9trace.py d3d9.py trace.py d3d9types.py d3d9caps.py winapi.py stdapi.py
+            DEPENDS d3d9trace.py trace.py specs/d3d9.py specs/d3d9types.py specs/d3d9caps.py specs/winapi.py specs/stdapi.py
         )
         add_library (d3d9 MODULE d3d9.def d3d9trace.cpp d3dshader.cpp)
         set_target_properties (d3d9
@@ -287,7 +287,7 @@ if (WIN32)
         add_custom_command (
             OUTPUT d3d10trace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
-            DEPENDS d3d10trace.py d3d10misc.py d3d10.py dxgi.py winapi.py stdapi.py
+            DEPENDS d3d10trace.py trace.py d3d10misc.py specs/d3d10.py specs/dxgi.py specs/winapi.py specs/stdapi.py
         )
         add_library (d3d10 MODULE d3d10.def d3d10trace.cpp)
         set_target_properties (d3d10 PROPERTIES PREFIX "")
@@ -298,7 +298,7 @@ if (WIN32)
     add_custom_command (
         OUTPUT wgltrace.cpp
         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
-        DEPENDS wgltrace.py gltrace.py trace.py wglapi.py wglenum.py glapi.py glparams.py gltypes.py winapi.py stdapi.py
+        DEPENDS wgltrace.py gltrace.py trace.py specs/wglapi.py specs/wglenum.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/winapi.py specs/stdapi.py
     )
     add_library (wgltrace MODULE opengl32.def
         wgltrace.cpp
@@ -321,7 +321,7 @@ elseif (APPLE)
     add_custom_command (
         OUTPUT cgltrace.cpp
         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
-        DEPENDS cgltrace.py gltrace.py trace.py cglapi.py glapi.py glparams.py gltypes.py stdapi.py
+        DEPENDS cgltrace.py gltrace.py trace.py specs/cglapi.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/stdapi.py
     )
 
     add_library (cgltrace SHARED
@@ -347,7 +347,7 @@ else ()
     add_custom_command (
         OUTPUT glxtrace.cpp
         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
-        DEPENDS glxtrace.py gltrace.py trace.py glxapi.py glapi.py glparams.py gltypes.py stdapi.py
+        DEPENDS glxtrace.py gltrace.py trace.py specs/glxapi.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/stdapi.py
     )
 
     add_library (glxtrace SHARED
@@ -380,13 +380,13 @@ endif ()
 add_custom_command (
     OUTPUT glretrace_gl.cpp
     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glretrace_gl.cpp
-    DEPENDS glretrace.py retrace.py codegen.py glapi.py gltypes.py stdapi.py
+    DEPENDS glretrace.py retrace.py codegen.py specs/glapi.py specs/gltypes.py specs/stdapi.py
 )
 
 add_custom_command (
     OUTPUT glstate_params.cpp
     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glstate.py > ${CMAKE_CURRENT_BINARY_DIR}/glstate_params.cpp
-    DEPENDS glstate.py glparams.py gltypes.py stdapi.py
+    DEPENDS glstate.py specs/glparams.py specs/gltypes.py specs/stdapi.py
 )
 
 include_directories (
diff --git a/apigen/.gitignore b/apigen/.gitignore
deleted file mode 100644 (file)
index 1dbc0cf..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-*.spec
-*.tm
-*.txt
-*api.py
-glparams.py
-wglenum.py
-!Makefile
diff --git a/apigen/Makefile b/apigen/Makefile
deleted file mode 100644 (file)
index 2ea2066..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-
-all: \
-       download \
-       glapi.py glxapi.py wglapi.py \
-    glparams.py wglenum.py
-
-download: \
-       enum.spec \
-       enumext.spec \
-       gl.spec \
-       gl.tm \
-       glxenum.spec \
-       glxenumext.spec \
-       glx.spec \
-       glxext.spec \
-       glx.tm \
-       wglenum.spec \
-       wglenumext.spec \
-       wgl.spec \
-       wglext.spec \
-       wgl.tm
-
-%.spec:
-       wget -N http://www.opengl.org/registry/api/$@
-
-%.tm:
-       wget -N http://www.opengl.org/registry/api/$@
-
-glapi.py: glspec.py gl.tm gl.spec
-       python glspec.py gl gl.tm gl.spec > $@
-
-glxapi.py: glspec.py glx.tm glx.spec glxext.spec
-       python glspec.py glX glx.tm glx.spec glxext.spec > $@
-
-wglapi.py: glspec.py wgl.tm wgl.spec wglext.spec
-       python glspec.py wgl wgl.tm wgl.spec wglext.spec > $@
-
-glparams.py: glparams.sed enum.spec sort.sh
-       sed -n -f glparams.sed enum.spec | ./sort.sh > $@
-
-wglenum.py: wglenum.sh wglenumext.spec
-       ./wglenum.sh wglenumext.spec > $@
-
-clean:
-       rm -f \
-        glapi.py glxapi.py wglapi.py \
-        glparams.py wglenum.py
-
-.PRECIOUS: %.spec %.tm
-
-.PHONY: download clean
diff --git a/apigen/README b/apigen/README
deleted file mode 100644 (file)
index 6df2a3d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-This directory contains several helper scripts that facilitate the generation
-of the API descriptions from specs and/or header files.
-
-The specs/headers are not expressive enough, which is why we can't just code
-generate everything from them.
-
-For GL the typical procedure is to run
-
-  make -B
-
-and then manually crossport new functions / enums to the files in the top dir
-via a side-by-side diff tool, such as gvimdiff.
diff --git a/apigen/cdecl.py b/apigen/cdecl.py
deleted file mode 100755 (executable)
index 4f36b3c..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-#!/usr/bin/env python
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-'''Script to parse C declarations and spew API definitions.
-'''
-
-
-import sys
-import re
-import optparse
-
-
-class Parser:
-
-    token_re = re.compile(r'(\w+|\s+|.)')
-
-    multi_comment_re = re.compile(r'/\*.*?\*/', flags = re.DOTALL)
-    single_comment_re = re.compile(r'//.*',)
-
-    def __init__(self):
-        self.tokens = []
-
-    def has_side_effects(self, name):
-        return True
-
-
-    def tokenize(self, s):
-        s = self.multi_comment_re.sub('', s)
-        s = self.single_comment_re.sub('', s)
-        self.tokens = self.token_re.split(s)
-        self.tokens = [token for token in self.tokens if self.filter_token(token)]
-
-    def filter_token(self, token):
-        if not token or token.isspace():
-            return False
-        if token.startswith('AVAILABLE_') or token.startswith('DEPRECATED_'):
-            return False
-        if token in ['FAR']:
-            return False
-        return True
-
-    def lookahead(self, index = 0):
-        try:
-            return self.tokens[index]
-        except KeyError:
-            return None
-
-    def match(self, *ref_tokens):
-        return self.lookahead() in ref_tokens
-
-    def consume(self, *ref_tokens):
-        if not self.tokens:
-            raise Exception('unexpected EOF')
-        token = self.tokens.pop(0)
-        if ref_tokens and token not in ref_tokens:
-            raise Exception('token mismatch', token, ref_tokens)
-        return token
-
-    def eof(self):
-        return not self.tokens
-
-
-    def parse(self, s):
-        self.tokenize(s)
-
-        while not self.eof():
-            #print self.tokens[0:10]
-            self.parse_declaration()
-
-    def parse_declaration(self):
-        self.parse_tags()
-        if self.match('enum'):
-            self.parse_enum()
-        elif self.match('interface'):
-            self.parse_interface()
-        elif self.match('mask'):
-            self.parse_value('mask', 'Flags')
-        elif self.match('struct'):
-            self.parse_struct()
-        elif self.match('value'):
-            self.parse_value('value', 'FakeEnum')
-        elif self.match('typedef'):
-            self.parse_typedef()
-        else:
-            self.parse_prototype()
-        if not self.eof() and self.match(';'):
-            self.consume(';')
-
-    def parse_typedef(self):
-        self.consume('typedef')
-        if self.lookahead(2) in (';', ','):
-            base_type = self.consume()
-            while True:
-                type = base_type
-                if self.match('*'):
-                    self.consume()
-                    type = 'Pointer(%s)' % type
-                name = self.consume()
-                print '%s = Alias("%s", %s)' % (name, name, type)
-                if self.match(','):
-                    self.consume()
-                else:
-                    break
-        else:
-            self.parse_declaration()
-            self.consume()
-
-    def parse_enum(self):
-        self.consume('enum')
-        name = self.consume()
-        self.consume('{')
-
-        print '%s = Enum("%s", [' % (name, name)
-
-        #value = 0
-        while self.lookahead() != '}':
-            name = self.consume()
-            if self.match('='):
-                self.consume('=')
-                value = self.consume()
-            if self.match(','):
-                self.consume(',')
-            tags = self.parse_tags()
-            #print '    "%s",\t# %s' % (name, value) 
-            print '    "%s",' % (name,) 
-            #value += 1
-        self.consume('}')
-
-        print '])'
-        print
-
-    def parse_value(self, ref_token, constructor):
-        self.consume(ref_token)
-        type = self.consume()
-        name = self.consume()
-        self.consume('{')
-
-        print '%s = %s(%s, [' % (name, constructor, type)
-
-        while self.lookahead() != '}':
-            self.consume('#')
-            self.consume('define')
-            name = self.consume()
-            value = self.consume()
-            #print '    "%s",\t# %s' % (name, value) 
-            print '    "%s",' % (name,) 
-        self.consume('}')
-
-        print '])'
-        print
-
-    def parse_struct(self):
-        self.consume('struct')
-        name = self.consume()
-        self.consume('{')
-
-        print '%s = Struct("%s", [' % (name, name)
-
-        value = 0
-        while self.lookahead() != '}':
-            type, name = self.parse_named_type()
-            if self.match(','):
-                self.consume(',')
-            self.consume(';')
-            print '    (%s, "%s"),' % (type, name) 
-            value += 1
-        self.consume('}')
-
-        print '])'
-        print
-
-    def parse_interface(self):
-        self.consume('interface')
-        name = self.consume()
-        if self.match(';'):
-            return
-        self.consume(':')
-        base = self.consume()
-        self.consume('{')
-
-        print '%s = Interface("%s", %s)' % (name, name, base)
-        print '%s.methods += [' % (name,)
-
-        while self.lookahead() != '}':
-            self.parse_prototype('Method')
-            self.consume(';')
-        self.consume('}')
-
-        print ']'
-        print
-
-    def parse_prototype(self, creator = 'Function'):
-        if self.match('extern'):
-            self.consume()
-
-        ret = self.parse_type()
-
-        if self.match('__stdcall'):
-            self.consume()
-            creator = 'StdFunction'
-
-        name = self.consume()
-        extra = ''
-        if not self.has_side_effects(name):
-            extra += ', sideeffects=False'
-        name = name
-
-        self.consume('(')
-        args = []
-        if self.match('void') and self.tokens[1] == ')':
-            self.consume()
-        while self.lookahead() != ')':
-            arg = self.parse_arg()
-            args.append(arg)
-            if self.match(','):
-                self.consume()
-        self.consume() == ')'
-        
-        print '    %s(%s, "%s", [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
-
-    def parse_arg(self):
-        tags = self.parse_tags()
-
-        type, name = self.parse_named_type()
-
-        arg = '(%s, "%s")' % (type, name)
-        if 'out' in tags:
-            arg = 'Out' + arg
-        return arg
-
-    def parse_tags(self):
-        tags = []
-        if self.match('['):
-            self.consume()
-            while not self.match(']'):
-                tag = self.consume()
-                tags.append(tag)
-            self.consume(']')
-        return tags
-
-    def parse_named_type(self):
-        type = self.parse_type()
-        name = self.consume()
-        if self.match('['):
-            self.consume()
-            length = self.consume()
-            self.consume(']')
-            type = 'Array(%s, "%s")' % (type, length)
-        return type, name
-
-    int_tokens = ('unsigned', 'signed', 'int', 'long', 'short', 'char')
-
-    type_table = {
-        'float':    'Float',
-        'double':   'Double',
-        'int8_t':   'Int8',
-        'uint8_t':  'UInt8',
-        'int16_t':  'Int16',
-        'uint16_t': 'UInt16',
-        'int32_t':  'Int32',
-        'uint32_t': 'UInt32',
-        'int64_t' : 'Int64',
-        'uint64_t': 'UInt64',
-    }
-
-    def parse_type(self):
-        const = False
-        token = self.consume()
-        if token == 'const':
-            token = self.consume()
-            const = True
-        if token == 'void':
-            type = 'Void'
-        elif token in self.int_tokens:
-            unsigned = False
-            signed = False
-            long = 0
-            short = 0
-            char = False
-            while token in self.int_tokens:
-                if token == 'unsigned':
-                    unsigned = True
-                if token == 'signed':
-                    signed = True
-                if token == 'long':
-                    long += 1
-                if token == 'short':
-                    short += 1
-                if token == 'char':
-                    char = False
-                if self.lookahead() in self.int_tokens:
-                    token = self.consume()
-                else:
-                    token = None
-            if char:
-                type = 'Char'
-                if signed:
-                    type = 'S' + type
-            elif short:
-                type = 'Short'
-            elif long:
-                type = 'Long' * long
-            else:
-                type = 'Int'
-            if unsigned:
-                type = 'U' + type
-        else:
-            type = self.type_table.get(token, token)
-        if const:
-            type = 'Const(%s)' % type
-        while True:
-            if self.match('*'):
-                self.consume('*')
-                type = 'OpaquePointer(%s)' % type
-            elif self.match('const'):
-                self.consume('const')
-                type = 'Const(%s)' % type
-            else:
-                break
-        return type
-
-
-
-        
-
-
-def main():
-    parser = Parser()
-    for arg in sys.argv[1:]:
-        parser.parse(open(arg, 'rt').read())
-    
-
-if __name__ == '__main__':
-    main()
diff --git a/apigen/glparams.sed b/apigen/glparams.sed
deleted file mode 100644 (file)
index 8afde64..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-s/^\s\+\(\w\+\)\s*=\s*\(0x\w\+\)\s\+#\s\+\([0-9]\+\)\s\+\([IF]\)\s*\(#.*\)\?$/    ("glGet",\t\4,\t\3,\t"GL_\1"),\t# \2/p
-s/^\s\+\(\w\+\)\s*=\s*\(0x\w\+\)\s*\(#.*\)\?$/    ("",\tX,\t1,\t"GL_\1"),\t# \2/p
diff --git a/apigen/glspec.py b/apigen/glspec.py
deleted file mode 100755 (executable)
index dbd20ce..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-#!/usr/bin/env python
-##########################################################################
-#
-# Copyright 2010 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-import sys
-import re
-import optparse
-
-
-def stderr(x):
-    sys.stderr.write(str(x) + '\n')
-
-
-class Parser:
-
-    def __init__(self, stream):
-        pass
-
-
-class LineParser:
-    """Base class for parsers that read line-based formats."""
-
-    def __init__(self, stream):
-        self._stream = stream
-        self._line = None
-        self._eof = False
-        # read lookahead
-        self.readline()
-    
-    def parse(self):
-        raise NotImplementedError
-
-    def readline(self):
-        line = self._stream.readline()
-        if not line:
-            self._line = ''
-            self._eof = True
-        self._line = line.rstrip('\r\n')
-
-    def lookahead(self):
-        assert self._line is not None
-        return self._line
-
-    def consume(self):
-        assert self._line is not None
-        line = self._line
-        self.readline()
-        return line
-
-    def eof(self):
-        assert self._line is not None
-        return self._eof
-    
-    def skip_whitespace(self):
-        while not self.eof() and self.match_whitespace() or self.match_comment():
-            self.consume()
-
-    def match_whitespace(self):
-        line = self.lookahead()
-        return not line.strip()
-
-    def match_comment(self):
-        return False
-
-
-class TypemapParser(LineParser):
-
-    def parse(self):
-        typemap = {}
-        self.skip_whitespace()
-        while not self.eof():
-            line = self.consume()
-            fields = [field.strip() for field in line.split(',')]
-            src = fields[0]
-            dst = fields[3]
-            if dst != '*':
-                typemap[src] = dst
-            self.skip_whitespace()
-        return typemap
-    
-    def match_comment(self):
-        line = self.lookahead()
-        return line.startswith('#')
-
-
-class SpecParser(LineParser):
-
-    property_re = re.compile(r'^\w+:')
-    prototype_re = re.compile(r'^(\w+)\((.*)\)$')
-
-    def __init__(self, stream, prefix='', typemap = None):
-        LineParser.__init__(self, stream)
-        if typemap is None:
-            self.typemap = {}
-        else:
-            self.typemap = typemap
-        self.prefix = prefix
-        self.category = None
-
-    def parse(self):
-        self.skip_whitespace()
-        while not self.eof():
-            line = self.lookahead()
-            if self.property_re.match(line):
-                self.parse_property()
-            elif self.prototype_re.match(line):
-                self.parse_prototype()
-            else:
-                self.consume()
-            self.skip_whitespace()
-
-    def parse_property(self):
-        line = self.consume()
-        name, value = line.split(':', 1)
-        if name == 'category':
-            values = value.split()
-            #self.prefix = values[0]
-
-    get_function_re = re.compile(r'^(Get|Is|Are)[A-Z]\w+')
-
-    def parse_prototype(self):
-        line = self.consume()
-        mo = self.prototype_re.match(line)
-        function_name, arg_names = mo.groups()
-        arg_names = [arg_name.strip() for arg_name in arg_names.split(',') if arg_name.strip()]
-        
-        extra = ''
-        if self.get_function_re.match(function_name):
-            extra += ', sideeffects=False'
-        function_name = self.prefix + function_name
-
-        ret_type = 'Void'
-        arg_types = {}
-        category = None
-        line = self.lookahead()
-        while line.startswith('\t'):
-            fields = line.split(None, 2)
-            if fields[0] == 'return':
-                ret_type = self.parse_type(fields[1])
-            elif fields[0] == 'param':
-                arg_name, arg_type = fields[1:3]
-                arg_types[fields[1]] = self.parse_arg(function_name, arg_name, arg_type)
-            elif fields[0] == 'category':
-                category = fields[1]
-            else:
-                pass
-            self.consume()
-            line = self.lookahead()
-        self.consume()
-        args = [arg_types[arg_name] for arg_name in arg_names]
-
-        if category is not None:
-            if category == self.prefix:
-                category = self.prefix.upper()
-            else:
-                category = self.prefix.upper() + '_' + category
-            if category != self.category:
-                if self.category is not None:
-                    print
-                print '    # %s' % category
-                self.category = category
-
-        if self.prefix == 'wgl':
-            constructor = 'StdFunction'
-        else:
-            constructor = 'GlFunction'
-
-        print '    %s(%s, "%s", [%s]%s),' % (constructor, ret_type, function_name, ', '.join(args), extra)
-
-    array_re = re.compile(r'^array\s+\[(.*)\]$')
-
-    string_typemap = {
-        'GLchar': 'GLstring',
-        'GLcharARB': 'GLstringARB',
-    }
-
-    def parse_arg(self, function_name, arg_name, arg_type):
-        orig_type, inout, kind = arg_type.split(' ', 2)
-
-        base_type = self.parse_type(orig_type)
-
-        if kind == 'value':
-            arg_type = base_type
-        elif kind == 'reference':
-            if inout == 'in':
-                base_type = 'Const(%s)' % base_type
-            arg_type = 'Pointer(%s)' % base_type
-        elif kind.startswith("array"):
-            if inout == 'in':
-                base_type = 'Const(%s)' % base_type
-
-            arg_type = 'OpaquePointer(%s)' % base_type
-
-            if base_type in ('Void', 'void', 'GLvoid'):
-                constructor = 'Blob'
-            else:
-                constructor = 'Array'
-
-            mo = self.array_re.match(kind)
-            if mo:
-                length = mo.group(1).strip()
-                if length == '':
-                    try:
-                        arg_type = self.string_typemap[base_type]
-                    except KeyError:
-                        pass
-                elif length == '1':
-                    arg_type = 'Pointer(%s)' % base_type
-                elif length.find("COMPSIZE") == -1:
-                    arg_type = '%s(%s, "%s")' % (constructor, base_type, length)
-                else:
-                    length = length.replace("COMPSIZE", "__%s_size" % function_name)
-                    length = length.replace("/", ", ")
-                    arg_type = 'Opaque%s(%s, "%s")' % (constructor, base_type, length)
-        else:
-            assert False
-        
-        arg = '(%s, "%s")' % (arg_type, arg_name)
-        if inout == 'out':
-            arg = 'Out' + arg
-        return arg
-
-    semantic_typemap = {
-        'String': 'CString',
-        'Texture': 'GLtexture',
-    }
-
-    post_typemap = {
-        'void': 'Void',
-        'int': 'Int',
-        'float': 'Float',
-    }
-
-    def parse_type(self, type):
-        try:
-            return self.semantic_typemap[type]
-        except KeyError:
-            pass
-        type = self.typemap.get(type, type)
-        type = self.post_typemap.get(type, type)
-        return type
-
-    def match_comment(self):
-        line = self.lookahead()
-        return line.startswith('#')
-
-
-def main():
-    prefix = sys.argv[1]
-
-    parser = TypemapParser(open(sys.argv[2], 'rt'))
-    typemap = parser.parse()
-
-    for arg in sys.argv[3:]:
-        parser = SpecParser(open(arg, 'rt'), prefix=prefix, typemap=typemap)
-        parser.parse()
-    
-
-if __name__ == '__main__':
-    main()
diff --git a/apigen/gltxt.py b/apigen/gltxt.py
deleted file mode 100755 (executable)
index c6be7c1..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-#!/usr/bin/env python
-##########################################################################
-#
-# Copyright 2010 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-import sys
-import re
-import optparse
-
-
-def stderr(x):
-    sys.stderr.write(str(x) + '\n')
-
-
-class Parser:
-
-    def __init__(self, stream):
-        pass
-
-
-class LineParser:
-    """Base class for parsers that read line-based formats."""
-
-    def __init__(self, stream):
-        self._stream = stream
-        self._line = None
-        self._eof = False
-        # read lookahead
-        self.readline()
-    
-    def parse(self):
-        raise NotImplementedError
-
-    def readline(self):
-        line = self._stream.readline()
-        if not line:
-            self._line = ''
-            self._eof = True
-        self._line = line.rstrip('\r\n')
-
-    def lookahead(self):
-        assert self._line is not None
-        return self._line
-
-    def consume(self):
-        assert self._line is not None
-        line = self._line
-        self.readline()
-        return line
-
-    def eof(self):
-        assert self._line is not None
-        return self._eof
-    
-    def skip_whitespace(self):
-        while not self.eof() and self.match_whitespace() or self.match_comment():
-            self.consume()
-
-    def match_whitespace(self):
-        line = self.lookahead()
-        return not line.strip()
-
-    def match_comment(self):
-        return False
-
-
-class TxtParser(LineParser):
-
-    property_re = re.compile(r'^\w+:')
-    prototype_re = re.compile(r'^(\w+)\((.*)\)$')
-
-    def __init__(self, stream, prefix=''):
-        LineParser.__init__(self, stream)
-        self.prefix = prefix
-
-    def parse(self):
-        line = self.consume()
-        while not line.startswith("New Procedures and Functions"):
-            line = self.consume()
-        self.parse_procs()
-
-    def parse_procs(self):
-        lines = []
-        while True:
-            line = self.consume()
-            if not line.strip():
-                continue
-            if not line.startswith(' '):
-                break
-            lines.append(line.strip())
-            if line.endswith(';'):
-                self.parse_proc(' '.join(lines))
-                lines = []
-
-    token_re = re.compile(r'(\w+|\s+|.)')
-    get_function_re = re.compile(r'^Get[A-Z]\w+')
-
-    def parse_proc(self, prototype):
-        #print prototype
-        tokens = self.token_re.split(prototype)
-        self.tokens = [token for token in tokens if token.strip()]
-        #print self.tokens
-
-        ret = self.parse_type()
-
-        name = self.tokens.pop(0)
-        extra = ''
-        if self.get_function_re.match(name):
-            extra += ', sideeffects=False'
-        name = self.prefix + name
-
-        assert self.tokens.pop(0) == '('
-        args = []
-        while self.tokens[0] != ')':
-            arg = self.parse_arg()
-            args.append(arg)
-            if self.tokens[0] == ',':
-                self.tokens.pop(0)
-        print '    GlFunction(%s, "%s", [%s]%s),' % (ret, name, ', '.join(args), extra)
-
-    def parse_arg(self):
-        type = self.parse_type()
-        name = self.tokens.pop(0)
-        return '(%s, "%s")' % (type, name)
-
-    def parse_type(self):
-        token = self.tokens.pop(0)
-        if token == 'const':
-            return 'Const(%s)' % self.parse_type()
-        if token == 'void':
-            type = 'Void'
-        else:
-            type = 'GL' + token
-        while self.tokens[0] == '*':
-            type = 'OpaquePointer(%s)' % type
-            self.tokens.pop(0)
-        return type
-
-
-def main():
-    for arg in sys.argv[1:]:
-        parser = TxtParser(open(arg, 'rt'), prefix='gl')
-        parser.parse()
-    
-
-if __name__ == '__main__':
-    main()
diff --git a/apigen/reference-opengl-arb.sh b/apigen/reference-opengl-arb.sh
deleted file mode 100755 (executable)
index 670ba17..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-# Script to extract reference URLs for functions documented in OpenGL ARB specs
-
-extract_urls () {
-    for URL
-    do
-            lynx -dump "$URL" | sed -n -e '/^References$/,$s/^ *[0-9]\+\. \+//p' | sed -e 's/ /%20/g'
-    done
-}
-
-extract_functions () {
-    sed -n -e '/^New Procedures and Functions$/,/^\w/ s/.* \(\w\+\)(.*$/\1/p' "$@" \
-    | sed -e '/^[A-Z]/s/^/gl/'
-}
-
-extract_urls http://www.opengl.org/registry/ \
-| grep '^http://www\.opengl\.org/registry/specs/ARB/.*\.txt$' \
-| sort -u \
-| while read URL
-do
-    wget --quiet -O - $URL \
-    | extract_functions \
-    | while read FUNCTION
-    do
-        echo "$FUNCTION  $URL"
-    done
-done
-    
-                
-
diff --git a/apigen/reference-opengl-man.sh b/apigen/reference-opengl-man.sh
deleted file mode 100755 (executable)
index 20bdaa6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-# Script to extract reference URLS for functions documented in OpenGL man pages
-
-wget -N -r -np http://www.opengl.org/sdk/docs/{man,man2,man3,man4}/
-
-find www.opengl.org -type f -name '*.xml' \
-| xargs grep -o '<b class="fsfunc">[^<]*</b>' \
-| sed -e 's/<[^>]*>//g' -e 's@^\(.*\):\(.*\)$@\2\thttp://\1@'
diff --git a/apigen/sort.sh b/apigen/sort.sh
deleted file mode 100755 (executable)
index 5cdc6a4..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-sed -e 's/\(^.*#\) \(0x\w\+\)$/\2 \1/' "$@" | sort | sed -e 's/\(0x\w\+\) \(.*#\)$/\2 \1/'
diff --git a/apigen/wglenum.sh b/apigen/wglenum.sh
deleted file mode 100755 (executable)
index 97f969d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-sed -n -e 's/^\s\+\(WGL_\S\+\)\s*=\s*\(0x2\w\w\w\)\s*$/\2 \1/p' "$@" \
-| sort -u \
-| sed -e 's/\(\S\+\)\s\+\(\S\+\)/    "\2",\t\t# \1/'
diff --git a/cglapi.py b/cglapi.py
deleted file mode 100644 (file)
index 1aac1b2..0000000
--- a/cglapi.py
+++ /dev/null
@@ -1,254 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""CGL API description."""
-
-
-from stdapi import *
-from glapi import *
-from glapi import glapi
-
-IOSurfaceRef = Opaque("IOSurfaceRef")
-CGLContextObj = Opaque("CGLContextObj")
-CGLPixelFormatObj = Opaque("CGLPixelFormatObj")
-CGLRendererInfoObj = Opaque("CGLRendererInfoObj")
-CGLPBufferObj = Opaque("CGLPBufferObj")
-CGLShareGroup = Opaque("CGLShareGroup")
-CGLShareGroupObj = Opaque("CGLShareGroupObj")
-CGSConnectionID = Alias("CGSConnectionID", Int)
-CGSWindowID = Alias("CGSWindowID", Int)
-CGSSurfaceID = Alias("CGSSurfaceID", Int)
-
-CGLPixelFormatAttribute = Enum("CGLPixelFormatAttribute", [
-    "kCGLPFAAllRenderers",
-    "kCGLPFADoubleBuffer",
-    "kCGLPFAStereo",
-    "kCGLPFAAuxBuffers",
-    "kCGLPFAColorSize",
-    "kCGLPFAAlphaSize",
-    "kCGLPFADepthSize",
-    "kCGLPFAStencilSize",
-    "kCGLPFAAccumSize",
-    "kCGLPFAMinimumPolicy",
-    "kCGLPFAMaximumPolicy",
-    "kCGLPFAOffScreen",
-    "kCGLPFAFullScreen",
-    "kCGLPFASampleBuffers",
-    "kCGLPFASamples",
-    "kCGLPFAAuxDepthStencil",
-    "kCGLPFAColorFloat",
-    "kCGLPFAMultisample",
-    "kCGLPFASupersample",
-    "kCGLPFASampleAlpha",
-    "kCGLPFARendererID",
-    "kCGLPFASingleRenderer",
-    "kCGLPFANoRecovery",
-    "kCGLPFAAccelerated",
-    "kCGLPFAClosestPolicy",
-    "kCGLPFABackingStore",
-    "kCGLPFAWindow",
-    "kCGLPFACompliant",
-    "kCGLPFADisplayMask",
-    "kCGLPFAPBuffer",
-    "kCGLPFARemotePBuffer",
-    "kCGLPFAAllowOfflineRenderers",
-    "kCGLPFAAcceleratedCompute",
-    "kCGLPFAVirtualScreenCount",
-    "kCGLPFARobust",
-    "kCGLPFAMPSafe",
-    "kCGLPFAMultiScreen",
-])
-
-CGLRendererProperty = Enum("CGLRendererProperty", [
-    "kCGLRPOffScreen",
-    "kCGLRPFullScreen",
-    "kCGLRPRendererID",
-    "kCGLRPAccelerated",
-    "kCGLRPRobust",
-    "kCGLRPBackingStore",
-    "kCGLRPMPSafe",
-    "kCGLRPWindow",
-    "kCGLRPMultiScreen",
-    "kCGLRPCompliant",
-    "kCGLRPDisplayMask",
-    "kCGLRPBufferModes",
-    "kCGLRPColorModes",
-    "kCGLRPAccumModes",
-    "kCGLRPDepthModes",
-    "kCGLRPStencilModes",
-    "kCGLRPMaxAuxBuffers",
-    "kCGLRPMaxSampleBuffers",
-    "kCGLRPMaxSamples",
-    "kCGLRPSampleModes",
-    "kCGLRPSampleAlpha",
-    "kCGLRPVideoMemory",
-    "kCGLRPTextureMemory",
-    "kCGLRPGPUVertProcCapable",
-    "kCGLRPGPUFragProcCapable",
-    "kCGLRPRendererCount",
-    "kCGLRPOnline",
-    "kCGLRPAcceleratedCompute",
-])
-
-CGLContextEnable = Enum("CGLContextEnable", [
-    "kCGLCESwapRectangle",
-    "kCGLCESwapLimit",
-    "kCGLCERasterization",
-    "kCGLCEStateValidation",
-    "kCGLCESurfaceBackingSize",
-    "kCGLCEDisplayListOptimization",
-    "kCGLCEMPEngine",
-])
-
-CGLContextParameter = Enum("CGLContextParameter", [
-    "kCGLCPSwapRectangle",
-    "kCGLCPSwapInterval",
-    "kCGLCPDispatchTableSize",
-    "kCGLCPClientStorage",
-    "kCGLCPSurfaceTexture",
-    "kCGLCPSurfaceOrder",
-    "kCGLCPSurfaceOpacity",
-    "kCGLCPSurfaceBackingSize",
-    "kCGLCPSurfaceSurfaceVolatile",
-    "kCGLCPReclaimResources",
-    "kCGLCPCurrentRendererID",
-    "kCGLCPGPUVertexProcessing",
-    "kCGLCPGPUFragmentProcessing",
-    "kCGLCPHasDrawable",
-    "kCGLCPMPSwapsInFlight",
-])
-
-CGLGlobalOption = Enum("CGLGlobalOption", [
-    "kCGLGOFormatCacheSize",
-    "kCGLGOClearFormatCache",
-    "kCGLGORetainRenderers",
-    "kCGLGOResetLibrary",
-    "kCGLGOUseErrorHandler",
-    "kCGLGOUseBuildCache",
-])
-
-CGLError = Enum("CGLError", [
-    "kCGLNoError",
-    "kCGLBadAttribute",
-    "kCGLBadProperty",
-    "kCGLBadPixelFormat",
-    "kCGLBadRendererInfo",
-    "kCGLBadContext",
-    "kCGLBadDrawable",
-    "kCGLBadDisplay",
-    "kCGLBadState",
-    "kCGLBadValue",
-    "kCGLBadMatch",
-    "kCGLBadEnumeration",
-    "kCGLBadOffScreen",
-    "kCGLBadFullScreen",
-    "kCGLBadWindow",
-    "kCGLBadAddress",
-    "kCGLBadCodeModule",
-    "kCGLBadAlloc",
-    "kCGLBadConnection",
-])
-
-CGLContextObj = Opaque("CGLContextObj")
-
-cglapi = API("CGL")
-
-cglapi.add_functions([
-    # CGLCurrent.h, libGL.dylib
-    Function(CGLError, "CGLSetCurrentContext", [(CGLContextObj, "ctx")]),
-    Function(CGLContextObj, "CGLGetCurrentContext", []),
-
-    # OpenGL.h, OpenGL framework
-    Function(CGLError, "CGLChoosePixelFormat", [(OpaquePointer(Const(CGLPixelFormatAttribute)), "attribs"), (OpaquePointer(CGLPixelFormatObj), "pix"), (OpaquePointer(GLint), "npix")]),
-    Function(CGLError, "CGLDestroyPixelFormat", [(CGLPixelFormatObj, "pix")]),
-    Function(CGLError, "CGLDescribePixelFormat", [(CGLPixelFormatObj, "pix"), (GLint, "pix_num"), (CGLPixelFormatAttribute, "attrib"), (OpaquePointer(GLint), "value")]),
-    Function(Void, "CGLReleasePixelFormat", [(CGLPixelFormatObj, "pix")]),
-    Function(CGLPixelFormatObj, "CGLRetainPixelFormat", [(CGLPixelFormatObj, "pix")]),
-    Function(GLuint, "CGLGetPixelFormatRetainCount", [(CGLPixelFormatObj, "pix")]),
-    Function(CGLError, "CGLQueryRendererInfo", [(GLuint, "display_mask"), (OpaquePointer(CGLRendererInfoObj), "rend"), (OpaquePointer(GLint), "nrend")]),
-    Function(CGLError, "CGLDestroyRendererInfo", [(CGLRendererInfoObj, "rend")]),
-    Function(CGLError, "CGLDescribeRenderer", [(CGLRendererInfoObj, "rend"), (GLint, "rend_num"), (CGLRendererProperty, "prop"), (OpaquePointer(GLint), "value")]),
-    Function(CGLError, "CGLCreateContext", [(CGLPixelFormatObj, "pix"), (CGLContextObj, "share"), (OpaquePointer(CGLContextObj), "ctx")]),
-    Function(CGLError, "CGLDestroyContext", [(CGLContextObj, "ctx")]),
-    Function(CGLError, "CGLCopyContext", [(CGLContextObj, "src"), (CGLContextObj, "dst"), (GLbitfield, "mask")]),
-    Function(CGLContextObj, "CGLRetainContext", [(CGLContextObj, "ctx")]),
-    Function(Void, "CGLReleaseContext", [(CGLContextObj, "ctx")]),
-    Function(GLuint, "CGLGetContextRetainCount", [(CGLContextObj, "ctx")]),
-    Function(CGLPixelFormatObj, "CGLGetPixelFormat", [(CGLContextObj, "ctx")]),
-    Function(CGLError, "CGLCreatePBuffer", [(GLsizei, "width"), (GLsizei, "height"), (GLenum, "target"), (GLenum, "internalFormat"), (GLint, "max_level"), (OpaquePointer(CGLPBufferObj), "pbuffer")]),
-    Function(CGLError, "CGLDestroyPBuffer", [(CGLPBufferObj, "pbuffer")]),
-    Function(CGLError, "CGLDescribePBuffer", [(CGLPBufferObj, "obj"), (OpaquePointer(GLsizei), "width"), (OpaquePointer(GLsizei), "height"), (OpaquePointer(GLenum), "target"), (OpaquePointer(GLenum), "internalFormat"), (OpaquePointer(GLint), "mipmap")]),
-    Function(CGLError, "CGLTexImagePBuffer", [(CGLContextObj, "ctx"), (CGLPBufferObj, "pbuffer"), (GLenum, "source")]),
-    Function(CGLPBufferObj, "CGLRetainPBuffer", [(CGLPBufferObj, "pbuffer")]),
-    Function(Void, "CGLReleasePBuffer", [(CGLPBufferObj, "pbuffer")]),
-    Function(GLuint, "CGLGetPBufferRetainCount", [(CGLPBufferObj, "pbuffer")]),
-    Function(CGLError, "CGLSetOffScreen", [(CGLContextObj, "ctx"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "rowbytes"), (OpaquePointer(Void), "baseaddr")]),
-    Function(CGLError, "CGLGetOffScreen", [(CGLContextObj, "ctx"), (OpaquePointer(GLsizei), "width"), (OpaquePointer(GLsizei), "height"), (OpaquePointer(GLint), "rowbytes"), (OpaquePointer(OpaquePointer(Void)), "baseaddr")]),
-    Function(CGLError, "CGLSetFullScreen", [(CGLContextObj, "ctx")]),
-    Function(CGLError, "CGLSetFullScreenOnDisplay", [(CGLContextObj, "ctx"), (GLuint, "display_mask")]),
-    Function(CGLError, "CGLSetPBuffer", [(CGLContextObj, "ctx"), (CGLPBufferObj, "pbuffer"), (GLenum, "face"), (GLint, "level"), (GLint, "screen")]),
-    Function(CGLError, "CGLGetPBuffer", [(CGLContextObj, "ctx"), (OpaquePointer(CGLPBufferObj), "pbuffer"), (OpaquePointer(GLenum), "face"), (OpaquePointer(GLint), "level"), (OpaquePointer(GLint), "screen")]),
-    Function(CGLError, "CGLClearDrawable", [(CGLContextObj, "ctx")]),
-    Function(CGLError, "CGLFlushDrawable", [(CGLContextObj, "ctx")]),
-    Function(CGLError, "CGLEnable", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname")]),
-    Function(CGLError, "CGLDisable", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname")]),
-    Function(CGLError, "CGLIsEnabled", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname"), (OpaquePointer(GLint), "enable")]),
-    Function(CGLError, "CGLSetParameter", [(CGLContextObj, "ctx"), (CGLContextParameter, "pname"), (OpaquePointer(Const(GLint)), "params")]),
-    Function(CGLError, "CGLGetParameter", [(CGLContextObj, "ctx"), (CGLContextParameter, "pname"), (OpaquePointer(GLint), "params")]),
-    Function(CGLError, "CGLSetVirtualScreen", [(CGLContextObj, "ctx"), (GLint, "screen")]),
-    Function(CGLError, "CGLGetVirtualScreen", [(CGLContextObj, "ctx"), (OpaquePointer(GLint), "screen")]),
-    Function(CGLError, "CGLSetGlobalOption", [(CGLGlobalOption, "pname"), (OpaquePointer(Const(GLint)), "params")]),
-    Function(CGLError, "CGLGetGlobalOption", [(CGLGlobalOption, "pname"), (OpaquePointer(GLint), "params")]),
-    Function(CGLError, "CGLSetOption", [(CGLGlobalOption, "pname"), (GLint, "param")]),
-    Function(CGLError, "CGLGetOption", [(CGLGlobalOption, "pname"), (OpaquePointer(GLint), "param")]),
-    Function(CGLError, "CGLLockContext", [(CGLContextObj, "ctx")]),
-    Function(CGLError, "CGLUnlockContext", [(CGLContextObj, "ctx")]),
-    Function(Void, "CGLGetVersion", [(OpaquePointer(GLint), "majorvers"), (OpaquePointer(GLint), "minorvers")]),
-    Function(Const(CString), "CGLErrorString", [(CGLError, "error")]),
-
-    # CGLIOSurface.h, OpenGL framework
-    Function(CGLError, "CGLTexImageIOSurface2D", [(CGLContextObj, "ctx"), (GLenum, "target"), (GLenum, "internal_format"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (IOSurfaceRef, "ioSurface"), (GLuint, "plane")]),
-
-    # CGLDevice.h, OpenGL framework
-    Function(CGLShareGroupObj, "CGLGetShareGroup", [(CGLContextObj, "ctx")]),
-
-    # Undocumented, OpenGL framework
-    Function(CGLError, "CGLSetSurface", [(CGLContextObj, "ctx"), (CGSConnectionID, "cid"), (CGSWindowID, "wid"), (CGSSurfaceID, "sid")]),
-    Function(CGLError, "CGLGetSurface", [(CGLContextObj, "ctx"), (OpaquePointer(CGSConnectionID), "cid"), (OpaquePointer(CGSWindowID), "wid"), (OpaquePointer(CGSSurfaceID), "sid")]),
-    Function(CGLError, "CGLUpdateContext", [(CGLContextObj, "ctx")]),
-    # XXX: Confirm CGLOpenCLMuxLockDown
-    Function(CGLError, "CGLOpenCLMuxLockDown", []),
-    # FIXME: CGLAreContextsShared
-    # FIXME: CGLBackDispatch
-    # FIXME: CGLFrontDispatch
-    # FIXME: CGLGetNextContext
-    # FIXME: CGLRestoreDispatch
-    # FIXME: CGLRestoreDispatchFunction
-    # FIXME: CGLSelectDispatch
-    # FIXME: CGLSelectDispatchBounded
-    # FIXME: CGLSelectDispatchFunction
-    # FIXME: CGLSetPBufferVolatileState
-])
-
index 92626f3a19620e039ffe46863c6a028b6acbc5ad..d2b52ef1fc5c483f852a750720dd7da8ada92d2c 100644 (file)
@@ -27,9 +27,9 @@
 """Cgl tracing generator."""
 
 
-from stdapi import API
-from glapi import glapi
-from cglapi import cglapi
+from specs.stdapi import API
+from specs.glapi import glapi
+from specs.cglapi import cglapi
 from gltrace import GlTracer
 
 
diff --git a/d3d.py b/d3d.py
deleted file mode 100644 (file)
index 857e5b3..0000000
--- a/d3d.py
+++ /dev/null
@@ -1,475 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d.h"""
-
-from winapi import *
-from ddraw import *
-from d3dtypes import *
-from d3dcaps import *
-
-def OutPointer(type):
-    return Out(Pointer(type), "out")
-
-d3dnextFlags = Flags(DWORD, [
-    "D3DNEXT_NEXT",
-    "D3DNEXT_HEAD",
-    "D3DNEXT_TAIL",
-])
-
-direct3dFlags = Flags(DWORD, [
-    "DIRECT3D_VERSION",
-])
-
-d3ddpFlags = Flags(DWORD, [
-    "D3DDP_WAIT",
-    "D3DDP_OUTOFORDER",
-    "D3DDP_DONOTCLIP",
-    "D3DDP_DONOTUPDATEEXTENTS",
-    "D3DDP_DONOTLIGHT",
-])
-
-HRESULT = Enum("HRESULT", [
-    "D3D_OK",
-    "D3DERR_BADMAJORVERSION",
-    "D3DERR_BADMINORVERSION",
-    "D3DERR_INVALID_DEVICE",
-    "D3DERR_INITFAILED",
-    "D3DERR_DEVICEAGGREGATED",
-    "D3DERR_EXECUTE_CREATE_FAILED",
-    "D3DERR_EXECUTE_DESTROY_FAILED",
-    "D3DERR_EXECUTE_LOCK_FAILED",
-    "D3DERR_EXECUTE_UNLOCK_FAILED",
-    "D3DERR_EXECUTE_LOCKED",
-    "D3DERR_EXECUTE_NOT_LOCKED",
-    "D3DERR_EXECUTE_FAILED",
-    "D3DERR_EXECUTE_CLIPPED_FAILED",
-    "D3DERR_TEXTURE_NO_SUPPORT",
-    "D3DERR_TEXTURE_CREATE_FAILED",
-    "D3DERR_TEXTURE_DESTROY_FAILED",
-    "D3DERR_TEXTURE_LOCK_FAILED",
-    "D3DERR_TEXTURE_UNLOCK_FAILED",
-    "D3DERR_TEXTURE_LOAD_FAILED",
-    "D3DERR_TEXTURE_SWAP_FAILED",
-    "D3DERR_TEXTURE_LOCKED",
-    "D3DERR_TEXTURE_NOT_LOCKED",
-    "D3DERR_TEXTURE_GETSURF_FAILED",
-    "D3DERR_MATRIX_CREATE_FAILED",
-    "D3DERR_MATRIX_DESTROY_FAILED",
-    "D3DERR_MATRIX_SETDATA_FAILED",
-    "D3DERR_MATRIX_GETDATA_FAILED",
-    "D3DERR_SETVIEWPORTDATA_FAILED",
-    "D3DERR_INVALIDCURRENTVIEWPORT",
-    "D3DERR_INVALIDPRIMITIVETYPE",
-    "D3DERR_INVALIDVERTEXTYPE",
-    "D3DERR_TEXTURE_BADSIZE",
-    "D3DERR_INVALIDRAMPTEXTURE",
-    "D3DERR_MATERIAL_CREATE_FAILED",
-    "D3DERR_MATERIAL_DESTROY_FAILED",
-    "D3DERR_MATERIAL_SETDATA_FAILED",
-    "D3DERR_MATERIAL_GETDATA_FAILED",
-    "D3DERR_INVALIDPALETTE",
-    "D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY",
-    "D3DERR_ZBUFF_NEEDS_VIDEOMEMORY",
-    "D3DERR_SURFACENOTINVIDMEM",
-    "D3DERR_LIGHT_SET_FAILED",
-    "D3DERR_LIGHTHASVIEWPORT",
-    "D3DERR_LIGHTNOTINTHISVIEWPORT",
-    "D3DERR_SCENE_IN_SCENE",
-    "D3DERR_SCENE_NOT_IN_SCENE",
-    "D3DERR_SCENE_BEGIN_FAILED",
-    "D3DERR_SCENE_END_FAILED",
-    "D3DERR_INBEGIN",
-    "D3DERR_NOTINBEGIN",
-    "D3DERR_NOVIEWPORTS",
-    "D3DERR_VIEWPORTDATANOTSET",
-    "D3DERR_VIEWPORTHASNODEVICE",
-    "D3DERR_NOCURRENTVIEWPORT",
-    "D3DERR_INVALIDVERTEXFORMAT",
-    "D3DERR_COLORKEYATTACHED",
-    "D3DERR_VERTEXBUFFEROPTIMIZED",
-    "D3DERR_VBUF_CREATE_FAILED",
-    "D3DERR_VERTEXBUFFERLOCKED",
-    "D3DERR_VERTEXBUFFERUNLOCKFAILED",
-    "D3DERR_ZBUFFER_NOTPRESENT",
-    "D3DERR_STENCILBUFFER_NOTPRESENT",
-    "D3DERR_WRONGTEXTUREFORMAT",
-    "D3DERR_UNSUPPORTEDCOLOROPERATION",
-    "D3DERR_UNSUPPORTEDCOLORARG",
-    "D3DERR_UNSUPPORTEDALPHAOPERATION",
-    "D3DERR_UNSUPPORTEDALPHAARG",
-    "D3DERR_TOOMANYOPERATIONS",
-    "D3DERR_CONFLICTINGTEXTUREFILTER",
-    "D3DERR_UNSUPPORTEDFACTORVALUE",
-    "D3DERR_CONFLICTINGRENDERSTATE",
-    "D3DERR_UNSUPPORTEDTEXTUREFILTER",
-    "D3DERR_TOOMANYPRIMITIVES",
-    "D3DERR_INVALIDMATRIX",
-    "D3DERR_TOOMANYVERTICES",
-    "D3DERR_CONFLICTINGTEXTUREPALETTE",
-    "D3DERR_INVALIDSTATEBLOCK",
-    "D3DERR_INBEGINSTATEBLOCK",
-    "D3DERR_NOTINBEGINSTATEBLOCK",
-])
-
-IDirect3D = Interface("IDirect3D", IUnknown)
-IDirect3D2 = Interface("IDirect3D2", IUnknown)
-IDirect3D3 = Interface("IDirect3D3", IUnknown)
-IDirect3D7 = Interface("IDirect3D7", IUnknown)
-IDirect3DDevice = Interface("IDirect3DDevice", IUnknown)
-IDirect3DDevice2 = Interface("IDirect3DDevice2", IUnknown)
-IDirect3DDevice3 = Interface("IDirect3DDevice3", IUnknown)
-IDirect3DDevice7 = Interface("IDirect3DDevice7", IUnknown)
-IDirect3DExecuteBuffer = Interface("IDirect3DExecuteBuffer", IUnknown)
-IDirect3DLight = Interface("IDirect3DLight", IUnknown)
-IDirect3DMaterial = Interface("IDirect3DMaterial", IUnknown)
-IDirect3DMaterial2 = Interface("IDirect3DMaterial2", IUnknown)
-IDirect3DMaterial3 = Interface("IDirect3DMaterial3", IUnknown)
-IDirect3DTexture = Interface("IDirect3DTexture", IUnknown)
-IDirect3DTexture2 = Interface("IDirect3DTexture2", IUnknown)
-IDirect3DViewport = Interface("IDirect3DViewport", IUnknown)
-IDirect3DViewport2 = Interface("IDirect3DViewport2", IDirect3DViewport)
-IDirect3DViewport3 = Interface("IDirect3DViewport3", IDirect3DViewport2)
-IDirect3DVertexBuffer = Interface("IDirect3DVertexBuffer", IUnknown)
-IDirect3DVertexBuffer7 = Interface("IDirect3DVertexBuffer7", IUnknown)
-
-LPUNKNOWN = WrapPointer(IUnknown)
-
-LPDIRECT3D = WrapPointer(IDirect3D)
-LPDIRECT3DDEVICE = WrapPointer(IDirect3DDevice)
-LPDIRECT3DEXECUTEBUFFER = WrapPointer(IDirect3DExecuteBuffer)
-LPDIRECT3DLIGHT = WrapPointer(IDirect3DLight)
-LPDIRECT3DMATERIAL = WrapPointer(IDirect3DMaterial)
-LPDIRECT3DTEXTURE = WrapPointer(IDirect3DTexture)
-LPDIRECT3DVIEWPORT = WrapPointer(IDirect3DViewport)
-
-LPDIRECT3D2 = WrapPointer(IDirect3D2)
-LPDIRECT3DDEVICE2 = WrapPointer(IDirect3DDevice2)
-LPDIRECT3DMATERIAL2 = WrapPointer(IDirect3DMaterial2)
-LPDIRECT3DTEXTURE2 = WrapPointer(IDirect3DTexture2)
-LPDIRECT3DVIEWPORT2 = WrapPointer(IDirect3DViewport2)
-
-LPDIRECT3D3 = WrapPointer(IDirect3D3)
-LPDIRECT3DDEVICE3 = WrapPointer(IDirect3DDevice3)
-LPDIRECT3DMATERIAL3 = WrapPointer(IDirect3DMaterial3)
-LPDIRECT3DVIEWPORT3 = WrapPointer(IDirect3DViewport3)
-LPDIRECT3DVERTEXBUFFER = WrapPointer(IDirect3DVertexBuffer)
-
-LPDIRECT3D7 = WrapPointer(IDirect3D7)
-LPDIRECT3DDEVICE7 = WrapPointer(IDirect3DDevice7)
-LPDIRECT3DVERTEXBUFFER7 = WrapPointer(IDirect3DVertexBuffer7)
-
-IDirect3D.methods += [
-    Method(HRESULT, "Initialize", [(REFCLSID, "riid")]),
-    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
-    Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL), "lplpDirect3DMaterial"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT), "lplpD3DViewport"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "lpD3DDFS"), (LPD3DFINDDEVICERESULT, "lplpD3DDevice")]),
-]
-
-IDirect3D2.methods += [
-    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
-    Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL2), "lplpDirect3DMaterial2"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT2), "lplpD3DViewport2"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "lpD3DDFS"), (LPD3DFINDDEVICERESULT, "lpD3DFDR")]),
-    Method(HRESULT, "CreateDevice", [(REFCLSID, "rclsid"), (LPDIRECTDRAWSURFACE, "lpDDS"), Out(Pointer(LPDIRECT3DDEVICE2), "lplpD3DDevice2")]),
-]
-
-IDirect3D3.methods += [
-    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
-    Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL3), "lplpDirect3DMaterial3"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT3), "lplpD3DViewport3"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "lpD3DDFS"), Out(LPD3DFINDDEVICERESULT, "lpD3DFDR")]),
-    Method(HRESULT, "CreateDevice", [(REFCLSID, "rclsid"), (LPDIRECTDRAWSURFACE4, "lpDDS"), Out(Pointer(LPDIRECT3DDEVICE3), "lplpD3DDevice3"), (LPUNKNOWN, "lpUnk")]),
-    Method(HRESULT, "CreateVertexBuffer", [(LPD3DVERTEXBUFFERDESC, "lpD3DVertBufDesc"), Out(Pointer(LPDIRECT3DVERTEXBUFFER), "lplpD3DVertBuf"), (DWORD, "dwFlags"), (LPUNKNOWN, "lpUnk")]),
-    Method(HRESULT, "EnumZBufferFormats", [(REFCLSID, "riidDevice"), (LPD3DENUMPIXELFORMATSCALLBACK, "lpEnumCallback"), (LPVOID, "lpContext")]),
-    Method(HRESULT, "EvictManagedTextures", []),
-]
-
-IDirect3D7.methods += [
-    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK7, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
-    Method(HRESULT, "CreateDevice", [(REFCLSID, "rclsid"), (LPDIRECTDRAWSURFACE7, "lpDDS"), Out(Pointer(LPDIRECT3DDEVICE7), "lplpD3DDevice")]),
-    Method(HRESULT, "CreateVertexBuffer", [(LPD3DVERTEXBUFFERDESC, "lpD3DVertBufDesc"), Out(Pointer(LPDIRECT3DVERTEXBUFFER7), "lplpD3DVertBuf"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "EnumZBufferFormats", [(REFCLSID, "riidDevice"), (LPD3DENUMPIXELFORMATSCALLBACK, "lpEnumCallback"), (LPVOID, "lpContext")]),
-    Method(HRESULT, "EvictManagedTextures", []),
-]
-
-IDirect3DDevice.methods += [
-    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D"), (LPGUID, "lpGUID"), (LPD3DDEVICEDESC, "lpD3DDVDesc")]),
-    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "lpD3DHWDevDesc"), Out(LPD3DDEVICEDESC, "lpD3DHELDevDesc")]),
-    Method(HRESULT, "SwapTextureHandles", [(LPDIRECT3DTEXTURE, "lpD3Dtex1"), (LPDIRECT3DTEXTURE, "lpD3DTex2")]),
-    Method(HRESULT, "CreateExecuteBuffer", [(LPD3DEXECUTEBUFFERDESC, "lpDesc"), Out(Pointer(LPDIRECT3DEXECUTEBUFFER), "lplpDirect3DExecuteBuffer"), (LPUNKNOWN, "pUnkOuter")]),
-    Method(HRESULT, "GetStats", [(LPD3DSTATS, "lpD3DStats")]),
-    Method(HRESULT, "Execute", [(LPDIRECT3DEXECUTEBUFFER, "lpDirect3DExecuteBuffer"), (LPDIRECT3DVIEWPORT, "lpDirect3DViewport"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT, "lpDirect3DViewport")]),
-    Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT, "lpDirect3DViewport")]),
-    Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT, "lpDirect3DViewport"), Out(Pointer(LPDIRECT3DVIEWPORT), "lplpDirect3DViewport"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "Pick", [(LPDIRECT3DEXECUTEBUFFER, "lpDirect3DExecuteBuffer"), (LPDIRECT3DVIEWPORT, "lpDirect3DViewport"), (DWORD, "dwFlags"), (LPD3DRECT, "lpRect")]),
-    Method(HRESULT, "GetPickRecords", [(LPDWORD, "lpCount"), (LPD3DPICKRECORD, "lpD3DPickRec")]),
-    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMTEXTUREFORMATSCALLBACK, "lpD3DEnumTextureProc"), (LPVOID, "lpArg")]),
-    Method(HRESULT, "CreateMatrix", [Out(LPD3DMATRIXHANDLE, "lpD3DMatHandle")]),
-    Method(HRESULT, "SetMatrix", [(D3DMATRIXHANDLE, "D3DMatHandle"), (Const(LPD3DMATRIX), "lpD3DMatrix")]),
-    Method(HRESULT, "GetMatrix", [(D3DMATRIXHANDLE, "D3DMatHandle"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "DeleteMatrix", [(D3DMATRIXHANDLE, "D3DMatHandle")]),
-    Method(HRESULT, "BeginScene", []),
-    Method(HRESULT, "EndScene", []),
-    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D), "lplpDirect3D")]),
-]
-
-IDirect3DDevice2.methods += [
-    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "lpD3DHWDevDesc"), Out(LPD3DDEVICEDESC, "lpD3DHELDevDesc")]),
-    Method(HRESULT, "SwapTextureHandles", [(LPDIRECT3DTEXTURE2, "lpD3DTex1"), (LPDIRECT3DTEXTURE2, "lpD3DTex2")]),
-    Method(HRESULT, "GetStats", [Out(LPD3DSTATS, "lpD3DStats")]),
-    Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2")]),
-    Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2")]),
-    Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2"), Out(Pointer(LPDIRECT3DVIEWPORT2), "lplpDirect3DViewport2"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMTEXTUREFORMATSCALLBACK, "lpD3DEnumTextureProc"), (LPVOID, "lpArg")]),
-    Method(HRESULT, "BeginScene", []),
-    Method(HRESULT, "EndScene", []),
-    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D2), "lplpDirect3D2")]),
-    Method(HRESULT, "SetCurrentViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2")]),
-    Method(HRESULT, "GetCurrentViewport", [Out(Pointer(LPDIRECT3DVIEWPORT2), "lplpDirect3DViewport2")]),
-    Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE, "lpNewRenderTarget"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpRenderTarget")]),
-    Method(HRESULT, "Begin", [(D3DPRIMITIVETYPE, "d3dpt"), (D3DVERTEXTYPE, "dwVertexTypeDesc"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "BeginIndexed", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (D3DVERTEXTYPE, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "Vertex", [(LPVOID, "lpVertexType")]),
-    Method(HRESULT, "Index", [(WORD, "wVertexIndex")]),
-    Method(HRESULT, "End", [(DWORD, "dwFlags")]),
-    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), Out(LPDWORD, "lpdwRenderState")]),
-    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), (DWORD, "dwRenderState")]),
-    Method(HRESULT, "GetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), Out(LPDWORD, "lpdwLightState")]),
-    Method(HRESULT, "SetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), (DWORD, "dwLightState")]),
-    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (D3DVERTEXTYPE, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (D3DVERTEXTYPE, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (LPWORD, "dwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
-    Method(HRESULT, "GetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
-]
-
-IDirect3DDevice3.methods += [
-    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "lpD3DHWDevDesc"), Out(LPD3DDEVICEDESC, "lpD3DHELDevDesc")]),
-    Method(HRESULT, "GetStats", [Out(LPD3DSTATS, "lpD3DStats")]),
-    Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3")]),
-    Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3")]),
-    Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3"), Out(Pointer(LPDIRECT3DVIEWPORT3), "lplpDirect3DViewport3"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMPIXELFORMATSCALLBACK, "lpD3DEnumPixelProc"), (LPVOID, "lpArg")]),
-    Method(HRESULT, "BeginScene", []),
-    Method(HRESULT, "EndScene", []),
-    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D3), "lplpDirect3D3")]),
-    Method(HRESULT, "SetCurrentViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3")]),
-    Method(HRESULT, "GetCurrentViewport", [Out(Pointer(LPDIRECT3DVIEWPORT3), "lplpDirect3DViewport3")]),
-    Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE4, "lpNewRenderTarget"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpRenderTarget")]),
-    Method(HRESULT, "Begin", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexTypeDesc"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "BeginIndexed", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "Vertex", [(LPVOID, "lpVertexType")]),
-    Method(HRESULT, "Index", [(WORD, "wVertexIndex")]),
-    Method(HRESULT, "End", [(DWORD, "dwFlags")]),
-    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), Out(LPDWORD, "lpdwRenderState")]),
-    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), (DWORD, "dwRenderState")]),
-    Method(HRESULT, "GetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), Out(LPDWORD, "lpdwLightState")]),
-    Method(HRESULT, "SetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), (DWORD, "dwLightState")]),
-    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (LPWORD, "dwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
-    Method(HRESULT, "GetClipStatus", [Out(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
-    Method(HRESULT, "DrawPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (LPWORD, "lpIndex"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER, "lpD3DVertexBuf"), (DWORD, "dwStartVertex"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER, "lpD3DVertexBuf"), (LPWORD, "lpwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "ComputeSphereVisibility", [(LPD3DVECTOR, "lpCenters"), (LPD3DVALUE, "lpRadii"), (DWORD, "dwNumSpheres"), (DWORD, "dwFlags"), (LPDWORD, "lpdwReturnValues")]),
-    Method(HRESULT, "GetTexture", [(DWORD, "dwStage"), Out(Pointer(LPDIRECT3DTEXTURE2), "lplpTexture2")]),
-    Method(HRESULT, "SetTexture", [(DWORD, "dwStage"), (LPDIRECT3DTEXTURE2, "lpTexture2")]),
-    Method(HRESULT, "GetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), Out(LPDWORD, "lpdwState")]),
-    Method(HRESULT, "SetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), (DWORD, "dwState")]),
-    Method(HRESULT, "ValidateDevice", [(LPDWORD, "lpdwPasses")]),
-]
-
-IDirect3DDevice7.methods += [
-    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC7, "lpD3DHELDevDesc")]),
-    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMPIXELFORMATSCALLBACK, "lpD3DEnumPixelProc"), (LPVOID, "lpArg")]),
-    Method(HRESULT, "BeginScene", []),
-    Method(HRESULT, "EndScene", []),
-    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D7), "lplpDirect3D3")]),
-    Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE7, "lpNewRenderTarget"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpRenderTarget")]),
-    Method(HRESULT, "Clear", [(DWORD, "dwCount"), (LPD3DRECT, "lpRects"), (DWORD, "dwFlags"), (D3DCOLOR, "dwColor"), (D3DVALUE, "dvZ"), (DWORD, "dwStencil")]),
-    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "SetViewport", [(LPD3DVIEWPORT7, "lpData")]),
-    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
-    Method(HRESULT, "GetViewport", [Out(LPD3DVIEWPORT7, "lpData")]),
-    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL7, "lpMat")]),
-    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL7, "lpMat")]),
-    Method(HRESULT, "SetLight", [(DWORD, "dwLightIndex"), (LPD3DLIGHT7, "lpLight")]),
-    Method(HRESULT, "GetLight", [(DWORD, "dwLightIndex"), (LPD3DLIGHT7, "lpLight")]),
-    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), (DWORD, "dwRenderState")]),
-    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), Out(LPDWORD, "lpdwRenderState")]),
-    Method(HRESULT, "BeginStateBlock", []),
-    Method(HRESULT, "EndStateBlock", [Out(LPDWORD, "lpdwBlockHandle")]),
-    Method(HRESULT, "PreLoad", [(LPDIRECTDRAWSURFACE7, "lpddsTexture")]),
-    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (LPWORD, "dwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
-    Method(HRESULT, "GetClipStatus", [Out(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
-    Method(HRESULT, "DrawPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (LPWORD, "lpIndex"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER7, "lpD3DVertexBuf"), (DWORD, "dwStartVertex"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "DrawIndexedPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER7, "lpD3DVertexBuf"), (DWORD, "dwStartVertex"), (DWORD, "dwNumVertices"), (LPWORD, "lpwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "ComputeSphereVisibility", [(LPD3DVECTOR, "lpCenters"), (LPD3DVALUE, "lpRadii"), (DWORD, "dwNumSpheres"), (DWORD, "dwFlags"), (LPDWORD, "lpdwReturnValues")]),
-    Method(HRESULT, "GetTexture", [(DWORD, "dwStage"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lpTexture")]),
-    Method(HRESULT, "SetTexture", [(DWORD, "dwStage"), (LPDIRECTDRAWSURFACE7, "lpTexture")]),
-    Method(HRESULT, "GetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), Out(LPDWORD, "lpdwState")]),
-    Method(HRESULT, "SetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), (DWORD, "dwState")]),
-    Method(HRESULT, "ValidateDevice", [Out(LPDWORD, "lpdwPasses")]),
-    Method(HRESULT, "ApplyStateBlock", [(DWORD, "dwBlockHandle")]),
-    Method(HRESULT, "CaptureStateBlock", [(DWORD, "dwBlockHandle")]),
-    Method(HRESULT, "DeleteStateBlock", [(DWORD, "dwBlockHandle")]),
-    Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "d3dsbType"), Out(LPDWORD, "lpdwBlockHandle")]),
-    Method(HRESULT, "Load", [(LPDIRECTDRAWSURFACE7, "lpDestTex"), (LPPOINT, "lpDestPoint"), (LPDIRECTDRAWSURFACE7, "lpSrcTex"), (LPRECT, "lprcSrcRect"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "LightEnable", [(DWORD, "dwLightIndex"), (BOOL, "bEnable")]),
-    Method(HRESULT, "GetLightEnable", [(DWORD, "dwLightIndex"), Out(Pointer(BOOL), "pbEnable")]),
-    Method(HRESULT, "SetClipPlane", [(DWORD, "dwIndex"), (Pointer(D3DVALUE), "pPlaneEquation")]),
-    Method(HRESULT, "GetClipPlane", [(DWORD, "dwIndex"), Out(Pointer(D3DVALUE), "pPlaneEquation")]),
-    Method(HRESULT, "GetInfo", [(DWORD, "dwDevInfoID"), Out(LPVOID, "pDevInfoStruct"), (DWORD, "dwSize")]),
-]
-
-IDirect3DExecuteBuffer.methods += [
-    Method(HRESULT, "Initialize", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), (LPD3DEXECUTEBUFFERDESC, "lpDesc")]),
-    Method(HRESULT, "Lock", [(LPD3DEXECUTEBUFFERDESC, "lpDesc")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "SetExecuteData", [(LPD3DEXECUTEDATA, "lpData")]),
-    Method(HRESULT, "GetExecuteData", [Out(LPD3DEXECUTEDATA, "lpData")]),
-    Method(HRESULT, "Validate", [(LPDWORD, "lpdwOffset"), (LPD3DVALIDATECALLBACK, "lpFunc"), (LPVOID, "lpUserArg"), (DWORD, "dwReserved")]),
-    Method(HRESULT, "Optimize", [(DWORD, "dwDummy")]),
-]
-
-IDirect3DLight.methods += [
-    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D")]),
-    Method(HRESULT, "SetLight", [(LPD3DLIGHT, "lpLight")]),
-    Method(HRESULT, "GetLight", [Out(LPD3DLIGHT, "lpLight")]),
-]
-
-IDirect3DMaterial.methods += [
-    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D")]),
-    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "lpMat")]),
-    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "lpMat")]),
-    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), Out(LPD3DMATERIALHANDLE, "lpHandle")]),
-    Method(HRESULT, "Reserve", []),
-    Method(HRESULT, "Unreserve", []),
-]
-
-IDirect3DMaterial2.methods += [
-    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "lpMat")]),
-    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "lpMat")]),
-    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE2, "lpDirect3DDevice2"), Out(LPD3DMATERIALHANDLE, "lpHandle")]),
-]
-
-IDirect3DMaterial3.methods += [
-    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "lpMat")]),
-    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "lpMat")]),
-    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE3, "lpDirect3DDevice3"), Out(LPD3DMATERIALHANDLE, "lpHandle")]),
-]
-
-IDirect3DTexture.methods += [
-    Method(HRESULT, "Initialize", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), (LPDIRECTDRAWSURFACE, "lpDDSurface")]),
-    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), Out(LPD3DTEXTUREHANDLE, "lpHandle")]),
-    Method(HRESULT, "PaletteChanged", [(DWORD, "dwStart"), (DWORD, "dwCount")]),
-    Method(HRESULT, "Load", [(LPDIRECT3DTEXTURE, "lpD3DTexture")]),
-    Method(HRESULT, "Unload", []),
-]
-
-IDirect3DTexture2.methods += [
-    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE2, "lpDirect3DDevice2"), Out(LPD3DTEXTUREHANDLE, "lpHandle")]),
-    Method(HRESULT, "PaletteChanged", [(DWORD, "dwStart"), (DWORD, "dwCount")]),
-    Method(HRESULT, "Load", [(LPDIRECT3DTEXTURE2, "lpD3DTexture2")]),
-]
-
-IDirect3DViewport.methods += [
-    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D")]),
-    Method(HRESULT, "GetViewport", [Out(LPD3DVIEWPORT, "lpData")]),
-    Method(HRESULT, "SetViewport", [(LPD3DVIEWPORT, "lpData")]),
-    Method(HRESULT, "TransformVertices", [(DWORD, "dwVertexCount"), (LPD3DTRANSFORMDATA, "lpData"), (DWORD, "dwFlags"), (LPDWORD, "lpOffScreen")]),
-    Method(HRESULT, "LightElements", [(DWORD, "dwElementCount"), (LPD3DLIGHTDATA, "lpData")]),
-    Method(HRESULT, "SetBackground", [(D3DMATERIALHANDLE, "hMat")]),
-    Method(HRESULT, "GetBackground", [Out(LPD3DMATERIALHANDLE, "lphMat"), Out(LPBOOL, "lpValid")]),
-    Method(HRESULT, "SetBackgroundDepth", [(LPDIRECTDRAWSURFACE, "lpDDSurface")]),
-    Method(HRESULT, "GetBackgroundDepth", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), Out(LPBOOL, "lpValid")]),
-    Method(HRESULT, "Clear", [(DWORD, "dwCount"), (LPD3DRECT, "lpRects"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "AddLight", [(LPDIRECT3DLIGHT, "lpDirect3DLight")]),
-    Method(HRESULT, "DeleteLight", [(LPDIRECT3DLIGHT, "lpDirect3DLight")]),
-    Method(HRESULT, "NextLight", [(LPDIRECT3DLIGHT, "lpDirect3DLight"), Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (DWORD, "dwFlags")]),
-]
-
-IDirect3DViewport2.methods += [
-   Method(HRESULT, "GetViewport2", [Out(LPD3DVIEWPORT2, "lpData")]),
-    Method(HRESULT, "SetViewport2", [(LPD3DVIEWPORT2, "lpData")]),
-]
-
-IDirect3DViewport3.methods += [
-    Method(HRESULT, "SetBackgroundDepth2", [(LPDIRECTDRAWSURFACE4, "lpDDS")]),
-    Method(HRESULT, "GetBackgroundDepth2", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDS"), (LPBOOL, "lpValid")]),
-    Method(HRESULT, "Clear2", [(DWORD, "dwCount"), (LPD3DRECT, "lpRects"), (DWORD, "dwFlags"), (D3DCOLOR, "dwColor"), (D3DVALUE, "dvZ"), (DWORD, "dwStencil")]),
-]
-
-IDirect3DVertexBuffer.methods += [
-    Method(HRESULT, "Lock", [(DWORD, "dwFlags"), Out(Pointer(LPVOID), "lplpData"), (LPDWORD, "lpdwSize")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "ProcessVertices", [(DWORD, "dwVertexOp"), (DWORD, "dwDestIndex"), (DWORD, "dwCount"), (LPDIRECT3DVERTEXBUFFER, "lpSrcBuffer"), (DWORD, "dwSrcIndex"), (LPDIRECT3DDEVICE3, "lpD3DDevice"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "GetVertexBufferDesc", [Out(LPD3DVERTEXBUFFERDESC, "lpD3DVertexBufferDesc")]),
-    Method(HRESULT, "Optimize", [(LPDIRECT3DDEVICE3, "lpD3DDevice"), (DWORD, "dwFlags")]),
-]
-
-IDirect3DVertexBuffer7.methods += [
-    Method(HRESULT, "Lock", [(DWORD, "dwFlags"), Out(Pointer(LPVOID), "lplpData"), (LPDWORD, "lpdwSize")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "ProcessVertices", [(DWORD, "dwVertexOp"), (DWORD, "dwDestIndex"), (DWORD, "dwCount"), (LPDIRECT3DVERTEXBUFFER7, "lpSrcBuffer"), (DWORD, "dwSrcIndex"), (LPDIRECT3DDEVICE7, "lpD3DDevice"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "GetVertexBufferDesc", [Out(LPD3DVERTEXBUFFERDESC, "lpD3DVertexBufferDesc")]),
-    Method(HRESULT, "Optimize", [(LPDIRECT3DDEVICE7, "lpD3DDevice"), (DWORD, "dwFlags")]),
-    Method(HRESULT, "ProcessVerticesStrided", [(DWORD, "dwVertexOp"), (DWORD, "dwDestIndex"), (DWORD, "dwCount"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpStrideData"), (DWORD, "dwVertexTypeDesc"), (LPDIRECT3DDEVICE7, "lpD3DDevice"), (DWORD, "dwFlags")]),
-]
-
-interfaces = [
-    IDirectDraw,
-    IDirectDraw2,
-    IDirectDraw4,
-    IDirectDraw7,
-    IDirect3D,
-    IDirect3D2,
-    IDirect3D3,
-    IDirect3D7,
-]
-
-ddraw.add_interfaces(interfaces)
-
diff --git a/d3d10.py b/d3d10.py
deleted file mode 100644 (file)
index 8af7ee5..0000000
--- a/d3d10.py
+++ /dev/null
@@ -1,903 +0,0 @@
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-from dxgi import *
-
-D3D10_BLEND = Enum("D3D10_BLEND", [
-    "D3D10_BLEND_ZERO",
-    "D3D10_BLEND_ONE",
-    "D3D10_BLEND_SRC_COLOR",
-    "D3D10_BLEND_INV_SRC_COLOR",
-    "D3D10_BLEND_SRC_ALPHA",
-    "D3D10_BLEND_INV_SRC_ALPHA",
-    "D3D10_BLEND_DEST_ALPHA",
-    "D3D10_BLEND_INV_DEST_ALPHA",
-    "D3D10_BLEND_DEST_COLOR",
-    "D3D10_BLEND_INV_DEST_COLOR",
-    "D3D10_BLEND_SRC_ALPHA_SAT",
-    "D3D10_BLEND_BLEND_FACTOR",
-    "D3D10_BLEND_INV_BLEND_FACTOR",
-    "D3D10_BLEND_SRC1_COLOR",
-    "D3D10_BLEND_INV_SRC1_COLOR",
-    "D3D10_BLEND_SRC1_ALPHA",
-    "D3D10_BLEND_INV_SRC1_ALPHA",
-])
-
-D3D10_BLEND_OP = Enum("D3D10_BLEND_OP", [
-    "D3D10_BLEND_OP_ADD",
-    "D3D10_BLEND_OP_SUBTRACT",
-    "D3D10_BLEND_OP_REV_SUBTRACT",
-    "D3D10_BLEND_OP_MIN",
-    "D3D10_BLEND_OP_MAX",
-])
-
-D3D10_BLEND_DESC = Struct("D3D10_BLEND_DESC", [
-    (BOOL, "AlphaToCoverageEnable"),
-    (Array(BOOL, "8"), "BlendEnable"),
-    (D3D10_BLEND, "SrcBlend"),
-    (D3D10_BLEND, "DestBlend"),
-    (D3D10_BLEND_OP, "BlendOp"),
-    (D3D10_BLEND, "SrcBlendAlpha"),
-    (D3D10_BLEND, "DestBlendAlpha"),
-    (D3D10_BLEND_OP, "BlendOpAlpha"),
-    (Array(UINT8, "8"), "RenderTargetWriteMask"),
-])
-
-D3D10_DEPTH_WRITE_MASK = Enum("D3D10_DEPTH_WRITE_MASK", [
-    "D3D10_DEPTH_WRITE_MASK_ZERO",
-    "D3D10_DEPTH_WRITE_MASK_ALL",
-])
-
-D3D10_COMPARISON_FUNC = Enum("D3D10_COMPARISON_FUNC", [
-    "D3D10_COMPARISON_NEVER",
-    "D3D10_COMPARISON_LESS",
-    "D3D10_COMPARISON_EQUAL",
-    "D3D10_COMPARISON_LESS_EQUAL",
-    "D3D10_COMPARISON_GREATER",
-    "D3D10_COMPARISON_NOT_EQUAL",
-    "D3D10_COMPARISON_GREATER_EQUAL",
-    "D3D10_COMPARISON_ALWAYS",
-])
-
-D3D10_STENCIL_OP = Enum("D3D10_STENCIL_OP", [
-    "D3D10_STENCIL_OP_KEEP",
-    "D3D10_STENCIL_OP_ZERO",
-    "D3D10_STENCIL_OP_REPLACE",
-    "D3D10_STENCIL_OP_INCR_SAT",
-    "D3D10_STENCIL_OP_DECR_SAT",
-    "D3D10_STENCIL_OP_INVERT",
-    "D3D10_STENCIL_OP_INCR",
-    "D3D10_STENCIL_OP_DECR",
-])
-
-D3D10_DEPTH_STENCILOP_DESC = Struct("D3D10_DEPTH_STENCILOP_DESC", [
-    (D3D10_STENCIL_OP, "StencilFailOp"),
-    (D3D10_STENCIL_OP, "StencilDepthFailOp"),
-    (D3D10_STENCIL_OP, "StencilPassOp"),
-    (D3D10_COMPARISON_FUNC, "StencilFunc"),
-])
-
-D3D10_DEPTH_STENCIL_DESC = Struct("D3D10_DEPTH_STENCIL_DESC", [
-    (BOOL, "DepthEnable"),
-    (D3D10_DEPTH_WRITE_MASK, "DepthWriteMask"),
-    (D3D10_COMPARISON_FUNC, "DepthFunc"),
-    (BOOL, "StencilEnable"),
-    (UINT8, "StencilReadMask"),
-    (UINT8, "StencilWriteMask"),
-    (D3D10_DEPTH_STENCILOP_DESC, "FrontFace"),
-    (D3D10_DEPTH_STENCILOP_DESC, "BackFace"),
-])
-
-D3D10_FILL_MODE = Enum("D3D10_FILL_MODE", [
-    "D3D10_FILL_WIREFRAME",
-    "D3D10_FILL_SOLID",
-])
-
-D3D10_CULL_MODE = Enum("D3D10_CULL_MODE", [
-    "D3D10_CULL_NONE",
-    "D3D10_CULL_FRONT",
-    "D3D10_CULL_BACK",
-])
-
-D3D10_RASTERIZER_DESC = Struct("D3D10_RASTERIZER_DESC", [
-    (D3D10_FILL_MODE, "FillMode"),
-    (D3D10_CULL_MODE, "CullMode"),
-    (BOOL, "FrontCounterClockwise"),
-    (INT, "DepthBias"),
-    (FLOAT, "DepthBiasClamp"),
-    (FLOAT, "SlopeScaledDepthBias"),
-    (BOOL, "DepthClipEnable"),
-    (BOOL, "ScissorEnable"),
-    (BOOL, "MultisampleEnable"),
-    (BOOL, "AntialiasedLineEnable"),
-])
-
-D3D10_FILTER = Enum("D3D10_FILTER", [
-    "D3D10_FILTER_MIN_MAG_MIP_POINT",
-    "D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR",
-    "D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT",
-    "D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR",
-    "D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT",
-    "D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR",
-    "D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT",
-    "D3D10_FILTER_MIN_MAG_MIP_LINEAR",
-    "D3D10_FILTER_ANISOTROPIC",
-    "D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT",
-    "D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR",
-    "D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT",
-    "D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR",
-    "D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT",
-    "D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR",
-    "D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT",
-    "D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR",
-    "D3D10_FILTER_COMPARISON_ANISOTROPIC",
-    "D3D10_FILTER_TEXT_1BIT",
-])
-
-D3D10_TEXTURE_ADDRESS_MODE = Enum("D3D10_TEXTURE_ADDRESS_MODE", [
-    "D3D10_TEXTURE_ADDRESS_WRAP",
-    "D3D10_TEXTURE_ADDRESS_MIRROR",
-    "D3D10_TEXTURE_ADDRESS_CLAMP",
-    "D3D10_TEXTURE_ADDRESS_BORDER",
-    "D3D10_TEXTURE_ADDRESS_MIRROR_ONCE",
-])
-
-D3D10_SAMPLER_DESC = Struct("D3D10_SAMPLER_DESC", [
-    (D3D10_FILTER, "Filter"),
-    (D3D10_TEXTURE_ADDRESS_MODE, "AddressU"),
-    (D3D10_TEXTURE_ADDRESS_MODE, "AddressV"),
-    (D3D10_TEXTURE_ADDRESS_MODE, "AddressW"),
-    (FLOAT, "MipLODBias"),
-    (UINT, "MaxAnisotropy"),
-    (D3D10_COMPARISON_FUNC, "ComparisonFunc"),
-    (Array(FLOAT, "4"), "BorderColor"),
-    (FLOAT, "MinLOD"),
-    (FLOAT, "MaxLOD"),
-])
-
-D3D10_COUNTER = Enum("D3D10_COUNTER", [
-    "D3D10_COUNTER_GPU_IDLE",
-    "D3D10_COUNTER_VERTEX_PROCESSING",
-    "D3D10_COUNTER_GEOMETRY_PROCESSING",
-    "D3D10_COUNTER_PIXEL_PROCESSING",
-    "D3D10_COUNTER_OTHER_GPU_PROCESSING",
-    "D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION",
-    "D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION",
-    "D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION",
-    "D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION",
-    "D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION",
-    "D3D10_COUNTER_VS_MEMORY_LIMITED",
-    "D3D10_COUNTER_VS_COMPUTATION_LIMITED",
-    "D3D10_COUNTER_GS_MEMORY_LIMITED",
-    "D3D10_COUNTER_GS_COMPUTATION_LIMITED",
-    "D3D10_COUNTER_PS_MEMORY_LIMITED",
-    "D3D10_COUNTER_PS_COMPUTATION_LIMITED",
-    "D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE",
-    "D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE",
-    "D3D10_COUNTER_DEVICE_DEPENDENT_0",
-])
-
-D3D10_COUNTER_DESC = Struct("D3D10_COUNTER_DESC", [
-    (D3D10_COUNTER, "Counter"),
-    (UINT, "MiscFlags"),
-])
-
-D3D10_COUNTER_TYPE = Enum("D3D10_COUNTER_TYPE", [
-    "D3D10_COUNTER_TYPE_FLOAT32",
-    "D3D10_COUNTER_TYPE_UINT16",
-    "D3D10_COUNTER_TYPE_UINT32",
-    "D3D10_COUNTER_TYPE_UINT64",
-])
-
-D3D10_COUNTER_INFO = Struct("D3D10_COUNTER_INFO", [
-    (D3D10_COUNTER, "LastDeviceDependentCounter"),
-    (UINT, "NumSimultaneousCounters"),
-    (UINT8, "NumDetectableParallelUnits"),
-])
-
-D3D10_RESOURCE_DIMENSION = Enum("D3D10_RESOURCE_DIMENSION", [
-    "D3D10_RESOURCE_DIMENSION_UNKNOWN",
-    "D3D10_RESOURCE_DIMENSION_BUFFER",
-    "D3D10_RESOURCE_DIMENSION_TEXTURE1D",
-    "D3D10_RESOURCE_DIMENSION_TEXTURE2D",
-    "D3D10_RESOURCE_DIMENSION_TEXTURE3D",
-])
-
-D3D10_USAGE = Enum("D3D10_USAGE", [
-    "D3D10_USAGE_DEFAULT",
-    "D3D10_USAGE_IMMUTABLE",
-    "D3D10_USAGE_DYNAMIC",
-    "D3D10_USAGE_STAGING",
-])
-
-D3D10_BIND_FLAG = Enum("D3D10_BIND_FLAG", [
-    "D3D10_BIND_VERTEX_BUFFER",
-    "D3D10_BIND_INDEX_BUFFER",
-    "D3D10_BIND_CONSTANT_BUFFER",
-    "D3D10_BIND_SHADER_RESOURCE",
-    "D3D10_BIND_STREAM_OUTPUT",
-    "D3D10_BIND_RENDER_TARGET",
-    "D3D10_BIND_DEPTH_STENCIL",
-])
-
-D3D10_BUFFER_DESC = Struct("D3D10_BUFFER_DESC", [
-    (UINT, "ByteWidth"),
-    (D3D10_USAGE, "Usage"),
-    (UINT, "BindFlags"),
-    (UINT, "CPUAccessFlags"),
-    (UINT, "MiscFlags"),
-])
-
-D3D10_MAP = Enum("D3D10_MAP", [
-    "D3D10_MAP_READ",
-    "D3D10_MAP_WRITE",
-    "D3D10_MAP_READ_WRITE",
-    "D3D10_MAP_WRITE_DISCARD",
-    "D3D10_MAP_WRITE_NO_OVERWRITE",
-])
-
-D3D10_TEXTURE1D_DESC = Struct("D3D10_TEXTURE1D_DESC", [
-    (UINT, "Width"),
-    (UINT, "MipLevels"),
-    (UINT, "ArraySize"),
-    (DXGI_FORMAT, "Format"),
-    (D3D10_USAGE, "Usage"),
-    (UINT, "BindFlags"),
-    (UINT, "CPUAccessFlags"),
-    (UINT, "MiscFlags"),
-])
-
-D3D10_TEXTURE2D_DESC = Struct("D3D10_TEXTURE2D_DESC", [
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "MipLevels"),
-    (UINT, "ArraySize"),
-    (DXGI_FORMAT, "Format"),
-    (DXGI_SAMPLE_DESC, "SampleDesc"),
-    (D3D10_USAGE, "Usage"),
-    (UINT, "BindFlags"),
-    (UINT, "CPUAccessFlags"),
-    (UINT, "MiscFlags"),
-])
-
-D3D10_TEXTURE3D_DESC = Struct("D3D10_TEXTURE3D_DESC", [
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "Depth"),
-    (UINT, "MipLevels"),
-    (DXGI_FORMAT, "Format"),
-    (D3D10_USAGE, "Usage"),
-    (UINT, "BindFlags"),
-    (UINT, "CPUAccessFlags"),
-    (UINT, "MiscFlags"),
-])
-
-D3D10_DSV_DIMENSION = Enum("D3D10_DSV_DIMENSION", [
-    "D3D10_DSV_DIMENSION_UNKNOWN",
-    "D3D10_DSV_DIMENSION_TEXTURE1D",
-    "D3D10_DSV_DIMENSION_TEXTURE1DARRAY",
-    "D3D10_DSV_DIMENSION_TEXTURE2D",
-    "D3D10_DSV_DIMENSION_TEXTURE2DARRAY",
-    "D3D10_DSV_DIMENSION_TEXTURE2DMS",
-    "D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY",
-])
-
-D3D10_TEX1D_DSV = Struct("D3D10_TEX1D_DSV", [
-    (UINT, "MipSlice"),
-])
-
-D3D10_TEX1D_ARRAY_DSV = Struct("D3D10_TEX1D_ARRAY_DSV", [
-    (UINT, "MipSlice"),
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX2D_DSV = Struct("D3D10_TEX2D_DSV", [
-    (UINT, "MipSlice"),
-])
-
-D3D10_TEX2D_ARRAY_DSV = Struct("D3D10_TEX2D_ARRAY_DSV", [
-    (UINT, "MipSlice"),
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX2DMS_DSV = Struct("D3D10_TEX2DMS_DSV", [
-    (UINT, "UnusedField_NothingToDefine"),
-])
-
-D3D10_TEX2DMS_ARRAY_DSV = Struct("D3D10_TEX2DMS_ARRAY_DSV", [
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_DEPTH_STENCIL_VIEW_DESC = Struct("D3D10_DEPTH_STENCIL_VIEW_DESC", [
-    (DXGI_FORMAT, "Format"),
-    (D3D10_DSV_DIMENSION, "ViewDimension"),
-    (D3D10_TEX1D_DSV, "Texture1D"),
-    (D3D10_TEX1D_ARRAY_DSV, "Texture1DArray"),
-    (D3D10_TEX2D_DSV, "Texture2D"),
-    (D3D10_TEX2D_ARRAY_DSV, "Texture2DArray"),
-    (D3D10_TEX2DMS_DSV, "Texture2DMS"),
-    (D3D10_TEX2DMS_ARRAY_DSV, "Texture2DMSArray"),
-])
-
-D3D10_RTV_DIMENSION = Enum("D3D10_RTV_DIMENSION", [
-    "D3D10_RTV_DIMENSION_UNKNOWN",
-    "D3D10_RTV_DIMENSION_BUFFER",
-    "D3D10_RTV_DIMENSION_TEXTURE1D",
-    "D3D10_RTV_DIMENSION_TEXTURE1DARRAY",
-    "D3D10_RTV_DIMENSION_TEXTURE2D",
-    "D3D10_RTV_DIMENSION_TEXTURE2DARRAY",
-    "D3D10_RTV_DIMENSION_TEXTURE2DMS",
-    "D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY",
-    "D3D10_RTV_DIMENSION_TEXTURE3D",
-])
-
-D3D10_BUFFER_RTV = Struct("D3D10_BUFFER_RTV", [
-    (UINT, "ElementOffset"),
-    (UINT, "ElementWidth"),
-])
-
-D3D10_TEX1D_RTV = Struct("D3D10_TEX1D_RTV", [
-    (UINT, "MipSlice"),
-])
-
-D3D10_TEX1D_ARRAY_RTV = Struct("D3D10_TEX1D_ARRAY_RTV", [
-    (UINT, "MipSlice"),
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX2D_RTV = Struct("D3D10_TEX2D_RTV", [
-    (UINT, "MipSlice"),
-])
-
-D3D10_TEX2D_ARRAY_RTV = Struct("D3D10_TEX2D_ARRAY_RTV", [
-    (UINT, "MipSlice"),
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX2DMS_RTV = Struct("D3D10_TEX2DMS_RTV", [
-    (UINT, "UnusedField_NothingToDefine"),
-])
-
-D3D10_TEX2DMS_ARRAY_RTV = Struct("D3D10_TEX2DMS_ARRAY_RTV", [
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX3D_RTV = Struct("D3D10_TEX3D_RTV", [
-    (UINT, "MipSlice"),
-    (UINT, "FirstWSlice"),
-    (UINT, "WSize"),
-])
-
-D3D10_RENDER_TARGET_VIEW_DESC = Struct("D3D10_RENDER_TARGET_VIEW_DESC", [
-    (DXGI_FORMAT, "Format"),
-    (D3D10_RTV_DIMENSION, "ViewDimension"),
-    (D3D10_BUFFER_RTV, "Buffer"),
-    (D3D10_TEX1D_RTV, "Texture1D"),
-    (D3D10_TEX1D_ARRAY_RTV, "Texture1DArray"),
-    (D3D10_TEX2D_RTV, "Texture2D"),
-    (D3D10_TEX2D_ARRAY_RTV, "Texture2DArray"),
-    (D3D10_TEX2DMS_RTV, "Texture2DMS"),
-    (D3D10_TEX2DMS_ARRAY_RTV, "Texture2DMSArray"),
-    (D3D10_TEX3D_RTV, "Texture3D"),
-])
-
-D3D10_SRV_DIMENSION = Enum("D3D10_SRV_DIMENSION", [
-    "D3D10_SRV_DIMENSION_UNKNOWN",
-       "D3D10_SRV_DIMENSION_BUFFER",
-       "D3D10_SRV_DIMENSION_TEXTURE1D",
-       "D3D10_SRV_DIMENSION_TEXTURE1DARRAY",
-       "D3D10_SRV_DIMENSION_TEXTURE2D",
-       "D3D10_SRV_DIMENSION_TEXTURE2DARRAY",
-       "D3D10_SRV_DIMENSION_TEXTURE2DMS",
-       "D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY",
-       "D3D10_SRV_DIMENSION_TEXTURE3D",
-       "D3D10_SRV_DIMENSION_TEXTURECUBE",
-])
-
-D3D10_BUFFER_SRV = Struct("D3D10_BUFFER_SRV", [
-    (UINT, "ElementOffset"),
-    (UINT, "ElementWidth"),
-])
-
-D3D10_TEX1D_SRV = Struct("D3D10_TEX1D_SRV", [
-    (UINT, "MostDetailedMip"),
-    (UINT, "MipLevels"),
-])
-
-D3D10_TEX1D_ARRAY_SRV = Struct("D3D10_TEX1D_ARRAY_SRV", [
-    (UINT, "MostDetailedMip"),
-    (UINT, "MipLevels"),
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX2D_SRV = Struct("D3D10_TEX2D_SRV", [
-    (UINT, "MostDetailedMip"),
-    (UINT, "MipLevels"),
-])
-
-D3D10_TEX2D_ARRAY_SRV = Struct("D3D10_TEX2D_ARRAY_SRV", [
-    (UINT, "MostDetailedMip"),
-    (UINT, "MipLevels"),
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX2DMS_SRV = Struct("D3D10_TEX2DMS_SRV", [
-    (UINT, "UnusedField_NothingToDefine"),
-])
-
-D3D10_TEX2DMS_ARRAY_SRV = Struct("D3D10_TEX2DMS_ARRAY_SRV", [
-    (UINT, "FirstArraySlice"),
-    (UINT, "ArraySize"),
-])
-
-D3D10_TEX3D_SRV = Struct("D3D10_TEX3D_SRV", [
-    (UINT, "MostDetailedMip"),
-    (UINT, "MipLevels"),
-])
-
-D3D10_TEXCUBE_SRV = Struct("D3D10_TEXCUBE_SRV", [
-    (UINT, "MostDetailedMip"),
-    (UINT, "MipLevels"),
-])
-
-D3D10_SHADER_RESOURCE_VIEW_DESC = Struct("D3D10_SHADER_RESOURCE_VIEW_DESC", [
-    (DXGI_FORMAT, "Format"),
-    (D3D10_SRV_DIMENSION, "ViewDimension"),
-    (D3D10_BUFFER_SRV, "Buffer"),
-    (D3D10_TEX1D_SRV, "Texture1D"),
-    (D3D10_TEX1D_ARRAY_SRV, "Texture1DArray"),
-    (D3D10_TEX2D_SRV, "Texture2D"),
-    (D3D10_TEX2D_ARRAY_SRV, "Texture2DArray"),
-    (D3D10_TEX2DMS_SRV, "Texture2DMS"),
-    (D3D10_TEX2DMS_ARRAY_SRV, "Texture2DMSArray"),
-    (D3D10_TEX3D_SRV, "Texture3D"),
-    (D3D10_TEXCUBE_SRV, "TextureCube"),
-])
-
-D3D10_BOX = Struct("D3D10_BOX", [
-    (UINT, "left"),
-    (UINT, "top"),
-    (UINT, "front"),
-    (UINT, "right"),
-    (UINT, "bottom"),
-    (UINT, "back"),
-])
-
-D3D10_SUBRESOURCE_DATA = Struct("D3D10_SUBRESOURCE_DATA", [
-    (OpaquePointer(Const(Void)), "pSysMem"),
-    (UINT, "SysMemPitch"),
-    (UINT, "SysMemSlicePitch"),
-])
-
-D3D10_SO_DECLARATION_ENTRY = Struct("D3D10_SO_DECLARATION_ENTRY", [
-    (LPCSTR, "SemanticName"),
-    (UINT, "SemanticIndex"),
-    (BYTE, "StartComponent"),
-    (BYTE, "ComponentCount"),
-    (BYTE, "OutputSlot"),
-])
-
-D3D10_INPUT_CLASSIFICATION = Enum("D3D10_INPUT_CLASSIFICATION", [
-    "D3D10_INPUT_PER_VERTEX_DATA",
-    "D3D10_INPUT_PER_INSTANCE_DATA",
-])
-
-D3D10_INPUT_ELEMENT_DESC = Struct("D3D10_INPUT_ELEMENT_DESC", [
-    (LPCSTR, "SemanticName"),
-    (UINT, "SemanticIndex"),
-    (DXGI_FORMAT, "Format"),
-    (UINT, "InputSlot"),
-    (UINT, "AlignedByteOffset"),
-    (D3D10_INPUT_CLASSIFICATION, "InputSlotClass"),
-    (UINT, "InstanceDataStepRate"),
-])
-
-D3D10_QUERY = Enum("D3D10_QUERY", [
-    "D3D10_QUERY_EVENT",
-    "D3D10_QUERY_OCCLUSION",
-    "D3D10_QUERY_TIMESTAMP",
-    "D3D10_QUERY_TIMESTAMP_DISJOINT",
-    "D3D10_QUERY_PIPELINE_STATISTICS",
-    "D3D10_QUERY_OCCLUSION_PREDICATE",
-    "D3D10_QUERY_SO_STATISTICS",
-    "D3D10_QUERY_SO_OVERFLOW_PREDICATE",
-])
-
-D3D10_QUERY_DESC = Struct("D3D10_QUERY_DESC", [
-    (D3D10_QUERY, "Query"),
-    (UINT, "MiscFlags"),
-])
-
-D3D10_PRIMITIVE_TOPOLOGY = Enum("D3D10_PRIMITIVE_TOPOLOGY", [
-       "D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED",
-       "D3D10_PRIMITIVE_TOPOLOGY_POINTLIST",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINELIST",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ",
-       "D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ",
-       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ",
-])
-
-D3D10_PRIMITIVE = Enum("D3D10_PRIMITIVE", [
-       "D3D10_PRIMITIVE_UNDEFINED",
-       "D3D10_PRIMITIVE_POINT",
-       "D3D10_PRIMITIVE_LINE",
-       "D3D10_PRIMITIVE_TRIANGLE",
-       "D3D10_PRIMITIVE_LINE_ADJ",
-       "D3D10_PRIMITIVE_TRIANGLE_ADJ",
-])
-
-D3D10_RECT = Alias("D3D10_RECT", RECT)
-D3D10_VIEWPORT = Struct("D3D10_VIEWPORT", [
-    (INT, "TopLeftX"),
-    (INT, "TopLeftY"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (FLOAT, "MinDepth"),
-    (FLOAT, "MaxDepth"),
-])
-
-D3D10_MAPPED_TEXTURE2D = Struct("D3D10_MAPPED_TEXTURE2D", [
-    (OpaquePointer(Void), "pData"),
-    (UINT, "RowPitch"),
-])
-
-D3D10_MAPPED_TEXTURE3D = Struct("D3D10_MAPPED_TEXTURE3D", [
-    (OpaquePointer(Void), "pData"),
-    (UINT, "RowPitch"),
-    (UINT, "DepthPitch"),
-])
-
-D3D10_CPU_ACCESS_FLAG = Enum("D3D10_CPU_ACCESS_FLAG", [
-    "D3D10_CPU_ACCESS_WRITE",
-    "D3D10_CPU_ACCESS_READ",
-])
-
-D3D10_RESOURCE_MISC_FLAG = Enum("D3D10_RESOURCE_MISC_FLAG", [
-    "D3D10_RESOURCE_MISC_GENERATE_MIPS",
-    "D3D10_RESOURCE_MISC_SHARED",
-    "D3D10_RESOURCE_MISC_TEXTURECUBE",
-    "D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX",
-    "D3D10_RESOURCE_MISC_GDI_COMPATIBLE",
-])
-
-D3D10_MAP_FLAG = Enum("D3D10_MAP_FLAG", [
-    "D3D10_MAP_FLAG_DO_NOT_WAIT",
-])
-
-D3D10_CLEAR_FLAG = Enum("D3D10_CLEAR_FLAG", [
-    "D3D10_CLEAR_DEPTH",
-    "D3D10_CLEAR_STENCIL",
-])
-
-D3D10_COLOR_WRITE_ENABLE = Enum("D3D10_COLOR_WRITE_ENABLE", [
-    "D3D10_COLOR_WRITE_ENABLE_RED",
-    "D3D10_COLOR_WRITE_ENABLE_GREEN",
-    "D3D10_COLOR_WRITE_ENABLE_BLUE",
-    "D3D10_COLOR_WRITE_ENABLE_ALPHA",
-    "D3D10_COLOR_WRITE_ENABLE_ALL",
-    "D3D10_COLOR_WRITE_ENABLE_RED",
-    "|",
-    "D3D10_COLOR_WRITE_ENABLE_GREEN",
-    "|",
-    "D3D10_COLOR_WRITE_ENABLE_BLUE",
-    "|",
-    "D3D10_COLOR_WRITE_ENABLE_ALPHA",
-    ")",
-])
-
-D3D10_TEXTURECUBE_FACE = Enum("D3D10_TEXTURECUBE_FACE", [
-    "D3D10_TEXTURECUBE_FACE_POSITIVE_X",
-    "D3D10_TEXTURECUBE_FACE_NEGATIVE_X",
-    "D3D10_TEXTURECUBE_FACE_POSITIVE_Y",
-    "D3D10_TEXTURECUBE_FACE_NEGATIVE_Y",
-    "D3D10_TEXTURECUBE_FACE_POSITIVE_Z",
-    "D3D10_TEXTURECUBE_FACE_NEGATIVE_Z",
-])
-
-D3D10_ASYNC_GETDATA_FLAG = Enum("D3D10_ASYNC_GETDATA_FLAG", [
-    "D3D10_ASYNC_GETDATA_DONOTFLUSH",
-])
-
-D3D10_FILTER_TYPE = Enum("D3D10_FILTER_TYPE", [
-    "D3D10_FILTER_TYPE_POINT",
-    "D3D10_FILTER_TYPE_LINEAR",
-])
-
-D3D10_QUERY_MISC_FLAG = Enum("D3D10_QUERY_MISC_FLAG", [
-    "D3D10_QUERY_MISC_PREDICATEHINT",
-])
-
-D3D10_QUERY_DATA_TIMESTAMP_DISJOINT = Struct("D3D10_QUERY_DATA_TIMESTAMP_DISJOINT", [
-    (UINT64, "Frequency"),
-    (BOOL, "Disjoint"),
-])
-
-D3D10_QUERY_DATA_PIPELINE_STATISTICS = Struct("D3D10_QUERY_DATA_PIPELINE_STATISTICS", [
-    (UINT64, "IAVertices"),
-    (UINT64, "IAPrimitives"),
-    (UINT64, "VSInvocations"),
-    (UINT64, "GSInvocations"),
-    (UINT64, "GSPrimitives"),
-    (UINT64, "CInvocations"),
-    (UINT64, "CPrimitives"),
-    (UINT64, "PSInvocations"),
-])
-
-D3D10_QUERY_DATA_SO_STATISTICS = Struct("D3D10_QUERY_DATA_SO_STATISTICS", [
-    (UINT64, "NumPrimitivesWritten"),
-    (UINT64, "PrimitivesStorageNeeded"),
-])
-
-D3D10_CREATE_DEVICE_FLAG = Enum("D3D10_CREATE_DEVICE_FLAG", [
-    "D3D10_CREATE_DEVICE_SINGLETHREADED",
-    "D3D10_CREATE_DEVICE_DEBUG",
-    "D3D10_CREATE_DEVICE_SWITCH_TO_REF",
-    "D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS",
-    "D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP",
-    "D3D10_CREATE_DEVICE_BGRA_SUPPORT",
-    "D3D10_CREATE_DEVICE_STRICT_VALIDATION",
-])
-
-ID3D10DeviceChild = Interface("ID3D10DeviceChild", IUnknown)
-ID3D10Resource = Interface("ID3D10Resource", ID3D10DeviceChild)
-ID3D10Buffer = Interface("ID3D10Buffer", ID3D10Resource)
-ID3D10Texture1D = Interface("ID3D10Texture1D", ID3D10Resource)
-ID3D10Texture2D = Interface("ID3D10Texture2D", ID3D10Resource)
-ID3D10Texture3D = Interface("ID3D10Texture3D", ID3D10Resource)
-ID3D10View = Interface("ID3D10View", ID3D10DeviceChild)
-ID3D10DepthStencilView = Interface("ID3D10DepthStencilView", ID3D10View)
-ID3D10RenderTargetView = Interface("ID3D10RenderTargetView", ID3D10View)
-ID3D10ShaderResourceView = Interface("ID3D10ShaderResourceView", ID3D10View)
-ID3D10BlendState = Interface("ID3D10BlendState", ID3D10DeviceChild)
-ID3D10DepthStencilState = Interface("ID3D10DepthStencilState", ID3D10DeviceChild)
-ID3D10GeometryShader = Interface("ID3D10GeometryShader", ID3D10DeviceChild)
-ID3D10InputLayout = Interface("ID3D10InputLayout", ID3D10DeviceChild)
-ID3D10PixelShader = Interface("ID3D10PixelShader", ID3D10DeviceChild)
-ID3D10RasterizerState = Interface("ID3D10RasterizerState", ID3D10DeviceChild)
-ID3D10SamplerState = Interface("ID3D10SamplerState", ID3D10DeviceChild)
-ID3D10VertexShader = Interface("ID3D10VertexShader", ID3D10DeviceChild)
-ID3D10Asynchronous = Interface("ID3D10Asynchronous", ID3D10DeviceChild)
-ID3D10Counter = Interface("ID3D10Counter", ID3D10Asynchronous)
-ID3D10Query = Interface("ID3D10Query", ID3D10Asynchronous)
-ID3D10Predicate = Interface("ID3D10Predicate", ID3D10Query)
-ID3D10Device = Interface("ID3D10Device", IUnknown)
-ID3D10Multithread = Interface("ID3D10Multithread", IUnknown)
-
-ID3D10DeviceChild.methods += [
-    Method(Void, "GetDevice", [Out(OpaquePointer(OpaquePointer(ID3D10Device)), "ppDevice")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(OpaquePointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "DataSize"), (OpaquePointer(Const(Void)), "pData")]),
-    Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "pData")]),
-]
-
-ID3D10Resource.methods += [
-    Method(Void, "GetType", [Out(OpaquePointer(D3D10_RESOURCE_DIMENSION), "rType")]),
-    Method(Void, "SetEvictionPriority", [(UINT, "EvictionPriority")]),
-    Method(UINT, "GetEvictionPriority", []),
-]
-
-ID3D10Buffer.methods += [
-    Method(HRESULT, "Map", [(D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(OpaquePointer(Void)), "ppData")]),
-    Method(Void, "Unmap", []),
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_BUFFER_DESC), "pDesc")]),
-]
-
-ID3D10Texture1D.methods += [
-    Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(OpaquePointer(Void)), "ppData")]),
-    Method(Void, "Unmap", [(UINT, "Subresource")]),
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_TEXTURE1D_DESC), "pDesc")]),
-]
-
-ID3D10Texture2D.methods += [
-    Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(D3D10_MAPPED_TEXTURE2D), "pMappedTex2D")]),
-    Method(Void, "Unmap", [(UINT, "Subresource")]),
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_TEXTURE2D_DESC), "pDesc")]),
-]
-
-ID3D10Texture3D.methods += [
-    Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(D3D10_MAPPED_TEXTURE3D), "pMappedTex3D")]),
-    Method(Void, "Unmap", [(UINT, "Subresource")]),
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_TEXTURE3D_DESC), "pDesc")]),
-]
-
-ID3D10View.methods += [
-    Method(Void, "GetResource", [Out(OpaquePointer(OpaquePointer(ID3D10Resource)), "ppResource")]),
-]
-
-ID3D10DepthStencilView.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_DEPTH_STENCIL_VIEW_DESC), "pDesc")]),
-]
-
-ID3D10RenderTargetView.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_RENDER_TARGET_VIEW_DESC), "pDesc")]),
-]
-
-ID3D10ShaderResourceView.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_SHADER_RESOURCE_VIEW_DESC), "pDesc")]),
-]
-
-ID3D10BlendState.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_BLEND_DESC), "pDesc")]),
-]
-
-ID3D10DepthStencilState.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_DEPTH_STENCIL_DESC), "pDesc")]),
-]
-
-ID3D10GeometryShader.methods += [
-]
-
-ID3D10InputLayout.methods += [
-]
-
-ID3D10PixelShader.methods += [
-]
-
-ID3D10RasterizerState.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_RASTERIZER_DESC), "pDesc")]),
-]
-
-ID3D10SamplerState.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_SAMPLER_DESC), "pDesc")]),
-]
-
-ID3D10VertexShader.methods += [
-]
-
-ID3D10Asynchronous.methods += [
-    Method(Void, "Begin", []),
-    Method(Void, "End", []),
-    Method(HRESULT, "GetData", [Out(OpaquePointer(Void), "pData"), (UINT, "DataSize"), (UINT, "GetDataFlags")]),
-    Method(UINT, "GetDataSize", []),
-]
-
-ID3D10Counter.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_COUNTER_DESC), "pDesc")]),
-]
-
-ID3D10Query.methods += [
-    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_QUERY_DESC), "pDesc")]),
-]
-
-ID3D10Predicate.methods += [
-]
-
-ID3D10Device.methods += [
-    Method(Void, "VSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppConstantBuffers")]),
-    Method(Void, "PSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10ShaderResourceView)), "NumViews"), "ppShaderResourceViews")]),
-    Method(Void, "PSSetShader", [(OpaquePointer(ID3D10PixelShader), "pPixelShader")]),
-    Method(Void, "PSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (Array(Const(OpaquePointer(ID3D10SamplerState)), "NumSamplers"), "ppSamplers")]),
-    Method(Void, "VSSetShader", [(OpaquePointer(ID3D10VertexShader), "pVertexShader")]),
-    Method(Void, "DrawIndexed", [(UINT, "IndexCount"), (UINT, "StartIndexLocation"), (INT, "BaseVertexLocation")]),
-    Method(Void, "Draw", [(UINT, "VertexCount"), (UINT, "StartVertexLocation")]),
-    Method(Void, "PSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppConstantBuffers")]),
-    Method(Void, "IASetInputLayout", [(OpaquePointer(ID3D10InputLayout), "pInputLayout")]),
-    Method(Void, "IASetVertexBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppVertexBuffers"), (OpaquePointer(Const(UINT)), "pStrides"), (OpaquePointer(Const(UINT)), "pOffsets")]),
-    Method(Void, "IASetIndexBuffer", [(OpaquePointer(ID3D10Buffer), "pIndexBuffer"), (DXGI_FORMAT, "Format"), (UINT, "Offset")]),
-    Method(Void, "DrawIndexedInstanced", [(UINT, "IndexCountPerInstance"), (UINT, "InstanceCount"), (UINT, "StartIndexLocation"), (INT, "BaseVertexLocation"), (UINT, "StartInstanceLocation")]),
-    Method(Void, "DrawInstanced", [(UINT, "VertexCountPerInstance"), (UINT, "InstanceCount"), (UINT, "StartVertexLocation"), (UINT, "StartInstanceLocation")]),
-    Method(Void, "GSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppConstantBuffers")]),
-    Method(Void, "GSSetShader", [(OpaquePointer(ID3D10GeometryShader), "pShader")]),
-    Method(Void, "IASetPrimitiveTopology", [(D3D10_PRIMITIVE_TOPOLOGY, "Topology")]),
-    Method(Void, "VSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (OpaquePointer(Const(OpaquePointer(ID3D10ShaderResourceView))), "ppShaderResourceViews")]),
-    Method(Void, "VSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (OpaquePointer(Const(OpaquePointer(ID3D10SamplerState))), "ppSamplers")]),
-    Method(Void, "SetPredication", [(OpaquePointer(ID3D10Predicate), "pPredicate"), (BOOL, "PredicateValue")]),
-    Method(Void, "GSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (OpaquePointer(Const(OpaquePointer(ID3D10ShaderResourceView))), "ppShaderResourceViews")]),
-    Method(Void, "GSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (OpaquePointer(Const(OpaquePointer(ID3D10SamplerState))), "ppSamplers")]),
-    Method(Void, "OMSetRenderTargets", [(UINT, "NumViews"), (OpaquePointer(Const(OpaquePointer(ID3D10RenderTargetView))), "ppRenderTargetViews"), (OpaquePointer(ID3D10DepthStencilView), "pDepthStencilView")]),
-    Method(Void, "OMSetBlendState", [(OpaquePointer(ID3D10BlendState), "pBlendState"), (Array(Const(FLOAT), "4"), "BlendFactor"), (UINT, "SampleMask")]),
-    Method(Void, "OMSetDepthStencilState", [(OpaquePointer(ID3D10DepthStencilState), "pDepthStencilState"), (UINT, "StencilRef")]),
-    Method(Void, "SOSetTargets", [(UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppSOTargets"), (OpaquePointer(Const(UINT)), "pOffsets")]),
-    Method(Void, "DrawAuto", []),
-    Method(Void, "RSSetState", [(OpaquePointer(ID3D10RasterizerState), "pRasterizerState")]),
-    Method(Void, "RSSetViewports", [(UINT, "NumViewports"), (OpaquePointer(Const(D3D10_VIEWPORT)), "pViewports")]),
-    Method(Void, "RSSetScissorRects", [(UINT, "NumRects"), (OpaquePointer(Const(D3D10_RECT)), "pRects")]),
-    Method(Void, "CopySubresourceRegion", [(OpaquePointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (UINT, "DstX"), (UINT, "DstY"), (UINT, "DstZ"), (OpaquePointer(ID3D10Resource), "pSrcResource"), (UINT, "SrcSubresource"), (OpaquePointer(Const(D3D10_BOX)), "pSrcBox")]),
-    Method(Void, "CopyResource", [(OpaquePointer(ID3D10Resource), "pDstResource"), (OpaquePointer(ID3D10Resource), "pSrcResource")]),
-    Method(Void, "UpdateSubresource", [(OpaquePointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (OpaquePointer(Const(D3D10_BOX)), "pDstBox"), (OpaquePointer(Const(Void)), "pSrcData"), (UINT, "SrcRowPitch"), (UINT, "SrcDepthPitch")]),
-    Method(Void, "ClearRenderTargetView", [(OpaquePointer(ID3D10RenderTargetView), "pRenderTargetView"), (Array(Const(FLOAT), "4"), "ColorRGBA")]),
-    Method(Void, "ClearDepthStencilView", [(OpaquePointer(ID3D10DepthStencilView), "pDepthStencilView"), (UINT, "ClearFlags"), (FLOAT, "Depth"), (UINT8, "Stencil")]),
-    Method(Void, "GenerateMips", [(OpaquePointer(ID3D10ShaderResourceView), "pShaderResourceView")]),
-    Method(Void, "ResolveSubresource", [(OpaquePointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (OpaquePointer(ID3D10Resource), "pSrcResource"), (UINT, "SrcSubresource"), (DXGI_FORMAT, "Format")]),
-    Method(Void, "VSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppConstantBuffers")]),
-    Method(Void, "PSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppShaderResourceViews")]),
-    Method(Void, "PSGetShader", [Out(OpaquePointer(OpaquePointer(ID3D10PixelShader)), "ppPixelShader")]),
-    Method(Void, "PSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplers")]),
-    Method(Void, "VSGetShader", [Out(OpaquePointer(OpaquePointer(ID3D10VertexShader)), "ppVertexShader")]),
-    Method(Void, "PSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppConstantBuffers")]),
-    Method(Void, "IAGetInputLayout", [Out(OpaquePointer(OpaquePointer(ID3D10InputLayout)), "ppInputLayout")]),
-    Method(Void, "IAGetVertexBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppVertexBuffers"), Out(OpaquePointer(UINT), "pStrides"), Out(OpaquePointer(UINT), "pOffsets")]),
-    Method(Void, "IAGetIndexBuffer", [Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "pIndexBuffer"), Out(OpaquePointer(DXGI_FORMAT), "Format"), Out(OpaquePointer(UINT), "Offset")]),
-    Method(Void, "GSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppConstantBuffers")]),
-    Method(Void, "GSGetShader", [Out(OpaquePointer(OpaquePointer(ID3D10GeometryShader)), "ppGeometryShader")]),
-    Method(Void, "IAGetPrimitiveTopology", [Out(OpaquePointer(D3D10_PRIMITIVE_TOPOLOGY), "pTopology")]),
-    Method(Void, "VSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppShaderResourceViews")]),
-    Method(Void, "VSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplers")]),
-    Method(Void, "GetPredication", [Out(OpaquePointer(OpaquePointer(ID3D10Predicate)), "ppPredicate"), Out(OpaquePointer(BOOL), "pPredicateValue")]),
-    Method(Void, "GSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppShaderResourceViews")]),
-    Method(Void, "GSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplers")]),
-    Method(Void, "OMGetRenderTargets", [(UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10RenderTargetView)), "ppRenderTargetViews"), Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilView)), "ppDepthStencilView")]),
-    Method(Void, "OMGetBlendState", [Out(OpaquePointer(OpaquePointer(ID3D10BlendState)), "ppBlendState"), Out(Array(FLOAT, "4"), "BlendFactor"), Out(OpaquePointer(UINT), "pSampleMask")]),
-    Method(Void, "OMGetDepthStencilState", [Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilState)), "ppDepthStencilState"), Out(OpaquePointer(UINT), "pStencilRef")]),
-    Method(Void, "SOGetTargets", [(UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppSOTargets"), Out(OpaquePointer(UINT), "pOffsets")]),
-    Method(Void, "RSGetState", [Out(OpaquePointer(OpaquePointer(ID3D10RasterizerState)), "ppRasterizerState")]),
-    Method(Void, "RSGetViewports", [Out(OpaquePointer(UINT), "NumViewports"), Out(OpaquePointer(D3D10_VIEWPORT), "pViewports")]),
-    Method(Void, "RSGetScissorRects", [Out(OpaquePointer(UINT), "NumRects"), Out(OpaquePointer(D3D10_RECT), "pRects")]),
-    Method(HRESULT, "GetDeviceRemovedReason", []),
-    Method(HRESULT, "SetExceptionMode", [(UINT, "RaiseFlags")]),
-    Method(UINT, "GetExceptionMode", []),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(OpaquePointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "DataSize"), (OpaquePointer(Const(Void)), "pData")]),
-    Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "pData")]),
-    Method(Void, "ClearState", []),
-    Method(Void, "Flush", []),
-    Method(HRESULT, "CreateBuffer", [(OpaquePointer(Const(D3D10_BUFFER_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppBuffer")]),
-    Method(HRESULT, "CreateTexture1D", [(OpaquePointer(Const(D3D10_TEXTURE1D_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Texture1D)), "ppTexture1D")]),
-    Method(HRESULT, "CreateTexture2D", [(OpaquePointer(Const(D3D10_TEXTURE2D_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Texture2D)), "ppTexture2D")]),
-    Method(HRESULT, "CreateTexture3D", [(OpaquePointer(Const(D3D10_TEXTURE3D_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Texture3D)), "ppTexture3D")]),
-    Method(HRESULT, "CreateShaderResourceView", [(OpaquePointer(ID3D10Resource), "pResource"), (OpaquePointer(Const(D3D10_SHADER_RESOURCE_VIEW_DESC)), "pDesc"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppSRView")]),
-    Method(HRESULT, "CreateRenderTargetView", [(OpaquePointer(ID3D10Resource), "pResource"), (OpaquePointer(Const(D3D10_RENDER_TARGET_VIEW_DESC)), "pDesc"), Out(OpaquePointer(OpaquePointer(ID3D10RenderTargetView)), "ppRTView")]),
-    Method(HRESULT, "CreateDepthStencilView", [(OpaquePointer(ID3D10Resource), "pResource"), (OpaquePointer(Const(D3D10_DEPTH_STENCIL_VIEW_DESC)), "pDesc"), Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilView)), "ppDepthStencilView")]),
-    Method(HRESULT, "CreateInputLayout", [(OpaquePointer(Const(D3D10_INPUT_ELEMENT_DESC)), "pInputElementDescs"), (UINT, "NumElements"), (OpaquePointer(Const(Void)), "pShaderBytecodeWithInputSignature"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10InputLayout)), "ppInputLayout")]),
-    Method(HRESULT, "CreateVertexShader", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10VertexShader)), "ppVertexShader")]),
-    Method(HRESULT, "CreateGeometryShader", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10GeometryShader)), "ppGeometryShader")]),
-    Method(HRESULT, "CreateGeometryShaderWithStreamOutput", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), (OpaquePointer(Const(D3D10_SO_DECLARATION_ENTRY)), "pSODeclaration"), (UINT, "NumEntries"), (UINT, "OutputStreamStride"), Out(OpaquePointer(OpaquePointer(ID3D10GeometryShader)), "ppGeometryShader")]),
-    Method(HRESULT, "CreatePixelShader", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10PixelShader)), "ppPixelShader")]),
-    Method(HRESULT, "CreateBlendState", [(OpaquePointer(Const(D3D10_BLEND_DESC)), "pBlendStateDesc"), Out(OpaquePointer(OpaquePointer(ID3D10BlendState)), "ppBlendState")]),
-    Method(HRESULT, "CreateDepthStencilState", [(OpaquePointer(Const(D3D10_DEPTH_STENCIL_DESC)), "pDepthStencilDesc"), Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilState)), "ppDepthStencilState")]),
-    Method(HRESULT, "CreateRasterizerState", [(OpaquePointer(Const(D3D10_RASTERIZER_DESC)), "pRasterizerDesc"), Out(OpaquePointer(OpaquePointer(ID3D10RasterizerState)), "ppRasterizerState")]),
-    Method(HRESULT, "CreateSamplerState", [(OpaquePointer(Const(D3D10_SAMPLER_DESC)), "pSamplerDesc"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplerState")]),
-    Method(HRESULT, "CreateQuery", [(OpaquePointer(Const(D3D10_QUERY_DESC)), "pQueryDesc"), Out(OpaquePointer(OpaquePointer(ID3D10Query)), "ppQuery")]),
-    Method(HRESULT, "CreatePredicate", [(OpaquePointer(Const(D3D10_QUERY_DESC)), "pPredicateDesc"), Out(OpaquePointer(OpaquePointer(ID3D10Predicate)), "ppPredicate")]),
-    Method(HRESULT, "CreateCounter", [(OpaquePointer(Const(D3D10_COUNTER_DESC)), "pCounterDesc"), Out(OpaquePointer(OpaquePointer(ID3D10Counter)), "ppCounter")]),
-    Method(HRESULT, "CheckFormatSupport", [(DXGI_FORMAT, "Format"), Out(OpaquePointer(UINT), "pFormatSupport")]),
-    Method(HRESULT, "CheckMultisampleQualityLevels", [(DXGI_FORMAT, "Format"), (UINT, "SampleCount"), Out(OpaquePointer(UINT), "pNumQualityLevels")]),
-    Method(Void, "CheckCounterInfo", [Out(OpaquePointer(D3D10_COUNTER_INFO), "pCounterInfo")]),
-    Method(HRESULT, "CheckCounter", [(OpaquePointer(Const(D3D10_COUNTER_DESC)), "pDesc"), Out(OpaquePointer(D3D10_COUNTER_TYPE), "pType"), Out(OpaquePointer(UINT), "pActiveCounters"), Out(LPSTR, "szName"), Out(OpaquePointer(UINT), "pNameLength"), Out(LPSTR, "szUnits"), Out(OpaquePointer(UINT), "pUnitsLength"), Out(LPSTR, "szDescription"), Out(OpaquePointer(UINT), "pDescriptionLength")]),
-    Method(UINT, "GetCreationFlags", []),
-    Method(HRESULT, "OpenSharedResource", [(HANDLE, "hResource"), (REFIID, "ReturnedInterface"), Out(OpaquePointer(OpaquePointer(Void)), "ppResource")]),
-    Method(Void, "SetTextFilterSize", [(UINT, "Width"), (UINT, "Height")]),
-    Method(Void, "GetTextFilterSize", [Out(OpaquePointer(UINT), "pWidth"), Out(OpaquePointer(UINT), "pHeight")]),
-]
-
-ID3D10Multithread.methods += [
-    Method(Void, "Enter", []),
-    Method(Void, "Leave", []),
-    Method(BOOL, "SetMultithreadProtected", [(BOOL, "bMTProtect")]),
-    Method(BOOL, "GetMultithreadProtected", []),
-]
-
diff --git a/d3d10_1.py b/d3d10_1.py
deleted file mode 100644 (file)
index ebf2896..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d10_1.h"""
-
-from winapi import *
-
-ID3D10Blob = Interface("ID3D10Blob", IUnknown)
-LPD3D10BLOB = Pointer(ID3D10Blob)
-
-ID3D10Blob.methods += [
-    Method(LPVOID, "GetBufferPointer", []),
-    Method(SIZE_T, "GetBufferSize", []),
-]
-
-D3D10_DRIVER_TYPE = Enum("D3D10_DRIVER_TYPE", [
-    "D3D10_DRIVER_TYPE_HARDWARE",
-    "D3D10_DRIVER_TYPE_REFERENCE",
-    "D3D10_DRIVER_TYPE_NULL",
-    "D3D10_DRIVER_TYPE_SOFTWARE",
-    "D3D10_DRIVER_TYPE_WARP",
-])
-
-D3D10_FEATURE_LEVEL1 = Enum("D3D10_FEATURE_LEVEL1", [
-    "D3D10_FEATURE_LEVEL_10_0",
-    "D3D10_FEATURE_LEVEL_10_1",
-       "D3D10_FEATURE_LEVEL_9_1",
-       "D3D10_FEATURE_LEVEL_9_2",
-       "D3D10_FEATURE_LEVEL_9_3",
-])
-
-# TODO
-IDXGIAdapter = Alias("IDXGIAdapter", Void)
-ID3D10Device1 = Alias("ID3D10Device1", Void)
-IDXGISwapChain = Alias("IDXGISwapChain", Void)
-DXGI_SWAP_CHAIN_DESC = Alias("DXGI_SWAP_CHAIN_DESC", Void)
-
-d3d10_1 = Dll("d3d10")
-d3d10_1.functions += [
-    StdFunction(HRESULT, "D3D10CreateDevice1", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (D3D10_FEATURE_LEVEL1, "HardwareLevel"), (UINT, "SDKVersion"), (OutPointer(Pointer(ID3D10Device1)), "ppDevice")]),
-    StdFunction(HRESULT, "D3D10CreateDeviceAndSwapChain1", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (D3D10_FEATURE_LEVEL1, "HardwareLevel"), (UINT, "SDKVersion"), (Pointer(DXGI_SWAP_CHAIN_DESC), "pSwapChainDesc"), (OutPointer(Pointer(IDXGISwapChain)), "ppSwapChain"), (OutPointer(Pointer(ID3D10Device1)), "ppDevice")]),
-    StdFunction(HRESULT, "D3D10CreateBlob", [(SIZE_T, "NumBytes"), (OutPointer(LPD3D10BLOB), "ppBuffer")]),
-]
-
-if __name__ == '__main__':
-    print '#include <windows.h>'
-    print '#include <tchar.h>'
-    print
-    print '#include "compat.h"'
-    print
-    print '#include <d3d10_1.h>'
-    print
-    print '#include "trace_writer.hpp"'
-    print
-    wrap()
diff --git a/d3d10misc.py b/d3d10misc.py
deleted file mode 100644 (file)
index 1e1580f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d10misc.h"""
-
-from winapi import *
-from d3d10 import *
-
-
-ID3D10Blob = Interface("ID3D10Blob", IUnknown)
-LPD3D10BLOB = Pointer(ID3D10Blob)
-
-ID3D10Blob.methods += [
-    Method(LPVOID, "GetBufferPointer", []),
-    Method(SIZE_T, "GetBufferSize", []),
-]
-
-D3D10_DRIVER_TYPE = Enum("D3D10_DRIVER_TYPE", [
-    "D3D10_DRIVER_TYPE_HARDWARE",
-    "D3D10_DRIVER_TYPE_REFERENCE",
-    "D3D10_DRIVER_TYPE_NULL",
-    "D3D10_DRIVER_TYPE_SOFTWARE",
-    "D3D10_DRIVER_TYPE_WARP",
-])
-
-
-d3d10 = API("d3d10")
-d3d10.add_functions([
-    StdFunction(HRESULT, "D3D10CreateDevice", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (UINT, "SDKVersion"), Out(Pointer(Pointer(ID3D10Device)), "ppDevice")]),
-    StdFunction(HRESULT, "D3D10CreateDeviceAndSwapChain", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (UINT, "SDKVersion"), (Pointer(DXGI_SWAP_CHAIN_DESC), "pSwapChainDesc"), Out(Pointer(Pointer(IDXGISwapChain)), "ppSwapChain"), Out(Pointer(Pointer(ID3D10Device)), "ppDevice")]),
-    StdFunction(HRESULT, "D3D10CreateBlob", [(SIZE_T, "NumBytes"), Out(Pointer(LPD3D10BLOB), "ppBuffer")]),
-])
index 4cb7904a9c67454a0fb5131904c4e948d8a1db0b..edcf38a8df6ab4c19e2ca635378e2c3755878e6e 100644 (file)
@@ -24,7 +24,7 @@
 ##########################################################################/
 
 
-from d3d10misc import d3d10
+from specs.d3d10misc import d3d10
 from trace import DllTracer
 
 
diff --git a/d3d8.py b/d3d8.py
deleted file mode 100644 (file)
index 0713696..0000000
--- a/d3d8.py
+++ /dev/null
@@ -1,282 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d8.h"""
-
-from winapi import *
-from d3d8types import *
-from d3d8caps import *
-
-HRESULT = Enum("HRESULT", [
-    "D3D_OK",
-    "D3DERR_WRONGTEXTUREFORMAT",
-    "D3DERR_UNSUPPORTEDCOLOROPERATION",
-    "D3DERR_UNSUPPORTEDCOLORARG",
-    "D3DERR_UNSUPPORTEDALPHAOPERATION",
-    "D3DERR_UNSUPPORTEDALPHAARG",
-    "D3DERR_TOOMANYOPERATIONS",
-    "D3DERR_CONFLICTINGTEXTUREFILTER",
-    "D3DERR_UNSUPPORTEDFACTORVALUE",
-    "D3DERR_CONFLICTINGRENDERSTATE",
-    "D3DERR_UNSUPPORTEDTEXTUREFILTER",
-    "D3DERR_CONFLICTINGTEXTUREPALETTE",
-    "D3DERR_DRIVERINTERNALERROR",
-    "D3DERR_NOTFOUND",
-    "D3DERR_MOREDATA",
-    "D3DERR_DEVICELOST",
-    "D3DERR_DEVICENOTRESET",
-    "D3DERR_NOTAVAILABLE",
-    "D3DERR_OUTOFVIDEOMEMORY",
-    "D3DERR_INVALIDDEVICE",
-    "D3DERR_INVALIDCALL",
-    "D3DERR_DRIVERINVALIDCALL",
-])
-
-IDirect3D8 = Interface("IDirect3D8", IUnknown)
-IDirect3DDevice8 = Interface("IDirect3DDevice8", IUnknown)
-IDirect3DSwapChain8 = Interface("IDirect3DSwapChain8", IUnknown)
-IDirect3DResource8 = Interface("IDirect3DResource8", IUnknown)
-IDirect3DBaseTexture8 = Interface("IDirect3DBaseTexture8", IDirect3DResource8)
-IDirect3DTexture8 = Interface("IDirect3DTexture8", IDirect3DBaseTexture8)
-IDirect3DVolumeTexture8 = Interface("IDirect3DVolumeTexture8", IDirect3DBaseTexture8)
-IDirect3DCubeTexture8 = Interface("IDirect3DCubeTexture8", IDirect3DBaseTexture8)
-IDirect3DVertexBuffer8 = Interface("IDirect3DVertexBuffer8", IDirect3DResource8)
-IDirect3DIndexBuffer8 = Interface("IDirect3DIndexBuffer8", IDirect3DResource8)
-IDirect3DSurface8 = Interface("IDirect3DSurface8", IUnknown)
-IDirect3DVolume8 = Interface("IDirect3DVolume8", IUnknown)
-
-PDIRECT3D8 = WrapPointer(IDirect3D8)
-PDIRECT3DDEVICE8 = WrapPointer(IDirect3DDevice8)
-PDIRECT3DSWAPCHAIN8 = WrapPointer(IDirect3DSwapChain8)
-PDIRECT3DRESOURCE8 = WrapPointer(IDirect3DResource8)
-PDIRECT3DBASETEXTURE8 = WrapPointer(IDirect3DBaseTexture8)
-PDIRECT3DTEXTURE8 = WrapPointer(IDirect3DTexture8)
-PDIRECT3DVOLUMETEXTURE8 = WrapPointer(IDirect3DVolumeTexture8)
-PDIRECT3DCUBETEXTURE8 = WrapPointer(IDirect3DCubeTexture8)
-PDIRECT3DVERTEXBUFFER8 = WrapPointer(IDirect3DVertexBuffer8)
-PDIRECT3DINDEXBUFFER8 = WrapPointer(IDirect3DIndexBuffer8)
-PDIRECT3DSURFACE8 = WrapPointer(IDirect3DSurface8)
-PDIRECT3DVOLUME8 = WrapPointer(IDirect3DVolume8)
-
-IDirect3D8.methods += [
-    Method(HRESULT, "RegisterSoftwareDevice", [(OpaquePointer(Void), "pInitializeFunction")]),
-    Method(UINT, "GetAdapterCount", []),
-    Method(HRESULT, "GetAdapterIdentifier", [(UINT, "Adapter"), (DWORD, "Flags"), Out(Pointer(D3DADAPTER_IDENTIFIER8), "pIdentifier")]),
-    Method(UINT, "GetAdapterModeCount", [(UINT, "Adapter")]),
-    Method(HRESULT, "EnumAdapterModes", [(UINT, "Adapter"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "GetAdapterDisplayMode", [(UINT, "Adapter"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "CheckDeviceType", [(UINT, "Adapter"), (D3DDEVTYPE, "CheckType"), (D3DFORMAT, "DisplayFormat"), (D3DFORMAT, "BackBufferFormat"), (BOOL, "Windowed")]),
-    Method(HRESULT, "CheckDeviceFormat", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (DWORD, "Usage"), (D3DRESOURCETYPE, "RType"), (D3DFORMAT, "CheckFormat")]),
-    Method(HRESULT, "CheckDeviceMultiSampleType", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SurfaceFormat"), (BOOL, "Windowed"), (D3DMULTISAMPLE_TYPE, "MultiSampleType")]),
-    Method(HRESULT, "CheckDepthStencilMatch", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "RenderTargetFormat"), (D3DFORMAT, "DepthStencilFormat")]),
-    Method(HRESULT, "GetDeviceCaps", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), Out(Pointer(D3DCAPS8), "pCaps")]),
-    Method(HMONITOR, "GetAdapterMonitor", [(UINT, "Adapter")]),
-    Method(HRESULT, "CreateDevice", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (DWORD, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DDEVICE8), "ppReturnedDeviceInterface")]),
-]
-
-IDirect3DDevice8.methods += [
-    Method(HRESULT, "TestCooperativeLevel", []),
-    Method(UINT, "GetAvailableTextureMem", []),
-    Method(HRESULT, "ResourceManagerDiscardBytes", [(DWORD, "Bytes")]),
-    Method(HRESULT, "GetDirect3D", [Out(Pointer(PDIRECT3D8), "ppD3D8")]),
-    Method(HRESULT, "GetDeviceCaps", [Out(Pointer(D3DCAPS8), "pCaps")]),
-    Method(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")]),
-    Method(HRESULT, "SetCursorProperties", [(UINT, "XHotSpot"), (UINT, "YHotSpot"), (PDIRECT3DSURFACE8, "pCursorBitmap")]),
-    # XXX: There are different signatures of
-    # IDirect3DDevice8::SetCursorPosition depending on the DXSDK version
-    Method(Void, "SetCursorPosition", [(UINT, "XScreenSpace"), (UINT, "YScreenSpace"), (DWORD, "Flags")]),
-    Method(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (DWORD, "Flags")]),
-    Method(BOOL, "ShowCursor", [(BOOL, "bShow")]),
-    Method(HRESULT, "CreateAdditionalSwapChain", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DSWAPCHAIN8), "pSwapChain")]),
-    Method(HRESULT, "Reset", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]),
-    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]),
-    Method(HRESULT, "GetBackBuffer", [(UINT, "BackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE8), "ppBackBuffer")]),
-    Method(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]),
-    Method(Void, "SetGammaRamp", [(DWORD, "Flags"), (ConstPointer(D3DGAMMARAMP), "pRamp")]),
-    Method(Void, "GetGammaRamp", [Out(Pointer(D3DGAMMARAMP), "pRamp")]),
-    Method(HRESULT, "CreateTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DTEXTURE8), "ppTexture")]),
-    Method(HRESULT, "CreateVolumeTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Depth"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVOLUMETEXTURE8), "ppVolumeTexture")]),
-    Method(HRESULT, "CreateCubeTexture", [(UINT, "EdgeLength"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DCUBETEXTURE8), "ppCubeTexture")]),
-    Method(HRESULT, "CreateVertexBuffer", [(UINT, "Length"), (DWORD, "Usage"), (DWORD, "FVF"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppVertexBuffer")]),
-    Method(HRESULT, "CreateIndexBuffer", [(UINT, "Length"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexBuffer")]),
-    Method(HRESULT, "CreateRenderTarget", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]),
-    Method(HRESULT, "CreateDepthStencilSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]),
-    Method(HRESULT, "CreateImageSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]),
-    Method(HRESULT, "CopyRects", [(PDIRECT3DSURFACE8, "pSourceSurface"), (ConstPointer(RECT), "pSourceRectsArray"), (UINT, "cRects"), (PDIRECT3DSURFACE8, "pDestinationSurface"), (ConstPointer(POINT), "pDestPointsArray")]),
-    Method(HRESULT, "UpdateTexture", [(PDIRECT3DBASETEXTURE8, "pSourceTexture"), (PDIRECT3DBASETEXTURE8, "pDestinationTexture")]),
-    Method(HRESULT, "GetFrontBuffer", [(PDIRECT3DSURFACE8, "pDestSurface")]),
-    Method(HRESULT, "SetRenderTarget", [(PDIRECT3DSURFACE8, "pRenderTarget"), (PDIRECT3DSURFACE8, "pNewZStencil")]),
-    Method(HRESULT, "GetRenderTarget", [Out(Pointer(PDIRECT3DSURFACE8), "ppRenderTarget")]),
-    Method(HRESULT, "GetDepthStencilSurface", [Out(Pointer(PDIRECT3DSURFACE8), "ppZStencilSurface")]),
-    Method(HRESULT, "BeginScene", []),
-    Method(HRESULT, "EndScene", []),
-    Method(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (D3DCLEAR, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]),
-    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
-    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")]),
-    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
-    Method(HRESULT, "SetViewport", [(ConstPointer(D3DVIEWPORT8), "pViewport")]),
-    Method(HRESULT, "GetViewport", [Out(Pointer(D3DVIEWPORT8), "pViewport")]),
-    Method(HRESULT, "SetMaterial", [(ConstPointer(D3DMATERIAL8), "pMaterial")]),
-    Method(HRESULT, "GetMaterial", [Out(Pointer(D3DMATERIAL8), "pMaterial")]),
-    Method(HRESULT, "SetLight", [(DWORD, "Index"), (ConstPointer(D3DLIGHT8), "pLight")]),
-    Method(HRESULT, "GetLight", [(DWORD, "Index"), Out(Pointer(D3DLIGHT8), "pLight")]),
-    Method(HRESULT, "LightEnable", [(DWORD, "Index"), (BOOL, "Enable")]),
-    Method(HRESULT, "GetLightEnable", [(DWORD, "Index"), Out(Pointer(BOOL), "pEnable")]),
-    Method(HRESULT, "SetClipPlane", [(DWORD, "Index"), (ConstPointer(Float), "pPlane")]),
-    Method(HRESULT, "GetClipPlane", [(DWORD, "Index"), Out(Pointer(Float), "pPlane")]),
-    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "State"), (DWORD, "Value")]),
-    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "State"), Out(Pointer(DWORD), "pValue")]),
-    Method(HRESULT, "BeginStateBlock", []),
-    Method(HRESULT, "EndStateBlock", [Out(Pointer(DWORD), "pToken")]),
-    Method(HRESULT, "ApplyStateBlock", [(DWORD, "Token")]),
-    Method(HRESULT, "CaptureStateBlock", [(DWORD, "Token")]),
-    Method(HRESULT, "DeleteStateBlock", [(DWORD, "Token")]),
-    Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "Type"), Out(Pointer(DWORD), "pToken")]),
-    Method(HRESULT, "SetClipStatus", [(ConstPointer(D3DCLIPSTATUS8), "pClipStatus")]),
-    Method(HRESULT, "GetClipStatus", [Out(Pointer(D3DCLIPSTATUS8), "pClipStatus")]),
-    Method(HRESULT, "GetTexture", [(DWORD, "Stage"), Out(Pointer(PDIRECT3DBASETEXTURE8), "ppTexture")]),
-    Method(HRESULT, "SetTexture", [(DWORD, "Stage"), (PDIRECT3DBASETEXTURE8, "pTexture")]),
-    Method(HRESULT, "GetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]),
-    Method(HRESULT, "SetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), (DWORD, "Value")]),
-    Method(HRESULT, "ValidateDevice", [Out(Pointer(DWORD), "pNumPasses")]),
-    Method(HRESULT, "GetInfo", [(DWORD, "DevInfoID"), Out(OpaquePointer(Void), "pDevInfoStruct"), (DWORD, "DevInfoStructSize")]),
-    Method(HRESULT, "SetPaletteEntries", [(UINT, "PaletteNumber"), (ConstPointer(PALETTEENTRY), "pEntries")]),
-    Method(HRESULT, "GetPaletteEntries", [(UINT, "PaletteNumber"), Out(Pointer(PALETTEENTRY), "pEntries")]),
-    Method(HRESULT, "SetCurrentTexturePalette", [(UINT, "PaletteNumber")]),
-    Method(HRESULT, "GetCurrentTexturePalette", [Out(Pointer(UINT), "PaletteNumber")]),
-    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "StartVertex"), (UINT, "PrimitiveCount")]),
-    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "minIndex"), (UINT, "NumVertices"), (UINT, "startIndex"), (UINT, "primCount")]),
-    Method(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
-    Method(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertexIndices"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
-    Method(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER8, "pDestBuffer"), (DWORD, "Flags")]),
-    Method(HRESULT, "CreateVertexShader", [(ConstPointer(DWORD), "pDeclaration"), (ConstPointer(DWORD), "pFunction"), Out(Pointer(DWORD), "pHandle"), (DWORD, "Usage")]),
-    Method(HRESULT, "SetVertexShader", [(DWORD, "Handle")]),
-    Method(HRESULT, "GetVertexShader", [Out(Pointer(DWORD), "pHandle")]),
-    Method(HRESULT, "DeleteVertexShader", [(DWORD, "Handle")]),
-    Method(HRESULT, "SetVertexShaderConstant", [(DWORD, "Register"), (OpaquePointer(Const(Void)), "pConstantData"), (DWORD, "ConstantCount")]),
-    Method(HRESULT, "GetVertexShaderConstant", [(DWORD, "Register"), Out(OpaquePointer(Void), "pConstantData"), (DWORD, "ConstantCount")]),
-    Method(HRESULT, "GetVertexShaderDeclaration", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "GetVertexShaderFunction", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "SetStreamSource", [(UINT, "StreamNumber"), (PDIRECT3DVERTEXBUFFER8, "pStreamData"), (UINT, "Stride")]),
-    Method(HRESULT, "GetStreamSource", [(UINT, "StreamNumber"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppStreamData"), Out(Pointer(UINT), "pStride")]),
-    Method(HRESULT, "SetIndices", [(PDIRECT3DINDEXBUFFER8, "pIndexData"), (UINT, "BaseVertexIndex")]),
-    Method(HRESULT, "GetIndices", [Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexData"), Out(Pointer(UINT), "pBaseVertexIndex")]),
-    Method(HRESULT, "CreatePixelShader", [(ConstPointer(DWORD), "pFunction"), Out(Pointer(DWORD), "pHandle")]),
-    Method(HRESULT, "SetPixelShader", [(DWORD, "Handle")]),
-    Method(HRESULT, "GetPixelShader", [Out(Pointer(DWORD), "pHandle")]),
-    Method(HRESULT, "DeletePixelShader", [(DWORD, "Handle")]),
-    Method(HRESULT, "SetPixelShaderConstant", [(DWORD, "Register"), (OpaquePointer(Const(Void)), "pConstantData"), (DWORD, "ConstantCount")]),
-    Method(HRESULT, "GetPixelShaderConstant", [(DWORD, "Register"), Out(OpaquePointer(Void), "pConstantData"), (DWORD, "ConstantCount")]),
-    Method(HRESULT, "GetPixelShaderFunction", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "DrawRectPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DRECTPATCH_INFO), "pRectPatchInfo")]),
-    Method(HRESULT, "DrawTriPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DTRIPATCH_INFO), "pTriPatchInfo")]),
-    Method(HRESULT, "DeletePatch", [(UINT, "Handle")]),
-]
-
-IDirect3DSwapChain8.methods += [
-    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]),
-    Method(HRESULT, "GetBackBuffer", [(UINT, "BackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE8), "ppBackBuffer")]),
-]
-
-IDirect3DResource8.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
-    Method(DWORD, "SetPriority", [(DWORD, "PriorityNew")]),
-    Method(DWORD, "GetPriority", []),
-    Method(Void, "PreLoad", []),
-    Method(D3DRESOURCETYPE, "GetType", []),
-]
-
-IDirect3DBaseTexture8.methods += [
-    Method(DWORD, "SetLOD", [(DWORD, "LODNew")]),
-    Method(DWORD, "GetLOD", []),
-    Method(DWORD, "GetLevelCount", []),
-]
-
-IDirect3DTexture8.methods += [
-    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
-    Method(HRESULT, "GetSurfaceLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurfaceLevel")]),
-    Method(HRESULT, "LockRect", [(UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]),
-    Method(HRESULT, "UnlockRect", [(UINT, "Level")]),
-    Method(HRESULT, "AddDirtyRect", [(ConstPointer(RECT), "pDirtyRect")]),
-]
-
-IDirect3DVolumeTexture8.methods += [
-    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
-    Method(HRESULT, "GetVolumeLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DVOLUME8), "ppVolumeLevel")]),
-    Method(HRESULT, "LockBox", [(UINT, "Level"), Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (DWORD, "Flags")]),
-    Method(HRESULT, "UnlockBox", [(UINT, "Level")]),
-    Method(HRESULT, "AddDirtyBox", [(ConstPointer(D3DBOX), "pDirtyBox")]),
-]
-
-IDirect3DCubeTexture8.methods += [
-    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
-    Method(HRESULT, "GetCubeMapSurface", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE8), "ppCubeMapSurface")]),
-    Method(HRESULT, "LockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]),
-    Method(HRESULT, "UnlockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level")]),
-    Method(HRESULT, "AddDirtyRect", [(D3DCUBEMAP_FACES, "FaceType"), (ConstPointer(RECT), "pDirtyRect")]),
-]
-
-IDirect3DVertexBuffer8.methods += [
-    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(Pointer(BYTE)), "ppbData"), (DWORD, "Flags")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVERTEXBUFFER_DESC), "pDesc")]),
-]
-
-IDirect3DIndexBuffer8.methods += [
-    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(Pointer(BYTE)), "ppbData"), (DWORD, "Flags")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DINDEXBUFFER_DESC), "pDesc")]),
-]
-
-IDirect3DSurface8.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
-    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
-    Method(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]),
-    Method(HRESULT, "UnlockRect", []),
-]
-
-IDirect3DVolume8.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
-    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
-    Method(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (DWORD, "Flags")]),
-    Method(HRESULT, "UnlockBox", []),
-]
-
-d3d8 = API("d3d8")
-d3d8.add_functions([
-    StdFunction(PDIRECT3D8, "Direct3DCreate8", [(UINT, "SDKVersion")]),
-])
diff --git a/d3d8caps.py b/d3d8caps.py
deleted file mode 100644 (file)
index 87e7625..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d8caps.h"""
-
-from winapi import *
-from d3d8types import *
-
-D3DCAPS = Flags(DWORD, [
-    "D3DCAPS_READ_SCANLINE",
-])
-
-D3DCAPS2 = Flags(DWORD, [
-    "D3DCAPS2_NO2DDURING3DSCENE",
-    "D3DCAPS2_FULLSCREENGAMMA",
-    "D3DCAPS2_CANRENDERWINDOWED",
-    "D3DCAPS2_CANCALIBRATEGAMMA",
-    "D3DCAPS2_RESERVED",
-    "D3DCAPS2_CANMANAGERESOURCE",
-    "D3DCAPS2_DYNAMICTEXTURES",
-])
-
-D3DCAPS3 = Flags(DWORD, [
-    "D3DCAPS3_RESERVED",
-    "D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD",
-])
-
-D3DPRESENT_INTERVAL = Flags(DWORD, [
-    "D3DPRESENT_INTERVAL_DEFAULT",
-    "D3DPRESENT_INTERVAL_ONE",
-    "D3DPRESENT_INTERVAL_TWO",
-    "D3DPRESENT_INTERVAL_THREE",
-    "D3DPRESENT_INTERVAL_FOUR",
-    "D3DPRESENT_INTERVAL_IMMEDIATE",
-])
-
-D3DCURSORCAPS = Flags(DWORD, [
-    "D3DCURSORCAPS_COLOR",
-    "D3DCURSORCAPS_LOWRES",
-])
-
-D3DDEVCAPS = Flags(DWORD, [
-    "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
-    "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
-    "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
-    "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
-    "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
-    "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
-    "D3DDEVCAPS_DRAWPRIMTLVERTEX",
-    "D3DDEVCAPS_CANRENDERAFTERFLIP",
-    "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
-    "D3DDEVCAPS_DRAWPRIMITIVES2",
-    "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
-    "D3DDEVCAPS_DRAWPRIMITIVES2EX",
-    "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
-    "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
-    "D3DDEVCAPS_HWRASTERIZATION",
-    "D3DDEVCAPS_PUREDEVICE",
-    "D3DDEVCAPS_QUINTICRTPATCHES",
-    "D3DDEVCAPS_RTPATCHES",
-    "D3DDEVCAPS_RTPATCHHANDLEZERO",
-    "D3DDEVCAPS_NPATCHES",
-])
-
-D3DPMISCCAPS = Flags(DWORD, [
-    "D3DPMISCCAPS_MASKZ",
-    "D3DPMISCCAPS_LINEPATTERNREP",
-    "D3DPMISCCAPS_CULLNONE",
-    "D3DPMISCCAPS_CULLCW",
-    "D3DPMISCCAPS_CULLCCW",
-    "D3DPMISCCAPS_COLORWRITEENABLE",
-    "D3DPMISCCAPS_CLIPPLANESCALEDPOINTS",
-    "D3DPMISCCAPS_CLIPTLVERTS",
-    "D3DPMISCCAPS_TSSARGTEMP",
-    "D3DPMISCCAPS_BLENDOP",
-    "D3DPMISCCAPS_NULLREFERENCE",
-])
-
-D3DLINECAPS = Flags(DWORD, [
-    "D3DLINECAPS_TEXTURE",
-    "D3DLINECAPS_ZTEST",
-    "D3DLINECAPS_BLEND",
-    "D3DLINECAPS_ALPHACMP",
-    "D3DLINECAPS_FOG",
-])
-
-D3DPRASTERCAPS = Flags(DWORD, [
-    "D3DPRASTERCAPS_DITHER",
-    "D3DPRASTERCAPS_PAT",
-    "D3DPRASTERCAPS_ZTEST",
-    "D3DPRASTERCAPS_FOGVERTEX",
-    "D3DPRASTERCAPS_FOGTABLE",
-    "D3DPRASTERCAPS_ANTIALIASEDGES",
-    "D3DPRASTERCAPS_MIPMAPLODBIAS",
-    "D3DPRASTERCAPS_ZBIAS",
-    "D3DPRASTERCAPS_ZBUFFERLESSHSR",
-    "D3DPRASTERCAPS_FOGRANGE",
-    "D3DPRASTERCAPS_ANISOTROPY",
-    "D3DPRASTERCAPS_WBUFFER",
-    "D3DPRASTERCAPS_WFOG",
-    "D3DPRASTERCAPS_ZFOG",
-    "D3DPRASTERCAPS_COLORPERSPECTIVE",
-    "D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE",
-])
-
-D3DPCMPCAPS = Flags(DWORD, [
-    "D3DPCMPCAPS_NEVER",
-    "D3DPCMPCAPS_LESS",
-    "D3DPCMPCAPS_EQUAL",
-    "D3DPCMPCAPS_LESSEQUAL",
-    "D3DPCMPCAPS_GREATER",
-    "D3DPCMPCAPS_NOTEQUAL",
-    "D3DPCMPCAPS_GREATEREQUAL",
-    "D3DPCMPCAPS_ALWAYS",
-])
-
-D3DPBLENDCAPS = Flags(DWORD, [
-    "D3DPBLENDCAPS_ZERO",
-    "D3DPBLENDCAPS_ONE",
-    "D3DPBLENDCAPS_SRCCOLOR",
-    "D3DPBLENDCAPS_INVSRCCOLOR",
-    "D3DPBLENDCAPS_SRCALPHA",
-    "D3DPBLENDCAPS_INVSRCALPHA",
-    "D3DPBLENDCAPS_DESTALPHA",
-    "D3DPBLENDCAPS_INVDESTALPHA",
-    "D3DPBLENDCAPS_DESTCOLOR",
-    "D3DPBLENDCAPS_INVDESTCOLOR",
-    "D3DPBLENDCAPS_SRCALPHASAT",
-    "D3DPBLENDCAPS_BOTHSRCALPHA",
-    "D3DPBLENDCAPS_BOTHINVSRCALPHA",
-])
-
-D3DPSHADECAPS = Flags(DWORD, [
-    "D3DPSHADECAPS_COLORGOURAUDRGB",
-    "D3DPSHADECAPS_SPECULARGOURAUDRGB",
-    "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
-    "D3DPSHADECAPS_FOGGOURAUD",
-])
-
-D3DPTEXTURECAPS = Flags(DWORD, [
-    "D3DPTEXTURECAPS_PERSPECTIVE",
-    "D3DPTEXTURECAPS_POW2",
-    "D3DPTEXTURECAPS_ALPHA",
-    "D3DPTEXTURECAPS_SQUAREONLY",
-    "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
-    "D3DPTEXTURECAPS_ALPHAPALETTE",
-    "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
-    "D3DPTEXTURECAPS_PROJECTED",
-    "D3DPTEXTURECAPS_CUBEMAP",
-    "D3DPTEXTURECAPS_VOLUMEMAP",
-    "D3DPTEXTURECAPS_MIPMAP",
-    "D3DPTEXTURECAPS_MIPVOLUMEMAP",
-    "D3DPTEXTURECAPS_MIPCUBEMAP",
-    "D3DPTEXTURECAPS_CUBEMAP_POW2",
-    "D3DPTEXTURECAPS_VOLUMEMAP_POW2",
-])
-
-D3DPTFILTERCAPS = Flags(DWORD, [
-    "D3DPTFILTERCAPS_MINFPOINT",
-    "D3DPTFILTERCAPS_MINFLINEAR",
-    "D3DPTFILTERCAPS_MINFANISOTROPIC",
-    "D3DPTFILTERCAPS_MIPFPOINT",
-    "D3DPTFILTERCAPS_MIPFLINEAR",
-    "D3DPTFILTERCAPS_MAGFPOINT",
-    "D3DPTFILTERCAPS_MAGFLINEAR",
-    "D3DPTFILTERCAPS_MAGFANISOTROPIC",
-    "D3DPTFILTERCAPS_MAGFAFLATCUBIC",
-    "D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC",
-])
-
-D3DPTADDRESSCAPS = Flags(DWORD, [
-    "D3DPTADDRESSCAPS_WRAP",
-    "D3DPTADDRESSCAPS_MIRROR",
-    "D3DPTADDRESSCAPS_CLAMP",
-    "D3DPTADDRESSCAPS_BORDER",
-    "D3DPTADDRESSCAPS_INDEPENDENTUV",
-    "D3DPTADDRESSCAPS_MIRRORONCE",
-])
-
-D3DSTENCILCAPS = Flags(DWORD, [
-    "D3DSTENCILCAPS_KEEP",
-    "D3DSTENCILCAPS_ZERO",
-    "D3DSTENCILCAPS_REPLACE",
-    "D3DSTENCILCAPS_INCRSAT",
-    "D3DSTENCILCAPS_DECRSAT",
-    "D3DSTENCILCAPS_INVERT",
-    "D3DSTENCILCAPS_INCR",
-    "D3DSTENCILCAPS_DECR",
-])
-
-D3DTEXOPCAPS = Flags(DWORD, [
-    "D3DTEXOPCAPS_DISABLE",
-    "D3DTEXOPCAPS_SELECTARG1",
-    "D3DTEXOPCAPS_SELECTARG2",
-    "D3DTEXOPCAPS_MODULATE",
-    "D3DTEXOPCAPS_MODULATE2X",
-    "D3DTEXOPCAPS_MODULATE4X",
-    "D3DTEXOPCAPS_ADD",
-    "D3DTEXOPCAPS_ADDSIGNED",
-    "D3DTEXOPCAPS_ADDSIGNED2X",
-    "D3DTEXOPCAPS_SUBTRACT",
-    "D3DTEXOPCAPS_ADDSMOOTH",
-    "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
-    "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
-    "D3DTEXOPCAPS_BLENDFACTORALPHA",
-    "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
-    "D3DTEXOPCAPS_BLENDCURRENTALPHA",
-    "D3DTEXOPCAPS_PREMODULATE",
-    "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
-    "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
-    "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
-    "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
-    "D3DTEXOPCAPS_BUMPENVMAP",
-    "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
-    "D3DTEXOPCAPS_DOTPRODUCT3",
-    "D3DTEXOPCAPS_MULTIPLYADD",
-    "D3DTEXOPCAPS_LERP",
-])
-
-D3DFVFCAPS = Flags(DWORD, [
-    "D3DFVFCAPS_TEXCOORDCOUNTMASK",
-    "D3DFVFCAPS_DONOTSTRIPELEMENTS",
-    "D3DFVFCAPS_PSIZE",
-])
-
-D3DVTXPCAPS = Flags(DWORD, [
-    "D3DVTXPCAPS_TEXGEN",
-    "D3DVTXPCAPS_MATERIALSOURCE7",
-    "D3DVTXPCAPS_DIRECTIONALLIGHTS",
-    "D3DVTXPCAPS_POSITIONALLIGHTS",
-    "D3DVTXPCAPS_LOCALVIEWER",
-    "D3DVTXPCAPS_TWEENING",
-    "D3DVTXPCAPS_NO_VSDT_UBYTE4",
-])
-
-#D3DPS_VERSION = Enum("DWORD", [
-#    "D3DPS_VERSION(0,0)",
-#    "D3DPS_VERSION(1,0)",
-#    "D3DPS_VERSION(1,1)",
-#    "D3DPS_VERSION(1,2)",
-#    "D3DPS_VERSION(1,3)",
-#    "D3DPS_VERSION(1,4)",
-#    "D3DPS_VERSION(2,0)",
-#    "D3DPS_VERSION(3,0)",
-#])
-D3DPS_VERSION = DWORD
-
-#D3DVS_VERSION = Enum("DWORD", [
-#    "D3DVS_VERSION(0,0)",
-#    "D3DVS_VERSION(1,0)",
-#    "D3DVS_VERSION(1,1)",
-#    "D3DVS_VERSION(2,0)",
-#    "D3DVS_VERSION(3,0)",
-#])
-D3DVS_VERSION = DWORD
-
-
-D3DCAPS8 = Struct("D3DCAPS8", [
-    (D3DDEVTYPE, "DeviceType"),
-    (UINT, "AdapterOrdinal"),
-    (D3DCAPS, "Caps"),
-    (D3DCAPS2, "Caps2"),
-    (D3DCAPS3, "Caps3"),
-    (D3DPRESENT_INTERVAL, "PresentationIntervals"),
-    (D3DCURSORCAPS, "CursorCaps"),
-    (D3DDEVCAPS, "DevCaps"),
-    (D3DPMISCCAPS, "PrimitiveMiscCaps"),
-    (D3DPRASTERCAPS, "RasterCaps"),
-    (D3DPCMPCAPS, "ZCmpCaps"),
-    (D3DPBLENDCAPS, "SrcBlendCaps"),
-    (D3DPBLENDCAPS, "DestBlendCaps"),
-    (D3DPCMPCAPS, "AlphaCmpCaps"),
-    (D3DPSHADECAPS, "ShadeCaps"),
-    (D3DPTEXTURECAPS, "TextureCaps"),
-    (D3DPTFILTERCAPS, "TextureFilterCaps"),
-    (D3DPTFILTERCAPS, "CubeTextureFilterCaps"),
-    (D3DPTFILTERCAPS, "VolumeTextureFilterCaps"),
-    (D3DPTADDRESSCAPS, "TextureAddressCaps"),
-    (D3DPTADDRESSCAPS, "VolumeTextureAddressCaps"),
-    (D3DLINECAPS, "LineCaps"),
-    (DWORD, "MaxTextureWidth"),
-    (DWORD, "MaxTextureHeight"),
-    (DWORD, "MaxVolumeExtent"),
-    (DWORD, "MaxTextureRepeat"),
-    (DWORD, "MaxTextureAspectRatio"),
-    (DWORD, "MaxAnisotropy"),
-    (Float, "MaxVertexW"),
-    (Float, "GuardBandLeft"),
-    (Float, "GuardBandTop"),
-    (Float, "GuardBandRight"),
-    (Float, "GuardBandBottom"),
-    (Float, "ExtentsAdjust"),
-    (D3DSTENCILCAPS, "StencilCaps"),
-    (D3DFVFCAPS, "FVFCaps"),
-    (D3DTEXOPCAPS, "TextureOpCaps"),
-    (DWORD, "MaxTextureBlendStages"),
-    (DWORD, "MaxSimultaneousTextures"),
-    (D3DVTXPCAPS, "VertexProcessingCaps"),
-    (DWORD, "MaxActiveLights"),
-    (DWORD, "MaxUserClipPlanes"),
-    (DWORD, "MaxVertexBlendMatrices"),
-    (DWORD, "MaxVertexBlendMatrixIndex"),
-    (Float, "MaxPointSize"),
-    (DWORD, "MaxPrimitiveCount"),
-    (DWORD, "MaxVertexIndex"),
-    (DWORD, "MaxStreams"),
-    (DWORD, "MaxStreamStride"),
-    (D3DVS_VERSION, "VertexShaderVersion"),
-    (DWORD, "MaxVertexShaderConst"),
-    (D3DPS_VERSION, "PixelShaderVersion"),
-    (Float, "MaxPixelShaderValue"),
-])
-
index 236f56c9e4e4a19fba06e7693f295b260a7e89ba..2b574fb203cf896f9bb0b3e77f9530b048238ab7 100644 (file)
@@ -24,7 +24,7 @@
 ##########################################################################/
 
 
-from d3d8 import d3d8
+from specs.d3d8 import d3d8
 from trace import DllTracer
 
 
diff --git a/d3d8types.py b/d3d8types.py
deleted file mode 100644 (file)
index 6136d98..0000000
+++ /dev/null
@@ -1,1011 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d8types.h"""
-
-from winapi import *
-
-D3DCOLOR = Alias("D3DCOLOR", DWORD)
-
-D3DVECTOR = Struct("D3DVECTOR", [
-    (Float, "x"),
-    (Float, "y"),
-    (Float, "z"),
-])
-
-D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
-    (Float, "r"),
-    (Float, "g"),
-    (Float, "b"),
-    (Float, "a"),
-])
-
-D3DRECT = Struct("D3DRECT", [
-    (LONG, "x1"),
-    (LONG, "y1"),
-    (LONG, "x2"),
-    (LONG, "y2"),
-])
-
-D3DMATRIX = Struct("D3DMATRIX", [
-    (Array(Array(Float, "4"), "4"), "m"),
-])
-
-D3DVIEWPORT8 = Struct("D3DVIEWPORT8", [
-    (DWORD, "X"),
-    (DWORD, "Y"),
-    (DWORD, "Width"),
-    (DWORD, "Height"),
-    (Float, "MinZ"),
-    (Float, "MaxZ"),
-])
-
-D3DCLIP = Flags(DWORD, [
-    "D3DCLIPPLANE0",
-    "D3DCLIPPLANE1",
-    "D3DCLIPPLANE2",
-    "D3DCLIPPLANE3",
-    "D3DCLIPPLANE4",
-    "D3DCLIPPLANE5",
-])
-
-D3DCS = Flags(DWORD, [
-    "D3DCS_ALL",
-    "D3DCS_LEFT",
-    "D3DCS_RIGHT",
-    "D3DCS_TOP",
-    "D3DCS_BOTTOM",
-    "D3DCS_FRONT",
-    "D3DCS_BACK",
-    "D3DCS_PLANE0",
-    "D3DCS_PLANE1",
-    "D3DCS_PLANE2",
-    "D3DCS_PLANE3",
-    "D3DCS_PLANE4",
-    "D3DCS_PLANE5",
-])
-
-D3DCLIPSTATUS8 = Struct("D3DCLIPSTATUS8", [
-    (DWORD, "ClipUnion"),
-    (DWORD, "ClipIntersection"),
-])
-
-D3DMATERIAL8 = Struct("D3DMATERIAL8", [
-    (D3DCOLORVALUE, "Diffuse"),
-    (D3DCOLORVALUE, "Ambient"),
-    (D3DCOLORVALUE, "Specular"),
-    (D3DCOLORVALUE, "Emissive"),
-    (Float, "Power"),
-])
-
-D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
-    "D3DLIGHT_POINT",
-    "D3DLIGHT_SPOT",
-    "D3DLIGHT_DIRECTIONAL",
-])
-
-D3DLIGHT8 = Struct("D3DLIGHT8", [
-    (D3DLIGHTTYPE, "Type"),
-    (D3DCOLORVALUE, "Diffuse"),
-    (D3DCOLORVALUE, "Specular"),
-    (D3DCOLORVALUE, "Ambient"),
-    (D3DVECTOR, "Position"),
-    (D3DVECTOR, "Direction"),
-    (Float, "Range"),
-    (Float, "Falloff"),
-    (Float, "Attenuation0"),
-    (Float, "Attenuation1"),
-    (Float, "Attenuation2"),
-    (Float, "Theta"),
-    (Float, "Phi"),
-])
-
-D3DCLEAR = Flags(DWORD, [
-    "D3DCLEAR_TARGET",
-    "D3DCLEAR_ZBUFFER",
-    "D3DCLEAR_STENCIL",
-])
-
-D3DSHADEMODE = Enum("D3DSHADEMODE", [
-    "D3DSHADE_FLAT",
-    "D3DSHADE_GOURAUD",
-    "D3DSHADE_PHONG",
-])
-
-D3DFILLMODE = Enum("D3DFILLMODE", [
-    "D3DFILL_POINT",
-    "D3DFILL_WIREFRAME",
-    "D3DFILL_SOLID",
-])
-
-D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
-    (WORD, "wRepeatFactor"),
-    (WORD, "wLinePattern"),
-])
-
-D3DBLEND = Enum("D3DBLEND", [
-    "D3DBLEND_ZERO",
-    "D3DBLEND_ONE",
-    "D3DBLEND_SRCCOLOR",
-    "D3DBLEND_INVSRCCOLOR",
-    "D3DBLEND_SRCALPHA",
-    "D3DBLEND_INVSRCALPHA",
-    "D3DBLEND_DESTALPHA",
-    "D3DBLEND_INVDESTALPHA",
-    "D3DBLEND_DESTCOLOR",
-    "D3DBLEND_INVDESTCOLOR",
-    "D3DBLEND_SRCALPHASAT",
-    "D3DBLEND_BOTHSRCALPHA",
-    "D3DBLEND_BOTHINVSRCALPHA",
-])
-
-D3DBLENDOP = Enum("D3DBLENDOP", [
-    "D3DBLENDOP_ADD",
-    "D3DBLENDOP_SUBTRACT",
-    "D3DBLENDOP_REVSUBTRACT",
-    "D3DBLENDOP_MIN",
-    "D3DBLENDOP_MAX",
-])
-
-D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
-    "D3DTADDRESS_WRAP",
-    "D3DTADDRESS_MIRROR",
-    "D3DTADDRESS_CLAMP",
-    "D3DTADDRESS_BORDER",
-    "D3DTADDRESS_MIRRORONCE",
-])
-
-D3DCULL = Enum("D3DCULL", [
-    "D3DCULL_NONE",
-    "D3DCULL_CW",
-    "D3DCULL_CCW",
-])
-
-D3DCMPFUNC = Enum("D3DCMPFUNC", [
-    "D3DCMP_NEVER",
-    "D3DCMP_LESS",
-    "D3DCMP_EQUAL",
-    "D3DCMP_LESSEQUAL",
-    "D3DCMP_GREATER",
-    "D3DCMP_NOTEQUAL",
-    "D3DCMP_GREATEREQUAL",
-    "D3DCMP_ALWAYS",
-])
-
-D3DSTENCILOP = Enum("D3DSTENCILOP", [
-    "D3DSTENCILOP_KEEP",
-    "D3DSTENCILOP_ZERO",
-    "D3DSTENCILOP_REPLACE",
-    "D3DSTENCILOP_INCRSAT",
-    "D3DSTENCILOP_DECRSAT",
-    "D3DSTENCILOP_INVERT",
-    "D3DSTENCILOP_INCR",
-    "D3DSTENCILOP_DECR",
-])
-
-D3DFOGMODE = Enum("D3DFOGMODE", [
-    "D3DFOG_NONE",
-    "D3DFOG_EXP",
-    "D3DFOG_EXP2",
-    "D3DFOG_LINEAR",
-])
-
-D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
-    "D3DZB_FALSE",
-    "D3DZB_TRUE",
-    "D3DZB_USEW",
-])
-
-D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
-    "D3DPT_POINTLIST",
-    "D3DPT_LINELIST",
-    "D3DPT_LINESTRIP",
-    "D3DPT_TRIANGLELIST",
-    "D3DPT_TRIANGLESTRIP",
-    "D3DPT_TRIANGLEFAN",
-])
-
-D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
-    "D3DTS_VIEW",
-    "D3DTS_PROJECTION",
-    "D3DTS_TEXTURE0",
-    "D3DTS_TEXTURE1",
-    "D3DTS_TEXTURE2",
-    "D3DTS_TEXTURE3",
-    "D3DTS_TEXTURE4",
-    "D3DTS_TEXTURE5",
-    "D3DTS_TEXTURE6",
-    "D3DTS_TEXTURE7",
-])
-
-D3DTS = Flags(DWORD, [
-    "D3DTS_WORLD",
-    "D3DTS_WORLD1",
-    "D3DTS_WORLD2",
-    "D3DTS_WORLD3",
-])
-
-D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
-    "D3DRS_ZENABLE",
-    "D3DRS_FILLMODE",
-    "D3DRS_SHADEMODE",
-    "D3DRS_LINEPATTERN",
-    "D3DRS_ZWRITEENABLE",
-    "D3DRS_ALPHATESTENABLE",
-    "D3DRS_LASTPIXEL",
-    "D3DRS_SRCBLEND",
-    "D3DRS_DESTBLEND",
-    "D3DRS_CULLMODE",
-    "D3DRS_ZFUNC",
-    "D3DRS_ALPHAREF",
-    "D3DRS_ALPHAFUNC",
-    "D3DRS_DITHERENABLE",
-    "D3DRS_ALPHABLENDENABLE",
-    "D3DRS_FOGENABLE",
-    "D3DRS_SPECULARENABLE",
-    "D3DRS_ZVISIBLE",
-    "D3DRS_FOGCOLOR",
-    "D3DRS_FOGTABLEMODE",
-    "D3DRS_FOGSTART",
-    "D3DRS_FOGEND",
-    "D3DRS_FOGDENSITY",
-    "D3DRS_EDGEANTIALIAS",
-    "D3DRS_ZBIAS",
-    "D3DRS_RANGEFOGENABLE",
-    "D3DRS_STENCILENABLE",
-    "D3DRS_STENCILFAIL",
-    "D3DRS_STENCILZFAIL",
-    "D3DRS_STENCILPASS",
-    "D3DRS_STENCILFUNC",
-    "D3DRS_STENCILREF",
-    "D3DRS_STENCILMASK",
-    "D3DRS_STENCILWRITEMASK",
-    "D3DRS_TEXTUREFACTOR",
-    "D3DRS_WRAP0",
-    "D3DRS_WRAP1",
-    "D3DRS_WRAP2",
-    "D3DRS_WRAP3",
-    "D3DRS_WRAP4",
-    "D3DRS_WRAP5",
-    "D3DRS_WRAP6",
-    "D3DRS_WRAP7",
-    "D3DRS_CLIPPING",
-    "D3DRS_LIGHTING",
-    "D3DRS_AMBIENT",
-    "D3DRS_FOGVERTEXMODE",
-    "D3DRS_COLORVERTEX",
-    "D3DRS_LOCALVIEWER",
-    "D3DRS_NORMALIZENORMALS",
-    "D3DRS_DIFFUSEMATERIALSOURCE",
-    "D3DRS_SPECULARMATERIALSOURCE",
-    "D3DRS_AMBIENTMATERIALSOURCE",
-    "D3DRS_EMISSIVEMATERIALSOURCE",
-    "D3DRS_VERTEXBLEND",
-    "D3DRS_CLIPPLANEENABLE",
-    "D3DRS_SOFTWAREVERTEXPROCESSING",
-    "D3DRS_POINTSIZE",
-    "D3DRS_POINTSIZE_MIN",
-    "D3DRS_POINTSPRITEENABLE",
-    "D3DRS_POINTSCALEENABLE",
-    "D3DRS_POINTSCALE_A",
-    "D3DRS_POINTSCALE_B",
-    "D3DRS_POINTSCALE_C",
-    "D3DRS_MULTISAMPLEANTIALIAS",
-    "D3DRS_MULTISAMPLEMASK",
-    "D3DRS_PATCHEDGESTYLE",
-    "D3DRS_PATCHSEGMENTS",
-    "D3DRS_DEBUGMONITORTOKEN",
-    "D3DRS_POINTSIZE_MAX",
-    "D3DRS_INDEXEDVERTEXBLENDENABLE",
-    "D3DRS_COLORWRITEENABLE",
-    "D3DRS_TWEENFACTOR",
-    "D3DRS_BLENDOP",
-    "D3DRS_POSITIONORDER",
-    "D3DRS_NORMALORDER",
-])
-
-D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
-    "D3DMCS_MATERIAL",
-    "D3DMCS_COLOR1",
-    "D3DMCS_COLOR2",
-])
-
-D3DWRAP = Flags(DWORD, [
-    "D3DWRAP_U",
-    "D3DWRAP_V",
-    "D3DWRAP_W",
-])
-
-D3DWRAPCOORD = Flags(DWORD, [
-    "D3DWRAPCOORD_0",
-    "D3DWRAPCOORD_1",
-    "D3DWRAPCOORD_2",
-    "D3DWRAPCOORD_3",
-])
-
-D3DCOLORWRITEENABLE = Flags(DWORD, [
-    "D3DCOLORWRITEENABLE_RED",
-    "D3DCOLORWRITEENABLE_GREEN",
-    "D3DCOLORWRITEENABLE_BLUE",
-    "D3DCOLORWRITEENABLE_ALPHA",
-])
-
-D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
-    "D3DTSS_COLOROP",
-    "D3DTSS_COLORARG1",
-    "D3DTSS_COLORARG2",
-    "D3DTSS_ALPHAOP",
-    "D3DTSS_ALPHAARG1",
-    "D3DTSS_ALPHAARG2",
-    "D3DTSS_BUMPENVMAT00",
-    "D3DTSS_BUMPENVMAT01",
-    "D3DTSS_BUMPENVMAT10",
-    "D3DTSS_BUMPENVMAT11",
-    "D3DTSS_TEXCOORDINDEX",
-    "D3DTSS_ADDRESSU",
-    "D3DTSS_ADDRESSV",
-    "D3DTSS_BORDERCOLOR",
-    "D3DTSS_MAGFILTER",
-    "D3DTSS_MINFILTER",
-    "D3DTSS_MIPFILTER",
-    "D3DTSS_MIPMAPLODBIAS",
-    "D3DTSS_MAXMIPLEVEL",
-    "D3DTSS_MAXANISOTROPY",
-    "D3DTSS_BUMPENVLSCALE",
-    "D3DTSS_BUMPENVLOFFSET",
-    "D3DTSS_TEXTURETRANSFORMFLAGS",
-    "D3DTSS_ADDRESSW",
-    "D3DTSS_COLORARG0",
-    "D3DTSS_ALPHAARG0",
-    "D3DTSS_RESULTARG",
-])
-
-D3DTSS = Flags(DWORD, [
-    "D3DTSS_TCI_PASSTHRU",
-    "D3DTSS_TCI_CAMERASPACENORMAL",
-    "D3DTSS_TCI_CAMERASPACEPOSITION",
-    "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
-])
-
-D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
-    "D3DTOP_DISABLE",
-    "D3DTOP_SELECTARG1",
-    "D3DTOP_SELECTARG2",
-    "D3DTOP_MODULATE",
-    "D3DTOP_MODULATE2X",
-    "D3DTOP_MODULATE4X",
-    "D3DTOP_ADD",
-    "D3DTOP_ADDSIGNED",
-    "D3DTOP_ADDSIGNED2X",
-    "D3DTOP_SUBTRACT",
-    "D3DTOP_ADDSMOOTH",
-    "D3DTOP_BLENDDIFFUSEALPHA",
-    "D3DTOP_BLENDTEXTUREALPHA",
-    "D3DTOP_BLENDFACTORALPHA",
-    "D3DTOP_BLENDTEXTUREALPHAPM",
-    "D3DTOP_BLENDCURRENTALPHA",
-    "D3DTOP_PREMODULATE",
-    "D3DTOP_MODULATEALPHA_ADDCOLOR",
-    "D3DTOP_MODULATECOLOR_ADDALPHA",
-    "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
-    "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
-    "D3DTOP_BUMPENVMAP",
-    "D3DTOP_BUMPENVMAPLUMINANCE",
-    "D3DTOP_DOTPRODUCT3",
-    "D3DTOP_MULTIPLYADD",
-    "D3DTOP_LERP",
-])
-
-D3DTA = Flags(DWORD, [
-    "D3DTA_SELECTMASK",
-    "D3DTA_DIFFUSE",
-    "D3DTA_CURRENT",
-    "D3DTA_TEXTURE",
-    "D3DTA_TFACTOR",
-    "D3DTA_SPECULAR",
-    "D3DTA_TEMP",
-    "D3DTA_COMPLEMENT",
-    "D3DTA_ALPHAREPLICATE",
-])
-
-D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
-    "D3DTEXF_NONE",
-    "D3DTEXF_POINT",
-    "D3DTEXF_LINEAR",
-    "D3DTEXF_ANISOTROPIC",
-    "D3DTEXF_FLATCUBIC",
-    "D3DTEXF_GAUSSIANCUBIC",
-])
-
-D3DPV = Flags(DWORD, [
-    "D3DPV_DONOTCOPYDATA",
-])
-
-D3DFVF = Flags(DWORD, [
-    "D3DFVF_RESERVED0",
-    "D3DFVF_POSITION_MASK",
-    "D3DFVF_XYZ",
-    "D3DFVF_XYZRHW",
-    "D3DFVF_XYZB1",
-    "D3DFVF_XYZB2",
-    "D3DFVF_XYZB3",
-    "D3DFVF_XYZB4",
-    "D3DFVF_XYZB5",
-    "D3DFVF_NORMAL",
-    "D3DFVF_PSIZE",
-    "D3DFVF_DIFFUSE",
-    "D3DFVF_SPECULAR",
-    "D3DFVF_TEXCOUNT_MASK",
-    "D3DFVF_TEXCOUNT_SHIFT",
-    "D3DFVF_TEX0",
-    "D3DFVF_TEX1",
-    "D3DFVF_TEX2",
-    "D3DFVF_TEX3",
-    "D3DFVF_TEX4",
-    "D3DFVF_TEX5",
-    "D3DFVF_TEX6",
-    "D3DFVF_TEX7",
-    "D3DFVF_TEX8",
-    "D3DFVF_LASTBETA_UBYTE4",
-    "D3DFVF_RESERVED2",
-    "D3DFVF_TEXCOORDSIZE3(0)",
-    "D3DFVF_TEXCOORDSIZE2(0)",
-    "D3DFVF_TEXCOORDSIZE4(0)",
-    "D3DFVF_TEXCOORDSIZE1(0)",
-    "D3DFVF_TEXCOORDSIZE3(1)",
-    "D3DFVF_TEXCOORDSIZE2(1)",
-    "D3DFVF_TEXCOORDSIZE4(1)",
-    "D3DFVF_TEXCOORDSIZE1(1)",
-    "D3DFVF_TEXCOORDSIZE3(2)",
-    "D3DFVF_TEXCOORDSIZE2(2)",
-    "D3DFVF_TEXCOORDSIZE4(2)",
-    "D3DFVF_TEXCOORDSIZE1(2)",
-    "D3DFVF_TEXCOORDSIZE3(3)",
-    "D3DFVF_TEXCOORDSIZE2(3)",
-    "D3DFVF_TEXCOORDSIZE4(3)",
-    "D3DFVF_TEXCOORDSIZE1(3)",
-])
-
-D3DVSD_TOKENTYPE = Enum("D3DVSD_TOKENTYPE", [
-    "D3DVSD_TOKEN_NOP",
-    "D3DVSD_TOKEN_STREAM",
-    "D3DVSD_TOKEN_STREAMDATA",
-    "D3DVSD_TOKEN_TESSELLATOR",
-    "D3DVSD_TOKEN_CONSTMEM",
-    "D3DVSD_TOKEN_EXT",
-    "D3DVSD_TOKEN_END",
-])
-
-D3DVSDT = Flags(DWORD, [
-    "D3DVSDT_FLOAT1",
-    "D3DVSDT_FLOAT2",
-    "D3DVSDT_FLOAT3",
-    "D3DVSDT_FLOAT4",
-    "D3DVSDT_D3DCOLOR",
-    "D3DVSDT_UBYTE4",
-    "D3DVSDT_SHORT2",
-    "D3DVSDT_SHORT4",
-    "D3DVSDE_POSITION",
-    "D3DVSDE_BLENDWEIGHT",
-    "D3DVSDE_BLENDINDICES",
-    "D3DVSDE_NORMAL",
-    "D3DVSDE_PSIZE",
-    "D3DVSDE_DIFFUSE",
-    "D3DVSDE_SPECULAR",
-    "D3DVSDE_TEXCOORD0",
-    "D3DVSDE_TEXCOORD1",
-    "D3DVSDE_TEXCOORD2",
-    "D3DVSDE_TEXCOORD3",
-    "D3DVSDE_TEXCOORD4",
-    "D3DVSDE_TEXCOORD5",
-    "D3DVSDE_TEXCOORD6",
-    "D3DVSDE_TEXCOORD7",
-    "D3DVSDE_POSITION2",
-    "D3DVSDE_NORMAL2",
-    "D3DDP_MAXTEXCOORD",
-    "D3DSI_OPCODE_MASK",
-])
-
-D3DSHADER_INSTRUCTION_OPCODE_TYPE = Enum("D3DSHADER_INSTRUCTION_OPCODE_TYPE", [
-    "D3DSIO_NOP",
-    "D3DSIO_MOV",
-    "D3DSIO_ADD",
-    "D3DSIO_SUB",
-    "D3DSIO_MAD",
-    "D3DSIO_MUL",
-    "D3DSIO_RCP",
-    "D3DSIO_RSQ",
-    "D3DSIO_DP3",
-    "D3DSIO_DP4",
-    "D3DSIO_MIN",
-    "D3DSIO_MAX",
-    "D3DSIO_SLT",
-    "D3DSIO_SGE",
-    "D3DSIO_EXP",
-    "D3DSIO_LOG",
-    "D3DSIO_LIT",
-    "D3DSIO_DST",
-    "D3DSIO_LRP",
-    "D3DSIO_FRC",
-    "D3DSIO_M4x4",
-    "D3DSIO_M4x3",
-    "D3DSIO_M3x4",
-    "D3DSIO_M3x3",
-    "D3DSIO_M3x2",
-    "D3DSIO_TEXCOORD",
-    "D3DSIO_TEXKILL",
-    "D3DSIO_TEX",
-    "D3DSIO_TEXBEM",
-    "D3DSIO_TEXBEML",
-    "D3DSIO_TEXREG2AR",
-    "D3DSIO_TEXREG2GB",
-    "D3DSIO_TEXM3x2PAD",
-    "D3DSIO_TEXM3x2TEX",
-    "D3DSIO_TEXM3x3PAD",
-    "D3DSIO_TEXM3x3TEX",
-    "D3DSIO_TEXM3x3DIFF",
-    "D3DSIO_TEXM3x3SPEC",
-    "D3DSIO_TEXM3x3VSPEC",
-    "D3DSIO_EXPP",
-    "D3DSIO_LOGP",
-    "D3DSIO_CND",
-    "D3DSIO_DEF",
-    "D3DSIO_TEXREG2RGB",
-    "D3DSIO_TEXDP3TEX",
-    "D3DSIO_TEXM3x2DEPTH",
-    "D3DSIO_TEXDP3",
-    "D3DSIO_TEXM3x3",
-    "D3DSIO_TEXDEPTH",
-    "D3DSIO_CMP",
-    "D3DSIO_BEM",
-    "D3DSIO_PHASE",
-    "D3DSIO_COMMENT",
-    "D3DSIO_END",
-])
-
-D3DSP = Flags(DWORD, [
-    "D3DSP_WRITEMASK_0",
-    "D3DSP_WRITEMASK_1",
-    "D3DSP_WRITEMASK_2",
-    "D3DSP_WRITEMASK_3",
-    "D3DSP_WRITEMASK_ALL",
-])
-
-D3DSHADER_PARAM_DSTMOD_TYPE = Enum("D3DSHADER_PARAM_DSTMOD_TYPE", [
-    "D3DSPDM_NONE",
-    "D3DSPDM_SATURATE",
-])
-
-D3DSHADER_PARAM_REGISTER_TYPE = Enum("D3DSHADER_PARAM_REGISTER_TYPE", [
-    "D3DSPR_TEMP",
-    "D3DSPR_INPUT",
-    "D3DSPR_CONST",
-    "D3DSPR_ADDR|D3DSPR_TEXTURE",
-    "D3DSPR_RASTOUT",
-    "D3DSPR_ATTROUT",
-    "D3DSPR_TEXCRDOUT",
-])
-
-D3DVS_RASTOUT_OFFSETS = Enum("D3DVS_RASTOUT_OFFSETS", [
-    "D3DSRO_POSITION",
-    "D3DSRO_FOG",
-    "D3DSRO_POINT_SIZE",
-])
-
-D3DVS_ADDRESSMODE_TYPE = Enum("D3DVS_ADDRESSMODE_TYPE", [
-    "D3DVS_ADDRMODE_ABSOLUTE",
-    "D3DVS_ADDRMODE_RELATIVE",
-])
-
-D3DVS = Flags(DWORD, [
-    "D3DVS_X_X",
-    "D3DVS_X_Y",
-    "D3DVS_X_Z",
-    "D3DVS_X_W",
-    "D3DVS_Y_X",
-    "D3DVS_Y_Y",
-    "D3DVS_Y_Z",
-    "D3DVS_Y_W",
-    "D3DVS_Z_X",
-    "D3DVS_Z_Y",
-    "D3DVS_Z_Z",
-    "D3DVS_Z_W",
-    "D3DVS_W_X",
-    "D3DVS_W_Y",
-    "D3DVS_W_Z",
-    "D3DVS_W_W",
-    "D3DVS_NOSWIZZLE",
-])
-
-D3DSP = Flags(DWORD, [
-    "D3DSP_NOSWIZZLE",
-    "D3DSP_REPLICATERED",
-    "D3DSP_REPLICATEGREEN",
-    "D3DSP_REPLICATEBLUE",
-    "D3DSP_REPLICATEALPHA",
-])
-
-D3DSHADER_PARAM_SRCMOD_TYPE = Enum("D3DSHADER_PARAM_SRCMOD_TYPE", [
-    "D3DSPSM_NONE",
-    "D3DSPSM_NEG",
-    "D3DSPSM_BIAS",
-    "D3DSPSM_BIASNEG",
-    "D3DSPSM_SIGN",
-    "D3DSPSM_SIGNNEG",
-    "D3DSPSM_COMP",
-    "D3DSPSM_X2",
-    "D3DSPSM_X2NEG",
-    "D3DSPSM_DZ",
-    "D3DSPSM_DW",
-])
-
-D3DBASISTYPE = Enum("D3DBASISTYPE", [
-    "D3DBASIS_BEZIER",
-    "D3DBASIS_BSPLINE",
-    "D3DBASIS_INTERPOLATE",
-])
-
-D3DORDERTYPE = Enum("D3DORDERTYPE", [
-    "D3DORDER_LINEAR",
-    "D3DORDER_QUADRATIC",
-    "D3DORDER_CUBIC",
-    "D3DORDER_QUINTIC",
-])
-
-D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
-    "D3DPATCHEDGE_DISCRETE",
-    "D3DPATCHEDGE_CONTINUOUS",
-])
-
-D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
-    "D3DSBT_ALL",
-    "D3DSBT_PIXELSTATE",
-    "D3DSBT_VERTEXSTATE",
-])
-
-D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
-    "D3DVBF_DISABLE",
-    "D3DVBF_1WEIGHTS",
-    "D3DVBF_2WEIGHTS",
-    "D3DVBF_3WEIGHTS",
-    "D3DVBF_TWEENING",
-    "D3DVBF_0WEIGHTS",
-])
-
-D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
-    "D3DTTFF_DISABLE",
-    "D3DTTFF_COUNT1",
-    "D3DTTFF_COUNT2",
-    "D3DTTFF_COUNT3",
-    "D3DTTFF_COUNT4",
-    "D3DTTFF_PROJECTED",
-])
-
-D3DDEVTYPE = Enum("D3DDEVTYPE", [
-    "D3DDEVTYPE_HAL",
-    "D3DDEVTYPE_REF",
-    "D3DDEVTYPE_SW",
-])
-
-D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
-    "D3DMULTISAMPLE_NONE",
-    "D3DMULTISAMPLE_2_SAMPLES",
-    "D3DMULTISAMPLE_3_SAMPLES",
-    "D3DMULTISAMPLE_4_SAMPLES",
-    "D3DMULTISAMPLE_5_SAMPLES",
-    "D3DMULTISAMPLE_6_SAMPLES",
-    "D3DMULTISAMPLE_7_SAMPLES",
-    "D3DMULTISAMPLE_8_SAMPLES",
-    "D3DMULTISAMPLE_9_SAMPLES",
-    "D3DMULTISAMPLE_10_SAMPLES",
-    "D3DMULTISAMPLE_11_SAMPLES",
-    "D3DMULTISAMPLE_12_SAMPLES",
-    "D3DMULTISAMPLE_13_SAMPLES",
-    "D3DMULTISAMPLE_14_SAMPLES",
-    "D3DMULTISAMPLE_15_SAMPLES",
-    "D3DMULTISAMPLE_16_SAMPLES",
-])
-
-D3DFORMAT = Enum("D3DFORMAT", [
-    "D3DFMT_UNKNOWN",
-    "D3DFMT_R8G8B8",
-    "D3DFMT_A8R8G8B8",
-    "D3DFMT_X8R8G8B8",
-    "D3DFMT_R5G6B5",
-    "D3DFMT_X1R5G5B5",
-    "D3DFMT_A1R5G5B5",
-    "D3DFMT_A4R4G4B4",
-    "D3DFMT_R3G3B2",
-    "D3DFMT_A8",
-    "D3DFMT_A8R3G3B2",
-    "D3DFMT_X4R4G4B4",
-    "D3DFMT_A2B10G10R10",
-    "D3DFMT_G16R16",
-    "D3DFMT_A8P8",
-    "D3DFMT_P8",
-    "D3DFMT_L8",
-    "D3DFMT_A8L8",
-    "D3DFMT_A4L4",
-    "D3DFMT_V8U8",
-    "D3DFMT_L6V5U5",
-    "D3DFMT_X8L8V8U8",
-    "D3DFMT_Q8W8V8U8",
-    "D3DFMT_V16U16",
-    "D3DFMT_W11V11U10",
-    "D3DFMT_A2W10V10U10",
-    "D3DFMT_UYVY",
-    "D3DFMT_YUY2",
-    "D3DFMT_DXT1",
-    "D3DFMT_DXT2",
-    "D3DFMT_DXT3",
-    "D3DFMT_DXT4",
-    "D3DFMT_DXT5",
-    "D3DFMT_D16_LOCKABLE",
-    "D3DFMT_D32",
-    "D3DFMT_D15S1",
-    "D3DFMT_D24S8",
-    "D3DFMT_D16",
-    "D3DFMT_D24X8",
-    "D3DFMT_D24X4S4",
-    "D3DFMT_VERTEXDATA",
-    "D3DFMT_INDEX16",
-    "D3DFMT_INDEX32",
-])
-
-D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "RefreshRate"),
-    (D3DFORMAT, "Format"),
-])
-
-D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
-    (UINT, "AdapterOrdinal"),
-    (D3DDEVTYPE, "DeviceType"),
-    (HWND, "hFocusWindow"),
-    (DWORD, "BehaviorFlags"),
-])
-
-D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
-    "D3DSWAPEFFECT_DISCARD",
-    "D3DSWAPEFFECT_FLIP",
-    "D3DSWAPEFFECT_COPY",
-    "D3DSWAPEFFECT_COPY_VSYNC",
-])
-
-D3DPOOL = Enum("D3DPOOL", [
-    "D3DPOOL_DEFAULT",
-    "D3DPOOL_MANAGED",
-    "D3DPOOL_SYSTEMMEM",
-    "D3DPOOL_SCRATCH",
-])
-
-D3DPRESENT = Flags(DWORD, [
-    "D3DPRESENT_RATE_DEFAULT",
-    "D3DPRESENT_RATE_UNLIMITED",
-])
-
-D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
-    (UINT, "BackBufferWidth"),
-    (UINT, "BackBufferHeight"),
-    (D3DFORMAT, "BackBufferFormat"),
-    (UINT, "BackBufferCount"),
-    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
-    (D3DSWAPEFFECT, "SwapEffect"),
-    (HWND, "hDeviceWindow"),
-    (BOOL, "Windowed"),
-    (BOOL, "EnableAutoDepthStencil"),
-    (D3DFORMAT, "AutoDepthStencilFormat"),
-    (DWORD, "Flags"),
-    (UINT, "FullScreen_RefreshRateInHz"),
-    (UINT, "FullScreen_PresentationInterval"),
-])
-
-D3DPRESENTFLAG = Flags(DWORD, [
-    "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
-])
-
-D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
-    (Array(WORD, "256"), "red"),
-    (Array(WORD, "256"), "green"),
-    (Array(WORD, "256"), "blue"),
-])
-
-D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
-    "D3DBACKBUFFER_TYPE_MONO",
-    "D3DBACKBUFFER_TYPE_LEFT",
-    "D3DBACKBUFFER_TYPE_RIGHT",
-])
-
-D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
-    "D3DRTYPE_SURFACE",
-    "D3DRTYPE_VOLUME",
-    "D3DRTYPE_TEXTURE",
-    "D3DRTYPE_VOLUMETEXTURE",
-    "D3DRTYPE_CUBETEXTURE",
-    "D3DRTYPE_VERTEXBUFFER",
-    "D3DRTYPE_INDEXBUFFER",
-])
-
-D3DUSAGE = Flags(DWORD, [
-    "D3DUSAGE_RENDERTARGET",
-    "D3DUSAGE_DEPTHSTENCIL",
-    "D3DUSAGE_WRITEONLY",
-    "D3DUSAGE_SOFTWAREPROCESSING",
-    "D3DUSAGE_DONOTCLIP",
-    "D3DUSAGE_POINTS",
-    "D3DUSAGE_RTPATCHES",
-    "D3DUSAGE_NPATCHES",
-    "D3DUSAGE_DYNAMIC",
-])
-
-D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
-    "D3DCUBEMAP_FACE_POSITIVE_X",
-    "D3DCUBEMAP_FACE_NEGATIVE_X",
-    "D3DCUBEMAP_FACE_POSITIVE_Y",
-    "D3DCUBEMAP_FACE_NEGATIVE_Y",
-    "D3DCUBEMAP_FACE_POSITIVE_Z",
-    "D3DCUBEMAP_FACE_NEGATIVE_Z",
-])
-
-D3DLOCK = Flags(DWORD, [
-    "D3DLOCK_READONLY",
-    "D3DLOCK_DISCARD",
-    "D3DLOCK_NOOVERWRITE",
-    "D3DLOCK_NOSYSLOCK",
-    "D3DLOCK_NO_DIRTY_UPDATE",
-])
-
-D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Size"),
-    (DWORD, "FVF"),
-])
-
-D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Size"),
-])
-
-D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Size"),
-    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-])
-
-D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Size"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "Depth"),
-])
-
-D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
-    (INT, "Pitch"),
-    (PVOID, "pBits"),
-])
-
-D3DBOX = Struct("D3DBOX", [
-    (UINT, "Left"),
-    (UINT, "Top"),
-    (UINT, "Right"),
-    (UINT, "Bottom"),
-    (UINT, "Front"),
-    (UINT, "Back"),
-])
-
-D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
-    (INT, "RowPitch"),
-    (INT, "SlicePitch"),
-    (PVOID, "pBits"),
-])
-
-D3DRANGE = Struct("D3DRANGE", [
-    (UINT, "Offset"),
-    (UINT, "Size"),
-])
-
-D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
-    (UINT, "StartVertexOffsetWidth"),
-    (UINT, "StartVertexOffsetHeight"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "Stride"),
-    (D3DBASISTYPE, "Basis"),
-    (D3DORDERTYPE, "Order"),
-])
-
-D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
-    (UINT, "StartVertexOffset"),
-    (UINT, "NumVertices"),
-    (D3DBASISTYPE, "Basis"),
-    (D3DORDERTYPE, "Order"),
-])
-
-D3DADAPTER_IDENTIFIER8 = Struct("D3DADAPTER_IDENTIFIER8", [
-    (CString, "Driver"),
-    (CString, "Description"),
-    (LARGE_INTEGER, "DriverVersion"),
-    (DWORD, "VendorId"),
-    (DWORD, "DeviceId"),
-    (DWORD, "SubSysId"),
-    (DWORD, "Revision"),
-    (GUID, "DeviceIdentifier"),
-    (DWORD, "WHQLLevel"),
-])
-
-D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
-    (BOOL, "InVBlank"),
-    (UINT, "ScanLine"),
-])
-
-D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
-    "D3DDMT_ENABLE",
-    "D3DDMT_DISABLE",
-])
-
-D3DDEVINFOID = Flags(DWORD, [
-    "D3DDEVINFOID_RESOURCEMANAGER",
-    "D3DDEVINFOID_VERTEXSTATS",
-])
-
-D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
-    (BOOL, "bThrashing"),
-    (DWORD, "ApproxBytesDownloaded"),
-    (DWORD, "NumEvicts"),
-    (DWORD, "NumVidCreates"),
-    (DWORD, "LastPri"),
-    (DWORD, "NumUsed"),
-    (DWORD, "NumUsedInVidMem"),
-    (DWORD, "WorkingSet"),
-    (DWORD, "WorkingSetBytes"),
-    (DWORD, "TotalManaged"),
-    (DWORD, "TotalBytes"),
-])
-
-D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
-    (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
-])
-
-D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
-    (DWORD, "NumRenderedTriangles"),
-    (DWORD, "NumExtraClippingTriangles"),
-])
-
diff --git a/d3d9.py b/d3d9.py
deleted file mode 100644 (file)
index ffb643e..0000000
--- a/d3d9.py
+++ /dev/null
@@ -1,450 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d9.h"""
-
-from winapi import *
-from d3d9types import *
-from d3d9caps import *
-
-
-D3DSHADER9 = Opaque("const DWORD *")
-
-D3DSPD = Flags(DWORD, [
-    "D3DSPD_IUNKNOWN",
-])
-
-D3DCREATE = Flags(DWORD, [
-    "D3DCREATE_FPU_PRESERVE",
-    "D3DCREATE_MULTITHREADED",
-    "D3DCREATE_PUREDEVICE",
-    "D3DCREATE_SOFTWARE_VERTEXPROCESSING",
-    "D3DCREATE_HARDWARE_VERTEXPROCESSING",
-    "D3DCREATE_MIXED_VERTEXPROCESSING",
-    "D3DCREATE_DISABLE_DRIVER_MANAGEMENT",
-    "D3DCREATE_ADAPTERGROUP_DEVICE",
-    "D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX",
-    "D3DCREATE_NOWINDOWCHANGES",
-    "D3DCREATE_DISABLE_PSGP_THREADING",
-    "D3DCREATE_ENABLE_PRESENTSTATS",
-    "D3DCREATE_DISABLE_PRINTSCREEN",
-    "D3DCREATE_SCREENSAVER",
-])
-
-D3DADAPTER = FakeEnum(DWORD, [
-    "D3DADAPTER_DEFAULT",
-])
-
-D3DENUM = FakeEnum(DWORD, [
-    "D3DENUM_WHQL_LEVEL",
-])
-
-D3DSGR = Flags(DWORD, [
-    "D3DSGR_NO_CALIBRATION",
-    "D3DSGR_CALIBRATE",
-])
-
-D3DCURSOR = Flags(DWORD, [
-    "D3DCURSOR_IMMEDIATE_UPDATE",
-])
-
-D3DPRESENT = Flags(DWORD, [
-    "D3DPRESENT_DONOTWAIT",
-    "D3DPRESENT_LINEAR_CONTENT",
-    "D3DPRESENT_DONOTFLIP",
-    "D3DPRESENT_FLIPRESTART",
-    "D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR",
-])
-
-HRESULT = Enum("HRESULT", [
-    "D3D_OK",
-    "D3DERR_WRONGTEXTUREFORMAT",
-    "D3DERR_UNSUPPORTEDCOLOROPERATION",
-    "D3DERR_UNSUPPORTEDCOLORARG",
-    "D3DERR_UNSUPPORTEDALPHAOPERATION",
-    "D3DERR_UNSUPPORTEDALPHAARG",
-    "D3DERR_TOOMANYOPERATIONS",
-    "D3DERR_CONFLICTINGTEXTUREFILTER",
-    "D3DERR_UNSUPPORTEDFACTORVALUE",
-    "D3DERR_CONFLICTINGRENDERSTATE",
-    "D3DERR_UNSUPPORTEDTEXTUREFILTER",
-    "D3DERR_CONFLICTINGTEXTUREPALETTE",
-    "D3DERR_DRIVERINTERNALERROR",
-    "D3DERR_NOTFOUND",
-    "D3DERR_MOREDATA",
-    "D3DERR_DEVICELOST",
-    "D3DERR_DEVICENOTRESET",
-    "D3DERR_NOTAVAILABLE",
-    "D3DERR_OUTOFVIDEOMEMORY",
-    "D3DERR_INVALIDDEVICE",
-    "D3DERR_INVALIDCALL",
-    "D3DERR_DRIVERINVALIDCALL",
-    "D3DERR_WASSTILLDRAWING",
-    "D3DOK_NOAUTOGEN",
-    "D3DERR_DEVICEREMOVED",
-    "S_NOT_RESIDENT",
-    "S_RESIDENT_IN_SHARED_MEMORY",
-    "S_PRESENT_MODE_CHANGED",
-    "S_PRESENT_OCCLUDED",
-    "D3DERR_DEVICEHUNG",
-])
-
-IDirect3D9 = Interface("IDirect3D9", IUnknown)
-IDirect3DDevice9 = Interface("IDirect3DDevice9", IUnknown)
-IDirect3DStateBlock9 = Interface("IDirect3DStateBlock9", IUnknown)
-IDirect3DSwapChain9 = Interface("IDirect3DSwapChain9", IUnknown)
-IDirect3DResource9 = Interface("IDirect3DResource9", IUnknown)
-IDirect3DVertexDeclaration9 = Interface("IDirect3DVertexDeclaration9", IUnknown)
-IDirect3DVertexShader9 = Interface("IDirect3DVertexShader9", IUnknown)
-IDirect3DPixelShader9 = Interface("IDirect3DPixelShader9", IUnknown)
-IDirect3DBaseTexture9 = Interface("IDirect3DBaseTexture9", IDirect3DResource9)
-IDirect3DTexture9 = Interface("IDirect3DTexture9", IDirect3DBaseTexture9)
-IDirect3DVolumeTexture9 = Interface("IDirect3DVolumeTexture9", IDirect3DBaseTexture9)
-IDirect3DCubeTexture9 = Interface("IDirect3DCubeTexture9", IDirect3DBaseTexture9)
-IDirect3DVertexBuffer9 = Interface("IDirect3DVertexBuffer9", IDirect3DResource9)
-IDirect3DIndexBuffer9 = Interface("IDirect3DIndexBuffer9", IDirect3DResource9)
-IDirect3DSurface9 = Interface("IDirect3DSurface9", IDirect3DResource9)
-IDirect3DVolume9 = Interface("IDirect3DVolume9", IUnknown)
-IDirect3DQuery9 = Interface("IDirect3DQuery9", IUnknown)
-IDirect3D9Ex = Interface("IDirect3D9Ex", IDirect3D9)
-IDirect3DDevice9Ex = Interface("IDirect3DDevice9Ex", IDirect3DDevice9)
-IDirect3DSwapChain9Ex = Interface("IDirect3DSwapChain9Ex", IDirect3DSwapChain9)
-
-PDIRECT3D9 = WrapPointer(IDirect3D9)
-PDIRECT3DDEVICE9 = WrapPointer(IDirect3DDevice9)
-PDIRECT3DSTATEBLOCK9 = WrapPointer(IDirect3DStateBlock9)
-PDIRECT3DSWAPCHAIN9 = WrapPointer(IDirect3DSwapChain9)
-PDIRECT3DRESOURCE9 = WrapPointer(IDirect3DResource9)
-PDIRECT3DVERTEXDECLARATION9 = WrapPointer(IDirect3DVertexDeclaration9)
-PDIRECT3DVERTEXSHADER9 = WrapPointer(IDirect3DVertexShader9)
-PDIRECT3DPIXELSHADER9 = WrapPointer(IDirect3DPixelShader9)
-PDIRECT3DBASETEXTURE9 = WrapPointer(IDirect3DBaseTexture9)
-PDIRECT3DTEXTURE9 = WrapPointer(IDirect3DTexture9)
-PDIRECT3DVOLUMETEXTURE9 = WrapPointer(IDirect3DVolumeTexture9)
-PDIRECT3DCUBETEXTURE9 = WrapPointer(IDirect3DCubeTexture9)
-PDIRECT3DVERTEXBUFFER9 = WrapPointer(IDirect3DVertexBuffer9)
-PDIRECT3DINDEXBUFFER9 = WrapPointer(IDirect3DIndexBuffer9)
-PDIRECT3DSURFACE9 = WrapPointer(IDirect3DSurface9)
-PDIRECT3DVOLUME9 = WrapPointer(IDirect3DVolume9)
-PDIRECT3DQUERY9 = WrapPointer(IDirect3DQuery9)
-PDIRECT3D9EX = WrapPointer(IDirect3D9Ex)
-PDIRECT3DDEVICE9EX = WrapPointer(IDirect3DDevice9Ex)
-PDIRECT3DSWAPCHAIN9EX = WrapPointer(IDirect3DSwapChain9Ex)
-
-IDirect3D9.methods += [
-    Method(HRESULT, "RegisterSoftwareDevice", [(OpaquePointer(Void), "pInitializeFunction")]),
-    Method(UINT, "GetAdapterCount", []),
-    Method(HRESULT, "GetAdapterIdentifier", [(UINT, "Adapter"), (D3DENUM, "Flags"), Out(Pointer(D3DADAPTER_IDENTIFIER9), "pIdentifier")]),
-    Method(UINT, "GetAdapterModeCount", [(UINT, "Adapter"), (D3DFORMAT, "Format")]),
-    Method(HRESULT, "EnumAdapterModes", [(UINT, "Adapter"), (D3DFORMAT, "Format"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "GetAdapterDisplayMode", [(UINT, "Adapter"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "CheckDeviceType", [(UINT, "Adapter"), (D3DDEVTYPE, "DevType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "BackBufferFormat"), (BOOL, "bWindowed")]),
-    Method(HRESULT, "CheckDeviceFormat", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DUSAGE, "Usage"), (D3DRESOURCETYPE, "RType"), (D3DFORMAT, "CheckFormat")]),
-    Method(HRESULT, "CheckDeviceMultiSampleType", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SurfaceFormat"), (BOOL, "Windowed"), (D3DMULTISAMPLE_TYPE, "MultiSampleType"), Out(Pointer(DWORD), "pQualityLevels")]),
-    Method(HRESULT, "CheckDepthStencilMatch", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "RenderTargetFormat"), (D3DFORMAT, "DepthStencilFormat")]),
-    Method(HRESULT, "CheckDeviceFormatConversion", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SourceFormat"), (D3DFORMAT, "TargetFormat")]),
-    Method(HRESULT, "GetDeviceCaps", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), Out(Pointer(D3DCAPS9), "pCaps")]),
-    Method(HMONITOR, "GetAdapterMonitor", [(UINT, "Adapter")]),
-    Method(HRESULT, "CreateDevice", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (D3DCREATE, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DDEVICE9), "ppReturnedDeviceInterface")]),
-]
-
-IDirect3DDevice9.methods += [
-    Method(HRESULT, "TestCooperativeLevel", []),
-    Method(UINT, "GetAvailableTextureMem", []),
-    Method(HRESULT, "EvictManagedResources", []),
-    Method(HRESULT, "GetDirect3D", [Out(Pointer(PDIRECT3D9), "ppD3D9")]),
-    Method(HRESULT, "GetDeviceCaps", [Out(Pointer(D3DCAPS9), "pCaps")]),
-    Method(HRESULT, "GetDisplayMode", [(UINT, "iSwapChain"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")]),
-    Method(HRESULT, "SetCursorProperties", [(UINT, "XHotSpot"), (UINT, "YHotSpot"), (PDIRECT3DSURFACE9, "pCursorBitmap")]),
-    Method(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (D3DCURSOR, "Flags")]),
-    Method(BOOL, "ShowCursor", [(BOOL, "bShow")]),
-    Method(HRESULT, "CreateAdditionalSwapChain", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DSWAPCHAIN9), "pSwapChain")]),
-    Method(HRESULT, "GetSwapChain", [(UINT, "iSwapChain"), Out(Pointer(PDIRECT3DSWAPCHAIN9), "pSwapChain")]),
-    Method(UINT, "GetNumberOfSwapChains", []),
-    Method(HRESULT, "Reset", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]),
-    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]),
-    Method(HRESULT, "GetBackBuffer", [(UINT, "iSwapChain"), (UINT, "iBackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE9), "ppBackBuffer")]),
-    Method(HRESULT, "GetRasterStatus", [(UINT, "iSwapChain"), Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]),
-    Method(HRESULT, "SetDialogBoxMode", [(BOOL, "bEnableDialogs")]),
-    Method(Void, "SetGammaRamp", [(UINT, "iSwapChain"), (D3DSGR, "Flags"), (ConstPointer(D3DGAMMARAMP), "pRamp")]),
-    Method(Void, "GetGammaRamp", [(UINT, "iSwapChain"), Out(Pointer(D3DGAMMARAMP), "pRamp")]),
-    Method(HRESULT, "CreateTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DTEXTURE9), "ppTexture"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "CreateVolumeTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Depth"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVOLUMETEXTURE9), "ppVolumeTexture"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "CreateCubeTexture", [(UINT, "EdgeLength"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DCUBETEXTURE9), "ppCubeTexture"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "CreateVertexBuffer", [(UINT, "Length"), (D3DUSAGE, "Usage"), (D3DFVF, "FVF"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVERTEXBUFFER9), "ppVertexBuffer"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "CreateIndexBuffer", [(UINT, "Length"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DINDEXBUFFER9), "ppIndexBuffer"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "CreateRenderTarget", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "CreateDepthStencilSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Discard"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "UpdateSurface", [(PDIRECT3DSURFACE9, "pSourceSurface"), (ConstPointer(RECT), "pSourceRect"), (PDIRECT3DSURFACE9, "pDestinationSurface"), (ConstPointer(POINT), "pDestPoint")]),
-    Method(HRESULT, "UpdateTexture", [(PDIRECT3DBASETEXTURE9, "pSourceTexture"), (PDIRECT3DBASETEXTURE9, "pDestinationTexture")]),
-    Method(HRESULT, "GetRenderTargetData", [(PDIRECT3DSURFACE9, "pRenderTarget"), (PDIRECT3DSURFACE9, "pDestSurface")]),
-    Method(HRESULT, "GetFrontBufferData", [(UINT, "iSwapChain"), (PDIRECT3DSURFACE9, "pDestSurface")]),
-    Method(HRESULT, "StretchRect", [(PDIRECT3DSURFACE9, "pSourceSurface"), (ConstPointer(RECT), "pSourceRect"), (PDIRECT3DSURFACE9, "pDestSurface"), (ConstPointer(RECT), "pDestRect"), (D3DTEXTUREFILTERTYPE, "Filter")]),
-    Method(HRESULT, "ColorFill", [(PDIRECT3DSURFACE9, "pSurface"), (ConstPointer(RECT), "pRect"), (D3DCOLOR, "color")]),
-    Method(HRESULT, "CreateOffscreenPlainSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle")]),
-    Method(HRESULT, "SetRenderTarget", [(DWORD, "RenderTargetIndex"), (PDIRECT3DSURFACE9, "pRenderTarget")]),
-    Method(HRESULT, "GetRenderTarget", [(DWORD, "RenderTargetIndex"), Out(Pointer(PDIRECT3DSURFACE9), "ppRenderTarget")]),
-    Method(HRESULT, "SetDepthStencilSurface", [(PDIRECT3DSURFACE9, "pNewZStencil")]),
-    Method(HRESULT, "GetDepthStencilSurface", [Out(Pointer(PDIRECT3DSURFACE9), "ppZStencilSurface")]),
-    Method(HRESULT, "BeginScene", []),
-    Method(HRESULT, "EndScene", []),
-    Method(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (D3DCLEAR, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]),
-    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
-    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")]),
-    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
-    Method(HRESULT, "SetViewport", [(ConstPointer(D3DVIEWPORT9), "pViewport")]),
-    Method(HRESULT, "GetViewport", [Out(Pointer(D3DVIEWPORT9), "pViewport")]),
-    Method(HRESULT, "SetMaterial", [(ConstPointer(D3DMATERIAL9), "pMaterial")]),
-    Method(HRESULT, "GetMaterial", [Out(Pointer(D3DMATERIAL9), "pMaterial")]),
-    Method(HRESULT, "SetLight", [(DWORD, "Index"), (ConstPointer(D3DLIGHT9), "pLight")]),
-    Method(HRESULT, "GetLight", [(DWORD, "Index"), Out(Pointer(D3DLIGHT9), "pLight")]),
-    Method(HRESULT, "LightEnable", [(DWORD, "Index"), (BOOL, "Enable")]),
-    Method(HRESULT, "GetLightEnable", [(DWORD, "Index"), Out(Pointer(BOOL), "pEnable")]),
-    Method(HRESULT, "SetClipPlane", [(DWORD, "Index"), (ConstPointer(Float), "pPlane")]),
-    Method(HRESULT, "GetClipPlane", [(DWORD, "Index"), Out(Pointer(Float), "pPlane")]),
-    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "State"), (DWORD, "Value")]),
-    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "State"), Out(Pointer(DWORD), "pValue")]),
-    Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "Type"), Out(Pointer(PDIRECT3DSTATEBLOCK9), "ppSB")]),
-    Method(HRESULT, "BeginStateBlock", []),
-    Method(HRESULT, "EndStateBlock", [Out(Pointer(PDIRECT3DSTATEBLOCK9), "ppSB")]),
-    Method(HRESULT, "SetClipStatus", [(ConstPointer(D3DCLIPSTATUS9), "pClipStatus")]),
-    Method(HRESULT, "GetClipStatus", [Out(Pointer(D3DCLIPSTATUS9), "pClipStatus")]),
-    Method(HRESULT, "GetTexture", [(DWORD, "Stage"), Out(Pointer(PDIRECT3DBASETEXTURE9), "ppTexture")]),
-    Method(HRESULT, "SetTexture", [(DWORD, "Stage"), (PDIRECT3DBASETEXTURE9, "pTexture")]),
-    Method(HRESULT, "GetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]),
-    Method(HRESULT, "SetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), (DWORD, "Value")]),
-    Method(HRESULT, "GetSamplerState", [(DWORD, "Sampler"), (D3DSAMPLERSTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]),
-    Method(HRESULT, "SetSamplerState", [(DWORD, "Sampler"), (D3DSAMPLERSTATETYPE, "Type"), (DWORD, "Value")]),
-    Method(HRESULT, "ValidateDevice", [Out(Pointer(DWORD), "pNumPasses")]),
-    Method(HRESULT, "SetPaletteEntries", [(UINT, "PaletteNumber"), (ConstPointer(PALETTEENTRY), "pEntries")]),
-    Method(HRESULT, "GetPaletteEntries", [(UINT, "PaletteNumber"), Out(Pointer(PALETTEENTRY), "pEntries")]),
-    Method(HRESULT, "SetCurrentTexturePalette", [(UINT, "PaletteNumber")]),
-    Method(HRESULT, "GetCurrentTexturePalette", [Out(Pointer(UINT), "PaletteNumber")]),
-    Method(HRESULT, "SetScissorRect", [(ConstPointer(RECT), "pRect")]),
-    Method(HRESULT, "GetScissorRect", [Out(Pointer(RECT), "pRect")]),
-    Method(HRESULT, "SetSoftwareVertexProcessing", [(BOOL, "bSoftware")]),
-    Method(BOOL, "GetSoftwareVertexProcessing", []),
-    Method(HRESULT, "SetNPatchMode", [(Float, "nSegments")]),
-    Method(Float, "GetNPatchMode", []),
-    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "StartVertex"), (UINT, "PrimitiveCount")]),
-    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (INT, "BaseVertexIndex"), (UINT, "MinVertexIndex"), (UINT, "NumVertices"), (UINT, "startIndex"), (UINT, "primCount")]),
-    Method(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
-    Method(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertices"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
-    Method(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER9, "pDestBuffer"), (PDIRECT3DVERTEXDECLARATION9, "pVertexDecl"), (D3DPV, "Flags")]),
-    Method(HRESULT, "CreateVertexDeclaration", [(ConstPointer(D3DVERTEXELEMENT9), "pVertexElements"), Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]),
-    Method(HRESULT, "SetVertexDeclaration", [(PDIRECT3DVERTEXDECLARATION9, "pDecl")]),
-    Method(HRESULT, "GetVertexDeclaration", [Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]),
-    Method(HRESULT, "SetFVF", [(D3DFVF, "FVF")]),
-    Method(HRESULT, "GetFVF", [Out(Pointer(D3DFVF), "pFVF")]),
-    Method(HRESULT, "CreateVertexShader", [(D3DSHADER9, "pFunction"), Out(Pointer(PDIRECT3DVERTEXSHADER9), "ppShader")]),
-    Method(HRESULT, "SetVertexShader", [(PDIRECT3DVERTEXSHADER9, "pShader")]),
-    Method(HRESULT, "GetVertexShader", [Out(Pointer(PDIRECT3DVERTEXSHADER9), "ppShader")]),
-    Method(HRESULT, "SetVertexShaderConstantF", [(UINT, "StartRegister"), (Array(Const(Float), "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
-    Method(HRESULT, "GetVertexShaderConstantF", [(UINT, "StartRegister"), Out(Array(Float, "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
-    Method(HRESULT, "SetVertexShaderConstantI", [(UINT, "StartRegister"), (Array(Const(Int), "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
-    Method(HRESULT, "GetVertexShaderConstantI", [(UINT, "StartRegister"), Out(Array(Int, "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
-    Method(HRESULT, "SetVertexShaderConstantB", [(UINT, "StartRegister"), (Array(Const(BOOL), "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
-    Method(HRESULT, "GetVertexShaderConstantB", [(UINT, "StartRegister"), Out(Array(BOOL, "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
-    Method(HRESULT, "SetStreamSource", [(UINT, "StreamNumber"), (PDIRECT3DVERTEXBUFFER9, "pStreamData"), (UINT, "OffsetInBytes"), (UINT, "Stride")]),
-    Method(HRESULT, "GetStreamSource", [(UINT, "StreamNumber"), Out(Pointer(PDIRECT3DVERTEXBUFFER9), "ppStreamData"), Out(Pointer(UINT), "pOffsetInBytes"), Out(Pointer(UINT), "pStride")]),
-    Method(HRESULT, "SetStreamSourceFreq", [(UINT, "StreamNumber"), (UINT, "Setting")]),
-    Method(HRESULT, "GetStreamSourceFreq", [(UINT, "StreamNumber"), Out(Pointer(UINT), "pSetting")]),
-    Method(HRESULT, "SetIndices", [(PDIRECT3DINDEXBUFFER9, "pIndexData")]),
-    Method(HRESULT, "GetIndices", [Out(Pointer(PDIRECT3DINDEXBUFFER9), "ppIndexData")]),
-    Method(HRESULT, "CreatePixelShader", [(D3DSHADER9, "pFunction"), Out(Pointer(PDIRECT3DPIXELSHADER9), "ppShader")]),
-    Method(HRESULT, "SetPixelShader", [(PDIRECT3DPIXELSHADER9, "pShader")]),
-    Method(HRESULT, "GetPixelShader", [Out(Pointer(PDIRECT3DPIXELSHADER9), "ppShader")]),
-    Method(HRESULT, "SetPixelShaderConstantF", [(UINT, "StartRegister"), (Array(Const(Float), "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
-    Method(HRESULT, "GetPixelShaderConstantF", [(UINT, "StartRegister"), Out(Array(Float, "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
-    Method(HRESULT, "SetPixelShaderConstantI", [(UINT, "StartRegister"), (Array(Const(Int), "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
-    Method(HRESULT, "GetPixelShaderConstantI", [(UINT, "StartRegister"), Out(Array(Int, "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
-    Method(HRESULT, "SetPixelShaderConstantB", [(UINT, "StartRegister"), (Array(Const(BOOL), "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
-    Method(HRESULT, "GetPixelShaderConstantB", [(UINT, "StartRegister"), Out(Array(BOOL, "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
-    Method(HRESULT, "DrawRectPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DRECTPATCH_INFO), "pRectPatchInfo")]),
-    Method(HRESULT, "DrawTriPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DTRIPATCH_INFO), "pTriPatchInfo")]),
-    Method(HRESULT, "DeletePatch", [(UINT, "Handle")]),
-    Method(HRESULT, "CreateQuery", [(D3DQUERYTYPE, "Type"), Out(Pointer(PDIRECT3DQUERY9), "ppQuery")]),
-]
-
-IDirect3DStateBlock9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "Capture", []),
-    Method(HRESULT, "Apply", []),
-]
-
-IDirect3DSwapChain9.methods += [
-    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion"), (D3DPRESENT, "dwFlags")]),
-    Method(HRESULT, "GetFrontBufferData", [(PDIRECT3DSURFACE9, "pDestSurface")]),
-    Method(HRESULT, "GetBackBuffer", [(UINT, "iBackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE9), "ppBackBuffer")]),
-    Method(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]),
-    Method(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")]),
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "GetPresentParameters", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]),
-]
-
-IDirect3DResource9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
-    Method(D3D9_RESOURCE_PRIORITY, "SetPriority", [(D3D9_RESOURCE_PRIORITY, "PriorityNew")]),
-    Method(D3D9_RESOURCE_PRIORITY, "GetPriority", []),
-    Method(Void, "PreLoad", []),
-    Method(D3DRESOURCETYPE, "GetType", []),
-]
-
-IDirect3DVertexDeclaration9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "GetDeclaration", [Out(Pointer(D3DVERTEXELEMENT9), "pElement"), Out(Pointer(UINT), "pNumElements")]),
-]
-
-IDirect3DVertexShader9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "GetFunction", [Out(OpaquePointer(Void), "pData"), Out(Pointer(UINT), "pSizeOfData")]),
-]
-
-IDirect3DPixelShader9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "GetFunction", [Out(OpaquePointer(Void), "pData"), Out(Pointer(UINT), "pSizeOfData")]),
-]
-
-IDirect3DBaseTexture9.methods += [
-    Method(DWORD, "SetLOD", [(DWORD, "LODNew")]),
-    Method(DWORD, "GetLOD", []),
-    Method(DWORD, "GetLevelCount", []),
-    Method(HRESULT, "SetAutoGenFilterType", [(D3DTEXTUREFILTERTYPE, "FilterType")]),
-    Method(D3DTEXTUREFILTERTYPE, "GetAutoGenFilterType", []),
-    Method(Void, "GenerateMipSubLevels", []),
-]
-
-IDirect3DTexture9.methods += [
-    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
-    Method(HRESULT, "GetSurfaceLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurfaceLevel")]),
-    Method(HRESULT, "LockRect", [(UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "UnlockRect", [(UINT, "Level")]),
-    Method(HRESULT, "AddDirtyRect", [(ConstPointer(RECT), "pDirtyRect")]),
-]
-
-IDirect3DVolumeTexture9.methods += [
-    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
-    Method(HRESULT, "GetVolumeLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DVOLUME9), "ppVolumeLevel")]),
-    Method(HRESULT, "LockBox", [(UINT, "Level"), Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "UnlockBox", [(UINT, "Level")]),
-    Method(HRESULT, "AddDirtyBox", [(ConstPointer(D3DBOX), "pDirtyBox")]),
-]
-
-IDirect3DCubeTexture9.methods += [
-    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
-    Method(HRESULT, "GetCubeMapSurface", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE9), "ppCubeMapSurface")]),
-    Method(HRESULT, "LockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "UnlockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level")]),
-    Method(HRESULT, "AddDirtyRect", [(D3DCUBEMAP_FACES, "FaceType"), (ConstPointer(RECT), "pDirtyRect")]),
-]
-
-IDirect3DVertexBuffer9.methods += [
-    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(OpaquePointer(Void)), "ppbData"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVERTEXBUFFER_DESC), "pDesc")]),
-]
-
-IDirect3DIndexBuffer9.methods += [
-    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(OpaquePointer(Void)), "ppbData"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "Unlock", []),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DINDEXBUFFER_DESC), "pDesc")]),
-]
-
-IDirect3DSurface9.methods += [
-    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
-    Method(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "UnlockRect", []),
-    Method(HRESULT, "GetDC", [Out(Pointer(HDC), "phdc")]),
-    Method(HRESULT, "ReleaseDC", [(HDC, "hdc")]),
-]
-
-IDirect3DVolume9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
-    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
-    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
-    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
-    Method(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]),
-    Method(HRESULT, "UnlockBox", []),
-]
-
-IDirect3DQuery9.methods += [
-    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
-    Method(D3DQUERYTYPE, "GetType", []),
-    Method(DWORD, "GetDataSize", []),
-    Method(HRESULT, "Issue", [(D3DISSUE, "dwIssueFlags")]),
-    Method(HRESULT, "GetData", [Out(OpaquePointer(Void), "pData"), (DWORD, "dwSize"), (D3DGETDATA, "dwGetDataFlags")]),
-]
-
-IDirect3D9Ex.methods += [
-    Method(UINT, "GetAdapterModeCountEx", [(UINT, "Adapter"), (ConstPointer(D3DDISPLAYMODEFILTER), "pFilter") ]),
-    Method(HRESULT, "EnumAdapterModesEx", [(UINT, "Adapter"), (ConstPointer(D3DDISPLAYMODEFILTER), "pFilter"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODEEX), "pMode")]),
-    Method(HRESULT, "GetAdapterDisplayModeEx", [(UINT, "Adapter"), Out(Pointer(D3DDISPLAYMODEEX), "pMode"), Out(Pointer(D3DDISPLAYROTATION), "pRotation")]),
-    Method(HRESULT, "CreateDeviceEx", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (D3DCREATE, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(D3DDISPLAYMODEEX), "pFullscreenDisplayMode"), Out(Pointer(PDIRECT3DDEVICE9EX), "ppReturnedDeviceInterface")]),
-    Method(HRESULT, "GetAdapterLUID", [(UINT, "Adapter"), Out(Pointer(LUID), "pLUID")]),
-]
-
-IDirect3DDevice9Ex.methods += [
-    Method(HRESULT, "SetConvolutionMonoKernel", [(UINT, "width"), (UINT, "height"), (Array(Float, "width"), "rows"), (Array(Float, "height"), "columns")]),
-    Method(HRESULT, "ComposeRects", [(PDIRECT3DSURFACE9, "pSrc"), (PDIRECT3DSURFACE9, "pDst"), (PDIRECT3DVERTEXBUFFER9, "pSrcRectDescs"), (UINT, "NumRects"), (PDIRECT3DVERTEXBUFFER9, "pDstRectDescs"), (D3DCOMPOSERECTSOP, "Operation"), (Int, "Xoffset"), (Int, "Yoffset")]),
-    Method(HRESULT, "PresentEx", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion"), (D3DPRESENT, "dwFlags")]),
-    Method(HRESULT, "GetGPUThreadPriority", [Out(Pointer(INT), "pPriority")]),
-    Method(HRESULT, "SetGPUThreadPriority", [(INT, "Priority")]),
-    Method(HRESULT, "WaitForVBlank", [(UINT, "iSwapChain")]),
-    Method(HRESULT, "CheckResourceResidency", [(Array(PDIRECT3DRESOURCE9, "NumResources"), "pResourceArray"), (UINT32, "NumResources")]),
-    Method(HRESULT, "SetMaximumFrameLatency", [(UINT, "MaxLatency")]),
-    Method(HRESULT, "GetMaximumFrameLatency", [Out(Pointer(UINT), "pMaxLatency")]),
-    Method(HRESULT, "CheckDeviceState", [(HWND, "hDestinationWindow")]),
-    Method(HRESULT, "CreateRenderTargetEx", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle"), (D3DUSAGE, "Usage")]),
-    Method(HRESULT, "CreateOffscreenPlainSurfaceEx", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle"), (D3DUSAGE, "Usage")]),
-    Method(HRESULT, "CreateDepthStencilSurfaceEx", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Discard"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle"), (D3DUSAGE, "Usage")]),
-    Method(HRESULT, "ResetEx", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(D3DDISPLAYMODEEX), "pFullscreenDisplayMode")]),
-    Method(HRESULT, "GetDisplayModeEx", [(UINT, "iSwapChain"), Out(Pointer(D3DDISPLAYMODEEX), "pMode"), Out(Pointer(D3DDISPLAYROTATION), "pRotation")]),
-]
-
-IDirect3DSwapChain9Ex.methods += [
-    Method(HRESULT, "GetLastPresentCount", [Out(Pointer(UINT), "pLastPresentCount")]),
-    Method(HRESULT, "GetPresentStats", [Out(Pointer(D3DPRESENTSTATS), "pPresentationStatistics")]),
-    Method(HRESULT, "GetDisplayModeEx", [Out(Pointer(D3DDISPLAYMODEEX), "pMode"), Out(Pointer(D3DDISPLAYROTATION), "pRotation")]),
-]
-
-d3d9 = API("d3d9")
-d3d9.add_functions([
-    StdFunction(PDIRECT3D9, "Direct3DCreate9", [(UINT, "SDKVersion")], fail='NULL'),
-    StdFunction(HRESULT, "Direct3DCreate9Ex", [(UINT, "SDKVersion"), Out(Pointer(PDIRECT3D9EX), "ppD3D")], fail='D3DERR_NOTAVAILABLE'),
-    StdFunction(Int, "D3DPERF_BeginEvent", [(D3DCOLOR, "col"), (LPCWSTR, "wszName")], fail='-1'),
-    StdFunction(Int, "D3DPERF_EndEvent", [], fail='-1'),
-    StdFunction(Void, "D3DPERF_SetMarker", [(D3DCOLOR, "col"), (LPCWSTR, "wszName")]),
-    StdFunction(Void, "D3DPERF_SetRegion", [(D3DCOLOR, "col"), (LPCWSTR, "wszName")]),
-    StdFunction(BOOL, "D3DPERF_QueryRepeatFrame", [], fail='FALSE'),
-    StdFunction(Void, "D3DPERF_SetOptions", [(DWORD, "dwOptions")]),
-    StdFunction(DWORD, "D3DPERF_GetStatus", [], fail='0'),
-])
diff --git a/d3d9caps.py b/d3d9caps.py
deleted file mode 100644 (file)
index 1c0188f..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d9caps.h"""
-
-from winapi import *
-from d3d9types import *
-
-D3DVS20CAPS = Flags(DWORD, [
-    "D3DVS20CAPS_PREDICATION",
-])
-
-D3DVSHADERCAPS2_0 = Struct("D3DVSHADERCAPS2_0", [
-    (D3DVS20CAPS, "Caps"),
-    (INT, "DynamicFlowControlDepth"),
-    (INT, "NumTemps"),
-    (INT, "StaticFlowControlDepth"),
-])
-
-D3DPS20CAPS = Flags(DWORD, [
-    "D3DPS20CAPS_ARBITRARYSWIZZLE",
-    "D3DPS20CAPS_GRADIENTINSTRUCTIONS",
-    "D3DPS20CAPS_PREDICATION",
-    "D3DPS20CAPS_NODEPENDENTREADLIMIT",
-    "D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT",
-])
-
-D3DPSHADERCAPS2_0 = Struct("D3DPSHADERCAPS2_0", [
-    (D3DPS20CAPS, "Caps"),
-    (INT, "DynamicFlowControlDepth"),
-    (INT, "NumTemps"),
-    (INT, "StaticFlowControlDepth"),
-    (INT, "NumInstructionSlots"),
-])
-
-D3DCAPS = Flags(DWORD, [
-    "D3DCAPS_READ_SCANLINE",
-])
-
-D3DCAPS2 = Flags(DWORD, [
-    "D3DCAPS2_FULLSCREENGAMMA",
-    "D3DCAPS2_CANCALIBRATEGAMMA",
-    "D3DCAPS2_RESERVED",
-    "D3DCAPS2_CANMANAGERESOURCE",
-    "D3DCAPS2_DYNAMICTEXTURES",
-    "D3DCAPS2_CANAUTOGENMIPMAP",
-    "D3DCAPS2_CANSHARERESOURCE",
-])
-
-D3DCAPS3 = Flags(DWORD, [
-    "D3DCAPS3_RESERVED",
-    "D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD",
-    "D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION",
-    "D3DCAPS3_COPY_TO_VIDMEM",
-    "D3DCAPS3_COPY_TO_SYSTEMMEM",
-])
-
-
-D3DPRESENT_INTERVAL = Flags(DWORD, [
-    #"D3DPRESENT_INTERVAL_DEFAULT", # 0
-    "D3DPRESENT_INTERVAL_ONE",
-    "D3DPRESENT_INTERVAL_TWO",
-    "D3DPRESENT_INTERVAL_THREE",
-    "D3DPRESENT_INTERVAL_FOUR",
-    "D3DPRESENT_INTERVAL_IMMEDIATE",
-])
-
-D3DCURSORCAPS = Flags(DWORD, [
-    "D3DCURSORCAPS_COLOR",
-    "D3DCURSORCAPS_LOWRES",
-])
-
-D3DDEVCAPS = Flags(DWORD, [
-    "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
-    "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
-    "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
-    "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
-    "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
-    "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
-    "D3DDEVCAPS_DRAWPRIMTLVERTEX",
-    "D3DDEVCAPS_CANRENDERAFTERFLIP",
-    "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
-    "D3DDEVCAPS_DRAWPRIMITIVES2",
-    "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
-    "D3DDEVCAPS_DRAWPRIMITIVES2EX",
-    "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
-    "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
-    "D3DDEVCAPS_HWRASTERIZATION",
-    "D3DDEVCAPS_PUREDEVICE",
-    "D3DDEVCAPS_QUINTICRTPATCHES",
-    "D3DDEVCAPS_RTPATCHES",
-    "D3DDEVCAPS_RTPATCHHANDLEZERO",
-    "D3DDEVCAPS_NPATCHES",
-])
-
-D3DPMISCCAPS = Flags(DWORD, [
-    "D3DPMISCCAPS_MASKZ",
-    "D3DPMISCCAPS_CULLNONE",
-    "D3DPMISCCAPS_CULLCW",
-    "D3DPMISCCAPS_CULLCCW",
-    "D3DPMISCCAPS_COLORWRITEENABLE",
-    "D3DPMISCCAPS_CLIPPLANESCALEDPOINTS",
-    "D3DPMISCCAPS_CLIPTLVERTS",
-    "D3DPMISCCAPS_TSSARGTEMP",
-    "D3DPMISCCAPS_BLENDOP",
-    "D3DPMISCCAPS_NULLREFERENCE",
-    "D3DPMISCCAPS_INDEPENDENTWRITEMASKS",
-    "D3DPMISCCAPS_PERSTAGECONSTANT",
-    "D3DPMISCCAPS_FOGANDSPECULARALPHA",
-    "D3DPMISCCAPS_SEPARATEALPHABLEND",
-    "D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS",
-    "D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING",
-    "D3DPMISCCAPS_FOGVERTEXCLAMPED",
-    "D3DPMISCCAPS_POSTBLENDSRGBCONVERT",
-])
-
-D3DLINECAPS = Flags(DWORD, [
-    "D3DLINECAPS_TEXTURE",
-    "D3DLINECAPS_ZTEST",
-    "D3DLINECAPS_BLEND",
-    "D3DLINECAPS_ALPHACMP",
-    "D3DLINECAPS_FOG",
-    "D3DLINECAPS_ANTIALIAS",
-])
-
-D3DPRASTERCAPS = Flags(DWORD, [
-    "D3DPRASTERCAPS_DITHER",
-    "D3DPRASTERCAPS_ZTEST",
-    "D3DPRASTERCAPS_FOGVERTEX",
-    "D3DPRASTERCAPS_FOGTABLE",
-    "D3DPRASTERCAPS_MIPMAPLODBIAS",
-    "D3DPRASTERCAPS_ZBUFFERLESSHSR",
-    "D3DPRASTERCAPS_FOGRANGE",
-    "D3DPRASTERCAPS_ANISOTROPY",
-    "D3DPRASTERCAPS_WBUFFER",
-    "D3DPRASTERCAPS_WFOG",
-    "D3DPRASTERCAPS_ZFOG",
-    "D3DPRASTERCAPS_COLORPERSPECTIVE",
-    "D3DPRASTERCAPS_SCISSORTEST",
-    "D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS",
-    "D3DPRASTERCAPS_DEPTHBIAS",
-    "D3DPRASTERCAPS_MULTISAMPLE_TOGGLE",
-])
-
-D3DPCMPCAPS = Flags(DWORD, [
-    "D3DPCMPCAPS_NEVER",
-    "D3DPCMPCAPS_LESS",
-    "D3DPCMPCAPS_EQUAL",
-    "D3DPCMPCAPS_LESSEQUAL",
-    "D3DPCMPCAPS_GREATER",
-    "D3DPCMPCAPS_NOTEQUAL",
-    "D3DPCMPCAPS_GREATEREQUAL",
-    "D3DPCMPCAPS_ALWAYS",
-])
-
-D3DPBLENDCAPS = Flags(DWORD, [
-    "D3DPBLENDCAPS_ZERO",
-    "D3DPBLENDCAPS_ONE",
-    "D3DPBLENDCAPS_SRCCOLOR",
-    "D3DPBLENDCAPS_INVSRCCOLOR",
-    "D3DPBLENDCAPS_SRCALPHA",
-    "D3DPBLENDCAPS_INVSRCALPHA",
-    "D3DPBLENDCAPS_DESTALPHA",
-    "D3DPBLENDCAPS_INVDESTALPHA",
-    "D3DPBLENDCAPS_DESTCOLOR",
-    "D3DPBLENDCAPS_INVDESTCOLOR",
-    "D3DPBLENDCAPS_SRCALPHASAT",
-    "D3DPBLENDCAPS_BOTHSRCALPHA",
-    "D3DPBLENDCAPS_BOTHINVSRCALPHA",
-    "D3DPBLENDCAPS_BLENDFACTOR",
-    "D3DPBLENDCAPS_SRCCOLOR2",
-    "D3DPBLENDCAPS_INVSRCCOLOR2",
-])
-
-D3DPSHADECAPS = Flags(DWORD, [
-    "D3DPSHADECAPS_COLORGOURAUDRGB",
-    "D3DPSHADECAPS_SPECULARGOURAUDRGB",
-    "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
-    "D3DPSHADECAPS_FOGGOURAUD",
-])
-
-D3DPTEXTURECAPS = Flags(DWORD, [
-    "D3DPTEXTURECAPS_PERSPECTIVE",
-    "D3DPTEXTURECAPS_POW2",
-    "D3DPTEXTURECAPS_ALPHA",
-    "D3DPTEXTURECAPS_SQUAREONLY",
-    "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
-    "D3DPTEXTURECAPS_ALPHAPALETTE",
-    "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
-    "D3DPTEXTURECAPS_PROJECTED",
-    "D3DPTEXTURECAPS_CUBEMAP",
-    "D3DPTEXTURECAPS_VOLUMEMAP",
-    "D3DPTEXTURECAPS_MIPMAP",
-    "D3DPTEXTURECAPS_MIPVOLUMEMAP",
-    "D3DPTEXTURECAPS_MIPCUBEMAP",
-    "D3DPTEXTURECAPS_CUBEMAP_POW2",
-    "D3DPTEXTURECAPS_VOLUMEMAP_POW2",
-    "D3DPTEXTURECAPS_NOPROJECTEDBUMPENV",
-])
-
-D3DPTFILTERCAPS = Flags(DWORD, [
-    "D3DPTFILTERCAPS_MINFPOINT",
-    "D3DPTFILTERCAPS_MINFLINEAR",
-    "D3DPTFILTERCAPS_MINFANISOTROPIC",
-    "D3DPTFILTERCAPS_MINFPYRAMIDALQUAD",
-    "D3DPTFILTERCAPS_MINFGAUSSIANQUAD",
-    "D3DPTFILTERCAPS_MIPFPOINT",
-    "D3DPTFILTERCAPS_MIPFLINEAR",
-    "D3DPTFILTERCAPS_CONVOLUTIONMONO",
-    "D3DPTFILTERCAPS_MAGFPOINT",
-    "D3DPTFILTERCAPS_MAGFLINEAR",
-    "D3DPTFILTERCAPS_MAGFANISOTROPIC",
-    "D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD",
-    "D3DPTFILTERCAPS_MAGFGAUSSIANQUAD",
-])
-
-D3DPTADDRESSCAPS = Flags(DWORD, [
-    "D3DPTADDRESSCAPS_WRAP",
-    "D3DPTADDRESSCAPS_MIRROR",
-    "D3DPTADDRESSCAPS_CLAMP",
-    "D3DPTADDRESSCAPS_BORDER",
-    "D3DPTADDRESSCAPS_INDEPENDENTUV",
-    "D3DPTADDRESSCAPS_MIRRORONCE",
-])
-
-D3DSTENCILCAPS = Flags(DWORD, [
-    "D3DSTENCILCAPS_KEEP",
-    "D3DSTENCILCAPS_ZERO",
-    "D3DSTENCILCAPS_REPLACE",
-    "D3DSTENCILCAPS_INCRSAT",
-    "D3DSTENCILCAPS_DECRSAT",
-    "D3DSTENCILCAPS_INVERT",
-    "D3DSTENCILCAPS_INCR",
-    "D3DSTENCILCAPS_DECR",
-    "D3DSTENCILCAPS_TWOSIDED",
-])
-
-D3DTEXOPCAPS = Flags(DWORD, [
-    "D3DTEXOPCAPS_DISABLE",
-    "D3DTEXOPCAPS_SELECTARG1",
-    "D3DTEXOPCAPS_SELECTARG2",
-    "D3DTEXOPCAPS_MODULATE",
-    "D3DTEXOPCAPS_MODULATE2X",
-    "D3DTEXOPCAPS_MODULATE4X",
-    "D3DTEXOPCAPS_ADD",
-    "D3DTEXOPCAPS_ADDSIGNED",
-    "D3DTEXOPCAPS_ADDSIGNED2X",
-    "D3DTEXOPCAPS_SUBTRACT",
-    "D3DTEXOPCAPS_ADDSMOOTH",
-    "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
-    "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
-    "D3DTEXOPCAPS_BLENDFACTORALPHA",
-    "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
-    "D3DTEXOPCAPS_BLENDCURRENTALPHA",
-    "D3DTEXOPCAPS_PREMODULATE",
-    "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
-    "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
-    "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
-    "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
-    "D3DTEXOPCAPS_BUMPENVMAP",
-    "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
-    "D3DTEXOPCAPS_DOTPRODUCT3",
-    "D3DTEXOPCAPS_MULTIPLYADD",
-    "D3DTEXOPCAPS_LERP",
-])
-
-D3DFVFCAPS = Flags(DWORD, [
-    "D3DFVFCAPS_TEXCOORDCOUNTMASK",
-    "D3DFVFCAPS_DONOTSTRIPELEMENTS",
-    "D3DFVFCAPS_PSIZE",
-])
-
-D3DVTXPCAPS = Flags(DWORD, [
-    "D3DVTXPCAPS_TEXGEN",
-    "D3DVTXPCAPS_MATERIALSOURCE7",
-    "D3DVTXPCAPS_DIRECTIONALLIGHTS",
-    "D3DVTXPCAPS_POSITIONALLIGHTS",
-    "D3DVTXPCAPS_LOCALVIEWER",
-    "D3DVTXPCAPS_TWEENING",
-    "D3DVTXPCAPS_TEXGEN_SPHEREMAP",
-    "D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER",
-])
-
-D3DDEVCAPS2 = Flags(DWORD, [
-    "D3DDEVCAPS2_STREAMOFFSET",
-    "D3DDEVCAPS2_DMAPNPATCH",
-    "D3DDEVCAPS2_ADAPTIVETESSRTPATCH",
-    "D3DDEVCAPS2_ADAPTIVETESSNPATCH",
-    "D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES",
-    "D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH",
-    "D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET",
-])
-
-D3DDTCAPS = Flags(DWORD, [
-    "D3DDTCAPS_UBYTE4",
-    "D3DDTCAPS_UBYTE4N",
-    "D3DDTCAPS_SHORT2N",
-    "D3DDTCAPS_SHORT4N",
-    "D3DDTCAPS_USHORT2N",
-    "D3DDTCAPS_USHORT4N",
-    "D3DDTCAPS_UDEC3",
-    "D3DDTCAPS_DEC3N",
-    "D3DDTCAPS_FLOAT16_2",
-    "D3DDTCAPS_FLOAT16_4",
-])
-
-#D3DPS_VERSION = Enum("DWORD", [
-#    "D3DPS_VERSION(0,0)",
-#    "D3DPS_VERSION(1,0)",
-#    "D3DPS_VERSION(1,1)",
-#    "D3DPS_VERSION(1,2)",
-#    "D3DPS_VERSION(1,3)",
-#    "D3DPS_VERSION(1,4)",
-#    "D3DPS_VERSION(2,0)",
-#    "D3DPS_VERSION(3,0)",
-#])
-D3DPS_VERSION = DWORD
-
-#D3DVS_VERSION = Enum("DWORD", [
-#    "D3DVS_VERSION(0,0)",
-#    "D3DVS_VERSION(1,0)",
-#    "D3DVS_VERSION(1,1)",
-#    "D3DVS_VERSION(2,0)",
-#    "D3DVS_VERSION(3,0)",
-#])
-D3DVS_VERSION = DWORD
-
-D3DCAPS9 = Struct("D3DCAPS9", [
-    (D3DDEVTYPE, "DeviceType"),
-    (UINT, "AdapterOrdinal"),
-    (D3DCAPS, "Caps"),
-    (D3DCAPS2, "Caps2"),
-    (D3DCAPS3, "Caps3"),
-    (D3DPRESENT_INTERVAL, "PresentationIntervals"),
-    (D3DCURSORCAPS, "CursorCaps"),
-    (D3DDEVCAPS, "DevCaps"),
-    (D3DPMISCCAPS, "PrimitiveMiscCaps"),
-    (D3DPRASTERCAPS, "RasterCaps"),
-    (D3DPCMPCAPS, "ZCmpCaps"),
-    (D3DPBLENDCAPS, "SrcBlendCaps"),
-    (D3DPBLENDCAPS, "DestBlendCaps"),
-    (D3DPCMPCAPS, "AlphaCmpCaps"),
-    (D3DPSHADECAPS, "ShadeCaps"),
-    (D3DPTEXTURECAPS, "TextureCaps"),
-    (D3DPTFILTERCAPS, "TextureFilterCaps"),
-    (D3DPTFILTERCAPS, "CubeTextureFilterCaps"),
-    (D3DPTFILTERCAPS, "VolumeTextureFilterCaps"),
-    (D3DPTADDRESSCAPS, "TextureAddressCaps"),
-    (D3DPTADDRESSCAPS, "VolumeTextureAddressCaps"),
-    (D3DLINECAPS, "LineCaps"),
-    (DWORD, "MaxTextureWidth"),
-    (DWORD, "MaxTextureHeight"),
-    (DWORD, "MaxVolumeExtent"),
-    (DWORD, "MaxTextureRepeat"),
-    (DWORD, "MaxTextureAspectRatio"),
-    (DWORD, "MaxAnisotropy"),
-    (Float, "MaxVertexW"),
-    (Float, "GuardBandLeft"),
-    (Float, "GuardBandTop"),
-    (Float, "GuardBandRight"),
-    (Float, "GuardBandBottom"),
-    (Float, "ExtentsAdjust"),
-    (D3DSTENCILCAPS, "StencilCaps"),
-    (D3DFVFCAPS, "FVFCaps"),
-    (D3DTEXOPCAPS, "TextureOpCaps"),
-    (DWORD, "MaxTextureBlendStages"),
-    (DWORD, "MaxSimultaneousTextures"),
-    (D3DVTXPCAPS, "VertexProcessingCaps"),
-    (DWORD, "MaxActiveLights"),
-    (DWORD, "MaxUserClipPlanes"),
-    (DWORD, "MaxVertexBlendMatrices"),
-    (DWORD, "MaxVertexBlendMatrixIndex"),
-    (Float, "MaxPointSize"),
-    (DWORD, "MaxPrimitiveCount"),
-    (DWORD, "MaxVertexIndex"),
-    (DWORD, "MaxStreams"),
-    (DWORD, "MaxStreamStride"),
-    (D3DVS_VERSION, "VertexShaderVersion"),
-    (DWORD, "MaxVertexShaderConst"),
-    (D3DPS_VERSION, "PixelShaderVersion"),
-    (Float, "PixelShader1xMaxValue"),
-    (D3DDEVCAPS2, "DevCaps2"),
-    (Float, "MaxNpatchTessellationLevel"),
-    (DWORD, "Reserved5"),
-    (UINT, "MasterAdapterOrdinal"),
-    (UINT, "AdapterOrdinalInGroup"),
-    (UINT, "NumberOfAdaptersInGroup"),
-    (D3DDTCAPS, "DeclTypes"),
-    (DWORD, "NumSimultaneousRTs"),
-    (D3DPTFILTERCAPS, "StretchRectFilterCaps"),
-    (D3DVSHADERCAPS2_0, "VS20Caps"),
-    (D3DPSHADERCAPS2_0, "PS20Caps"),
-    (D3DPTFILTERCAPS, "VertexTextureFilterCaps"),
-    (DWORD, "MaxVShaderInstructionsExecuted"),
-    (DWORD, "MaxPShaderInstructionsExecuted"),
-    (DWORD, "MaxVertexShader30InstructionSlots"),
-    (DWORD, "MaxPixelShader30InstructionSlots"),
-])
-
index b83ebf6d9123af417d7308f90d2a86a847fe4cc4..c489be6a6f53a2221533acb12e2898d63db82231 100644 (file)
@@ -25,7 +25,7 @@
 
 
 from trace import DllTracer
-from d3d9 import d3d9
+from specs.d3d9 import d3d9
 
 
 class D3D9Tracer(DllTracer):
diff --git a/d3d9types.py b/d3d9types.py
deleted file mode 100644 (file)
index 73011ee..0000000
+++ /dev/null
@@ -1,1320 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3d9types.h"""
-
-from winapi import *
-
-D3DCOLOR = Alias("D3DCOLOR", DWORD)
-
-D3DVECTOR = Struct("D3DVECTOR", [
-    (Float, "x"),
-    (Float, "y"),
-    (Float, "z"),
-])
-
-D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
-    (Float, "r"),
-    (Float, "g"),
-    (Float, "b"),
-    (Float, "a"),
-])
-
-D3DRECT = Struct("D3DRECT", [
-    (LONG, "x1"),
-    (LONG, "y1"),
-    (LONG, "x2"),
-    (LONG, "y2"),
-])
-
-D3DMATRIX = Struct("D3DMATRIX", [
-    (Array(Array(Float, "4"), "4"), "m"),
-])
-
-D3DVIEWPORT9 = Struct("D3DVIEWPORT9", [
-    (DWORD, "X"),
-    (DWORD, "Y"),
-    (DWORD, "Width"),
-    (DWORD, "Height"),
-    (Float, "MinZ"),
-    (Float, "MaxZ"),
-])
-
-D3DCLIP = Flags(DWORD, [
-    "D3DCLIPPLANE0",
-    "D3DCLIPPLANE1",
-    "D3DCLIPPLANE2",
-    "D3DCLIPPLANE3",
-    "D3DCLIPPLANE4",
-    "D3DCLIPPLANE5",
-])
-
-D3DCS = Flags(DWORD, [
-    "D3DCS_ALL",
-    "D3DCS_LEFT",
-    "D3DCS_RIGHT",
-    "D3DCS_TOP",
-    "D3DCS_BOTTOM",
-    "D3DCS_FRONT",
-    "D3DCS_BACK",
-    "D3DCS_PLANE0",
-    "D3DCS_PLANE1",
-    "D3DCS_PLANE2",
-    "D3DCS_PLANE3",
-    "D3DCS_PLANE4",
-    "D3DCS_PLANE5",
-])
-
-D3DCLIPSTATUS9 = Struct("D3DCLIPSTATUS9", [
-    (DWORD, "ClipUnion"),
-    (DWORD, "ClipIntersection"),
-])
-
-D3DMATERIAL9 = Struct("D3DMATERIAL9", [
-    (D3DCOLORVALUE, "Diffuse"),
-    (D3DCOLORVALUE, "Ambient"),
-    (D3DCOLORVALUE, "Specular"),
-    (D3DCOLORVALUE, "Emissive"),
-    (Float, "Power"),
-])
-
-D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
-    "D3DLIGHT_POINT",
-    "D3DLIGHT_SPOT",
-    "D3DLIGHT_DIRECTIONAL",
-])
-
-D3DLIGHT9 = Struct("D3DLIGHT9", [
-    (D3DLIGHTTYPE, "Type"),
-    (D3DCOLORVALUE, "Diffuse"),
-    (D3DCOLORVALUE, "Specular"),
-    (D3DCOLORVALUE, "Ambient"),
-    (D3DVECTOR, "Position"),
-    (D3DVECTOR, "Direction"),
-    (Float, "Range"),
-    (Float, "Falloff"),
-    (Float, "Attenuation0"),
-    (Float, "Attenuation1"),
-    (Float, "Attenuation2"),
-    (Float, "Theta"),
-    (Float, "Phi"),
-])
-
-D3DCLEAR = Flags(DWORD, [
-    "D3DCLEAR_TARGET",
-    "D3DCLEAR_ZBUFFER",
-    "D3DCLEAR_STENCIL",
-])
-
-D3DSHADEMODE = Enum("D3DSHADEMODE", [
-    "D3DSHADE_FLAT",
-    "D3DSHADE_GOURAUD",
-    "D3DSHADE_PHONG",
-])
-
-D3DFILLMODE = Enum("D3DFILLMODE", [
-    "D3DFILL_POINT",
-    "D3DFILL_WIREFRAME",
-    "D3DFILL_SOLID",
-])
-
-D3DBLEND = Enum("D3DBLEND", [
-    "D3DBLEND_ZERO",
-    "D3DBLEND_ONE",
-    "D3DBLEND_SRCCOLOR",
-    "D3DBLEND_INVSRCCOLOR",
-    "D3DBLEND_SRCALPHA",
-    "D3DBLEND_INVSRCALPHA",
-    "D3DBLEND_DESTALPHA",
-    "D3DBLEND_INVDESTALPHA",
-    "D3DBLEND_DESTCOLOR",
-    "D3DBLEND_INVDESTCOLOR",
-    "D3DBLEND_SRCALPHASAT",
-    "D3DBLEND_BOTHSRCALPHA",
-    "D3DBLEND_BOTHINVSRCALPHA",
-    "D3DBLEND_BLENDFACTOR",
-    "D3DBLEND_INVBLENDFACTOR",
-    "D3DBLEND_SRCCOLOR2",
-    "D3DBLEND_INVSRCCOLOR2",
-])
-
-D3DBLENDOP = Enum("D3DBLENDOP", [
-    "D3DBLENDOP_ADD",
-    "D3DBLENDOP_SUBTRACT",
-    "D3DBLENDOP_REVSUBTRACT",
-    "D3DBLENDOP_MIN",
-    "D3DBLENDOP_MAX",
-])
-
-D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
-    "D3DTADDRESS_WRAP",
-    "D3DTADDRESS_MIRROR",
-    "D3DTADDRESS_CLAMP",
-    "D3DTADDRESS_BORDER",
-    "D3DTADDRESS_MIRRORONCE",
-])
-
-D3DCULL = Enum("D3DCULL", [
-    "D3DCULL_NONE",
-    "D3DCULL_CW",
-    "D3DCULL_CCW",
-])
-
-D3DCMPFUNC = Enum("D3DCMPFUNC", [
-    "D3DCMP_NEVER",
-    "D3DCMP_LESS",
-    "D3DCMP_EQUAL",
-    "D3DCMP_LESSEQUAL",
-    "D3DCMP_GREATER",
-    "D3DCMP_NOTEQUAL",
-    "D3DCMP_GREATEREQUAL",
-    "D3DCMP_ALWAYS",
-])
-
-D3DSTENCILOP = Enum("D3DSTENCILOP", [
-    "D3DSTENCILOP_KEEP",
-    "D3DSTENCILOP_ZERO",
-    "D3DSTENCILOP_REPLACE",
-    "D3DSTENCILOP_INCRSAT",
-    "D3DSTENCILOP_DECRSAT",
-    "D3DSTENCILOP_INVERT",
-    "D3DSTENCILOP_INCR",
-    "D3DSTENCILOP_DECR",
-])
-
-D3DFOGMODE = Enum("D3DFOGMODE", [
-    "D3DFOG_NONE",
-    "D3DFOG_EXP",
-    "D3DFOG_EXP2",
-    "D3DFOG_LINEAR",
-])
-
-D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
-    "D3DZB_FALSE",
-    "D3DZB_TRUE",
-    "D3DZB_USEW",
-])
-
-D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
-    "D3DPT_POINTLIST",
-    "D3DPT_LINELIST",
-    "D3DPT_LINESTRIP",
-    "D3DPT_TRIANGLELIST",
-    "D3DPT_TRIANGLESTRIP",
-    "D3DPT_TRIANGLEFAN",
-])
-
-D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
-    "D3DTS_VIEW",
-    "D3DTS_PROJECTION",
-    "D3DTS_TEXTURE0",
-    "D3DTS_TEXTURE1",
-    "D3DTS_TEXTURE2",
-    "D3DTS_TEXTURE3",
-    "D3DTS_TEXTURE4",
-    "D3DTS_TEXTURE5",
-    "D3DTS_TEXTURE6",
-    "D3DTS_TEXTURE7",
-])
-
-D3DTS = Flags(DWORD, [
-    "D3DTS_WORLD",
-    "D3DTS_WORLD1",
-    "D3DTS_WORLD2",
-    "D3DTS_WORLD3",
-])
-
-D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
-    "D3DRS_ZENABLE",
-    "D3DRS_FILLMODE",
-    "D3DRS_SHADEMODE",
-    "D3DRS_ZWRITEENABLE",
-    "D3DRS_ALPHATESTENABLE",
-    "D3DRS_LASTPIXEL",
-    "D3DRS_SRCBLEND",
-    "D3DRS_DESTBLEND",
-    "D3DRS_CULLMODE",
-    "D3DRS_ZFUNC",
-    "D3DRS_ALPHAREF",
-    "D3DRS_ALPHAFUNC",
-    "D3DRS_DITHERENABLE",
-    "D3DRS_ALPHABLENDENABLE",
-    "D3DRS_FOGENABLE",
-    "D3DRS_SPECULARENABLE",
-    "D3DRS_FOGCOLOR",
-    "D3DRS_FOGTABLEMODE",
-    "D3DRS_FOGSTART",
-    "D3DRS_FOGEND",
-    "D3DRS_FOGDENSITY",
-    "D3DRS_RANGEFOGENABLE",
-    "D3DRS_STENCILENABLE",
-    "D3DRS_STENCILFAIL",
-    "D3DRS_STENCILZFAIL",
-    "D3DRS_STENCILPASS",
-    "D3DRS_STENCILFUNC",
-    "D3DRS_STENCILREF",
-    "D3DRS_STENCILMASK",
-    "D3DRS_STENCILWRITEMASK",
-    "D3DRS_TEXTUREFACTOR",
-    "D3DRS_WRAP0",
-    "D3DRS_WRAP1",
-    "D3DRS_WRAP2",
-    "D3DRS_WRAP3",
-    "D3DRS_WRAP4",
-    "D3DRS_WRAP5",
-    "D3DRS_WRAP6",
-    "D3DRS_WRAP7",
-    "D3DRS_CLIPPING",
-    "D3DRS_LIGHTING",
-    "D3DRS_AMBIENT",
-    "D3DRS_FOGVERTEXMODE",
-    "D3DRS_COLORVERTEX",
-    "D3DRS_LOCALVIEWER",
-    "D3DRS_NORMALIZENORMALS",
-    "D3DRS_DIFFUSEMATERIALSOURCE",
-    "D3DRS_SPECULARMATERIALSOURCE",
-    "D3DRS_AMBIENTMATERIALSOURCE",
-    "D3DRS_EMISSIVEMATERIALSOURCE",
-    "D3DRS_VERTEXBLEND",
-    "D3DRS_CLIPPLANEENABLE",
-    "D3DRS_POINTSIZE",
-    "D3DRS_POINTSIZE_MIN",
-    "D3DRS_POINTSPRITEENABLE",
-    "D3DRS_POINTSCALEENABLE",
-    "D3DRS_POINTSCALE_A",
-    "D3DRS_POINTSCALE_B",
-    "D3DRS_POINTSCALE_C",
-    "D3DRS_MULTISAMPLEANTIALIAS",
-    "D3DRS_MULTISAMPLEMASK",
-    "D3DRS_PATCHEDGESTYLE",
-    "D3DRS_DEBUGMONITORTOKEN",
-    "D3DRS_POINTSIZE_MAX",
-    "D3DRS_INDEXEDVERTEXBLENDENABLE",
-    "D3DRS_COLORWRITEENABLE",
-    "D3DRS_TWEENFACTOR",
-    "D3DRS_BLENDOP",
-    "D3DRS_POSITIONDEGREE",
-    "D3DRS_NORMALDEGREE",
-    "D3DRS_SCISSORTESTENABLE",
-    "D3DRS_SLOPESCALEDEPTHBIAS",
-    "D3DRS_ANTIALIASEDLINEENABLE",
-    "D3DRS_MINTESSELLATIONLEVEL",
-    "D3DRS_MAXTESSELLATIONLEVEL",
-    "D3DRS_ADAPTIVETESS_X",
-    "D3DRS_ADAPTIVETESS_Y",
-    "D3DRS_ADAPTIVETESS_Z",
-    "D3DRS_ADAPTIVETESS_W",
-    "D3DRS_ENABLEADAPTIVETESSELLATION",
-    "D3DRS_TWOSIDEDSTENCILMODE",
-    "D3DRS_CCW_STENCILFAIL",
-    "D3DRS_CCW_STENCILZFAIL",
-    "D3DRS_CCW_STENCILPASS",
-    "D3DRS_CCW_STENCILFUNC",
-    "D3DRS_COLORWRITEENABLE1",
-    "D3DRS_COLORWRITEENABLE2",
-    "D3DRS_COLORWRITEENABLE3",
-    "D3DRS_BLENDFACTOR",
-    "D3DRS_SRGBWRITEENABLE",
-    "D3DRS_DEPTHBIAS",
-    "D3DRS_WRAP8",
-    "D3DRS_WRAP9",
-    "D3DRS_WRAP10",
-    "D3DRS_WRAP11",
-    "D3DRS_WRAP12",
-    "D3DRS_WRAP13",
-    "D3DRS_WRAP14",
-    "D3DRS_WRAP15",
-    "D3DRS_SEPARATEALPHABLENDENABLE",
-    "D3DRS_SRCBLENDALPHA",
-    "D3DRS_DESTBLENDALPHA",
-    "D3DRS_BLENDOPALPHA",
-])
-
-D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
-    "D3DMCS_MATERIAL",
-    "D3DMCS_COLOR1",
-    "D3DMCS_COLOR2",
-])
-
-D3DWRAP = Flags(DWORD, [
-    "D3DWRAP_U",
-    "D3DWRAP_V",
-    "D3DWRAP_W",
-])
-
-D3DWRAPCOORD = Flags(DWORD, [
-    "D3DWRAPCOORD_0",
-    "D3DWRAPCOORD_1",
-    "D3DWRAPCOORD_2",
-    "D3DWRAPCOORD_3",
-])
-
-D3DCOLORWRITEENABLE = Flags(DWORD, [
-    "D3DCOLORWRITEENABLE_RED",
-    "D3DCOLORWRITEENABLE_GREEN",
-    "D3DCOLORWRITEENABLE_BLUE",
-    "D3DCOLORWRITEENABLE_ALPHA",
-])
-
-D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
-    "D3DTSS_COLOROP",
-    "D3DTSS_COLORARG1",
-    "D3DTSS_COLORARG2",
-    "D3DTSS_ALPHAOP",
-    "D3DTSS_ALPHAARG1",
-    "D3DTSS_ALPHAARG2",
-    "D3DTSS_BUMPENVMAT00",
-    "D3DTSS_BUMPENVMAT01",
-    "D3DTSS_BUMPENVMAT10",
-    "D3DTSS_BUMPENVMAT11",
-    "D3DTSS_TEXCOORDINDEX",
-    "D3DTSS_BUMPENVLSCALE",
-    "D3DTSS_BUMPENVLOFFSET",
-    "D3DTSS_TEXTURETRANSFORMFLAGS",
-    "D3DTSS_COLORARG0",
-    "D3DTSS_ALPHAARG0",
-    "D3DTSS_RESULTARG",
-    "D3DTSS_CONSTANT",
-])
-
-D3DSAMPLERSTATETYPE = Enum("D3DSAMPLERSTATETYPE", [
-
-    "D3DSAMP_ADDRESSU",
-    "D3DSAMP_ADDRESSV",
-    "D3DSAMP_ADDRESSW",
-    "D3DSAMP_BORDERCOLOR",
-    "D3DSAMP_MAGFILTER",
-    "D3DSAMP_MINFILTER",
-    "D3DSAMP_MIPFILTER",
-    "D3DSAMP_MIPMAPLODBIAS",
-    "D3DSAMP_MAXMIPLEVEL",
-    "D3DSAMP_MAXANISOTROPY",
-    "D3DSAMP_SRGBTEXTURE",
-    "D3DSAMP_ELEMENTINDEX",
-    "D3DSAMP_DMAPOFFSET",
-])
-
-D3DTSS = Flags(DWORD, [
-    "D3DTSS_TCI_PASSTHRU",
-    "D3DTSS_TCI_CAMERASPACENORMAL",
-    "D3DTSS_TCI_CAMERASPACEPOSITION",
-    "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
-    "D3DTSS_TCI_SPHEREMAP",
-])
-
-D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
-    "D3DTOP_DISABLE",
-    "D3DTOP_SELECTARG1",
-    "D3DTOP_SELECTARG2",
-    "D3DTOP_MODULATE",
-    "D3DTOP_MODULATE2X",
-    "D3DTOP_MODULATE4X",
-    "D3DTOP_ADD",
-    "D3DTOP_ADDSIGNED",
-    "D3DTOP_ADDSIGNED2X",
-    "D3DTOP_SUBTRACT",
-    "D3DTOP_ADDSMOOTH",
-    "D3DTOP_BLENDDIFFUSEALPHA",
-    "D3DTOP_BLENDTEXTUREALPHA",
-    "D3DTOP_BLENDFACTORALPHA",
-    "D3DTOP_BLENDTEXTUREALPHAPM",
-    "D3DTOP_BLENDCURRENTALPHA",
-    "D3DTOP_PREMODULATE",
-    "D3DTOP_MODULATEALPHA_ADDCOLOR",
-    "D3DTOP_MODULATECOLOR_ADDALPHA",
-    "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
-    "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
-    "D3DTOP_BUMPENVMAP",
-    "D3DTOP_BUMPENVMAPLUMINANCE",
-    "D3DTOP_DOTPRODUCT3",
-    "D3DTOP_MULTIPLYADD",
-    "D3DTOP_LERP",
-])
-
-D3DTA = Flags(DWORD, [
-    "D3DTA_SELECTMASK",
-    "D3DTA_DIFFUSE",
-    "D3DTA_CURRENT",
-    "D3DTA_TEXTURE",
-    "D3DTA_TFACTOR",
-    "D3DTA_SPECULAR",
-    "D3DTA_TEMP",
-    "D3DTA_CONSTANT",
-    "D3DTA_COMPLEMENT",
-    "D3DTA_ALPHAREPLICATE",
-])
-
-D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
-    "D3DTEXF_NONE",
-    "D3DTEXF_POINT",
-    "D3DTEXF_LINEAR",
-    "D3DTEXF_ANISOTROPIC",
-    "D3DTEXF_PYRAMIDALQUAD",
-    "D3DTEXF_GAUSSIANQUAD",
-    "D3DTEXF_CONVOLUTIONMONO",
-])
-
-D3DPV = Flags(DWORD, [
-    "D3DPV_DONOTCOPYDATA",
-])
-
-D3DFVF = Flags(DWORD, [
-    "D3DFVF_RESERVED0",
-    "D3DFVF_POSITION_MASK",
-    "D3DFVF_XYZ",
-    "D3DFVF_XYZRHW",
-    "D3DFVF_XYZB1",
-    "D3DFVF_XYZB2",
-    "D3DFVF_XYZB3",
-    "D3DFVF_XYZB4",
-    "D3DFVF_XYZB5",
-    "D3DFVF_XYZW",
-    "D3DFVF_NORMAL",
-    "D3DFVF_PSIZE",
-    "D3DFVF_DIFFUSE",
-    "D3DFVF_SPECULAR",
-    #"D3DFVF_TEXCOUNT_MASK",
-    #"D3DFVF_TEXCOUNT_SHIFT",
-    #"D3DFVF_TEX0",
-    #"D3DFVF_TEX1",
-    #"D3DFVF_TEX2",
-    #"D3DFVF_TEX3",
-    #"D3DFVF_TEX4",
-    #"D3DFVF_TEX5",
-    #"D3DFVF_TEX6",
-    #"D3DFVF_TEX7",
-    #"D3DFVF_TEX8",
-    "D3DFVF_LASTBETA_UBYTE4",
-    "D3DFVF_LASTBETA_D3DCOLOR",
-    "D3DFVF_RESERVED2",
-    #"D3DFVF_TEXCOORDSIZE3(0)",
-    #"D3DFVF_TEXCOORDSIZE2(0)",
-    #"D3DFVF_TEXCOORDSIZE4(0)",
-    #"D3DFVF_TEXCOORDSIZE1(0)",
-    #"D3DFVF_TEXCOORDSIZE3(1)",
-    #"D3DFVF_TEXCOORDSIZE2(1)",
-    #"D3DFVF_TEXCOORDSIZE4(1)",
-    #"D3DFVF_TEXCOORDSIZE1(1)",
-    #"D3DFVF_TEXCOORDSIZE3(2)",
-    #"D3DFVF_TEXCOORDSIZE2(2)",
-    #"D3DFVF_TEXCOORDSIZE4(2)",
-    #"D3DFVF_TEXCOORDSIZE1(2)",
-    #"D3DFVF_TEXCOORDSIZE3(3)",
-    #"D3DFVF_TEXCOORDSIZE2(3)",
-    #"D3DFVF_TEXCOORDSIZE4(3)",
-    #"D3DFVF_TEXCOORDSIZE1(3)",
-])
-
-D3DDECLUSAGE = Enum("D3DDECLUSAGE", [
-    "D3DDECLUSAGE_POSITION",
-    "D3DDECLUSAGE_BLENDWEIGHT",
-    "D3DDECLUSAGE_BLENDINDICES",
-    "D3DDECLUSAGE_NORMAL",
-    "D3DDECLUSAGE_PSIZE",
-    "D3DDECLUSAGE_TEXCOORD",
-    "D3DDECLUSAGE_TANGENT",
-    "D3DDECLUSAGE_BINORMAL",
-    "D3DDECLUSAGE_TESSFACTOR",
-    "D3DDECLUSAGE_POSITIONT",
-    "D3DDECLUSAGE_COLOR",
-    "D3DDECLUSAGE_FOG",
-    "D3DDECLUSAGE_DEPTH",
-    "D3DDECLUSAGE_SAMPLE",
-])
-
-D3DDECLMETHOD = Enum("D3DDECLMETHOD", [
-    "D3DDECLMETHOD_DEFAULT",
-    "D3DDECLMETHOD_PARTIALU",
-    "D3DDECLMETHOD_PARTIALV",
-    "D3DDECLMETHOD_CROSSUV",
-    "D3DDECLMETHOD_UV",
-    "D3DDECLMETHOD_LOOKUP",
-    "D3DDECLMETHOD_LOOKUPPRESAMPLED",
-])
-
-D3DDECLTYPE = Enum("D3DDECLTYPE", [
-    "D3DDECLTYPE_FLOAT1",
-    "D3DDECLTYPE_FLOAT2",
-    "D3DDECLTYPE_FLOAT3",
-    "D3DDECLTYPE_FLOAT4",
-    "D3DDECLTYPE_D3DCOLOR",
-    "D3DDECLTYPE_UBYTE4",
-    "D3DDECLTYPE_SHORT2",
-    "D3DDECLTYPE_SHORT4",
-    "D3DDECLTYPE_UBYTE4N",
-    "D3DDECLTYPE_SHORT2N",
-    "D3DDECLTYPE_SHORT4N",
-    "D3DDECLTYPE_USHORT2N",
-    "D3DDECLTYPE_USHORT4N",
-    "D3DDECLTYPE_UDEC3",
-    "D3DDECLTYPE_DEC3N",
-    "D3DDECLTYPE_FLOAT16_2",
-    "D3DDECLTYPE_FLOAT16_4",
-    "D3DDECLTYPE_UNUSED",
-])
-
-D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [
-    (WORD, "Stream"),
-    (WORD, "Offset"),
-    (BYTE, "Type"),
-    (BYTE, "Method"),
-    (BYTE, "Usage"),
-    (BYTE, "UsageIndex"),
-])
-
-D3DSHADER_INSTRUCTION_OPCODE_TYPE = Enum("D3DSHADER_INSTRUCTION_OPCODE_TYPE", [
-    "D3DSIO_NOP",
-    "D3DSIO_MOV",
-    "D3DSIO_ADD",
-    "D3DSIO_SUB",
-    "D3DSIO_MAD",
-    "D3DSIO_MUL",
-    "D3DSIO_RCP",
-    "D3DSIO_RSQ",
-    "D3DSIO_DP3",
-    "D3DSIO_DP4",
-    "D3DSIO_MIN",
-    "D3DSIO_MAX",
-    "D3DSIO_SLT",
-    "D3DSIO_SGE",
-    "D3DSIO_EXP",
-    "D3DSIO_LOG",
-    "D3DSIO_LIT",
-    "D3DSIO_DST",
-    "D3DSIO_LRP",
-    "D3DSIO_FRC",
-    "D3DSIO_M4x4",
-    "D3DSIO_M4x3",
-    "D3DSIO_M3x4",
-    "D3DSIO_M3x3",
-    "D3DSIO_M3x2",
-    "D3DSIO_CALL",
-    "D3DSIO_CALLNZ",
-    "D3DSIO_LOOP",
-    "D3DSIO_RET",
-    "D3DSIO_ENDLOOP",
-    "D3DSIO_LABEL",
-    "D3DSIO_DCL",
-    "D3DSIO_POW",
-    "D3DSIO_CRS",
-    "D3DSIO_SGN",
-    "D3DSIO_ABS",
-    "D3DSIO_NRM",
-    "D3DSIO_SINCOS",
-    "D3DSIO_REP",
-    "D3DSIO_ENDREP",
-    "D3DSIO_IF",
-    "D3DSIO_IFC",
-    "D3DSIO_ELSE",
-    "D3DSIO_ENDIF",
-    "D3DSIO_BREAK",
-    "D3DSIO_BREAKC",
-    "D3DSIO_MOVA",
-    "D3DSIO_DEFB",
-    "D3DSIO_DEFI",
-    "D3DSIO_TEXCOORD",
-    "D3DSIO_TEXKILL",
-    "D3DSIO_TEX",
-    "D3DSIO_TEXBEM",
-    "D3DSIO_TEXBEML",
-    "D3DSIO_TEXREG2AR",
-    "D3DSIO_TEXREG2GB",
-    "D3DSIO_TEXM3x2PAD",
-    "D3DSIO_TEXM3x2TEX",
-    "D3DSIO_TEXM3x3PAD",
-    "D3DSIO_TEXM3x3TEX",
-    "D3DSIO_RESERVED0",
-    "D3DSIO_TEXM3x3SPEC",
-    "D3DSIO_TEXM3x3VSPEC",
-    "D3DSIO_EXPP",
-    "D3DSIO_LOGP",
-    "D3DSIO_CND",
-    "D3DSIO_DEF",
-    "D3DSIO_TEXREG2RGB",
-    "D3DSIO_TEXDP3TEX",
-    "D3DSIO_TEXM3x2DEPTH",
-    "D3DSIO_TEXDP3",
-    "D3DSIO_TEXM3x3",
-    "D3DSIO_TEXDEPTH",
-    "D3DSIO_CMP",
-    "D3DSIO_BEM",
-    "D3DSIO_DP2ADD",
-    "D3DSIO_DSX",
-    "D3DSIO_DSY",
-    "D3DSIO_TEXLDD",
-    "D3DSIO_SETP",
-    "D3DSIO_TEXLDL",
-    "D3DSIO_BREAKP",
-    "D3DSIO_PHASE",
-    "D3DSIO_COMMENT",
-    "D3DSIO_END",
-])
-
-D3DSHADER_COMPARISON = Enum("D3DSHADER_COMPARISON", [
-    "D3DSPC_RESERVED0",
-    "D3DSPC_GT",
-    "D3DSPC_EQ",
-    "D3DSPC_GE",
-    "D3DSPC_LT",
-    "D3DSPC_NE",
-    "D3DSPC_LE",
-    "D3DSPC_RESERVED1",
-])
-
-D3DSAMPLER_TEXTURE_TYPE = Enum("D3DSAMPLER_TEXTURE_TYPE", [
-    "D3DSTT_UNKNOWN",
-    "D3DSTT_2D",
-    "D3DSTT_CUBE",
-    "D3DSTT_VOLUME",
-])
-
-D3DSP = Flags(DWORD, [
-    "D3DSP_WRITEMASK_0",
-    "D3DSP_WRITEMASK_1",
-    "D3DSP_WRITEMASK_2",
-    "D3DSP_WRITEMASK_3",
-    "D3DSP_WRITEMASK_ALL",
-])
-
-D3DSHADER_PARAM_DSTMOD_TYPE = Flags(DWORD, [
-    "D3DSPDM_NONE",
-    "D3DSPDM_SATURATE",
-    "D3DSPDM_PARTIALPRECISION",
-    "D3DSPDM_MSAMPCENTROID",
-])
-
-D3DSHADER_PARAM_REGISTER_TYPE = Enum("D3DSHADER_PARAM_REGISTER_TYPE", [
-    "D3DSPR_TEMP",
-    "D3DSPR_INPUT",
-    "D3DSPR_CONST",
-    "D3DSPR_ADDR|D3DSPR_TEXTURE",
-    "D3DSPR_RASTOUT",
-    "D3DSPR_ATTROUT",
-    "D3DSPR_TEXCRDOUT|D3DSPR_OUTPUT",
-    "D3DSPR_CONSTINT",
-    "D3DSPR_COLOROUT",
-    "D3DSPR_DEPTHOUT",
-    "D3DSPR_SAMPLER",
-    "D3DSPR_CONST2",
-    "D3DSPR_CONST3",
-    "D3DSPR_CONST4",
-    "D3DSPR_CONSTBOOL",
-    "D3DSPR_LOOP",
-    "D3DSPR_TEMPFLOAT16",
-    "D3DSPR_MISCTYPE",
-    "D3DSPR_LABEL",
-    "D3DSPR_PREDICATE",
-])
-
-D3DSHADER_MISCTYPE_OFFSETS = Enum("D3DSHADER_MISCTYPE_OFFSETS", [
-    "D3DSMO_POSITION",
-    "D3DSMO_FACE",
-])
-
-D3DVS_RASTOUT_OFFSETS = Enum("D3DVS_RASTOUT_OFFSETS", [
-    "D3DSRO_POSITION",
-    "D3DSRO_FOG",
-    "D3DSRO_POINT_SIZE",
-])
-
-D3DVS_ADDRESSMODE_TYPE = Enum("D3DVS_ADDRESSMODE_TYPE", [
-    "D3DVS_ADDRMODE_ABSOLUTE",
-    "D3DVS_ADDRMODE_RELATIVE",
-])
-
-D3DSHADER_ADDRESSMODE_TYPE = Enum("D3DSHADER_ADDRESSMODE_TYPE", [
-    "D3DSHADER_ADDRMODE_ABSOLUTE",
-    "D3DSHADER_ADDRMODE_RELATIVE",
-])
-
-D3DVS = Flags(DWORD, [
-    "D3DVS_X_X",
-    "D3DVS_X_Y",
-    "D3DVS_X_Z",
-    "D3DVS_X_W",
-    "D3DVS_Y_X",
-    "D3DVS_Y_Y",
-    "D3DVS_Y_Z",
-    "D3DVS_Y_W",
-    "D3DVS_Z_X",
-    "D3DVS_Z_Y",
-    "D3DVS_Z_Z",
-    "D3DVS_Z_W",
-    "D3DVS_W_X",
-    "D3DVS_W_Y",
-    "D3DVS_W_Z",
-    "D3DVS_W_W",
-    "D3DVS_NOSWIZZLE",
-])
-
-D3DSP = Flags(DWORD, [
-    "D3DSP_NOSWIZZLE",
-    "D3DSP_REPLICATERED",
-    "D3DSP_REPLICATEGREEN",
-    "D3DSP_REPLICATEBLUE",
-    "D3DSP_REPLICATEALPHA",
-])
-
-D3DSHADER_PARAM_SRCMOD_TYPE = Enum("D3DSHADER_PARAM_SRCMOD_TYPE", [
-    "D3DSPSM_NONE",
-    "D3DSPSM_NEG",
-    "D3DSPSM_BIAS",
-    "D3DSPSM_BIASNEG",
-    "D3DSPSM_SIGN",
-    "D3DSPSM_SIGNNEG",
-    "D3DSPSM_COMP",
-    "D3DSPSM_X2",
-    "D3DSPSM_X2NEG",
-    "D3DSPSM_DZ",
-    "D3DSPSM_DW",
-    "D3DSPSM_ABS",
-    "D3DSPSM_ABSNEG",
-    "D3DSPSM_NOT",
-])
-
-D3DBASISTYPE = Enum("D3DBASISTYPE", [
-    "D3DBASIS_BEZIER",
-    "D3DBASIS_BSPLINE",
-    "D3DBASIS_CATMULL_ROM",
-])
-
-D3DDEGREETYPE = Enum("D3DDEGREETYPE", [
-    "D3DDEGREE_LINEAR",
-    "D3DDEGREE_QUADRATIC",
-    "D3DDEGREE_CUBIC",
-    "D3DDEGREE_QUINTIC",
-])
-
-D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
-    "D3DPATCHEDGE_DISCRETE",
-    "D3DPATCHEDGE_CONTINUOUS",
-])
-
-D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
-    "D3DSBT_ALL",
-    "D3DSBT_PIXELSTATE",
-    "D3DSBT_VERTEXSTATE",
-])
-
-D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
-    "D3DVBF_DISABLE",
-    "D3DVBF_1WEIGHTS",
-    "D3DVBF_2WEIGHTS",
-    "D3DVBF_3WEIGHTS",
-    "D3DVBF_TWEENING",
-    "D3DVBF_0WEIGHTS",
-])
-
-D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
-    "D3DTTFF_DISABLE",
-    "D3DTTFF_COUNT1",
-    "D3DTTFF_COUNT2",
-    "D3DTTFF_COUNT3",
-    "D3DTTFF_COUNT4",
-    "D3DTTFF_PROJECTED",
-])
-
-D3DDEVTYPE = Enum("D3DDEVTYPE", [
-    "D3DDEVTYPE_HAL",
-    "D3DDEVTYPE_REF",
-    "D3DDEVTYPE_SW",
-    "D3DDEVTYPE_NULLREF",
-])
-
-D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
-    "D3DMULTISAMPLE_NONE",
-    "D3DMULTISAMPLE_NONMASKABLE",
-    "D3DMULTISAMPLE_2_SAMPLES",
-    "D3DMULTISAMPLE_3_SAMPLES",
-    "D3DMULTISAMPLE_4_SAMPLES",
-    "D3DMULTISAMPLE_5_SAMPLES",
-    "D3DMULTISAMPLE_6_SAMPLES",
-    "D3DMULTISAMPLE_7_SAMPLES",
-    "D3DMULTISAMPLE_8_SAMPLES",
-    "D3DMULTISAMPLE_9_SAMPLES",
-    "D3DMULTISAMPLE_10_SAMPLES",
-    "D3DMULTISAMPLE_11_SAMPLES",
-    "D3DMULTISAMPLE_12_SAMPLES",
-    "D3DMULTISAMPLE_13_SAMPLES",
-    "D3DMULTISAMPLE_14_SAMPLES",
-    "D3DMULTISAMPLE_15_SAMPLES",
-    "D3DMULTISAMPLE_16_SAMPLES",
-])
-
-D3DFORMAT = Enum("D3DFORMAT", [
-    "D3DFMT_UNKNOWN",
-    "D3DFMT_R8G8B8",
-    "D3DFMT_A8R8G8B8",
-    "D3DFMT_X8R8G8B8",
-    "D3DFMT_R5G6B5",
-    "D3DFMT_X1R5G5B5",
-    "D3DFMT_A1R5G5B5",
-    "D3DFMT_A4R4G4B4",
-    "D3DFMT_R3G3B2",
-    "D3DFMT_A8",
-    "D3DFMT_A8R3G3B2",
-    "D3DFMT_X4R4G4B4",
-    "D3DFMT_A2B10G10R10",
-    "D3DFMT_A8B8G8R8",
-    "D3DFMT_X8B8G8R8",
-    "D3DFMT_G16R16",
-    "D3DFMT_A2R10G10B10",
-    "D3DFMT_A16B16G16R16",
-    "D3DFMT_A8P8",
-    "D3DFMT_P8",
-    "D3DFMT_L8",
-    "D3DFMT_A8L8",
-    "D3DFMT_A4L4",
-    "D3DFMT_V8U8",
-    "D3DFMT_L6V5U5",
-    "D3DFMT_X8L8V8U8",
-    "D3DFMT_Q8W8V8U8",
-    "D3DFMT_V16U16",
-    "D3DFMT_A2W10V10U10",
-    "D3DFMT_UYVY",
-    "D3DFMT_R8G8_B8G8",
-    "D3DFMT_YUY2",
-    "D3DFMT_G8R8_G8B8",
-    "D3DFMT_DXT1",
-    "D3DFMT_DXT2",
-    "D3DFMT_DXT3",
-    "D3DFMT_DXT4",
-    "D3DFMT_DXT5",
-    "D3DFMT_D16_LOCKABLE",
-    "D3DFMT_D32",
-    "D3DFMT_D15S1",
-    "D3DFMT_D24S8",
-    "D3DFMT_D24X8",
-    "D3DFMT_D24X4S4",
-    "D3DFMT_D16",
-    "D3DFMT_D32F_LOCKABLE",
-    "D3DFMT_D24FS8",
-    "D3DFMT_D32_LOCKABLE",
-    "D3DFMT_S8_LOCKABLE",
-    "D3DFMT_L16",
-    "D3DFMT_VERTEXDATA",
-    "D3DFMT_INDEX16",
-    "D3DFMT_INDEX32",
-    "D3DFMT_Q16W16V16U16",
-    "D3DFMT_MULTI2_ARGB8",
-    "D3DFMT_R16F",
-    "D3DFMT_G16R16F",
-    "D3DFMT_A16B16G16R16F",
-    "D3DFMT_R32F",
-    "D3DFMT_G32R32F",
-    "D3DFMT_A32B32G32R32F",
-    "D3DFMT_CxV8U8",
-    "D3DFMT_A1",
-    "D3DFMT_BINARYBUFFER",
-
-    # Unofficial formats
-    "D3DFMT_ATI1",
-    "D3DFMT_ATI2",
-    "D3DFMT_AYUV",
-    "D3DFMT_DF16",
-    "D3DFMT_DF24",
-    "D3DFMT_INTZ",
-    "D3DFMT_NULL",
-    "D3DFMT_NV12",
-    "D3DFMT_RAWZ",
-])
-
-D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "RefreshRate"),
-    (D3DFORMAT, "Format"),
-])
-
-D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
-    (UINT, "AdapterOrdinal"),
-    (D3DDEVTYPE, "DeviceType"),
-    (HWND, "hFocusWindow"),
-    (DWORD, "BehaviorFlags"),
-])
-
-D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
-    "D3DSWAPEFFECT_DISCARD",
-    "D3DSWAPEFFECT_FLIP",
-    "D3DSWAPEFFECT_COPY",
-])
-
-D3DPOOL = Enum("D3DPOOL", [
-    "D3DPOOL_DEFAULT",
-    "D3DPOOL_MANAGED",
-    "D3DPOOL_SYSTEMMEM",
-    "D3DPOOL_SCRATCH",
-])
-
-D3DPRESENT = FakeEnum(DWORD, [
-    "D3DPRESENT_RATE_DEFAULT",
-])
-
-D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
-    (UINT, "BackBufferWidth"),
-    (UINT, "BackBufferHeight"),
-    (D3DFORMAT, "BackBufferFormat"),
-    (UINT, "BackBufferCount"),
-    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
-    (DWORD, "MultiSampleQuality"),
-    (D3DSWAPEFFECT, "SwapEffect"),
-    (HWND, "hDeviceWindow"),
-    (BOOL, "Windowed"),
-    (BOOL, "EnableAutoDepthStencil"),
-    (D3DFORMAT, "AutoDepthStencilFormat"),
-    (DWORD, "Flags"),
-    (UINT, "FullScreen_RefreshRateInHz"),
-    (UINT, "PresentationInterval"),
-])
-
-D3DPRESENTFLAG = Flags(DWORD, [
-    "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
-    "D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL",
-    "D3DPRESENTFLAG_DEVICECLIP",
-    "D3DPRESENTFLAG_VIDEO",
-    "D3DPRESENTFLAG_NOAUTOROTATE",
-    "D3DPRESENTFLAG_UNPRUNEDMODE",
-])
-
-D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
-    (Array(WORD, "256"), "red"),
-    (Array(WORD, "256"), "green"),
-    (Array(WORD, "256"), "blue"),
-])
-
-D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
-    "D3DBACKBUFFER_TYPE_MONO",
-    "D3DBACKBUFFER_TYPE_LEFT",
-    "D3DBACKBUFFER_TYPE_RIGHT",
-])
-
-D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
-    "D3DRTYPE_SURFACE",
-    "D3DRTYPE_VOLUME",
-    "D3DRTYPE_TEXTURE",
-    "D3DRTYPE_VOLUMETEXTURE",
-    "D3DRTYPE_CUBETEXTURE",
-    "D3DRTYPE_VERTEXBUFFER",
-    "D3DRTYPE_INDEXBUFFER",
-])
-
-D3DUSAGE = Flags(DWORD, [
-    "D3DUSAGE_RENDERTARGET",
-    "D3DUSAGE_DEPTHSTENCIL",
-    "D3DUSAGE_DYNAMIC",
-    "D3DUSAGE_NONSECURE",
-    "D3DUSAGE_AUTOGENMIPMAP",
-    "D3DUSAGE_DMAP",
-    "D3DUSAGE_QUERY_LEGACYBUMPMAP",
-    "D3DUSAGE_QUERY_SRGBREAD",
-    "D3DUSAGE_QUERY_FILTER",
-    "D3DUSAGE_QUERY_SRGBWRITE",
-    "D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING",
-    "D3DUSAGE_QUERY_VERTEXTEXTURE",
-    "D3DUSAGE_QUERY_WRAPANDMIP",
-    "D3DUSAGE_WRITEONLY",
-    "D3DUSAGE_SOFTWAREPROCESSING",
-    "D3DUSAGE_DONOTCLIP",
-    "D3DUSAGE_POINTS",
-    "D3DUSAGE_RTPATCHES",
-    "D3DUSAGE_NPATCHES",
-    "D3DUSAGE_TEXTAPI",
-])
-
-D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
-    "D3DCUBEMAP_FACE_POSITIVE_X",
-    "D3DCUBEMAP_FACE_NEGATIVE_X",
-    "D3DCUBEMAP_FACE_POSITIVE_Y",
-    "D3DCUBEMAP_FACE_NEGATIVE_Y",
-    "D3DCUBEMAP_FACE_POSITIVE_Z",
-    "D3DCUBEMAP_FACE_NEGATIVE_Z",
-])
-
-D3DLOCK = Flags(DWORD, [
-    "D3DLOCK_READONLY",
-    "D3DLOCK_DISCARD",
-    "D3DLOCK_NOOVERWRITE",
-    "D3DLOCK_NOSYSLOCK",
-    "D3DLOCK_DONOTWAIT",
-    "D3DLOCK_NO_DIRTY_UPDATE",
-])
-
-D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Size"),
-    (DWORD, "FVF"),
-])
-
-D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Size"),
-])
-
-D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
-    (DWORD, "MultiSampleQuality"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-])
-
-D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
-    (D3DFORMAT, "Format"),
-    (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
-    (D3DPOOL, "Pool"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "Depth"),
-])
-
-D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
-    (INT, "Pitch"),
-    (OpaquePointer(Void), "pBits"),
-])
-
-D3DBOX = Struct("D3DBOX", [
-    (UINT, "Left"),
-    (UINT, "Top"),
-    (UINT, "Right"),
-    (UINT, "Bottom"),
-    (UINT, "Front"),
-    (UINT, "Back"),
-])
-
-D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
-    (INT, "RowPitch"),
-    (INT, "SlicePitch"),
-    (OpaquePointer(Void), "pBits"),
-])
-
-D3DRANGE = Struct("D3DRANGE", [
-    (UINT, "Offset"),
-    (UINT, "Size"),
-])
-
-D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
-    (UINT, "StartVertexOffsetWidth"),
-    (UINT, "StartVertexOffsetHeight"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "Stride"),
-    (D3DBASISTYPE, "Basis"),
-    (D3DDEGREETYPE, "Degree"),
-])
-
-D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
-    (UINT, "StartVertexOffset"),
-    (UINT, "NumVertices"),
-    (D3DBASISTYPE, "Basis"),
-    (D3DDEGREETYPE, "Degree"),
-])
-
-D3DADAPTER_IDENTIFIER9 = Struct("D3DADAPTER_IDENTIFIER9", [
-    (CString, "Driver"),
-    (CString, "Description"),
-    (CString, "DeviceName"),
-    (LARGE_INTEGER, "DriverVersion"),
-    (DWORD, "VendorId"),
-    (DWORD, "DeviceId"),
-    (DWORD, "SubSysId"),
-    (DWORD, "Revision"),
-    (GUID, "DeviceIdentifier"),
-    (DWORD, "WHQLLevel"),
-])
-
-D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
-    (BOOL, "InVBlank"),
-    (UINT, "ScanLine"),
-])
-
-D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
-    "D3DDMT_ENABLE",
-    "D3DDMT_DISABLE",
-])
-
-D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
-    "D3DQUERYTYPE_VCACHE",
-    "D3DQUERYTYPE_RESOURCEMANAGER",
-    "D3DQUERYTYPE_VERTEXSTATS",
-    "D3DQUERYTYPE_EVENT",
-    "D3DQUERYTYPE_OCCLUSION",
-    "D3DQUERYTYPE_TIMESTAMP",
-    "D3DQUERYTYPE_TIMESTAMPDISJOINT",
-    "D3DQUERYTYPE_TIMESTAMPFREQ",
-    "D3DQUERYTYPE_PIPELINETIMINGS",
-    "D3DQUERYTYPE_INTERFACETIMINGS",
-    "D3DQUERYTYPE_VERTEXTIMINGS",
-    "D3DQUERYTYPE_PIXELTIMINGS",
-    "D3DQUERYTYPE_BANDWIDTHTIMINGS",
-    "D3DQUERYTYPE_CACHEUTILIZATION",
-])
-
-D3DISSUE = Flags(DWORD, [
-    "D3DISSUE_END",
-    "D3DISSUE_BEGIN",
-])
-
-D3DGETDATA = Flags(DWORD, [
-    "D3DGETDATA_FLUSH",
-])
-
-D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
-    (BOOL, "bThrashing"),
-    (DWORD, "ApproxBytesDownloaded"),
-    (DWORD, "NumEvicts"),
-    (DWORD, "NumVidCreates"),
-    (DWORD, "LastPri"),
-    (DWORD, "NumUsed"),
-    (DWORD, "NumUsedInVidMem"),
-    (DWORD, "WorkingSet"),
-    (DWORD, "WorkingSetBytes"),
-    (DWORD, "TotalManaged"),
-    (DWORD, "TotalBytes"),
-])
-
-D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
-    (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
-])
-
-D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
-    (DWORD, "NumRenderedTriangles"),
-    (DWORD, "NumExtraClippingTriangles"),
-])
-
-D3DDEVINFO_VCACHE = Struct("D3DDEVINFO_VCACHE", [
-    (DWORD, "Pattern"),
-    (DWORD, "OptMethod"),
-    (DWORD, "CacheSize"),
-    (DWORD, "MagicNumber"),
-])
-
-D3DDEVINFO_D3D9PIPELINETIMINGS = Struct("D3DDEVINFO_D3D9PIPELINETIMINGS", [
-    (FLOAT, "VertexProcessingTimePercent"),
-    (FLOAT, "PixelProcessingTimePercent"),
-    (FLOAT, "OtherGPUProcessingTimePercent"),
-    (FLOAT, "GPUIdleTimePercent"),
-])
-
-D3DDEVINFO_D3D9INTERFACETIMINGS = Struct("D3DDEVINFO_D3D9INTERFACETIMINGS", [
-    (FLOAT, "WaitingForGPUToUseApplicationResourceTimePercent"),
-    (FLOAT, "WaitingForGPUToAcceptMoreCommandsTimePercent"),
-    (FLOAT, "WaitingForGPUToStayWithinLatencyTimePercent"),
-    (FLOAT, "WaitingForGPUExclusiveResourceTimePercent"),
-    (FLOAT, "WaitingForGPUOtherTimePercent"),
-])
-
-D3DDEVINFO_D3D9STAGETIMINGS = Struct("D3DDEVINFO_D3D9STAGETIMINGS", [
-    (FLOAT, "MemoryProcessingPercent"),
-    (FLOAT, "ComputationProcessingPercent"),
-])
-
-D3DDEVINFO_D3D9BANDWIDTHTIMINGS = Struct("D3DDEVINFO_D3D9BANDWIDTHTIMINGS", [
-    (FLOAT, "MaxBandwidthUtilized"),
-    (FLOAT, "FrontEndUploadMemoryUtilizedPercent"),
-    (FLOAT, "VertexRateUtilizedPercent"),
-    (FLOAT, "TriangleSetupRateUtilizedPercent"),
-    (FLOAT, "FillRateUtilizedPercent"),
-])
-
-D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
-    (FLOAT, "TextureCacheHitRate"),
-    (FLOAT, "PostTransformVertexCacheHitRate"),
-])
-
-D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
-    "D3DCOMPOSERECTS_COPY",
-    "D3DCOMPOSERECTS_OR",
-    "D3DCOMPOSERECTS_AND",
-    "D3DCOMPOSERECTS_NEG",
-])
-
-D3DCOMPOSERECTDESC = Struct("D3DCOMPOSERECTDESC", [
-    (USHORT, "X"),
-    (USHORT, "Y"),
-    (USHORT, "Width"),
-    (USHORT, "Height"),
-])
-
-D3DCOMPOSERECTDESTINATION = Struct("D3DCOMPOSERECTDESTINATION", [
-    (USHORT, "SrcRectIndex"),
-    (USHORT, "Reserved"),
-    (Short, "X"),
-    (Short, "Y"),
-])
-
-D3DPRESENTSTATS = Struct("D3DPRESENTSTATS", [
-    (UINT, "PresentCount"),
-    (UINT, "PresentRefreshCount"),
-    (UINT, "SyncRefreshCount"),
-    (LARGE_INTEGER, "SyncQPCTime"),
-    (LARGE_INTEGER, "SyncGPUTime"),
-])
-
-D3DSCANLINEORDERING = Enum("D3DSCANLINEORDERING", [
-    "D3DSCANLINEORDERING_UNKNOWN",
-    "D3DSCANLINEORDERING_PROGRESSIVE",
-    "D3DSCANLINEORDERING_INTERLACED",
-])
-
-D3DDISPLAYMODEEX = Struct("D3DDISPLAYMODEEX", [
-    (UINT, "Size"),
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (UINT, "RefreshRate"),
-    (D3DFORMAT, "Format"),
-    (D3DSCANLINEORDERING, "ScanLineOrdering"),
-])
-
-D3DDISPLAYMODEFILTER = Struct("D3DDISPLAYMODEFILTER", [
-    (UINT, "Size"),
-    (D3DFORMAT, "Format"),
-    (D3DSCANLINEORDERING, "ScanLineOrdering"),
-])
-
-D3DDISPLAYROTATION = Enum("D3DDISPLAYROTATION", [
-    "D3DDISPLAYROTATION_IDENTITY",
-    "D3DDISPLAYROTATION_90",
-    "D3DDISPLAYROTATION_180",
-    "D3DDISPLAYROTATION_270",
-])
-
-D3D9_RESOURCE_PRIORITY = FakeEnum(DWORD, [
-    "D3D9_RESOURCE_PRIORITY_MINIMUM",
-    "D3D9_RESOURCE_PRIORITY_LOW",
-    "D3D9_RESOURCE_PRIORITY_NORMAL",
-    "D3D9_RESOURCE_PRIORITY_HIGH",
-    "D3D9_RESOURCE_PRIORITY_MAXIMUM",
-])
-
diff --git a/d3dcaps.py b/d3dcaps.py
deleted file mode 100644 (file)
index 0fa9f1c..0000000
+++ /dev/null
@@ -1,466 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3dcaps.h"""
-
-from winapi import *
-from d3dtypes import *
-
-D3DTRANSFORMCAPS = Flags(DWORD, [
-    "D3DTRANSFORMCAPS_CLIP",
-])
-
-D3DTRANSFORMCAPS = Struct("D3DTRANSFORMCAPS", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-])
-
-D3DLIGHTINGCAPS = Struct("D3DLIGHTINGCAPS", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwLightingModel"),
-    (DWORD, "dwNumLights"),
-])
-
-D3DLIGHTINGMODEL = Flags(DWORD, [
-    "D3DLIGHTINGMODEL_RGB",
-    "D3DLIGHTINGMODEL_MONO",
-])
-
-D3DLIGHTCAPS = Flags(DWORD, [
-    "D3DLIGHTCAPS_POINT",
-    "D3DLIGHTCAPS_SPOT",
-    "D3DLIGHTCAPS_DIRECTIONAL",
-    "D3DLIGHTCAPS_PARALLELPOINT",
-    "D3DLIGHTCAPS_GLSPOT",
-])
-
-D3DPRIMCAPS = Struct("D3DPRIMCAPS", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwMiscCaps"),
-    (DWORD, "dwRasterCaps"),
-    (DWORD, "dwZCmpCaps"),
-    (DWORD, "dwSrcBlendCaps"),
-    (DWORD, "dwDestBlendCaps"),
-    (DWORD, "dwAlphaCmpCaps"),
-    (DWORD, "dwShadeCaps"),
-    (DWORD, "dwTextureCaps"),
-    (DWORD, "dwTextureFilterCaps"),
-    (DWORD, "dwTextureBlendCaps"),
-    (DWORD, "dwTextureAddressCaps"),
-    (DWORD, "dwStippleWidth"),
-    (DWORD, "dwStippleHeight"),
-])
-
-D3DPMISCCAPS = Flags(DWORD, [
-    "D3DPMISCCAPS_MASKPLANES",
-    "D3DPMISCCAPS_MASKZ",
-    "D3DPMISCCAPS_LINEPATTERNREP",
-    "D3DPMISCCAPS_CONFORMANT",
-    "D3DPMISCCAPS_CULLNONE",
-    "D3DPMISCCAPS_CULLCW",
-    "D3DPMISCCAPS_CULLCCW",
-])
-
-D3DXD3DPRASTERCAPSXX = Flags(DWORD, [
-    "D3DPRASTERCAPS_DITHER",
-    "D3DPRASTERCAPS_ROP2",
-    "D3DPRASTERCAPS_XOR",
-    "D3DPRASTERCAPS_PAT",
-    "D3DPRASTERCAPS_ZTEST",
-    "D3DPRASTERCAPS_SUBPIXEL",
-    "D3DPRASTERCAPS_SUBPIXELX",
-    "D3DPRASTERCAPS_FOGVERTEX",
-    "D3DPRASTERCAPS_FOGTABLE",
-    "D3DPRASTERCAPS_STIPPLE",
-    "D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT",
-    "D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT",
-    "D3DPRASTERCAPS_ANTIALIASEDGES",
-    "D3DPRASTERCAPS_MIPMAPLODBIAS",
-    "D3DPRASTERCAPS_ZBIAS",
-    "D3DPRASTERCAPS_ZBUFFERLESSHSR",
-    "D3DPRASTERCAPS_FOGRANGE",
-    "D3DPRASTERCAPS_ANISOTROPY",
-    "D3DPRASTERCAPS_WBUFFER",
-    "D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT",
-    "D3DPRASTERCAPS_WFOG",
-    "D3DPRASTERCAPS_ZFOG",
-])
-
-D3DPCMPCAPS = Flags(DWORD, [
-    "D3DPCMPCAPS_NEVER",
-    "D3DPCMPCAPS_LESS",
-    "D3DPCMPCAPS_EQUAL",
-    "D3DPCMPCAPS_LESSEQUAL",
-    "D3DPCMPCAPS_GREATER",
-    "D3DPCMPCAPS_NOTEQUAL",
-    "D3DPCMPCAPS_GREATEREQUAL",
-    "D3DPCMPCAPS_ALWAYS",
-])
-
-D3DPBLENDCAPS = Flags(DWORD, [
-    "D3DPBLENDCAPS_ZERO",
-    "D3DPBLENDCAPS_ONE",
-    "D3DPBLENDCAPS_SRCCOLOR",
-    "D3DPBLENDCAPS_INVSRCCOLOR",
-    "D3DPBLENDCAPS_SRCALPHA",
-    "D3DPBLENDCAPS_INVSRCALPHA",
-    "D3DPBLENDCAPS_DESTALPHA",
-    "D3DPBLENDCAPS_INVDESTALPHA",
-    "D3DPBLENDCAPS_DESTCOLOR",
-    "D3DPBLENDCAPS_INVDESTCOLOR",
-    "D3DPBLENDCAPS_SRCALPHASAT",
-    "D3DPBLENDCAPS_BOTHSRCALPHA",
-    "D3DPBLENDCAPS_BOTHINVSRCALPHA",
-])
-
-D3DPSHADECAPS = Flags(DWORD, [
-    "D3DPSHADECAPS_COLORFLATMONO",
-    "D3DPSHADECAPS_COLORFLATRGB",
-    "D3DPSHADECAPS_COLORGOURAUDMONO",
-    "D3DPSHADECAPS_COLORGOURAUDRGB",
-    "D3DPSHADECAPS_COLORPHONGMONO",
-    "D3DPSHADECAPS_COLORPHONGRGB",
-    "D3DPSHADECAPS_SPECULARFLATMONO",
-    "D3DPSHADECAPS_SPECULARFLATRGB",
-    "D3DPSHADECAPS_SPECULARGOURAUDMONO",
-    "D3DPSHADECAPS_SPECULARGOURAUDRGB",
-    "D3DPSHADECAPS_SPECULARPHONGMONO",
-    "D3DPSHADECAPS_SPECULARPHONGRGB",
-    "D3DPSHADECAPS_ALPHAFLATBLEND",
-    "D3DPSHADECAPS_ALPHAFLATSTIPPLED",
-    "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
-    "D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED",
-    "D3DPSHADECAPS_ALPHAPHONGBLEND",
-    "D3DPSHADECAPS_ALPHAPHONGSTIPPLED",
-    "D3DPSHADECAPS_FOGFLAT",
-    "D3DPSHADECAPS_FOGGOURAUD",
-    "D3DPSHADECAPS_FOGPHONG",
-])
-
-D3DPTEXTURECAPS = Flags(DWORD, [
-    "D3DPTEXTURECAPS_PERSPECTIVE",
-    "D3DPTEXTURECAPS_POW2",
-    "D3DPTEXTURECAPS_ALPHA",
-    "D3DPTEXTURECAPS_TRANSPARENCY",
-    "D3DPTEXTURECAPS_BORDER",
-    "D3DPTEXTURECAPS_SQUAREONLY",
-    "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
-    "D3DPTEXTURECAPS_ALPHAPALETTE",
-    "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
-    "D3DPTEXTURECAPS_PROJECTED",
-    "D3DPTEXTURECAPS_CUBEMAP",
-    "D3DPTEXTURECAPS_COLORKEYBLEND",
-])
-
-D3DPTFILTERCAPS = Flags(DWORD, [
-    "D3DPTFILTERCAPS_NEAREST",
-    "D3DPTFILTERCAPS_LINEAR",
-    "D3DPTFILTERCAPS_MIPNEAREST",
-    "D3DPTFILTERCAPS_MIPLINEAR",
-    "D3DPTFILTERCAPS_LINEARMIPNEAREST",
-    "D3DPTFILTERCAPS_LINEARMIPLINEAR",
-    "D3DPTFILTERCAPS_MINFPOINT",
-    "D3DPTFILTERCAPS_MINFLINEAR",
-    "D3DPTFILTERCAPS_MINFANISOTROPIC",
-    "D3DPTFILTERCAPS_MIPFPOINT",
-    "D3DPTFILTERCAPS_MIPFLINEAR",
-    "D3DPTFILTERCAPS_MAGFPOINT",
-    "D3DPTFILTERCAPS_MAGFLINEAR",
-    "D3DPTFILTERCAPS_MAGFANISOTROPIC",
-    "D3DPTFILTERCAPS_MAGFAFLATCUBIC",
-    "D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC",
-])
-
-D3DPTBLENDCAPS = Flags(DWORD, [
-    "D3DPTBLENDCAPS_DECAL",
-    "D3DPTBLENDCAPS_MODULATE",
-    "D3DPTBLENDCAPS_DECALALPHA",
-    "D3DPTBLENDCAPS_MODULATEALPHA",
-    "D3DPTBLENDCAPS_DECALMASK",
-    "D3DPTBLENDCAPS_MODULATEMASK",
-    "D3DPTBLENDCAPS_COPY",
-    "D3DPTBLENDCAPS_ADD",
-])
-
-D3DPTADDRESSCAPS = Flags(DWORD, [
-    "D3DPTADDRESSCAPS_WRAP",
-    "D3DPTADDRESSCAPS_MIRROR",
-    "D3DPTADDRESSCAPS_CLAMP",
-    "D3DPTADDRESSCAPS_BORDER",
-    "D3DPTADDRESSCAPS_INDEPENDENTUV",
-])
-
-D3DSTENCILCAPS = Flags(DWORD, [
-    "D3DSTENCILCAPS_KEEP",
-    "D3DSTENCILCAPS_ZERO",
-    "D3DSTENCILCAPS_REPLACE",
-    "D3DSTENCILCAPS_INCRSAT",
-    "D3DSTENCILCAPS_DECRSAT",
-    "D3DSTENCILCAPS_INVERT",
-    "D3DSTENCILCAPS_INCR",
-    "D3DSTENCILCAPS_DECR",
-])
-
-D3DTEXOPCAPS = Flags(DWORD, [
-    "D3DTEXOPCAPS_DISABLE",
-    "D3DTEXOPCAPS_SELECTARG1",
-    "D3DTEXOPCAPS_SELECTARG2",
-    "D3DTEXOPCAPS_MODULATE",
-    "D3DTEXOPCAPS_MODULATE2X",
-    "D3DTEXOPCAPS_MODULATE4X",
-    "D3DTEXOPCAPS_ADD",
-    "D3DTEXOPCAPS_ADDSIGNED",
-    "D3DTEXOPCAPS_ADDSIGNED2X",
-    "D3DTEXOPCAPS_SUBTRACT",
-    "D3DTEXOPCAPS_ADDSMOOTH",
-    "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
-    "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
-    "D3DTEXOPCAPS_BLENDFACTORALPHA",
-    "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
-    "D3DTEXOPCAPS_BLENDCURRENTALPHA",
-    "D3DTEXOPCAPS_PREMODULATE",
-    "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
-    "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
-    "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
-    "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
-    "D3DTEXOPCAPS_BUMPENVMAP",
-    "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
-    "D3DTEXOPCAPS_DOTPRODUCT3",
-])
-
-D3DFVFCAPS = Flags(DWORD, [
-    "D3DFVFCAPS_TEXCOORDCOUNTMASK",
-    "D3DFVFCAPS_DONOTSTRIPELEMENTS",
-])
-
-D3DDD = Flags(DWORD, [
-    "D3DDD_COLORMODEL",
-    "D3DDD_DEVCAPS",
-    "D3DDD_TRANSFORMCAPS",
-    "D3DDD_LIGHTINGCAPS",
-    "D3DDD_BCLIPPING",
-    "D3DDD_LINECAPS",
-    "D3DDD_TRICAPS",
-    "D3DDD_DEVICERENDERBITDEPTH",
-    "D3DDD_DEVICEZBUFFERBITDEPTH",
-    "D3DDD_MAXBUFFERSIZE",
-    "D3DDD_MAXVERTEXCOUNT",
-])
-
-D3DDEVCAPS = Flags(DWORD, [
-    "D3DDEVCAPS_FLOATTLVERTEX",
-    "D3DDEVCAPS_SORTINCREASINGZ",
-    "D3DDEVCAPS_SORTDECREASINGZ",
-    "D3DDEVCAPS_SORTEXACT",
-    "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
-    "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
-    "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
-    "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
-    "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
-    "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
-    "D3DDEVCAPS_DRAWPRIMTLVERTEX",
-    "D3DDEVCAPS_CANRENDERAFTERFLIP",
-    "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
-    "D3DDEVCAPS_DRAWPRIMITIVES2",
-    "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
-    "D3DDEVCAPS_DRAWPRIMITIVES2EX",
-    "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
-    "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
-    "D3DDEVCAPS_HWRASTERIZATION",
-])
-
-D3DVTXPCAPS = Flags(DWORD, [
-    "D3DVTXPCAPS_TEXGEN",
-    "D3DVTXPCAPS_MATERIALSOURCE7",
-    "D3DVTXPCAPS_VERTEXFOG",
-    "D3DVTXPCAPS_DIRECTIONALLIGHTS",
-    "D3DVTXPCAPS_POSITIONALLIGHTS",
-    "D3DVTXPCAPS_LOCALVIEWER",
-])
-
-D3DFDS = Flags(DWORD, [
-    "D3DFDS_COLORMODEL",
-    "D3DFDS_GUID",
-    "D3DFDS_HARDWARE",
-    "D3DFDS_TRIANGLES",
-    "D3DFDS_LINES",
-    "D3DFDS_MISCCAPS",
-    "D3DFDS_RASTERCAPS",
-    "D3DFDS_ZCMPCAPS",
-    "D3DFDS_ALPHACMPCAPS",
-    "D3DFDS_SRCBLENDCAPS",
-    "D3DFDS_DSTBLENDCAPS",
-    "D3DFDS_SHADECAPS",
-    "D3DFDS_TEXTURECAPS",
-    "D3DFDS_TEXTUREFILTERCAPS",
-    "D3DFDS_TEXTUREBLENDCAPS",
-    "D3DFDS_TEXTUREADDRESSCAPS",
-])
-
-D3DFINDDEVICESEARCH = Struct("D3DFINDDEVICESEARCH", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (BOOL, "bHardware"),
-    (D3DCOLORMODEL, "dcmColorModel"),
-    (GUID, "guid"),
-    (DWORD, "dwCaps"),
-    (D3DPRIMCAPS, "dpcPrimCaps"),
-])
-LPD3DFINDDEVICESEARCH = Pointer(D3DFINDDEVICESEARCH)
-
-D3DEXECUTEBUFFERDESC = Struct("D3DEXECUTEBUFFERDESC", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwBufferSize"),
-    (LPVOID, "lpData"),
-])
-LPD3DEXECUTEBUFFERDESC = Pointer(D3DEXECUTEBUFFERDESC)
-
-D3DDEB = Flags(DWORD, [
-    "D3DDEB_BUFSIZE",
-    "D3DDEB_CAPS",
-    "D3DDEB_LPDATA",
-])
-
-D3DDEBCAPS = Flags(DWORD, [
-    "D3DDEBCAPS_SYSTEMMEMORY",
-    "D3DDEBCAPS_VIDEOMEMORY",
-    "D3DDEBCAPS_MEM",
-])
-
-D3DDEVINFO_TEXTUREMANAGER = Struct("D3DDEVINFO_TEXTUREMANAGER", [
-    (BOOL, "bThrashing"),
-    (DWORD, "dwApproxBytesDownloaded"),
-    (DWORD, "dwNumEvicts"),
-    (DWORD, "dwNumVidCreates"),
-    (DWORD, "dwNumTexturesUsed"),
-    (DWORD, "dwNumUsedTexInVid"),
-    (DWORD, "dwWorkingSet"),
-    (DWORD, "dwWorkingSetBytes"),
-    (DWORD, "dwTotalManaged"),
-    (DWORD, "dwTotalBytes"),
-    (DWORD, "dwLastPri"),
-])
-
-D3DDEVINFO_TEXTURING = Struct("D3DDEVINFO_TEXTURING", [
-    (DWORD, "dwNumLoads"),
-    (DWORD, "dwApproxBytesLoaded"),
-    (DWORD, "dwNumPreLoads"),
-    (DWORD, "dwNumSet"),
-    (DWORD, "dwNumCreates"),
-    (DWORD, "dwNumDestroys"),
-    (DWORD, "dwNumSetPriorities"),
-    (DWORD, "dwNumSetLODs"),
-    (DWORD, "dwNumLocks"),
-    (DWORD, "dwNumGetDCs"),
-])
-
-D3DDEVICEDESC = Struct("D3DDEVICEDESC", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (D3DCOLORMODEL, "dcmColorModel"),
-    (DWORD, "dwDevCaps"),
-    (D3DTRANSFORMCAPS, "dtcTransformCaps"),
-    (BOOL, "bClipping"),
-    (D3DLIGHTINGCAPS, "dlcLightingCaps"),
-    (D3DPRIMCAPS, "dpcLineCaps"),
-    (D3DPRIMCAPS, "dpcTriCaps"),
-    (DWORD, "dwDeviceRenderBitDepth"),
-    (DWORD, "dwDeviceZBufferBitDepth"),
-    (DWORD, "dwMaxBufferSize"),
-    (DWORD, "dwMaxVertexCount"),
-    (DWORD, "dwMinTextureWidth"),
-    (DWORD, "dwMinTextureHeight"),
-    (DWORD, "dwMaxTextureWidth"),
-    (DWORD, "dwMaxTextureHeight"),
-    (DWORD, "dwMinStippleWidth"),
-    (DWORD, "dwMaxStippleWidth"),
-    (DWORD, "dwMinStippleHeight"),
-    (DWORD, "dwMaxStippleHeight"),
-    (DWORD, "dwMaxTextureRepeat"),
-    (DWORD, "dwMaxTextureAspectRatio"),
-    (DWORD, "dwMaxAnisotropy"),
-    (D3DVALUE, "dvGuardBandLeft"),
-    (D3DVALUE, "dvGuardBandTop"),
-    (D3DVALUE, "dvGuardBandRight"),
-    (D3DVALUE, "dvGuardBandBottom"),
-    (D3DVALUE, "dvExtentsAdjust"),
-    (DWORD, "dwStencilCaps"),
-    (DWORD, "dwFVFCaps"),
-    (DWORD, "dwTextureOpCaps"),
-    (WORD, "wMaxTextureBlendStages"),
-    (WORD, "wMaxSimultaneousTextures"),
-])
-LPD3DDEVICEDESC = Pointer(D3DDEVICEDESC)
-
-D3DDEVICEDESC7 = Struct("D3DDEVICEDESC7", [
-    (DWORD, "dwDevCaps"),
-    (D3DPRIMCAPS, "dpcLineCaps"),
-    (D3DPRIMCAPS, "dpcTriCaps"),
-    (DWORD, "dwDeviceRenderBitDepth"),
-    (DWORD, "dwDeviceZBufferBitDepth"),
-    (DWORD, "dwMinTextureWidth"),
-    (DWORD, "dwMinTextureHeight"),
-    (DWORD, "dwMaxTextureWidth"),
-    (DWORD, "dwMaxTextureHeight"),
-    (DWORD, "dwMaxTextureRepeat"),
-    (DWORD, "dwMaxTextureAspectRatio"),
-    (DWORD, "dwMaxAnisotropy"),
-    (D3DVALUE, "dvGuardBandLeft"),
-    (D3DVALUE, "dvGuardBandTop"),
-    (D3DVALUE, "dvGuardBandRight"),
-    (D3DVALUE, "dvGuardBandBottom"),
-    (D3DVALUE, "dvExtentsAdjust"),
-    (DWORD, "dwStencilCaps"),
-    (DWORD, "dwFVFCaps"),
-    (DWORD, "dwTextureOpCaps"),
-    (WORD, "wMaxTextureBlendStages"),
-    (WORD, "wMaxSimultaneousTextures"),
-    (DWORD, "dwMaxActiveLights"),
-    (D3DVALUE, "dvMaxVertexW"),
-    (GUID, "deviceGUID"),
-    (WORD, "wMaxUserClipPlanes"),
-    (WORD, "wMaxVertexBlendMatrices"),
-    (DWORD, "dwVertexProcessingCaps"),
-    (DWORD, "dwReserved1"),
-    (DWORD, "dwReserved2"),
-    (DWORD, "dwReserved3"),
-    (DWORD, "dwReserved4"),
-])
-LPD3DDEVICEDESC7 = Pointer(D3DDEVICEDESC7)
-
-D3DFINDDEVICERESULT = Struct("D3DFINDDEVICERESULT", [
-    (DWORD, "dwSize"),
-    (GUID, "guid"),
-    (D3DDEVICEDESC, "ddHwDesc"),
-    (D3DDEVICEDESC, "ddSwDesc"),
-])
-LPD3DFINDDEVICERESULT = Pointer(D3DFINDDEVICERESULT)
-
-LPD3DENUMDEVICESCALLBACK = FunctionPointer(HRESULT, "LPD3DENUMDEVICESCALLBACK", [(Pointer(GUID), "lpGuid"), (LPSTR, "lpDeviceDescription"), (LPSTR, "lpDeviceName"), LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID])
-LPD3DENUMDEVICESCALLBACK7 = FunctionPointer(HRESULT, "LPD3DENUMDEVICESCALLBACK7", [(LPSTR, "lpDeviceDescription"), (LPSTR, "lpDeviceName"), LPD3DDEVICEDESC7, LPVOID])
-
diff --git a/d3dtypes.py b/d3dtypes.py
deleted file mode 100644 (file)
index c80da76..0000000
+++ /dev/null
@@ -1,1030 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""d3dtypes.h"""
-
-from winapi import *
-
-D3DVALUE = Float
-LPD3DVALUE = Pointer(Float)
-D3DFIXED = LONG
-
-LPD3DVALIDATECALLBACK = Opaque("LPD3DVALIDATECALLBACK")
-LPD3DENUMTEXTUREFORMATSCALLBACK = Opaque("LPD3DENUMTEXTUREFORMATSCALLBACK")
-LPD3DENUMPIXELFORMATSCALLBACK = Opaque("LPD3DENUMPIXELFORMATSCALLBACK")
-
-D3DCOLOR = DWORD
-LPD3DCOLOR = Pointer(D3DCOLOR)
-
-D3DMATERIALHANDLE = DWORD
-LPD3DMATERIALHANDLE = Pointer(D3DMATERIALHANDLE)
-
-D3DTEXTUREHANDLE = DWORD
-LPD3DTEXTUREHANDLE = Pointer(D3DTEXTUREHANDLE)
-
-D3DMATRIXHANDLE = DWORD
-LPD3DMATRIXHANDLE = Pointer(D3DMATRIXHANDLE)
-
-D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
-    (D3DVALUE, "r"),
-    (D3DVALUE, "g"),
-    (D3DVALUE, "b"),
-    (D3DVALUE, "a"),
-])
-LPD3DCOLORVALUE = Pointer(D3DCOLORVALUE)
-
-D3DRECT = Struct("D3DRECT", [
-    (LONG, "x1"),
-    (LONG, "y1"),
-    (LONG, "x2"),
-    (LONG, "y2"),
-])
-LPD3DRECT = Pointer(D3DRECT)
-
-D3DVECTOR = Struct("D3DVECTOR", [
-    (D3DVALUE, "x"),
-    (D3DVALUE, "y"),
-    (D3DVALUE, "z"),
-])
-LPD3DVECTOR = Pointer(D3DVECTOR)
-
-D3DHVERTEX = Struct("D3DHVERTEX", [
-    (DWORD, "dwFlags"),
-    (D3DVALUE, "hx"),
-    (D3DVALUE, "hy"),
-    (D3DVALUE, "hz"),
-])
-LPD3DHVERTEX = Pointer(D3DHVERTEX)
-
-D3DTLVERTEX = Struct("D3DTLVERTEX", [
-    (D3DVALUE, "sx"),
-    (D3DVALUE, "sy"),
-    (D3DVALUE, "sz"),
-    (D3DVALUE, "rhw"),
-    (D3DCOLOR, "color"),
-    (D3DCOLOR, "specular"),
-    (D3DVALUE, "tu"),
-    (D3DVALUE, "tv"),
-])
-LPD3DTLVERTEX = Pointer(D3DTLVERTEX)
-
-D3DLVERTEX = Struct("D3DLVERTEX", [
-    (D3DVALUE, "x"),
-    (D3DVALUE, "y"),
-    (D3DVALUE, "z"),
-    (DWORD, "dwReserved"),
-    (D3DCOLOR, "color"),
-    (D3DCOLOR, "specular"),
-    (D3DVALUE, "tu"),
-    (D3DVALUE, "tv"),
-])
-LPD3DLVERTEX = Pointer(D3DLVERTEX)
-
-D3DVERTEX = Struct("D3DVERTEX", [
-    (D3DVALUE, "x"),
-    (D3DVALUE, "y"),
-    (D3DVALUE, "z"),
-    (D3DVALUE, "nx"),
-    (D3DVALUE, "ny"),
-    (D3DVALUE, "nz"),
-    (D3DVALUE, "tu"),
-    (D3DVALUE, "tv"),
-])
-LPD3DVERTEX = Pointer(D3DVERTEX)
-
-D3DMATRIX = Struct("D3DMATRIX", [
-    (D3DVALUE, "_%u" % index) for index in [
-         11, 12, 13, 14,
-         21, 22, 23, 24,
-         31, 32, 33, 34,
-         41, 42, 43, 44
-    ]
-])
-LPD3DMATRIX = Alias("LPD3DMATRIX", Pointer(D3DMATRIX))
-
-D3DVIEWPORT = Struct("D3DVIEWPORT", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwX"),
-    (DWORD, "dwY"),
-    (DWORD, "dwWidth"),
-    (DWORD, "dwHeight"),
-    (D3DVALUE, "dvScaleX"),
-    (D3DVALUE, "dvScaleY"),
-    (D3DVALUE, "dvMaxX"),
-    (D3DVALUE, "dvMaxY"),
-    (D3DVALUE, "dvMinZ"),
-    (D3DVALUE, "dvMaxZ"),
-])
-LPD3DVIEWPORT = Pointer(D3DVIEWPORT)
-
-D3DVIEWPORT2 = Struct("D3DVIEWPORT2", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwX"),
-    (DWORD, "dwY"),
-    (DWORD, "dwWidth"),
-    (DWORD, "dwHeight"),
-    (D3DVALUE, "dvClipX"),
-    (D3DVALUE, "dvClipY"),
-    (D3DVALUE, "dvClipWidth"),
-    (D3DVALUE, "dvClipHeight"),
-    (D3DVALUE, "dvMinZ"),
-    (D3DVALUE, "dvMaxZ"),
-])
-LPD3DVIEWPORT2 = Pointer(D3DVIEWPORT2)
-
-D3DVIEWPORT7 = Struct("D3DVIEWPORT7", [
-    (DWORD, "dwX"),
-    (DWORD, "dwY"),
-    (DWORD, "dwWidth"),
-    (DWORD, "dwHeight"),
-    (D3DVALUE, "dvMinZ"),
-    (D3DVALUE, "dvMaxZ"),
-])
-LPD3DVIEWPORT7 = Pointer(D3DVIEWPORT7)
-
-D3DCLIP = Flags(DWORD, [
-    "D3DCLIP_LEFT",
-    "D3DCLIP_RIGHT",
-    "D3DCLIP_TOP",
-    "D3DCLIP_BOTTOM",
-    "D3DCLIP_FRONT",
-    "D3DCLIP_BACK",
-    "D3DCLIP_GEN0",
-    "D3DCLIP_GEN1",
-    "D3DCLIP_GEN2",
-    "D3DCLIP_GEN3",
-    "D3DCLIP_GEN4",
-    "D3DCLIP_GEN5",
-])
-
-D3DSTATUS = Flags(DWORD, [
-    "D3DSTATUS_DEFAULT",
-    "D3DSTATUS_CLIPUNIONALL",
-    "D3DSTATUS_CLIPUNIONLEFT",
-    "D3DSTATUS_CLIPUNIONRIGHT",
-    "D3DSTATUS_CLIPUNIONTOP",
-    "D3DSTATUS_CLIPUNIONBOTTOM",
-    "D3DSTATUS_CLIPUNIONFRONT",
-    "D3DSTATUS_CLIPUNIONBACK",
-    "D3DSTATUS_CLIPUNIONGEN0",
-    "D3DSTATUS_CLIPUNIONGEN1",
-    "D3DSTATUS_CLIPUNIONGEN2",
-    "D3DSTATUS_CLIPUNIONGEN3",
-    "D3DSTATUS_CLIPUNIONGEN4",
-    "D3DSTATUS_CLIPUNIONGEN5",
-    "D3DSTATUS_CLIPINTERSECTIONALL",
-    "D3DSTATUS_CLIPINTERSECTIONLEFT",
-    "D3DSTATUS_CLIPINTERSECTIONRIGHT",
-    "D3DSTATUS_CLIPINTERSECTIONTOP",
-    "D3DSTATUS_CLIPINTERSECTIONBOTTOM",
-    "D3DSTATUS_CLIPINTERSECTIONFRONT",
-    "D3DSTATUS_CLIPINTERSECTIONBACK",
-    "D3DSTATUS_CLIPINTERSECTIONGEN0",
-    "D3DSTATUS_CLIPINTERSECTIONGEN1",
-    "D3DSTATUS_CLIPINTERSECTIONGEN2",
-    "D3DSTATUS_CLIPINTERSECTIONGEN3",
-    "D3DSTATUS_CLIPINTERSECTIONGEN4",
-    "D3DSTATUS_CLIPINTERSECTIONGEN5",
-    "D3DSTATUS_ZNOTVISIBLE",
-])
-
-D3DTRANSFORM = Flags(DWORD, [
-    "D3DTRANSFORM_CLIPPED",
-    "D3DTRANSFORM_UNCLIPPED",
-])
-
-D3DTRANSFORMDATA = Struct("D3DTRANSFORMDATA", [
-    (DWORD, "dwSize"),
-    (LPVOID, "lpIn"),
-    (DWORD, "dwInSize"),
-    (LPVOID, "lpOut"),
-    (DWORD, "dwOutSize"),
-    (LPD3DHVERTEX, "lpHOut"),
-    (DWORD, "dwClip"),
-    (DWORD, "dwClipIntersection"),
-    (DWORD, "dwClipUnion"),
-    (D3DRECT, "drExtent"),
-])
-LPD3DTRANSFORMDATA = Pointer(D3DTRANSFORMDATA)
-
-D3DLIGHTINGELEMENT = Struct("D3DLIGHTINGELEMENT", [
-    (D3DVECTOR, "dvPosition"),
-    (D3DVECTOR, "dvNormal"),
-])
-LPD3DLIGHTINGELEMENT = Pointer(D3DLIGHTINGELEMENT)
-
-D3DMATERIAL = Struct("D3DMATERIAL", [
-    (DWORD, "dwSize"),
-    (D3DCOLORVALUE, "diffuse"),
-    (D3DCOLORVALUE, "ambient"),
-    (D3DCOLORVALUE, "specular"),
-    (D3DCOLORVALUE, "emissive"),
-    (D3DVALUE, "power"),
-    (D3DTEXTUREHANDLE, "hTexture"),
-    (DWORD, "dwRampSize"),
-])
-LPD3DMATERIAL = Pointer(D3DMATERIAL)
-
-D3DMATERIAL7 = Struct("D3DMATERIAL7", [
-    (D3DCOLORVALUE, "diffuse"),
-    (D3DCOLORVALUE, "ambient"),
-    (D3DCOLORVALUE, "specular"),
-    (D3DCOLORVALUE, "emissive"),
-    (D3DVALUE, "power"),
-])
-LPD3DMATERIAL7 = Pointer(D3DMATERIAL7)
-
-D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
-    "D3DLIGHT_POINT",
-    "D3DLIGHT_SPOT",
-    "D3DLIGHT_DIRECTIONAL",
-    "D3DLIGHT_PARALLELPOINT",
-    "D3DLIGHT_GLSPOT",
-])
-
-D3DLIGHT = Struct("D3DLIGHT", [
-    (DWORD, "dwSize"),
-    (D3DLIGHTTYPE, "dltType"),
-    (D3DCOLORVALUE, "dcvColor"),
-    (D3DVECTOR, "dvPosition"),
-    (D3DVECTOR, "dvDirection"),
-    (D3DVALUE, "dvRange"),
-    (D3DVALUE, "dvFalloff"),
-    (D3DVALUE, "dvAttenuation0"),
-    (D3DVALUE, "dvAttenuation1"),
-    (D3DVALUE, "dvAttenuation2"),
-    (D3DVALUE, "dvTheta"),
-    (D3DVALUE, "dvPhi"),
-])
-LPD3DLIGHT = Pointer(D3DLIGHT)
-
-D3DLIGHT7 = Struct("D3DLIGHT7", [
-    (D3DLIGHTTYPE, "dltType"),
-    (D3DCOLORVALUE, "dcvDiffuse"),
-    (D3DCOLORVALUE, "dcvSpecular"),
-    (D3DCOLORVALUE, "dcvAmbient"),
-    (D3DVECTOR, "dvPosition"),
-    (D3DVECTOR, "dvDirection"),
-    (D3DVALUE, "dvRange"),
-    (D3DVALUE, "dvFalloff"),
-    (D3DVALUE, "dvAttenuation0"),
-    (D3DVALUE, "dvAttenuation1"),
-    (D3DVALUE, "dvAttenuation2"),
-    (D3DVALUE, "dvTheta"),
-    (D3DVALUE, "dvPhi"),
-])
-LPD3DLIGHT7 = Pointer(D3DLIGHT7)
-
-D3DLIGHTFLAGS = Flags(DWORD, [
-    "D3DLIGHT_ACTIVE",
-    "D3DLIGHT_NO_SPECULAR",
-    "D3DLIGHT_ALL",
-])
-
-D3DLIGHT2 = Struct("D3DLIGHT2", [
-    (DWORD, "dwSize"),
-    (D3DLIGHTTYPE, "dltType"),
-    (D3DCOLORVALUE, "dcvColor"),
-    (D3DVECTOR, "dvPosition"),
-    (D3DVECTOR, "dvDirection"),
-    (D3DVALUE, "dvRange"),
-    (D3DVALUE, "dvFalloff"),
-    (D3DVALUE, "dvAttenuation0"),
-    (D3DVALUE, "dvAttenuation1"),
-    (D3DVALUE, "dvAttenuation2"),
-    (D3DVALUE, "dvTheta"),
-    (D3DVALUE, "dvPhi"),
-    (DWORD, "dwFlags"),
-])
-LPD3DLIGHT2 = Pointer(D3DLIGHT2)
-
-D3DLIGHTDATA = Struct("D3DLIGHTDATA", [
-    (DWORD, "dwSize"),
-    (LPD3DLIGHTINGELEMENT, "lpIn"),
-    (DWORD, "dwInSize"),
-    (LPD3DTLVERTEX, "lpOut"),
-    (DWORD, "dwOutSize"),
-])
-LPD3DLIGHTDATA = Pointer(D3DLIGHTDATA)
-
-D3DCOLOR = Flags(DWORD, [
-    "D3DCOLOR_MONO",
-    "D3DCOLOR_RGB",
-])
-
-D3DCOLORMODEL = DWORD
-
-D3DCLEAR = Flags(DWORD, [
-    "D3DCLEAR_TARGET",
-    "D3DCLEAR_ZBUFFER",
-    "D3DCLEAR_STENCIL",
-])
-
-D3DOPCODE = Enum("D3DOPCODE", [
-    "D3DOP_POINT",
-    "D3DOP_LINE",
-    "D3DOP_TRIANGLE",
-    "D3DOP_MATRIXLOAD",
-    "D3DOP_MATRIXMULTIPLY",
-    "D3DOP_STATETRANSFORM",
-    "D3DOP_STATELIGHT",
-    "D3DOP_STATERENDER",
-    "D3DOP_PROCESSVERTICES",
-    "D3DOP_TEXTURELOAD",
-    "D3DOP_EXIT",
-    "D3DOP_BRANCHFORWARD",
-    "D3DOP_SPAN",
-    "D3DOP_SETSTATUS",
-])
-
-D3DINSTRUCTION = Struct("D3DINSTRUCTION", [
-    (BYTE, "bOpcode"),
-    (BYTE, "bSize"),
-    (WORD, "wCount"),
-])
-
-D3DTEXTURELOAD = Struct("D3DTEXTURELOAD", [
-    (D3DTEXTUREHANDLE, "hDestTexture"),
-    (D3DTEXTUREHANDLE, "hSrcTexture"),
-])
-
-D3DPICKRECORD = Struct("D3DPICKRECORD", [
-    (BYTE, "bOpcode"),
-    (BYTE, "bPad"),
-    (DWORD, "dwOffset"),
-    (D3DVALUE, "dvZ"),
-])
-LPD3DPICKRECORD = Pointer(D3DPICKRECORD)
-
-D3DSHADEMODE = Enum("D3DSHADEMODE", [
-    "D3DSHADE_FLAT",
-    "D3DSHADE_GOURAUD",
-    "D3DSHADE_PHONG",
-])
-
-D3DFILLMODE = Enum("D3DFILLMODE", [
-    "D3DFILL_POINT",
-    "D3DFILL_WIREFRAME",
-    "D3DFILL_SOLID",
-])
-
-D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
-    (WORD, "wRepeatFactor"),
-    (WORD, "wLinePattern"),
-])
-
-D3DTEXTUREFILTER = Enum("D3DTEXTUREFILTER", [
-    "D3DFILTER_NEAREST",
-    "D3DFILTER_LINEAR",
-    "D3DFILTER_MIPNEAREST",
-    "D3DFILTER_MIPLINEAR",
-    "D3DFILTER_LINEARMIPNEAREST",
-    "D3DFILTER_LINEARMIPLINEAR",
-])
-
-D3DBLEND = Enum("D3DBLEND", [
-    "D3DBLEND_ZERO",
-    "D3DBLEND_ONE",
-    "D3DBLEND_SRCCOLOR",
-    "D3DBLEND_INVSRCCOLOR",
-    "D3DBLEND_SRCALPHA",
-    "D3DBLEND_INVSRCALPHA",
-    "D3DBLEND_DESTALPHA",
-    "D3DBLEND_INVDESTALPHA",
-    "D3DBLEND_DESTCOLOR",
-    "D3DBLEND_INVDESTCOLOR",
-    "D3DBLEND_SRCALPHASAT",
-    "D3DBLEND_BOTHSRCALPHA",
-    "D3DBLEND_BOTHINVSRCALPHA",
-])
-
-D3DTEXTUREBLEND = Enum("D3DTEXTUREBLEND", [
-    "D3DTBLEND_DECAL",
-    "D3DTBLEND_MODULATE",
-    "D3DTBLEND_DECALALPHA",
-    "D3DTBLEND_MODULATEALPHA",
-    "D3DTBLEND_DECALMASK",
-    "D3DTBLEND_MODULATEMASK",
-    "D3DTBLEND_COPY",
-    "D3DTBLEND_ADD",
-])
-
-D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
-    "D3DTADDRESS_WRAP",
-    "D3DTADDRESS_MIRROR",
-    "D3DTADDRESS_CLAMP",
-    "D3DTADDRESS_BORDER",
-])
-
-D3DCULL = Enum("D3DCULL", [
-    "D3DCULL_NONE",
-    "D3DCULL_CW",
-    "D3DCULL_CCW",
-])
-
-D3DCMPFUNC = Enum("D3DCMPFUNC", [
-    "D3DCMP_NEVER",
-    "D3DCMP_LESS",
-    "D3DCMP_EQUAL",
-    "D3DCMP_LESSEQUAL",
-    "D3DCMP_GREATER",
-    "D3DCMP_NOTEQUAL",
-    "D3DCMP_GREATEREQUAL",
-    "D3DCMP_ALWAYS",
-])
-
-D3DSTENCILOP = Enum("D3DSTENCILOP", [
-    "D3DSTENCILOP_KEEP",
-    "D3DSTENCILOP_ZERO",
-    "D3DSTENCILOP_REPLACE",
-    "D3DSTENCILOP_INCRSAT",
-    "D3DSTENCILOP_DECRSAT",
-    "D3DSTENCILOP_INVERT",
-    "D3DSTENCILOP_INCR",
-    "D3DSTENCILOP_DECR",
-])
-
-D3DFOGMODE = Enum("D3DFOGMODE", [
-    "D3DFOG_NONE",
-    "D3DFOG_EXP",
-    "D3DFOG_EXP2",
-    "D3DFOG_LINEAR",
-])
-
-D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
-    "D3DZB_FALSE",
-    "D3DZB_TRUE",
-    "D3DZB_USEW",
-])
-
-D3DANTIALIASMODE = Enum("D3DANTIALIASMODE", [
-    "D3DANTIALIAS_NONE",
-    "D3DANTIALIAS_SORTDEPENDENT",
-    "D3DANTIALIAS_SORTINDEPENDENT",
-])
-
-D3DVERTEXTYPE = Enum("D3DVERTEXTYPE", [
-    "D3DVT_VERTEX",
-    "D3DVT_LVERTEX",
-    "D3DVT_TLVERTEX",
-])
-
-D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
-    "D3DPT_POINTLIST",
-    "D3DPT_LINELIST",
-    "D3DPT_LINESTRIP",
-    "D3DPT_TRIANGLELIST",
-    "D3DPT_TRIANGLESTRIP",
-    "D3DPT_TRIANGLEFAN",
-])
-
-D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
-    "D3DTRANSFORMSTATE_WORLD",
-    "D3DTRANSFORMSTATE_VIEW",
-    "D3DTRANSFORMSTATE_PROJECTION",
-    "D3DTRANSFORMSTATE_WORLD1",
-    "D3DTRANSFORMSTATE_WORLD2",
-    "D3DTRANSFORMSTATE_WORLD3",
-    "D3DTRANSFORMSTATE_TEXTURE0",
-    "D3DTRANSFORMSTATE_TEXTURE1",
-    "D3DTRANSFORMSTATE_TEXTURE2",
-    "D3DTRANSFORMSTATE_TEXTURE3",
-    "D3DTRANSFORMSTATE_TEXTURE4",
-    "D3DTRANSFORMSTATE_TEXTURE5",
-    "D3DTRANSFORMSTATE_TEXTURE6",
-    "D3DTRANSFORMSTATE_TEXTURE7",
-])
-
-D3DLIGHTSTATETYPE = Enum("D3DLIGHTSTATETYPE", [
-    "D3DLIGHTSTATE_MATERIAL",
-    "D3DLIGHTSTATE_AMBIENT",
-    "D3DLIGHTSTATE_COLORMODEL",
-    "D3DLIGHTSTATE_FOGMODE",
-    "D3DLIGHTSTATE_FOGSTART",
-    "D3DLIGHTSTATE_FOGEND",
-    "D3DLIGHTSTATE_FOGDENSITY",
-    "D3DLIGHTSTATE_COLORVERTEX",
-])
-
-D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
-    "D3DRENDERSTATE_ANTIALIAS",
-    "D3DRENDERSTATE_TEXTUREPERSPECTIVE",
-    "D3DRENDERSTATE_ZENABLE",
-    "D3DRENDERSTATE_FILLMODE",
-    "D3DRENDERSTATE_SHADEMODE",
-    "D3DRENDERSTATE_LINEPATTERN",
-    "D3DRENDERSTATE_ZWRITEENABLE",
-    "D3DRENDERSTATE_ALPHATESTENABLE",
-    "D3DRENDERSTATE_LASTPIXEL",
-    "D3DRENDERSTATE_SRCBLEND",
-    "D3DRENDERSTATE_DESTBLEND",
-    "D3DRENDERSTATE_CULLMODE",
-    "D3DRENDERSTATE_ZFUNC",
-    "D3DRENDERSTATE_ALPHAREF",
-    "D3DRENDERSTATE_ALPHAFUNC",
-    "D3DRENDERSTATE_DITHERENABLE",
-    "D3DRENDERSTATE_ALPHABLENDENABLE",
-    "D3DRENDERSTATE_FOGENABLE",
-    "D3DRENDERSTATE_SPECULARENABLE",
-    "D3DRENDERSTATE_ZVISIBLE",
-    "D3DRENDERSTATE_STIPPLEDALPHA",
-    "D3DRENDERSTATE_FOGCOLOR",
-    "D3DRENDERSTATE_FOGTABLEMODE",
-    "D3DRENDERSTATE_FOGSTART",
-    "D3DRENDERSTATE_FOGEND",
-    "D3DRENDERSTATE_FOGDENSITY",
-    "D3DRENDERSTATE_EDGEANTIALIAS",
-    "D3DRENDERSTATE_COLORKEYENABLE",
-    "D3DRENDERSTATE_ZBIAS",
-    "D3DRENDERSTATE_RANGEFOGENABLE",
-    "D3DRENDERSTATE_STENCILENABLE",
-    "D3DRENDERSTATE_STENCILFAIL",
-    "D3DRENDERSTATE_STENCILZFAIL",
-    "D3DRENDERSTATE_STENCILPASS",
-    "D3DRENDERSTATE_STENCILFUNC",
-    "D3DRENDERSTATE_STENCILREF",
-    "D3DRENDERSTATE_STENCILMASK",
-    "D3DRENDERSTATE_STENCILWRITEMASK",
-    "D3DRENDERSTATE_TEXTUREFACTOR",
-    "D3DRENDERSTATE_WRAP0",
-    "D3DRENDERSTATE_WRAP1",
-    "D3DRENDERSTATE_WRAP2",
-    "D3DRENDERSTATE_WRAP3",
-    "D3DRENDERSTATE_WRAP4",
-    "D3DRENDERSTATE_WRAP5",
-    "D3DRENDERSTATE_WRAP6",
-    "D3DRENDERSTATE_WRAP7",
-    "D3DRENDERSTATE_CLIPPING",
-    "D3DRENDERSTATE_LIGHTING",
-    "D3DRENDERSTATE_EXTENTS",
-    "D3DRENDERSTATE_AMBIENT",
-    "D3DRENDERSTATE_FOGVERTEXMODE",
-    "D3DRENDERSTATE_COLORVERTEX",
-    "D3DRENDERSTATE_LOCALVIEWER",
-    "D3DRENDERSTATE_NORMALIZENORMALS",
-    "D3DRENDERSTATE_COLORKEYBLENDENABLE",
-    "D3DRENDERSTATE_DIFFUSEMATERIALSOURCE",
-    "D3DRENDERSTATE_SPECULARMATERIALSOURCE",
-    "D3DRENDERSTATE_AMBIENTMATERIALSOURCE",
-    "D3DRENDERSTATE_EMISSIVEMATERIALSOURCE",
-    "D3DRENDERSTATE_VERTEXBLEND",
-    "D3DRENDERSTATE_CLIPPLANEENABLE",
-    "D3DRENDERSTATE_TEXTUREHANDLE",
-    "D3DRENDERSTATE_TEXTUREADDRESS",
-    "D3DRENDERSTATE_WRAPU",
-    "D3DRENDERSTATE_WRAPV",
-    "D3DRENDERSTATE_MONOENABLE",
-    "D3DRENDERSTATE_ROP2",
-    "D3DRENDERSTATE_PLANEMASK",
-    "D3DRENDERSTATE_TEXTUREMAG",
-    "D3DRENDERSTATE_TEXTUREMIN",
-    "D3DRENDERSTATE_TEXTUREMAPBLEND",
-    "D3DRENDERSTATE_SUBPIXEL",
-    "D3DRENDERSTATE_SUBPIXELX",
-    "D3DRENDERSTATE_STIPPLEENABLE",
-    "D3DRENDERSTATE_BORDERCOLOR",
-    "D3DRENDERSTATE_TEXTUREADDRESSU",
-    "D3DRENDERSTATE_TEXTUREADDRESSV",
-    "D3DRENDERSTATE_MIPMAPLODBIAS",
-    "D3DRENDERSTATE_ANISOTROPY",
-    "D3DRENDERSTATE_FLUSHBATCH",
-    "D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT",
-    "D3DRENDERSTATE_STIPPLEPATTERN00",
-    "D3DRENDERSTATE_STIPPLEPATTERN01",
-    "D3DRENDERSTATE_STIPPLEPATTERN02",
-    "D3DRENDERSTATE_STIPPLEPATTERN03",
-    "D3DRENDERSTATE_STIPPLEPATTERN04",
-    "D3DRENDERSTATE_STIPPLEPATTERN05",
-    "D3DRENDERSTATE_STIPPLEPATTERN06",
-    "D3DRENDERSTATE_STIPPLEPATTERN07",
-    "D3DRENDERSTATE_STIPPLEPATTERN08",
-    "D3DRENDERSTATE_STIPPLEPATTERN09",
-    "D3DRENDERSTATE_STIPPLEPATTERN10",
-    "D3DRENDERSTATE_STIPPLEPATTERN11",
-    "D3DRENDERSTATE_STIPPLEPATTERN12",
-    "D3DRENDERSTATE_STIPPLEPATTERN13",
-    "D3DRENDERSTATE_STIPPLEPATTERN14",
-    "D3DRENDERSTATE_STIPPLEPATTERN15",
-    "D3DRENDERSTATE_STIPPLEPATTERN16",
-    "D3DRENDERSTATE_STIPPLEPATTERN17",
-    "D3DRENDERSTATE_STIPPLEPATTERN18",
-    "D3DRENDERSTATE_STIPPLEPATTERN19",
-    "D3DRENDERSTATE_STIPPLEPATTERN20",
-    "D3DRENDERSTATE_STIPPLEPATTERN21",
-    "D3DRENDERSTATE_STIPPLEPATTERN22",
-    "D3DRENDERSTATE_STIPPLEPATTERN23",
-    "D3DRENDERSTATE_STIPPLEPATTERN24",
-    "D3DRENDERSTATE_STIPPLEPATTERN25",
-    "D3DRENDERSTATE_STIPPLEPATTERN26",
-    "D3DRENDERSTATE_STIPPLEPATTERN27",
-    "D3DRENDERSTATE_STIPPLEPATTERN28",
-    "D3DRENDERSTATE_STIPPLEPATTERN29",
-    "D3DRENDERSTATE_STIPPLEPATTERN30",
-    "D3DRENDERSTATE_STIPPLEPATTERN31",
-])
-
-D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
-    "D3DMCS_MATERIAL",
-    "D3DMCS_COLOR1",
-    "D3DMCS_COLOR2",
-])
-
-D3DWRAP = Flags(DWORD, [
-    "D3DWRAP_U",
-    "D3DWRAP_V",
-    "D3DWRAPCOORD_0",
-    "D3DWRAPCOORD_1",
-    "D3DWRAPCOORD_2",
-    "D3DWRAPCOORD_3",
-])
-
-D3DSTATE = Struct("D3DSTATE", [
-    (D3DTRANSFORMSTATETYPE, "dtstTransformStateType"),
-    (D3DLIGHTSTATETYPE, "dlstLightStateType"),
-    (D3DRENDERSTATETYPE, "drstRenderStateType"),
-    (Array(DWORD, "1"), "dwArg"),
-    (Array(D3DVALUE, "1"), "dvArg"),
-])
-
-D3DMATRIXLOAD = Struct("D3DMATRIXLOAD", [
-    (D3DMATRIXHANDLE, "hDestMatrix"),
-    (D3DMATRIXHANDLE, "hSrcMatrix"),
-])
-
-D3DMATRIXMULTIPLY = Struct("D3DMATRIXMULTIPLY", [
-    (D3DMATRIXHANDLE, "hDestMatrix"),
-    (D3DMATRIXHANDLE, "hSrcMatrix1"),
-    (D3DMATRIXHANDLE, "hSrcMatrix2"),
-])
-
-D3DPROCESSVERTICES = Struct("D3DPROCESSVERTICES", [
-    (DWORD, "dwFlags"),
-    (WORD, "wStart"),
-    (WORD, "wDest"),
-    (DWORD, "dwCount"),
-    (DWORD, "dwReserved"),
-])
-
-D3DPROCESSVERTICES = Flags(DWORD, [
-    "D3DPROCESSVERTICES_TRANSFORMLIGHT",
-    "D3DPROCESSVERTICES_TRANSFORM",
-    "D3DPROCESSVERTICES_COPY",
-    "D3DPROCESSVERTICES_OPMASK",
-    "D3DPROCESSVERTICES_UPDATEEXTENTS",
-    "D3DPROCESSVERTICES_NOCOLOR",
-])
-
-D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
-    "D3DTSS_COLOROP",
-    "D3DTSS_COLORARG1",
-    "D3DTSS_COLORARG2",
-    "D3DTSS_ALPHAOP",
-    "D3DTSS_ALPHAARG1",
-    "D3DTSS_ALPHAARG2",
-    "D3DTSS_BUMPENVMAT00",
-    "D3DTSS_BUMPENVMAT01",
-    "D3DTSS_BUMPENVMAT10",
-    "D3DTSS_BUMPENVMAT11",
-    "D3DTSS_TEXCOORDINDEX",
-    "D3DTSS_ADDRESS",
-    "D3DTSS_ADDRESSU",
-    "D3DTSS_ADDRESSV",
-    "D3DTSS_BORDERCOLOR",
-    "D3DTSS_MAGFILTER",
-    "D3DTSS_MINFILTER",
-    "D3DTSS_MIPFILTER",
-    "D3DTSS_MIPMAPLODBIAS",
-    "D3DTSS_MAXMIPLEVEL",
-    "D3DTSS_MAXANISOTROPY",
-    "D3DTSS_BUMPENVLSCALE",
-    "D3DTSS_BUMPENVLOFFSET",
-    "D3DTSS_TEXTURETRANSFORMFLAGS",
-])
-
-D3DTSS_TCI = Flags(DWORD, [
-    "D3DTSS_TCI_PASSTHRU",
-    "D3DTSS_TCI_CAMERASPACENORMAL",
-    "D3DTSS_TCI_CAMERASPACEPOSITION",
-    "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
-])
-
-D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
-    "D3DTOP_DISABLE",
-    "D3DTOP_SELECTARG1",
-    "D3DTOP_SELECTARG2",
-    "D3DTOP_MODULATE",
-    "D3DTOP_MODULATE2X",
-    "D3DTOP_MODULATE4X",
-    "D3DTOP_ADD",
-    "D3DTOP_ADDSIGNED",
-    "D3DTOP_ADDSIGNED2X",
-    "D3DTOP_SUBTRACT",
-    "D3DTOP_ADDSMOOTH",
-    "D3DTOP_BLENDDIFFUSEALPHA",
-    "D3DTOP_BLENDTEXTUREALPHA",
-    "D3DTOP_BLENDFACTORALPHA",
-    "D3DTOP_BLENDTEXTUREALPHAPM",
-    "D3DTOP_BLENDCURRENTALPHA",
-    "D3DTOP_PREMODULATE",
-    "D3DTOP_MODULATEALPHA_ADDCOLOR",
-    "D3DTOP_MODULATECOLOR_ADDALPHA",
-    "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
-    "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
-    "D3DTOP_BUMPENVMAP",
-    "D3DTOP_BUMPENVMAPLUMINANCE",
-    "D3DTOP_DOTPRODUCT3",
-])
-
-D3DTA = Flags(DWORD, [
-    "D3DTA_SELECTMASK",
-    "D3DTA_DIFFUSE",
-    "D3DTA_CURRENT",
-    "D3DTA_TEXTURE",
-    "D3DTA_TFACTOR",
-    "D3DTA_SPECULAR",
-    "D3DTA_COMPLEMENT",
-    "D3DTA_ALPHAREPLICATE",
-])
-
-D3DTEXTUREMAGFILTER = Enum("D3DTEXTUREMAGFILTER", [
-    "D3DTFG_POINT",
-    "D3DTFG_LINEAR",
-    "D3DTFG_FLATCUBIC",
-    "D3DTFG_GAUSSIANCUBIC",
-    "D3DTFG_ANISOTROPIC",
-])
-
-D3DTEXTUREMINFILTER = Enum("D3DTEXTUREMINFILTER", [
-    "D3DTFN_POINT",
-    "D3DTFN_LINEAR",
-    "D3DTFN_ANISOTROPIC",
-])
-
-D3DTEXTUREMIPFILTER = Enum("D3DTEXTUREMIPFILTER", [
-    "D3DTFP_NONE",
-    "D3DTFP_POINT",
-    "D3DTFP_LINEAR",
-])
-
-D3DTRIFLAG = Flags(DWORD, [
-    "D3DTRIFLAG_START",
-    "D3DTRIFLAG_STARTFLAT(len)",
-    "D3DTRIFLAG_ODD",
-    "D3DTRIFLAG_EVEN",
-    "D3DTRIFLAG_EDGEENABLETRIANGLE",
-    "D3DTRIFLAG_EDGEENABLE1",
-    "D3DTRIFLAG_EDGEENABLE2",
-    "D3DTRIFLAG_EDGEENABLE3",
-])
-
-D3DTRIANGLE = Struct("D3DTRIANGLE", [
-    (WORD, "v1"),
-    (WORD, "v2"),
-    (WORD, "v3"),
-    (WORD, "wFlags"),
-])
-
-D3DLINE = Struct("D3DLINE", [
-    (WORD, "v1"),
-    (WORD, "v2"),
-])
-
-D3DSPAN = Struct("D3DSPAN", [
-    (WORD, "wCount"),
-    (WORD, "wFirst"),
-])
-
-D3DPOINT = Struct("D3DPOINT", [
-    (WORD, "wCount"),
-    (WORD, "wFirst"),
-])
-
-D3DBRANCH = Struct("D3DBRANCH", [
-    (DWORD, "dwMask"),
-    (DWORD, "dwValue"),
-    (BOOL, "bNegate"),
-    (DWORD, "dwOffset"),
-])
-
-D3DSTATUS = Struct("D3DSTATUS", [
-    (DWORD, "dwFlags"),
-    (DWORD, "dwStatus"),
-    (D3DRECT, "drExtent"),
-])
-
-D3DSETSTATUS = Flags(DWORD, [
-    "D3DSETSTATUS_STATUS",
-    "D3DSETSTATUS_EXTENTS",
-    "D3DSETSTATUS_ALL",
-])
-
-D3DCLIPSTATUS = Struct("D3DCLIPSTATUS", [
-    (DWORD, "dwFlags"),
-    (DWORD, "dwStatus"),
-    (Float, "minx"),
-    (Float, "maxx"),
-    (Float, "miny"),
-    (Float, "maxy"),
-    (Float, "minz"),
-    (Float, "maxz"),
-])
-LPD3DCLIPSTATUS = Pointer(D3DCLIPSTATUS)
-
-D3DCLIPSTATUS = Flags(DWORD, [
-    "D3DCLIPSTATUS_STATUS",
-    "D3DCLIPSTATUS_EXTENTS2",
-    "D3DCLIPSTATUS_EXTENTS3",
-])
-
-D3DSTATS = Struct("D3DSTATS", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwTrianglesDrawn"),
-    (DWORD, "dwLinesDrawn"),
-    (DWORD, "dwPointsDrawn"),
-    (DWORD, "dwSpansDrawn"),
-    (DWORD, "dwVerticesProcessed"),
-])
-LPD3DSTATS = Pointer(D3DSTATS)
-
-D3DEXECUTE = Flags(DWORD, [
-    "D3DEXECUTE_CLIPPED",
-    "D3DEXECUTE_UNCLIPPED",
-])
-
-D3DEXECUTEDATA = Struct("D3DEXECUTEDATA", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwVertexOffset"),
-    (DWORD, "dwVertexCount"),
-    (DWORD, "dwInstructionOffset"),
-    (DWORD, "dwInstructionLength"),
-    (DWORD, "dwHVertexOffset"),
-    (D3DSTATUS, "dsStatus"),
-])
-LPD3DEXECUTEDATA = Pointer(D3DEXECUTEDATA)
-
-D3DPAL = Flags(DWORD, [
-    "D3DPAL_FREE",
-    "D3DPAL_READONLY",
-    "D3DPAL_RESERVED",
-])
-
-D3DVERTEXBUFFERDESC = Struct("D3DVERTEXBUFFERDESC", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwFVF"),
-    (DWORD, "dwNumVertices"),
-])
-LPD3DVERTEXBUFFERDESC = Pointer(D3DVERTEXBUFFERDESC)
-
-D3DVBCAPS = Flags(DWORD, [
-    "D3DVBCAPS_SYSTEMMEMORY",
-    "D3DVBCAPS_WRITEONLY",
-    "D3DVBCAPS_OPTIMIZED",
-    "D3DVBCAPS_DONOTCLIP",
-])
-
-D3DVOP = Flags(DWORD, [
-    "D3DVOP_LIGHT",
-    "D3DVOP_TRANSFORM",
-    "D3DVOP_CLIP",
-    "D3DVOP_EXTENTS",
-])
-
-D3DPV = Flags(DWORD, [
-    "D3DPV_DONOTCOPYDATA",
-])
-
-D3DFVF = Flags(DWORD, [
-    "D3DFVF_RESERVED0",
-    "D3DFVF_POSITION_MASK",
-    "D3DFVF_XYZ",
-    "D3DFVF_XYZRHW",
-    "D3DFVF_XYZB1",
-    "D3DFVF_XYZB2",
-    "D3DFVF_XYZB3",
-    "D3DFVF_XYZB4",
-    "D3DFVF_XYZB5",
-    "D3DFVF_NORMAL",
-    "D3DFVF_RESERVED1",
-    "D3DFVF_DIFFUSE",
-    "D3DFVF_SPECULAR",
-    "D3DFVF_TEXCOUNT_MASK",
-    "D3DFVF_TEXCOUNT_SHIFT",
-    "D3DFVF_TEX0",
-    "D3DFVF_TEX1",
-    "D3DFVF_TEX2",
-    "D3DFVF_TEX3",
-    "D3DFVF_TEX4",
-    "D3DFVF_TEX5",
-    "D3DFVF_TEX6",
-    "D3DFVF_TEX7",
-    "D3DFVF_TEX8",
-    "D3DFVF_RESERVED2",
-    "D3DFVF_RESERVED1",
-    "D3DFVF_VERTEX",
-    "D3DFVF_LVERTEX",
-    "D3DFVF_TLVERTEX",
-    "D3DFVF_TEXCOORDSIZE1(0)",
-    "D3DFVF_TEXCOORDSIZE1(1)",
-    "D3DFVF_TEXCOORDSIZE2(0)",
-    "D3DFVF_TEXCOORDSIZE2(1)",
-    "D3DFVF_TEXCOORDSIZE3(0)",
-    "D3DFVF_TEXCOORDSIZE3(1)",
-    "D3DFVF_TEXCOORDSIZE4(0)",
-    "D3DFVF_TEXCOORDSIZE4(1)",
-])
-
-D3DDP_PTRSTRIDE = Struct("D3DDP_PTRSTRIDE", [
-    (LPVOID, "lpvData"),
-    (DWORD, "dwStride"),
-])
-
-D3DDRAWPRIMITIVESTRIDEDDATA = Struct("D3DDRAWPRIMITIVESTRIDEDDATA", [
-    (D3DDP_PTRSTRIDE, "position"),
-    (D3DDP_PTRSTRIDE, "normal"),
-    (D3DDP_PTRSTRIDE, "diffuse"),
-    (D3DDP_PTRSTRIDE, "specular"),
-    (Array(D3DDP_PTRSTRIDE, "D3DDP_MAXTEXCOORD"), "textureCoords"),
-])
-LPD3DDRAWPRIMITIVESTRIDEDDATA = Pointer(D3DDRAWPRIMITIVESTRIDEDDATA)
-
-D3DVIS = Flags(DWORD, [
-    "D3DVIS_INSIDE_FRUSTUM",
-    "D3DVIS_INTERSECT_FRUSTUM",
-    "D3DVIS_OUTSIDE_FRUSTUM",
-    "D3DVIS_INSIDE_LEFT",
-    "D3DVIS_INTERSECT_LEFT",
-    "D3DVIS_OUTSIDE_LEFT",
-    "D3DVIS_INSIDE_RIGHT",
-    "D3DVIS_INTERSECT_RIGHT",
-    "D3DVIS_OUTSIDE_RIGHT",
-    "D3DVIS_INSIDE_TOP",
-    "D3DVIS_INTERSECT_TOP",
-    "D3DVIS_OUTSIDE_TOP",
-    "D3DVIS_INSIDE_BOTTOM",
-    "D3DVIS_INTERSECT_BOTTOM",
-    "D3DVIS_OUTSIDE_BOTTOM",
-    "D3DVIS_INSIDE_NEAR",
-    "D3DVIS_INTERSECT_NEAR",
-    "D3DVIS_OUTSIDE_NEAR",
-    "D3DVIS_INSIDE_FAR",
-    "D3DVIS_INTERSECT_FAR",
-    "D3DVIS_OUTSIDE_FAR",
-    "D3DVIS_MASK_FRUSTUM",
-    "D3DVIS_MASK_LEFT",
-    "D3DVIS_MASK_RIGHT",
-    "D3DVIS_MASK_TOP",
-    "D3DVIS_MASK_BOTTOM",
-    "D3DVIS_MASK_NEAR",
-    "D3DVIS_MASK_FAR",
-])
-
-D3DDEVINFOID = Flags(DWORD, [
-    "D3DDEVINFOID_TEXTUREMANAGER",
-    "D3DDEVINFOID_D3DTEXTUREMANAGER",
-    "D3DDEVINFOID_TEXTURING",
-])
-
-D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
-    "D3DSBT_ALL",
-    "D3DSBT_PIXELSTATE",
-    "D3DSBT_VERTEXSTATE",
-])
-
-D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
-    "D3DVBLEND_DISABLE",
-    "D3DVBLEND_1WEIGHT",
-    "D3DVBLEND_2WEIGHTS",
-    "D3DVBLEND_3WEIGHTS",
-])
-
-D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
-    "D3DTTFF_DISABLE",
-    "D3DTTFF_COUNT1",
-    "D3DTTFF_COUNT2",
-    "D3DTTFF_COUNT3",
-    "D3DTTFF_COUNT4",
-    "D3DTTFF_PROJECTED",
-])
diff --git a/ddraw.py b/ddraw.py
deleted file mode 100644 (file)
index eb5a072..0000000
--- a/ddraw.py
+++ /dev/null
@@ -1,1664 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""ddraw.h"""
-
-from winapi import *
-
-DirectDrawOptSurfaceDescFlags = Flags(DWORD, [
-    "DDOSD_GUID",
-    "DDOSD_COMPRESSION_RATIO",
-    "DDOSD_SCAPS",
-    "DDOSD_OSCAPS",
-    "DDOSD_ALL",
-])
-
-DirectDrawOptSurfaceDescCapsFlags = Flags(DWORD, [
-    "DDOSDCAPS_OPTCOMPRESSED",
-    "DDOSDCAPS_OPTREORDERED",
-    "DDOSDCAPS_MONOLITHICMIPMAP",
-])
-
-DirectDrawGetDeviceIdentifierFlags = Flags(DWORD, [
-    "DDGDI_GETHOSTIDENTIFIER",
-])
-
-IDirectDraw = Interface("IDirectDraw", IUnknown)
-IDirectDraw2 = Interface("IDirectDraw2", IUnknown)
-IDirectDraw4 = Interface("IDirectDraw4", IUnknown)
-IDirectDraw7 = Interface("IDirectDraw7", IUnknown)
-IDirectDrawPalette = Interface("IDirectDrawPalette", IUnknown)
-IDirectDrawClipper = Interface("IDirectDrawClipper", IUnknown)
-IDirectDrawSurface = Interface("IDirectDrawSurface", IUnknown)
-IDirectDrawSurface2 = Interface("IDirectDrawSurface2", IUnknown)
-IDirectDrawSurface3 = Interface("IDirectDrawSurface3", IUnknown)
-IDirectDrawSurface4 = Interface("IDirectDrawSurface4", IUnknown)
-IDirectDrawSurface7 = Interface("IDirectDrawSurface7", IUnknown)
-IDirectDrawColorControl = Interface("IDirectDrawColorControl", IUnknown)
-IDirectDrawGammaControl = Interface("IDirectDrawGammaControl", IUnknown)
-
-LPDIRECTDRAW = Pointer(IDirectDraw)
-LPDIRECTDRAW2 = Pointer(IDirectDraw2)
-LPDIRECTDRAW4 = Pointer(IDirectDraw4)
-LPDIRECTDRAW7 = Pointer(IDirectDraw7)
-LPDIRECTDRAWSURFACE = Pointer(IDirectDrawSurface)
-LPDIRECTDRAWSURFACE2 = Pointer(IDirectDrawSurface2)
-LPDIRECTDRAWSURFACE3 = Pointer(IDirectDrawSurface3)
-LPDIRECTDRAWSURFACE4 = Pointer(IDirectDrawSurface4)
-LPDIRECTDRAWSURFACE7 = Pointer(IDirectDrawSurface7)
-LPDIRECTDRAWPALETTE = Pointer(IDirectDrawPalette)
-LPDIRECTDRAWCLIPPER = Pointer(IDirectDrawClipper)
-LPDIRECTDRAWCOLORCONTROL = Pointer(IDirectDrawColorControl)
-LPDIRECTDRAWGAMMACONTROL = Pointer(IDirectDrawGammaControl)
-
-DDARGB = Struct("DDARGB", [
-    (BYTE, "blue"),
-    (BYTE, "green"),
-    (BYTE, "red"),
-    (BYTE, "alpha"),
-])
-
-LPDDARGB = Pointer(DDARGB)
-
-DDRGBA = Struct("DDRGBA", [
-    (BYTE, "red"),
-    (BYTE, "green"),
-    (BYTE, "blue"),
-    (BYTE, "alpha"),
-])
-LPDDRGBA = Pointer(DDRGBA)
-
-DDCOLORKEY = Struct("DDCOLORKEY", [
-    (DWORD, "dwColorSpaceLowValue"),
-    (DWORD, "dwColorSpaceHighValue"),
-])
-LPDDCOLORKEY = Pointer(DDCOLORKEY)
-
-DDBLTFX = Struct("DDBLTFX", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwDDFX"),
-    (DWORD, "dwROP"),
-    (DWORD, "dwDDROP"),
-    (DWORD, "dwRotationAngle"),
-    (DWORD, "dwZBufferOpCode"),
-    (DWORD, "dwZBufferLow"),
-    (DWORD, "dwZBufferHigh"),
-    (DWORD, "dwZBufferBaseDest"),
-    (DWORD, "dwZDestConstBitDepth"),
-    (DWORD, "dwZDestConst"),
-    (LPDIRECTDRAWSURFACE, "lpDDSZBufferDest"),
-    (DWORD, "dwZSrcConstBitDepth"),
-    (DWORD, "dwZSrcConst"),
-    (LPDIRECTDRAWSURFACE, "lpDDSZBufferSrc"),
-    (DWORD, "dwAlphaEdgeBlendBitDepth"),
-    (DWORD, "dwAlphaEdgeBlend"),
-    (DWORD, "dwReserved"),
-    (DWORD, "dwAlphaDestConstBitDepth"),
-    (DWORD, "dwAlphaDestConst"),
-    (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
-    (DWORD, "dwAlphaSrcConstBitDepth"),
-    (DWORD, "dwAlphaSrcConst"),
-    (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
-    (DWORD, "dwFillColor"),
-    (DWORD, "dwFillDepth"),
-    (DWORD, "dwFillPixel"),
-    (LPDIRECTDRAWSURFACE, "lpDDSPattern"),
-    (DDCOLORKEY, "ddckDestColorkey"),
-    (DDCOLORKEY, "ddckSrcColorkey"),
-])
-LPDDBLTFX = Pointer(DDBLTFX)
-
-DDSCAPS = Struct("DDSCAPS", [
-    (DWORD, "dwCaps"),
-])
-LPDDSCAPS = Pointer(DDSCAPS)
-
-DDOSCAPS = Struct("DDOSCAPS", [
-    (DWORD, "dwCaps"),
-])
-LPDDOSCAPS = Pointer(DDOSCAPS)
-
-DDSCAPSEX = Struct("DDSCAPSEX", [
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCaps3"),
-    (DWORD, "dwCaps4"),
-])
-
-DDSCAPS2 = Struct("DDSCAPS2", [
-    (DWORD, "dwCaps"),
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCaps3"),
-    (DWORD, "dwCaps4"),
-])
-LPDDSCAPS2 = Pointer(DDSCAPS2)
-
-DDCAPS_DX1 = Struct("DDCAPS_DX1", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCKeyCaps"),
-    (DWORD, "dwFXCaps"),
-    (DWORD, "dwFXAlphaCaps"),
-    (DWORD, "dwPalCaps"),
-    (DWORD, "dwSVCaps"),
-    (DWORD, "dwAlphaBltConstBitDepths"),
-    (DWORD, "dwAlphaBltPixelBitDepths"),
-    (DWORD, "dwAlphaBltSurfaceBitDepths"),
-    (DWORD, "dwAlphaOverlayConstBitDepths"),
-    (DWORD, "dwAlphaOverlayPixelBitDepths"),
-    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
-    (DWORD, "dwZBufferBitDepths"),
-    (DWORD, "dwVidMemTotal"),
-    (DWORD, "dwVidMemFree"),
-    (DWORD, "dwMaxVisibleOverlays"),
-    (DWORD, "dwCurrVisibleOverlays"),
-    (DWORD, "dwNumFourCCCodes"),
-    (DWORD, "dwAlignBoundarySrc"),
-    (DWORD, "dwAlignSizeSrc"),
-    (DWORD, "dwAlignBoundaryDest"),
-    (DWORD, "dwAlignSizeDest"),
-    (DWORD, "dwAlignStrideAlign"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
-    (DDSCAPS, "ddsCaps"),
-    (DWORD, "dwMinOverlayStretch"),
-    (DWORD, "dwMaxOverlayStretch"),
-    (DWORD, "dwMinLiveVideoStretch"),
-    (DWORD, "dwMaxLiveVideoStretch"),
-    (DWORD, "dwMinHwCodecStretch"),
-    (DWORD, "dwMaxHwCodecStretch"),
-    (DWORD, "dwReserved1"),
-    (DWORD, "dwReserved2"),
-    (DWORD, "dwReserved3"),
-])
-LPDDCAPS_DX1 = Pointer(DDCAPS_DX1)
-
-DDCAPS_DX3 = Struct("DDCAPS_DX3", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCKeyCaps"),
-    (DWORD, "dwFXCaps"),
-    (DWORD, "dwFXAlphaCaps"),
-    (DWORD, "dwPalCaps"),
-    (DWORD, "dwSVCaps"),
-    (DWORD, "dwAlphaBltConstBitDepths"),
-    (DWORD, "dwAlphaBltPixelBitDepths"),
-    (DWORD, "dwAlphaBltSurfaceBitDepths"),
-    (DWORD, "dwAlphaOverlayConstBitDepths"),
-    (DWORD, "dwAlphaOverlayPixelBitDepths"),
-    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
-    (DWORD, "dwZBufferBitDepths"),
-    (DWORD, "dwVidMemTotal"),
-    (DWORD, "dwVidMemFree"),
-    (DWORD, "dwMaxVisibleOverlays"),
-    (DWORD, "dwCurrVisibleOverlays"),
-    (DWORD, "dwNumFourCCCodes"),
-    (DWORD, "dwAlignBoundarySrc"),
-    (DWORD, "dwAlignSizeSrc"),
-    (DWORD, "dwAlignBoundaryDest"),
-    (DWORD, "dwAlignSizeDest"),
-    (DWORD, "dwAlignStrideAlign"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
-    (DDSCAPS, "ddsCaps"),
-    (DWORD, "dwMinOverlayStretch"),
-    (DWORD, "dwMaxOverlayStretch"),
-    (DWORD, "dwMinLiveVideoStretch"),
-    (DWORD, "dwMaxLiveVideoStretch"),
-    (DWORD, "dwMinHwCodecStretch"),
-    (DWORD, "dwMaxHwCodecStretch"),
-    (DWORD, "dwReserved1"),
-    (DWORD, "dwReserved2"),
-    (DWORD, "dwReserved3"),
-    (DWORD, "dwSVBCaps"),
-    (DWORD, "dwSVBCKeyCaps"),
-    (DWORD, "dwSVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
-    (DWORD, "dwVSBCaps"),
-    (DWORD, "dwVSBCKeyCaps"),
-    (DWORD, "dwVSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
-    (DWORD, "dwSSBCaps"),
-    (DWORD, "dwSSBCKeyCaps"),
-    (DWORD, "dwSSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
-    (DWORD, "dwReserved4"),
-    (DWORD, "dwReserved5"),
-    (DWORD, "dwReserved6"),
-])
-LPDDCAPS_DX3 = Pointer(DDCAPS_DX3)
-
-DDCAPS_DX5 = Struct("DDCAPS_DX5", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCKeyCaps"),
-    (DWORD, "dwFXCaps"),
-    (DWORD, "dwFXAlphaCaps"),
-    (DWORD, "dwPalCaps"),
-    (DWORD, "dwSVCaps"),
-    (DWORD, "dwAlphaBltConstBitDepths"),
-    (DWORD, "dwAlphaBltPixelBitDepths"),
-    (DWORD, "dwAlphaBltSurfaceBitDepths"),
-    (DWORD, "dwAlphaOverlayConstBitDepths"),
-    (DWORD, "dwAlphaOverlayPixelBitDepths"),
-    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
-    (DWORD, "dwZBufferBitDepths"),
-    (DWORD, "dwVidMemTotal"),
-    (DWORD, "dwVidMemFree"),
-    (DWORD, "dwMaxVisibleOverlays"),
-    (DWORD, "dwCurrVisibleOverlays"),
-    (DWORD, "dwNumFourCCCodes"),
-    (DWORD, "dwAlignBoundarySrc"),
-    (DWORD, "dwAlignSizeSrc"),
-    (DWORD, "dwAlignBoundaryDest"),
-    (DWORD, "dwAlignSizeDest"),
-    (DWORD, "dwAlignStrideAlign"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
-    (DDSCAPS, "ddsCaps"),
-    (DWORD, "dwMinOverlayStretch"),
-    (DWORD, "dwMaxOverlayStretch"),
-    (DWORD, "dwMinLiveVideoStretch"),
-    (DWORD, "dwMaxLiveVideoStretch"),
-    (DWORD, "dwMinHwCodecStretch"),
-    (DWORD, "dwMaxHwCodecStretch"),
-    (DWORD, "dwReserved1"),
-    (DWORD, "dwReserved2"),
-    (DWORD, "dwReserved3"),
-    (DWORD, "dwSVBCaps"),
-    (DWORD, "dwSVBCKeyCaps"),
-    (DWORD, "dwSVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
-    (DWORD, "dwVSBCaps"),
-    (DWORD, "dwVSBCKeyCaps"),
-    (DWORD, "dwVSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
-    (DWORD, "dwSSBCaps"),
-    (DWORD, "dwSSBCKeyCaps"),
-    (DWORD, "dwSSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
-    (DWORD, "dwMaxVideoPorts"),
-    (DWORD, "dwCurrVideoPorts"),
-    (DWORD, "dwSVBCaps2"),
-    (DWORD, "dwNLVBCaps"),
-    (DWORD, "dwNLVBCaps2"),
-    (DWORD, "dwNLVBCKeyCaps"),
-    (DWORD, "dwNLVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
-])
-LPDDCAPS_DX5 = Pointer(DDCAPS_DX5)
-
-DDCAPS_DX6 = Struct("DDCAPS_DX6", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCKeyCaps"),
-    (DWORD, "dwFXCaps"),
-    (DWORD, "dwFXAlphaCaps"),
-    (DWORD, "dwPalCaps"),
-    (DWORD, "dwSVCaps"),
-    (DWORD, "dwAlphaBltConstBitDepths"),
-    (DWORD, "dwAlphaBltPixelBitDepths"),
-    (DWORD, "dwAlphaBltSurfaceBitDepths"),
-    (DWORD, "dwAlphaOverlayConstBitDepths"),
-    (DWORD, "dwAlphaOverlayPixelBitDepths"),
-    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
-    (DWORD, "dwZBufferBitDepths"),
-    (DWORD, "dwVidMemTotal"),
-    (DWORD, "dwVidMemFree"),
-    (DWORD, "dwMaxVisibleOverlays"),
-    (DWORD, "dwCurrVisibleOverlays"),
-    (DWORD, "dwNumFourCCCodes"),
-    (DWORD, "dwAlignBoundarySrc"),
-    (DWORD, "dwAlignSizeSrc"),
-    (DWORD, "dwAlignBoundaryDest"),
-    (DWORD, "dwAlignSizeDest"),
-    (DWORD, "dwAlignStrideAlign"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
-    (DDSCAPS, "ddsOldCaps"),
-    (DWORD, "dwMinOverlayStretch"),
-    (DWORD, "dwMaxOverlayStretch"),
-    (DWORD, "dwMinLiveVideoStretch"),
-    (DWORD, "dwMaxLiveVideoStretch"),
-    (DWORD, "dwMinHwCodecStretch"),
-    (DWORD, "dwMaxHwCodecStretch"),
-    (DWORD, "dwReserved1"),
-    (DWORD, "dwReserved2"),
-    (DWORD, "dwReserved3"),
-    (DWORD, "dwSVBCaps"),
-    (DWORD, "dwSVBCKeyCaps"),
-    (DWORD, "dwSVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
-    (DWORD, "dwVSBCaps"),
-    (DWORD, "dwVSBCKeyCaps"),
-    (DWORD, "dwVSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
-    (DWORD, "dwSSBCaps"),
-    (DWORD, "dwSSBCKeyCaps"),
-    (DWORD, "dwSSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
-    (DWORD, "dwMaxVideoPorts"),
-    (DWORD, "dwCurrVideoPorts"),
-    (DWORD, "dwSVBCaps2"),
-    (DWORD, "dwNLVBCaps"),
-    (DWORD, "dwNLVBCaps2"),
-    (DWORD, "dwNLVBCKeyCaps"),
-    (DWORD, "dwNLVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
-    (DDSCAPS2, "ddsCaps"),
-])
-LPDDCAPS_DX6 = Pointer(DDCAPS_DX6)
-
-DDCAPS_DX7 = Struct("DDCAPS_DX7", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwCaps"),
-    (DWORD, "dwCaps2"),
-    (DWORD, "dwCKeyCaps"),
-    (DWORD, "dwFXCaps"),
-    (DWORD, "dwFXAlphaCaps"),
-    (DWORD, "dwPalCaps"),
-    (DWORD, "dwSVCaps"),
-    (DWORD, "dwAlphaBltConstBitDepths"),
-    (DWORD, "dwAlphaBltPixelBitDepths"),
-    (DWORD, "dwAlphaBltSurfaceBitDepths"),
-    (DWORD, "dwAlphaOverlayConstBitDepths"),
-    (DWORD, "dwAlphaOverlayPixelBitDepths"),
-    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
-    (DWORD, "dwZBufferBitDepths"),
-    (DWORD, "dwVidMemTotal"),
-    (DWORD, "dwVidMemFree"),
-    (DWORD, "dwMaxVisibleOverlays"),
-    (DWORD, "dwCurrVisibleOverlays"),
-    (DWORD, "dwNumFourCCCodes"),
-    (DWORD, "dwAlignBoundarySrc"),
-    (DWORD, "dwAlignSizeSrc"),
-    (DWORD, "dwAlignBoundaryDest"),
-    (DWORD, "dwAlignSizeDest"),
-    (DWORD, "dwAlignStrideAlign"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
-    (DDSCAPS, "ddsOldCaps"),
-    (DWORD, "dwMinOverlayStretch"),
-    (DWORD, "dwMaxOverlayStretch"),
-    (DWORD, "dwMinLiveVideoStretch"),
-    (DWORD, "dwMaxLiveVideoStretch"),
-    (DWORD, "dwMinHwCodecStretch"),
-    (DWORD, "dwMaxHwCodecStretch"),
-    (DWORD, "dwReserved1"),
-    (DWORD, "dwReserved2"),
-    (DWORD, "dwReserved3"),
-    (DWORD, "dwSVBCaps"),
-    (DWORD, "dwSVBCKeyCaps"),
-    (DWORD, "dwSVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
-    (DWORD, "dwVSBCaps"),
-    (DWORD, "dwVSBCKeyCaps"),
-    (DWORD, "dwVSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
-    (DWORD, "dwSSBCaps"),
-    (DWORD, "dwSSBCKeyCaps"),
-    (DWORD, "dwSSBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
-    (DWORD, "dwMaxVideoPorts"),
-    (DWORD, "dwCurrVideoPorts"),
-    (DWORD, "dwSVBCaps2"),
-    (DWORD, "dwNLVBCaps"),
-    (DWORD, "dwNLVBCaps2"),
-    (DWORD, "dwNLVBCKeyCaps"),
-    (DWORD, "dwNLVBFXCaps"),
-    (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
-    (DDSCAPS2, "ddsCaps"),
-])
-LPDDCAPS_DX7 = Pointer(DDCAPS_DX7)
-DDCAPS = DDCAPS_DX7
-LPDDCAPS = Pointer(DDCAPS)
-
-DDPIXELFORMAT = Struct("DDPIXELFORMAT", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (DWORD, "dwFourCC"),
-    (DWORD, "dwRGBBitCount"),
-    (DWORD, "dwYUVBitCount"),
-    (DWORD, "dwZBufferBitDepth"),
-    (DWORD, "dwAlphaBitDepth"),
-    (DWORD, "dwLuminanceBitCount"),
-    (DWORD, "dwBumpBitCount"),
-    (DWORD, "dwPrivateFormatBitCount"),
-    (DWORD, "dwRBitMask"),
-    (DWORD, "dwYBitMask"),
-    (DWORD, "dwStencilBitDepth"),
-    (DWORD, "dwLuminanceBitMask"),
-    (DWORD, "dwBumpDuBitMask"),
-    (DWORD, "dwOperations"),
-    (DWORD, "dwGBitMask"),
-    (DWORD, "dwUBitMask"),
-    (DWORD, "dwZBitMask"),
-    (DWORD, "dwBumpDvBitMask"),
-    (WORD, "MultiSampleCaps.wFlipMSTypes"),
-    (WORD, "MultiSampleCaps.wBltMSTypes"),
-    (DWORD, "dwBBitMask"),
-    (DWORD, "dwVBitMask"),
-    (DWORD, "dwStencilBitMask"),
-    (DWORD, "dwBumpLuminanceBitMask"),
-    (DWORD, "dwRGBAlphaBitMask"),
-    (DWORD, "dwYUVAlphaBitMask"),
-    (DWORD, "dwLuminanceAlphaBitMask"),
-    (DWORD, "dwRGBZBitMask"),
-    (DWORD, "dwYUVZBitMask"),
-])
-LPDDPIXELFORMAT = Pointer(DDPIXELFORMAT)
-
-DDOVERLAYFX = Struct("DDOVERLAYFX", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwAlphaEdgeBlendBitDepth"),
-    (DWORD, "dwAlphaEdgeBlend"),
-    (DWORD, "dwReserved"),
-    (DWORD, "dwAlphaDestConstBitDepth"),
-    (DWORD, "dwAlphaDestConst"),
-    (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
-    (DWORD, "dwAlphaSrcConstBitDepth"),
-    (DWORD, "dwAlphaSrcConst"),
-    (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
-    (DDCOLORKEY, "dckDestColorkey"),
-    (DDCOLORKEY, "dckSrcColorkey"),
-    (DWORD, "dwDDFX"),
-    (DWORD, "dwFlags"),
-])
-LPDDOVERLAYFX = Pointer(DDOVERLAYFX)
-
-DDBLTBATCH = Struct("DDBLTBATCH", [
-    (LPRECT, "lprDest"),
-    (LPDIRECTDRAWSURFACE, "lpDDSSrc"),
-    (LPRECT, "lprSrc"),
-    (DWORD, "dwFlags"),
-    (LPDDBLTFX, "lpDDBltFx"),
-])
-LPDDBLTBATCH = Pointer(DDBLTBATCH)
-
-DDGAMMARAMP = Struct("DDGAMMARAMP", [
-    (Array(WORD, "256"), "red"),
-    (Array(WORD, "256"), "green"),
-    (Array(WORD, "256"), "blue"),
-])
-LPDDGAMMARAMP = Pointer(DDGAMMARAMP)
-
-DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
-    (CString, "szDriver"),
-    (CString, "szDescription"),
-    (LARGE_INTEGER, "liDriverVersion"),
-    (DWORD, "dwVendorId"),
-    (DWORD, "dwDeviceId"),
-    (DWORD, "dwSubSysId"),
-    (DWORD, "dwRevision"),
-    (GUID, "guidDeviceIdentifier"),
-])
-LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER)
-
-DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
-    (CString, "szDriver"),
-    (CString, "szDescription"),
-    (LARGE_INTEGER, "liDriverVersion"),
-    (DWORD, "dwVendorId"),
-    (DWORD, "dwDeviceId"),
-    (DWORD, "dwSubSysId"),
-    (DWORD, "dwRevision"),
-    (GUID, "guidDeviceIdentifier"),
-    (DWORD, "dwWHQLLevel"),
-])
-LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2)
-
-LPCLIPPERCALLBACK = FunctionPointer(DWORD, "LPCLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])
-LPSURFACESTREAMINGCALLBACK = FunctionPointer(DWORD, "LPSURFACESTREAMINGCALLBACK", [DWORD])
-
-DDSURFACEDESC = Struct("DDSURFACEDESC", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (DWORD, "dwHeight"),
-    (DWORD, "dwWidth"),
-    (LONG, "lPitch"),
-    (DWORD, "dwLinearSize"),
-    (DWORD, "dwBackBufferCount"),
-    (DWORD, "dwMipMapCount"),
-    (DWORD, "dwZBufferBitDepth"),
-    (DWORD, "dwRefreshRate"),
-    (DWORD, "dwAlphaBitDepth"),
-    (DWORD, "dwReserved"),
-    (LPVOID, "lpSurface"),
-    (DDCOLORKEY, "ddckCKDestOverlay"),
-    (DDCOLORKEY, "ddckCKDestBlt"),
-    (DDCOLORKEY, "ddckCKSrcOverlay"),
-    (DDCOLORKEY, "ddckCKSrcBlt"),
-    (DDPIXELFORMAT, "ddpfPixelFormat"),
-    (DDSCAPS, "ddsCaps"),
-])
-LPDDSURFACEDESC = Pointer(DDSURFACEDESC)
-
-DDSURFACEDESC2 = Struct("DDSURFACEDESC2", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (DWORD, "dwHeight"),
-    (DWORD, "dwWidth"),
-    (LONG, "lPitch"),
-    (DWORD, "dwLinearSize"),
-    (DWORD, "dwBackBufferCount"),
-    (DWORD, "dwDepth"),
-    (DWORD, "dwMipMapCount"),
-    (DWORD, "dwRefreshRate"),
-    (DWORD, "dwSrcVBHandle"),
-    (DWORD, "dwAlphaBitDepth"),
-    (DWORD, "dwReserved"),
-    (LPVOID, "lpSurface"),
-    (DDCOLORKEY, "ddckCKDestOverlay"),
-    (DWORD, "dwEmptyFaceColor"),
-    (DDCOLORKEY, "ddckCKDestBlt"),
-    (DDCOLORKEY, "ddckCKSrcOverlay"),
-    (DDCOLORKEY, "ddckCKSrcBlt"),
-    (DDPIXELFORMAT, "ddpfPixelFormat"),
-    (DWORD, "dwFVF"),
-    (DDSCAPS2, "ddsCaps"),
-    (DWORD, "dwTextureStage"),
-])
-LPDDSURFACEDESC2 = Pointer(DDSURFACEDESC2)
-
-DirectDrawSurfaceDescFlags = Flags(DWORD, [
-    "DDSD_CAPS",
-    "DDSD_HEIGHT",
-    "DDSD_WIDTH",
-    "DDSD_PITCH",
-    "DDSD_BACKBUFFERCOUNT",
-    "DDSD_ZBUFFERBITDEPTH",
-    "DDSD_ALPHABITDEPTH",
-    "DDSD_LPSURFACE",
-    "DDSD_PIXELFORMAT",
-    "DDSD_CKDESTOVERLAY",
-    "DDSD_CKDESTBLT",
-    "DDSD_CKSRCOVERLAY",
-    "DDSD_CKSRCBLT",
-    "DDSD_MIPMAPCOUNT",
-    "DDSD_REFRESHRATE",
-    "DDSD_LINEARSIZE",
-    "DDSD_TEXTURESTAGE",
-    "DDSD_FVF",
-    "DDSD_SRCVBHANDLE",
-    "DDSD_DEPTH",
-    "DDSD_ALL",
-])
-
-DDOPTSURFACEDESC = Struct("DDOPTSURFACEDESC", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (DDSCAPS2, "ddSCaps"),
-    (DDOSCAPS, "ddOSCaps"),
-    (GUID, "guid"),
-    (DWORD, "dwCompressionRatio"),
-])
-
-DDSD = Flags(DWORD, [
-    "DDOSD_GUID",
-    "DDOSD_COMPRESSION_RATIO",
-    "DDOSD_SCAPS",
-    "DDOSD_OSCAPS",
-    "DDOSD_ALL",
-])
-
-DDOSDCAPS = Flags(DWORD, [
-    "DDOSDCAPS_OPTCOMPRESSED",
-    "DDOSDCAPS_OPTREORDERED",
-    "DDOSDCAPS_MONOLITHICMIPMAP",
-    "DDOSDCAPS_VALIDSCAPS",
-    "DDOSDCAPS_VALIDOSCAPS",
-])
-
-DDCOLORCONTROL = Struct("DDCOLORCONTROL", [
-    (DWORD, "dwSize"),
-    (DWORD, "dwFlags"),
-    (LONG, "lBrightness"),
-    (LONG, "lContrast"),
-    (LONG, "lHue"),
-    (LONG, "lSaturation"),
-    (LONG, "lSharpness"),
-    (LONG, "lGamma"),
-    (LONG, "lColorEnable"),
-    (DWORD, "dwReserved1"),
-])
-LPDDCOLORCONTROL = Pointer(DDCOLORCONTROL)
-
-DirectDrawEnumerateExFlags = Flags(DWORD, [
-    "DDENUM_ATTACHEDSECONDARYDEVICES",
-    "DDENUM_DETACHEDSECONDARYDEVICES",
-    "DDENUM_NONDISPLAYDEVICES",
-])
-
-DirectDrawCreateFlags = FakeEnum(DWORD, [
-    "DDCREATE_HARDWAREONLY",
-    "DDCREATE_EMULATIONONLY",
-])
-
-DirectDrawColorControlFlags = Flags(DWORD, [
-    "DDCOLOR_BRIGHTNESS",
-    "DDCOLOR_CONTRAST",
-    "DDCOLOR_HUE",
-    "DDCOLOR_SATURATION",
-    "DDCOLOR_SHARPNESS",
-    "DDCOLOR_GAMMA",
-    "DDCOLOR_COLORENABLE",
-])
-
-DirectDrawCapsFlags = Flags(DWORD, [
-    "DDSCAPS_RESERVED1",
-    "DDSCAPS_ALPHA",
-    "DDSCAPS_BACKBUFFER",
-    "DDSCAPS_COMPLEX",
-    "DDSCAPS_FLIP",
-    "DDSCAPS_FRONTBUFFER",
-    "DDSCAPS_OFFSCREENPLAIN",
-    "DDSCAPS_OVERLAY",
-    "DDSCAPS_PALETTE",
-    "DDSCAPS_PRIMARYSURFACE",
-    "DDSCAPS_RESERVED3",
-    "DDSCAPS_PRIMARYSURFACELEFT",
-    "DDSCAPS_SYSTEMMEMORY",
-    "DDSCAPS_TEXTURE",
-    "DDSCAPS_3DDEVICE",
-    "DDSCAPS_VIDEOMEMORY",
-    "DDSCAPS_VISIBLE",
-    "DDSCAPS_WRITEONLY",
-    "DDSCAPS_ZBUFFER",
-    "DDSCAPS_OWNDC",
-    "DDSCAPS_LIVEVIDEO",
-    "DDSCAPS_HWCODEC",
-    "DDSCAPS_MODEX",
-    "DDSCAPS_MIPMAP",
-    "DDSCAPS_RESERVED2",
-    "DDSCAPS_ALLOCONLOAD",
-    "DDSCAPS_VIDEOPORT",
-    "DDSCAPS_LOCALVIDMEM",
-    "DDSCAPS_NONLOCALVIDMEM",
-    "DDSCAPS_STANDARDVGAMODE",
-    "DDSCAPS_OPTIMIZED",
-])
-
-DirectDrawCapabilityFlags2 = Flags(DWORD, [
-    "DDSCAPS2_RESERVED4",
-    "DDSCAPS2_HARDWAREDEINTERLACE",
-    "DDSCAPS2_HINTDYNAMIC",
-    "DDSCAPS2_HINTSTATIC",
-    "DDSCAPS2_TEXTUREMANAGE",
-    "DDSCAPS2_RESERVED1",
-    "DDSCAPS2_RESERVED2",
-    "DDSCAPS2_OPAQUE",
-    "DDSCAPS2_HINTANTIALIASING",
-    "DDSCAPS2_CUBEMAP",
-    "DDSCAPS2_CUBEMAP_ALLFACES",
-    "DDSCAPS2_CUBEMAP_POSITIVEX",
-    "DDSCAPS2_CUBEMAP_NEGATIVEX",
-    "DDSCAPS2_CUBEMAP_POSITIVEY",
-    "DDSCAPS2_CUBEMAP_NEGATIVEY",
-    "DDSCAPS2_CUBEMAP_POSITIVEZ",
-    "DDSCAPS2_CUBEMAP_NEGATIVEZ",
-    "DDSCAPS2_MIPMAPSUBLEVEL",
-    "DDSCAPS2_D3DTEXTUREMANAGE",
-    "DDSCAPS2_DONOTPERSIST",
-    "DDSCAPS2_STEREOSURFACELEFT",
-    "DDSCAPS2_VOLUME",
-    "DDSCAPS2_NOTUSERLOCKABLE",
-    "DDSCAPS2_POINTS",
-    "DDSCAPS2_RTPATCHES",
-    "DDSCAPS2_NPATCHES",
-    "DDSCAPS2_RESERVED3",
-    "DDSCAPS2_DISCARDBACKBUFFER",
-    "DDSCAPS2_ENABLEALPHACHANNEL",
-    "DDSCAPS2_EXTENDEDFORMATPRIMARY",
-    "DDSCAPS2_ADDITIONALPRIMARY",
-])
-DDSCAPS3 = Flags(DWORD, [
-    "DDSCAPS3_MULTISAMPLE_MASK",
-    "DDSCAPS3_MULTISAMPLE_QUALITY_MASK",
-    "DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT",
-    "DDSCAPS3_RESERVED1",
-    "DDSCAPS3_RESERVED2",
-    "DDSCAPS3_LIGHTWEIGHTMIPMAP",
-    "DDSCAPS3_AUTOGENMIPMAP",
-    "DDSCAPS3_DMAP",
-    "DDSCAPS3_CREATESHAREDRESOURCE",
-    "DDSCAPS3_READONLYRESOURCE",
-    "DDSCAPS3_OPENSHAREDRESOURCE",
-])
-
-DirectDrawDriverCapsFlags = Flags(DWORD, [
-    "DDCAPS_3D",
-    "DDCAPS_ALIGNBOUNDARYDEST",
-    "DDCAPS_ALIGNSIZEDEST",
-    "DDCAPS_ALIGNBOUNDARYSRC",
-    "DDCAPS_ALIGNSIZESRC",
-    "DDCAPS_ALIGNSTRIDE",
-    "DDCAPS_BLT",
-    "DDCAPS_BLTQUEUE",
-    "DDCAPS_BLTFOURCC",
-    "DDCAPS_BLTSTRETCH",
-    "DDCAPS_GDI",
-    "DDCAPS_OVERLAY",
-    "DDCAPS_OVERLAYCANTCLIP",
-    "DDCAPS_OVERLAYFOURCC",
-    "DDCAPS_OVERLAYSTRETCH",
-    "DDCAPS_PALETTE",
-    "DDCAPS_PALETTEVSYNC",
-    "DDCAPS_READSCANLINE",
-    "DDCAPS_RESERVED1",
-    "DDCAPS_VBI",
-    "DDCAPS_ZBLTS",
-    "DDCAPS_ZOVERLAYS",
-    "DDCAPS_COLORKEY",
-    "DDCAPS_ALPHA",
-    "DDCAPS_COLORKEYHWASSIST",
-    "DDCAPS_NOHARDWARE",
-    "DDCAPS_BLTCOLORFILL",
-    "DDCAPS_BANKSWITCHED",
-    "DDCAPS_BLTDEPTHFILL",
-    "DDCAPS_CANCLIP",
-    "DDCAPS_CANCLIPSTRETCHED",
-    "DDCAPS_CANBLTSYSMEM",
-])
-
-DirectDrawDriverCapsFlags2 = Flags(DWORD, [
-    "DDCAPS2_CERTIFIED",
-    "DDCAPS2_NO2DDURING3DSCENE",
-    "DDCAPS2_VIDEOPORT",
-    "DDCAPS2_AUTOFLIPOVERLAY",
-    "DDCAPS2_CANBOBINTERLEAVED",
-    "DDCAPS2_CANBOBNONINTERLEAVED",
-    "DDCAPS2_COLORCONTROLOVERLAY",
-    "DDCAPS2_COLORCONTROLPRIMARY",
-    "DDCAPS2_CANDROPZ16BIT",
-    "DDCAPS2_NONLOCALVIDMEM",
-    "DDCAPS2_NONLOCALVIDMEMCAPS",
-    "DDCAPS2_NOPAGELOCKREQUIRED",
-    "DDCAPS2_WIDESURFACES",
-    "DDCAPS2_CANFLIPODDEVEN",
-    "DDCAPS2_CANBOBHARDWARE",
-    "DDCAPS2_COPYFOURCC",
-    "DDCAPS2_PRIMARYGAMMA",
-    "DDCAPS2_CANRENDERWINDOWED",
-    "DDCAPS2_CANCALIBRATEGAMMA",
-    "DDCAPS2_FLIPINTERVAL",
-    "DDCAPS2_FLIPNOVSYNC",
-    "DDCAPS2_CANMANAGETEXTURE",
-    "DDCAPS2_TEXMANINNONLOCALVIDMEM",
-    "DDCAPS2_STEREO",
-    "DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL",
-    "DDCAPS2_RESERVED1",
-    "DDCAPS2_CANMANAGERESOURCE",
-    "DDCAPS2_DYNAMICTEXTURES",
-    "DDCAPS2_CANAUTOGENMIPMAP",
-    "DDCAPS2_CANSHARERESOURCE",
-])
-
-DirectDrawFxAlphaCapsFlags = Flags(DWORD, [
-    "DDFXALPHACAPS_BLTALPHAEDGEBLEND",
-    "DDFXALPHACAPS_BLTALPHAPIXELS",
-    "DDFXALPHACAPS_BLTALPHAPIXELSNEG",
-    "DDFXALPHACAPS_BLTALPHASURFACES",
-    "DDFXALPHACAPS_BLTALPHASURFACESNEG",
-    "DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND",
-    "DDFXALPHACAPS_OVERLAYALPHAPIXELS",
-    "DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG",
-    "DDFXALPHACAPS_OVERLAYALPHASURFACES",
-    "DDFXALPHACAPS_OVERLAYALPHASURFACESNEG",
-])
-
-DirectDrawFxCapsFlags = Flags(DWORD, [
-    "DDFXCAPS_BLTARITHSTRETCHY",
-    "DDFXCAPS_BLTARITHSTRETCHYN",
-    "DDFXCAPS_BLTMIRRORLEFTRIGHT",
-    "DDFXCAPS_BLTMIRRORUPDOWN",
-    "DDFXCAPS_BLTROTATION",
-    "DDFXCAPS_BLTROTATION90",
-    "DDFXCAPS_BLTSHRINKX",
-    "DDFXCAPS_BLTSHRINKXN",
-    "DDFXCAPS_BLTSHRINKY",
-    "DDFXCAPS_BLTSHRINKYN",
-    "DDFXCAPS_BLTSTRETCHX",
-    "DDFXCAPS_BLTSTRETCHXN",
-    "DDFXCAPS_BLTSTRETCHY",
-    "DDFXCAPS_BLTSTRETCHYN",
-    "DDFXCAPS_OVERLAYARITHSTRETCHY",
-    "DDFXCAPS_OVERLAYARITHSTRETCHYN",
-    "DDFXCAPS_OVERLAYSHRINKX",
-    "DDFXCAPS_OVERLAYSHRINKXN",
-    "DDFXCAPS_OVERLAYSHRINKY",
-    "DDFXCAPS_OVERLAYSHRINKYN",
-    "DDFXCAPS_OVERLAYSTRETCHX",
-    "DDFXCAPS_OVERLAYSTRETCHXN",
-    "DDFXCAPS_OVERLAYSTRETCHY",
-    "DDFXCAPS_OVERLAYSTRETCHYN",
-    "DDFXCAPS_OVERLAYMIRRORLEFTRIGHT",
-    "DDFXCAPS_OVERLAYMIRRORUPDOWN",
-    "DDFXCAPS_OVERLAYDEINTERLACE",
-    "DDFXCAPS_BLTALPHA",
-    "DDFXCAPS_BLTFILTER",
-    "DDFXCAPS_OVERLAYALPHA",
-    "DDFXCAPS_OVERLAYFILTER",
-])
-
-DirectDrawStereoViewCapsFlags = Flags(DWORD, [
-    "DDSVCAPS_RESERVED1",
-    "DDSVCAPS_RESERVED2",
-    "DDSVCAPS_RESERVED3",
-    "DDSVCAPS_RESERVED4",
-    "DDSVCAPS_STEREOSEQUENTIAL",
-])
-
-DirectDrawPaletteCapsFlags = Flags(DWORD, [
-    "DDPCAPS_4BIT",
-    "DDPCAPS_8BITENTRIES",
-    "DDPCAPS_8BIT",
-    "DDPCAPS_INITIALIZE",
-    "DDPCAPS_PRIMARYSURFACE",
-    "DDPCAPS_PRIMARYSURFACELEFT",
-    "DDPCAPS_ALLOW256",
-    "DDPCAPS_VSYNC",
-    "DDPCAPS_1BIT",
-    "DDPCAPS_2BIT",
-    "DDPCAPS_ALPHA",
-])
-
-DirectDrawSurfaceSetPrivateDataConstants = FakeEnum(DWORD, [
-    "DDSPD_IUNKNOWNPOINTER",
-    "DDSPD_VOLATILE",
-])
-
-DirectDrawSurfaceSetPaletteConstants = FakeEnum(DWORD, [
-    "DDBD_1",
-    "DDBD_2",
-    "DDBD_4",
-    "DDBD_8",
-    "DDBD_16",
-    "DDBD_24",
-    "DDBD_32",
-])
-
-DirectDrawSurfaceSetGetColorKeyFlags = Flags(DWORD, [
-    "DDCKEY_COLORSPACE",
-    "DDCKEY_DESTBLT",
-    "DDCKEY_DESTOVERLAY",
-    "DDCKEY_SRCBLT",
-    "DDCKEY_SRCOVERLAY",
-])
-
-DirectDrawColorKeyCapsFlags = Flags(DWORD, [
-    "DDCKEYCAPS_DESTBLT",
-    "DDCKEYCAPS_DESTBLTCLRSPACE",
-    "DDCKEYCAPS_DESTBLTCLRSPACEYUV",
-    "DDCKEYCAPS_DESTBLTYUV",
-    "DDCKEYCAPS_DESTOVERLAY",
-    "DDCKEYCAPS_DESTOVERLAYCLRSPACE",
-    "DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV",
-    "DDCKEYCAPS_DESTOVERLAYONEACTIVE",
-    "DDCKEYCAPS_DESTOVERLAYYUV",
-    "DDCKEYCAPS_SRCBLT",
-    "DDCKEYCAPS_SRCBLTCLRSPACE",
-    "DDCKEYCAPS_SRCBLTCLRSPACEYUV",
-    "DDCKEYCAPS_SRCBLTYUV",
-    "DDCKEYCAPS_SRCOVERLAY",
-    "DDCKEYCAPS_SRCOVERLAYCLRSPACE",
-    "DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV",
-    "DDCKEYCAPS_SRCOVERLAYONEACTIVE",
-    "DDCKEYCAPS_SRCOVERLAYYUV",
-    "DDCKEYCAPS_NOCOSTOVERLAY",
-])
-
-DirectDrawPixelFormatFlags = Flags(DWORD, [
-    "DDPF_ALPHAPIXELS",
-    "DDPF_ALPHA",
-    "DDPF_FOURCC",
-    "DDPF_PALETTEINDEXED4",
-    "DDPF_PALETTEINDEXEDTO8",
-    "DDPF_PALETTEINDEXED8",
-    "DDPF_RGB",
-    "DDPF_COMPRESSED",
-    "DDPF_RGBTOYUV",
-    "DDPF_YUV",
-    "DDPF_ZBUFFER",
-    "DDPF_PALETTEINDEXED1",
-    "DDPF_PALETTEINDEXED2",
-    "DDPF_ZPIXELS",
-    "DDPF_STENCILBUFFER",
-    "DDPF_ALPHAPREMULT",
-    "DDPF_LUMINANCE",
-    "DDPF_BUMPLUMINANCE",
-    "DDPF_BUMPDUDV",
-])
-
-DirectDrawEnumSurfacesFlags = Flags(DWORD, [
-    "DDENUMSURFACES_ALL",
-    "DDENUMSURFACES_MATCH",
-    "DDENUMSURFACES_NOMATCH",
-    "DDENUMSURFACES_CANBECREATED",
-    "DDENUMSURFACES_DOESEXIST",
-])
-
-DirectDrawSetDisplayModeFlags = Flags(DWORD, [
-    "DDSDM_STANDARDVGAMODE",
-])
-
-DirectDrawEnumDisplayModesFlags = Flags(DWORD, [
-    "DDEDM_REFRESHRATES",
-    "DDEDM_STANDARDVGAMODES",
-])
-
-DirectDrawSetCooperativeLevelFlags = Flags(DWORD, [
-    "DDSCL_FULLSCREEN",
-    "DDSCL_ALLOWREBOOT",
-    "DDSCL_NOWINDOWCHANGES",
-    "DDSCL_NORMAL",
-    "DDSCL_EXCLUSIVE",
-    "DDSCL_ALLOWMODEX",
-    "DDSCL_SETFOCUSWINDOW",
-    "DDSCL_SETDEVICEWINDOW",
-    "DDSCL_CREATEDEVICEWINDOW",
-    "DDSCL_MULTITHREADED",
-    "DDSCL_FPUSETUP",
-    "DDSCL_FPUPRESERVE",
-])
-
-DirectDrawBltFlags = Flags(DWORD, [
-    "DDBLT_ALPHADEST",
-    "DDBLT_ALPHADESTCONSTOVERRIDE",
-    "DDBLT_ALPHADESTNEG",
-    "DDBLT_ALPHADESTSURFACEOVERRIDE",
-    "DDBLT_ALPHAEDGEBLEND",
-    "DDBLT_ALPHASRC",
-    "DDBLT_ALPHASRCCONSTOVERRIDE",
-    "DDBLT_ALPHASRCNEG",
-    "DDBLT_ALPHASRCSURFACEOVERRIDE",
-    "DDBLT_ASYNC",
-    "DDBLT_COLORFILL",
-    "DDBLT_DDFX",
-    "DDBLT_DDROPS",
-    "DDBLT_KEYDEST",
-    "DDBLT_KEYDESTOVERRIDE",
-    "DDBLT_KEYSRC",
-    "DDBLT_KEYSRCOVERRIDE",
-    "DDBLT_ROP",
-    "DDBLT_ROTATIONANGLE",
-    "DDBLT_ZBUFFER",
-    "DDBLT_ZBUFFERDESTCONSTOVERRIDE",
-    "DDBLT_ZBUFFERDESTOVERRIDE",
-    "DDBLT_ZBUFFERSRCCONSTOVERRIDE",
-    "DDBLT_ZBUFFERSRCOVERRIDE",
-    "DDBLT_WAIT",
-    "DDBLT_DEPTHFILL",
-    "DDBLT_DONOTWAIT",
-    "DDBLT_PRESENTATION",
-    "DDBLT_LAST_PRESENTATION",
-    "DDBLT_EXTENDED_FLAGS",
-    "DDBLT_EXTENDED_LINEAR_CONTENT",
-])
-
-DirectDrawBltFastFlags = Flags(DWORD, [
-    "DDBLTFAST_NOCOLORKEY",
-    "DDBLTFAST_SRCCOLORKEY",
-    "DDBLTFAST_DESTCOLORKEY",
-    "DDBLTFAST_WAIT",
-    "DDBLTFAST_DONOTWAIT",
-])
-
-DirectDrawFlipFlags = Flags(DWORD, [
-    "DDFLIP_WAIT",
-    "DDFLIP_EVEN",
-    "DDFLIP_ODD",
-    "DDFLIP_NOVSYNC",
-    "DDFLIP_INTERVAL2",
-    "DDFLIP_INTERVAL3",
-    "DDFLIP_INTERVAL4",
-    "DDFLIP_STEREO",
-    "DDFLIP_DONOTWAIT",
-])
-
-DirectDrawSurfaceOverlayFlags = Flags(DWORD, [
-    "DDOVER_ALPHADEST",
-    "DDOVER_ALPHADESTCONSTOVERRIDE",
-    "DDOVER_ALPHADESTNEG",
-    "DDOVER_ALPHADESTSURFACEOVERRIDE",
-    "DDOVER_ALPHAEDGEBLEND",
-    "DDOVER_ALPHASRC",
-    "DDOVER_ALPHASRCCONSTOVERRIDE",
-    "DDOVER_ALPHASRCNEG",
-    "DDOVER_ALPHASRCSURFACEOVERRIDE",
-    "DDOVER_HIDE",
-    "DDOVER_KEYDEST",
-    "DDOVER_KEYDESTOVERRIDE",
-    "DDOVER_KEYSRC",
-    "DDOVER_KEYSRCOVERRIDE",
-    "DDOVER_SHOW",
-    "DDOVER_ADDDIRTYRECT",
-    "DDOVER_REFRESHDIRTYRECTS",
-    "DDOVER_REFRESHALL",
-    "DDOVER_DDFX",
-    "DDOVER_AUTOFLIP",
-    "DDOVER_BOB",
-    "DDOVER_OVERRIDEBOBWEAVE",
-    "DDOVER_INTERLEAVED",
-    "DDOVER_BOBHARDWARE",
-    "DDOVER_ARGBSCALEFACTORS",
-    "DDOVER_DEGRADEARGBSCALING",
-])
-
-DDSETSURFACEDESC = Flags(DWORD, [
-    #"DDSETSURFACEDESC_RECREATEDC",
-    #"DDSETSURFACEDESC_PRESERVEDC",
-])
-
-DirectDrawSurfaceLockFlags = Flags(DWORD, [
-    "DDLOCK_SURFACEMEMORYPTR",
-    "DDLOCK_WAIT",
-    "DDLOCK_EVENT",
-    "DDLOCK_READONLY",
-    "DDLOCK_WRITEONLY",
-    "DDLOCK_NOSYSLOCK",
-    "DDLOCK_NOOVERWRITE",
-    "DDLOCK_DISCARDCONTENTS",
-    "DDLOCK_OKTOSWAP",
-    "DDLOCK_DONOTWAIT",
-    "DDLOCK_HASVOLUMETEXTUREBOXRECT",
-    "DDLOCK_NODIRTYUPDATE",
-])
-
-DirectDrawSurfaceBltFxFlags = Flags(DWORD, [
-    "DDBLTFX_ARITHSTRETCHY",
-    "DDBLTFX_MIRRORLEFTRIGHT",
-    "DDBLTFX_MIRRORUPDOWN",
-    "DDBLTFX_NOTEARING",
-    "DDBLTFX_ROTATE180",
-    "DDBLTFX_ROTATE270",
-    "DDBLTFX_ROTATE90",
-    "DDBLTFX_ZBUFFERRANGE",
-    "DDBLTFX_ZBUFFERBASEDEST",
-])
-
-DirectDrawOverlayFxFlags = Flags(DWORD, [
-    "DDOVERFX_ARITHSTRETCHY",
-    "DDOVERFX_MIRRORLEFTRIGHT",
-    "DDOVERFX_MIRRORUPDOWN",
-    "DDOVERFX_DEINTERLACE",
-])
-
-DirectDrawWaitForVerticalBlankFlags = Flags(DWORD, [
-    "DDWAITVB_BLOCKBEGIN",
-    "DDWAITVB_BLOCKBEGINEVENT",
-    "DDWAITVB_BLOCKEND",
-])
-
-DirectDrawGetFlipStatusFlags = Flags(DWORD, [
-    "DDGFS_CANFLIP",
-    "DDGFS_ISFLIPDONE",
-])
-
-DirectDrawGetBltStatusFlags = Flags(DWORD, [
-    "DDGBS_CANBLT",
-    "DDGBS_ISBLTDONE",
-])
-
-DirectDrawEnumOverlayZOrderFlags = Flags(DWORD, [
-    "DDENUMOVERLAYZ_BACKTOFRONT",
-    "DDENUMOVERLAYZ_FRONTTOBACK",
-])
-
-DirectDrawUpdateOverlayZOrderFlags = Flags(DWORD, [
-    "DDOVERZ_SENDTOFRONT",
-    "DDOVERZ_SENDTOBACK",
-    "DDOVERZ_MOVEFORWARD",
-    "DDOVERZ_MOVEBACKWARD",
-    "DDOVERZ_INSERTINFRONTOF",
-    "DDOVERZ_INSERTINBACKOF",
-])
-
-DirectDrawSetGammaRampFlags = Flags(DWORD, [
-    "DDSGR_CALIBRATE",
-])
-
-DirectDrawStartModeTestFlags = Flags(DWORD, [
-    "DDSMT_ISTESTREQUIRED",
-])
-
-DirectDrawEvaluateModeFlags = Flags(DWORD, [
-    "DDEM_MODEPASSED",
-    "DDEM_MODEFAILED",
-])
-
-DDRESULT = FakeEnum(HRESULT, [
-    "DD_OK",
-    "DD_FALSE",
-    "DDERR_ALREADYINITIALIZED",
-    "DDERR_CANNOTATTACHSURFACE",
-    "DDERR_CANNOTDETACHSURFACE",
-    "DDERR_CURRENTLYNOTAVAIL",
-    "DDERR_EXCEPTION",
-    "DDERR_GENERIC",
-    "DDERR_HEIGHTALIGN",
-    "DDERR_INCOMPATIBLEPRIMARY",
-    "DDERR_INVALIDCAPS",
-    "DDERR_INVALIDCLIPLIST",
-    "DDERR_INVALIDMODE",
-    "DDERR_INVALIDOBJECT",
-    "DDERR_INVALIDPARAMS",
-    "DDERR_INVALIDPIXELFORMAT",
-    "DDERR_INVALIDRECT",
-    "DDERR_LOCKEDSURFACES",
-    "DDERR_NO3D",
-    "DDERR_NOALPHAHW",
-    "DDERR_NOSTEREOHARDWARE",
-    "DDERR_NOSURFACELEFT",
-    "DDERR_NOCLIPLIST",
-    "DDERR_NOCOLORCONVHW",
-    "DDERR_NOCOOPERATIVELEVELSET",
-    "DDERR_NOCOLORKEY",
-    "DDERR_NOCOLORKEYHW",
-    "DDERR_NODIRECTDRAWSUPPORT",
-    "DDERR_NOEXCLUSIVEMODE",
-    "DDERR_NOFLIPHW",
-    "DDERR_NOGDI",
-    "DDERR_NOMIRRORHW",
-    "DDERR_NOTFOUND",
-    "DDERR_NOOVERLAYHW",
-    "DDERR_OVERLAPPINGRECTS",
-    "DDERR_NORASTEROPHW",
-    "DDERR_NOROTATIONHW",
-    "DDERR_NOSTRETCHHW",
-    "DDERR_NOT4BITCOLOR",
-    "DDERR_NOT4BITCOLORINDEX",
-    "DDERR_NOT8BITCOLOR",
-    "DDERR_NOTEXTUREHW",
-    "DDERR_NOVSYNCHW",
-    "DDERR_NOZBUFFERHW",
-    "DDERR_NOZOVERLAYHW",
-    "DDERR_OUTOFCAPS",
-    "DDERR_OUTOFMEMORY",
-    "DDERR_OUTOFVIDEOMEMORY",
-    "DDERR_OVERLAYCANTCLIP",
-    "DDERR_OVERLAYCOLORKEYONLYONEACTIVE",
-    "DDERR_PALETTEBUSY",
-    "DDERR_COLORKEYNOTSET",
-    "DDERR_SURFACEALREADYATTACHED",
-    "DDERR_SURFACEALREADYDEPENDENT",
-    "DDERR_SURFACEBUSY",
-    "DDERR_CANTLOCKSURFACE",
-    "DDERR_SURFACEISOBSCURED",
-    "DDERR_SURFACELOST",
-    "DDERR_SURFACENOTATTACHED",
-    "DDERR_TOOBIGHEIGHT",
-    "DDERR_TOOBIGSIZE",
-    "DDERR_TOOBIGWIDTH",
-    "DDERR_UNSUPPORTED",
-    "DDERR_UNSUPPORTEDFORMAT",
-    "DDERR_UNSUPPORTEDMASK",
-    "DDERR_INVALIDSTREAM",
-    "DDERR_VERTICALBLANKINPROGRESS",
-    "DDERR_WASSTILLDRAWING",
-    "DDERR_DDSCAPSCOMPLEXREQUIRED",
-    "DDERR_XALIGN",
-    "DDERR_INVALIDDIRECTDRAWGUID",
-    "DDERR_DIRECTDRAWALREADYCREATED",
-    "DDERR_NODIRECTDRAWHW",
-    "DDERR_PRIMARYSURFACEALREADYEXISTS",
-    "DDERR_NOEMULATION",
-    "DDERR_REGIONTOOSMALL",
-    "DDERR_CLIPPERISUSINGHWND",
-    "DDERR_NOCLIPPERATTACHED",
-    "DDERR_NOHWND",
-    "DDERR_HWNDSUBCLASSED",
-    "DDERR_HWNDALREADYSET",
-    "DDERR_NOPALETTEATTACHED",
-    "DDERR_NOPALETTEHW",
-    "DDERR_BLTFASTCANTCLIP",
-    "DDERR_NOBLTHW",
-    "DDERR_NODDROPSHW",
-    "DDERR_OVERLAYNOTVISIBLE",
-    "DDERR_NOOVERLAYDEST",
-    "DDERR_INVALIDPOSITION",
-    "DDERR_NOTAOVERLAYSURFACE",
-    "DDERR_EXCLUSIVEMODEALREADYSET",
-    "DDERR_NOTFLIPPABLE",
-    "DDERR_CANTDUPLICATE",
-    "DDERR_NOTLOCKED",
-    "DDERR_CANTCREATEDC",
-    "DDERR_NODC",
-    "DDERR_WRONGMODE",
-    "DDERR_IMPLICITLYCREATED",
-    "DDERR_NOTPALETTIZED",
-    "DDERR_UNSUPPORTEDMODE",
-    "DDERR_NOMIPMAPHW",
-    "DDERR_INVALIDSURFACETYPE",
-    "DDERR_NOOPTIMIZEHW",
-    "DDERR_NOTLOADED",
-    "DDERR_NOFOCUSWINDOW",
-    "DDERR_NOTONMIPMAPSUBLEVEL",
-    "DDERR_DCALREADYCREATED",
-    "DDERR_NONONLOCALVIDMEM",
-    "DDERR_CANTPAGELOCK",
-    "DDERR_CANTPAGEUNLOCK",
-    "DDERR_NOTPAGELOCKED",
-    "DDERR_MOREDATA",
-    "DDERR_EXPIRED",
-    "DDERR_TESTFINISHED",
-    "DDERR_NEWMODE",
-    "DDERR_D3DNOTINITIALIZED",
-    "DDERR_VIDEONOTACTIVE",
-    "DDERR_NOMONITORINFORMATION",
-    "DDERR_NODRIVERSUPPORT",
-    "DDERR_DEVICEDOESNTOWNSURFACE",
-    "DDERR_NOTINITIALIZED",
-])
-
-LPDDENUMMODESCALLBACK     = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])
-LPDDENUMMODESCALLBACK2    = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])
-LPDDENUMSURFACESCALLBACK  = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])
-LPDDENUMSURFACESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])
-LPDDENUMSURFACESCALLBACK7 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])
-
-IDirectDraw.methods += [
-    Method(DDRESULT, "Compact", []),
-    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDupDDSurface")]),
-    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK, "lpEnumModesCallback")]),
-    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "FlipToGDISurface", []),
-    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
-    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
-    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpGDIDDSSurface")]),
-    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
-    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
-    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
-    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
-    Method(DDRESULT, "RestoreDisplayMode", []),
-    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
-    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP")]),
-    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
-]
-
-IDirectDraw2.methods += [
-    Method(DDRESULT, "Compact", []),
-    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDupDDSurface")]),
-    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK, "lpEnumModesCallback")]),
-    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "FlipToGDISurface", []),
-    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
-    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
-    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpGDIDDSSurface")]),
-    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
-    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
-    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
-    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
-    Method(DDRESULT, "RestoreDisplayMode", []),
-    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
-    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
-    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
-]
-
-IDirectDraw4.methods += [
-    Method(DDRESULT, "Compact", []),
-    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC2, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE4, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDupDDSurface")]),
-    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK2, "lpEnumModesCallback")]),
-    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "FlipToGDISurface", []),
-    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
-    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
-    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpGDIDDSSurface")]),
-    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
-    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
-    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
-    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
-    Method(DDRESULT, "RestoreDisplayMode", []),
-    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
-    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
-    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS2, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
-    Method(DDRESULT, "GetSurfaceFromDC", [(HDC, "hdc"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lpDDSurface")]),
-    Method(DDRESULT, "RestoreAllSurfaces", []),
-    Method(DDRESULT, "TestCooperativeLevel", []),
-    Method(DDRESULT, "GetDeviceIdentifier", [Out(LPDDDEVICEIDENTIFIER, "lpDDDI"), (DirectDrawGetDeviceIdentifierFlags, "dwFlags")]),
-]
-
-IDirectDraw7.methods += [
-    Method(DDRESULT, "Compact", []),
-    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC2, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
-    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE7, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDupDDSurface")]),
-    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK2, "lpEnumModesCallback")]),
-    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "FlipToGDISurface", []),
-    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
-    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
-    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpGDIDDSSurface")]),
-    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
-    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
-    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
-    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
-    Method(DDRESULT, "RestoreDisplayMode", []),
-    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
-    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
-    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS2, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
-    Method(DDRESULT, "GetSurfaceFromDC", [(HDC, "hdc"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lpDDSurface")]),
-    Method(DDRESULT, "RestoreAllSurfaces", []),
-    Method(DDRESULT, "TestCooperativeLevel", []),
-    Method(DDRESULT, "GetDeviceIdentifier", [Out(LPDDDEVICEIDENTIFIER2, "lpDDDI"), (DirectDrawGetDeviceIdentifierFlags, "dwFlags")]),
-    Method(DDRESULT, "StartModeTest", [(LPSIZE, "lpModesToTest"), (DWORD, "dwNumEntries"), (DirectDrawStartModeTestFlags, "dwFlags")]),
-    Method(DDRESULT, "EvaluateMode", [(DirectDrawEvaluateModeFlags, "dwFlags"), Out(Pointer(DWORD), "pSecondsUntilTimeout")]),
-]
-
-IDirectDrawPalette.methods += [
-    Method(DDRESULT, "GetCaps", [Out(Pointer(DirectDrawPaletteCapsFlags), "lpdwCaps")]),
-    Method(DDRESULT, "GetEntries", [(DWORD, "dwFlags"), (DWORD, "dwBase"), (DWORD, "dwNumEntries"), Out(LPPALETTEENTRY, "lpEntries")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (DWORD, "dwFlags"), (LPPALETTEENTRY, "lpDDColorTable")]),
-    Method(DDRESULT, "SetEntries", [(DWORD, "dwFlags"), (DWORD, "dwStartingEntry"), (DWORD, "dwCount"), (LPPALETTEENTRY, "lpEntries")]),
-]
-
-IDirectDrawClipper.methods += [
-    Method(DDRESULT, "GetClipList", [(LPRECT, "lpRect"), (LPRGNDATA, "lpClipList"), Out(LPDWORD, "lpdwSize")]),
-    Method(DDRESULT, "GetHWnd", [Out(Pointer(HWND), "hWnd")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "IsClipListChanged", [Out(Pointer(BOOL), "lpbChanged")]),
-    Method(DDRESULT, "SetClipList", [(LPRGNDATA, "lpClipList"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "SetHWnd", [(DWORD, "dwFlags"), (HWND, "hWnd")]),
-]
-
-
-IDirectDrawSurface.methods += [
-    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE, "lpDDSAttachedSurface")]),
-    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
-    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
-    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE, "lpDDSurface")]),
-    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
-    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
-    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDAttachedSurface")]),
-    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
-    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
-    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
-    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
-    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
-    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
-    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
-    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "IsLost", []),
-    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
-    Method(DDRESULT, "Restore", []),
-    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
-    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
-    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
-    Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
-    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
-    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE, "lpDDSReference")]),
-]
-
-IDirectDrawSurface2.methods += [
-    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE2, "lpDDSAttachedSurface")]),
-    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE2, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
-    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE2, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
-    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE2, "lpDDSurface")]),
-    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
-    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE2, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
-    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE2), "lplpDDAttachedSurface")]),
-    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
-    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
-    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
-    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
-    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
-    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
-    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
-    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "IsLost", []),
-    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
-    Method(DDRESULT, "Restore", []),
-    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
-    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
-    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
-    Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
-    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE2, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
-    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE2, "lpDDSReference")]),
-    Method(DDRESULT, "GetDDInterface", [Out(Pointer(IUnknown), "lplpDD")]),
-    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
-]
-
-IDirectDrawSurface3.methods += [
-    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE3, "lpDDSAttachedSurface")]),
-    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE3, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
-    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE3, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
-    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE3, "lpDDSurface")]),
-    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
-    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE3, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
-    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE3), "lplpDDAttachedSurface")]),
-    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
-    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
-    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
-    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
-    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
-    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
-    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
-    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "IsLost", []),
-    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
-    Method(DDRESULT, "Restore", []),
-    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
-    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
-    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
-    Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
-    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE3, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
-    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE3, "lpDDSReference")]),
-    Method(DDRESULT, "GetDDInterface", [Out(Pointer(IUnknown), "lplpDD")]),
-    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC, "lpDDSD"), (DWORD, "dwFlags")]),
-]
-
-IDirectDrawSurface4.methods += [
-    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE4, "lpDDSAttachedSurface")]),
-    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE4, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
-    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE4, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
-    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE4, "lpDDSurface")]),
-    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpfnCallback")]),
-    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE4, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
-    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS2, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDAttachedSurface")]),
-    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
-    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS2, "lpDDSCaps")]),
-    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
-    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
-    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
-    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
-    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
-    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "IsLost", []),
-    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
-    Method(DDRESULT, "Restore", []),
-    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
-    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
-    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
-    Method(DDRESULT, "Unlock", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE4, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
-    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE4, "lpDDSReference")]),
-    Method(DDRESULT, "GetDDInterface", [Out(Pointer(LPVOID), "lplpDD")]),
-    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC2, "lpDDSD"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "SetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), (DWORD, "cbSize"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), Out(LPDWORD, "lpcbBufferSize")]),
-    Method(DDRESULT, "FreePrivateData", [(REFGUID, "guidTag")]),
-    Method(DDRESULT, "GetUniquenessValue", [Out(LPDWORD, "lpValue")]),
-    Method(DDRESULT, "ChangeUniquenessValue", []),
-]
-
-IDirectDrawSurface7.methods += [
-    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE7, "lpDDSAttachedSurface")]),
-    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE7, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
-    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE7, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
-    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE7, "lpDDSurface")]),
-    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpEnumSurfacesCallback")]),
-    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpfnCallback")]),
-    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE7, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
-    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS2, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDDAttachedSurface")]),
-    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
-    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS2, "lpDDSCaps")]),
-    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
-    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
-    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
-    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
-    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
-    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
-    Method(DDRESULT, "IsLost", []),
-    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
-    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
-    Method(DDRESULT, "Restore", []),
-    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
-    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
-    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
-    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
-    Method(DDRESULT, "Unlock", [(LPRECT, "lpRect")]),
-    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE7, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
-    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE7, "lpDDSReference")]),
-    Method(DDRESULT, "GetDDInterface", [Out(Pointer(LPVOID), "lplpDD")]),
-    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
-    Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC2, "lpDDSD"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "SetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), (DWORD, "cbSize"), (DWORD, "dwFlags")]),
-    Method(DDRESULT, "GetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), Out(LPDWORD, "lpcbBufferSize")]),
-    Method(DDRESULT, "FreePrivateData", [(REFGUID, "guidTag")]),
-    Method(DDRESULT, "GetUniquenessValue", [Out(LPDWORD, "lpValue")]),
-    Method(DDRESULT, "ChangeUniquenessValue", []),
-    Method(DDRESULT, "SetPriority", [(DWORD, "dwPriority")]),
-    Method(DDRESULT, "GetPriority", [Out(LPDWORD, "lpdwPriority")]),
-    Method(DDRESULT, "SetLOD", [(DWORD, "dwMaxLOD")]),
-    Method(DDRESULT, "GetLOD", [Out(LPDWORD, "lpdwMaxLOD")]),
-]
-
-IDirectDrawColorControl.methods += [
-    Method(DDRESULT, "GetColorControls", [(LPDDCOLORCONTROL, "lpColorControl")]),
-    Method(DDRESULT, "SetColorControls", [(LPDDCOLORCONTROL, "lpColorControl")]),
-]
-
-IDirectDrawGammaControl.methods += [
-    Method(DDRESULT, "GetGammaRamp", [(DWORD, "dwFlags"), Out(LPDDGAMMARAMP, "lpRampData")]),
-    Method(DDRESULT, "SetGammaRamp", [(DirectDrawSetGammaRampFlags, "dwFlags"), (LPDDGAMMARAMP, "lpRampData")]),
-]
-
-LPDDENUMCALLBACKA   = FunctionPointer(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])
-LPDDENUMCALLBACKW   = FunctionPointer(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])
-LPDDENUMCALLBACKEXA = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])
-LPDDENUMCALLBACKEXW = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])
-
-DDENUM = Flags(DWORD, [
-    "DDENUM_ATTACHEDSECONDARYDEVICES",
-    "DDENUM_DETACHEDSECONDARYDEVICES",
-    "DDENUM_NONDISPLAYDEVICES",
-])
-
-DDCREATE = Flags(DWORD, [
-    "DDCREATE_HARDWAREONLY",
-    "DDCREATE_EMULATIONONLY",
-])
-
-ddraw = API("ddraw")
-ddraw.add_functions([
-    StdFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
-    StdFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
-    StdFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
-    StdFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
-    StdFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), Out(Pointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
-    StdFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), Out(Pointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
-    StdFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
-    StdFunction(Void, "AcquireDDThreadLock", []),
-    StdFunction(Void, "ReleaseDDThreadLock", []),
-    StdFunction(DWORD, "D3DParseUnknownCommand", [(LPVOID, "lpCmd"), Out(Pointer(LPVOID), "lpRetCmd")]),
-    StdFunction(HRESULT, "DllCanUnloadNow", []),
-    StdFunction(HRESULT, "DllGetClassObject", [(REFCLSID, "rclsid"), (REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppv")]),
-
-    # XXX
-    StdFunction(HRESULT, "CompleteCreateSysmemSurface", [Int, Int]),
-    StdFunction(HRESULT, "GetSurfaceFromDC", [Int, Int, Int]),
-    StdFunction(HRESULT, "DDInternalLock", [Int, Int]),
-    StdFunction(HRESULT, "DDInternalUnlock", [Int]),
-    StdFunction(HRESULT, "DSoundHelp", [HWND, Int, Int]),
-    StdFunction(HRESULT, "GetDDSurfaceLocal", [Int, Int, Int]),
-    StdFunction(HANDLE, "GetOLEThunkData", [Int]),
-    StdFunction(HRESULT, "RegisterSpecialCase", [Int, Int, Int, Int]),
-    StdFunction(HRESULT, "DDGetAttachedSurfaceLcl", [Int, Int, Int]),
-
-    # TODO: SetAppCompatData
-])
-
index 0b53f0d4b5bb9a26271f7cf258667de583d0f61d..fb8f2a583927f8a4f654735daaf04e959d7605ff 100644 (file)
@@ -24,7 +24,7 @@
 ##########################################################################/
 
 
-from d3d import ddraw, interfaces
+from specs.d3d import ddraw, interfaces
 from trace import DllTracer
 
 
diff --git a/debug.py b/debug.py
deleted file mode 100644 (file)
index 0a00474..0000000
--- a/debug.py
+++ /dev/null
@@ -1,61 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-'''Debugging utilities.'''
-
-
-import sys
-import traceback
-import inspect
-
-
-def excepthook(type, value, tb):
-       """
-       Automatically start the debugger on an exception.
-
-       See also:
-       - http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65287
-       """
-
-       if hasattr(sys, 'ps1') \
-       or not (sys.stdin.isatty() and sys.stdout.isatty() and sys.stderr.isatty()) \
-       or type == SyntaxError or type == KeyboardInterrupt:
-               # we are in interactive mode or we don't have a tty-like
-               # device, so we call the default hook
-               oldexcepthook(type, value, tb)
-       else:
-               import traceback, pdb
-               # we are NOT in interactive mode, print the exception...
-               traceback.print_exception(type, value, tb)
-               print
-               # ...then start the debugger in post-mortem mode.
-               pdb.pm()
-
-oldexcepthook, sys.excepthook = sys.excepthook, excepthook
-
-
-def dump(var):
-       sys.stderr.write(repr(var) + '\n')
-       
index 701e8206ac86f96aa81177e067146bbcd09db81b..2d9d6ec0a3713f489362df3fdde0207be2c25c00 100644 (file)
@@ -28,7 +28,7 @@
 """ 
 
 
-import stdapi
+import specs.stdapi as stdapi
 
 
 def function_pointer_type(function):
diff --git a/dxgi.py b/dxgi.py
deleted file mode 100644 (file)
index e77c0b5..0000000
--- a/dxgi.py
+++ /dev/null
@@ -1,183 +0,0 @@
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-from dxgitype import *
-
-HMONITOR = Alias("HMONITOR", HANDLE)
-_LUID = Struct("_LUID", [
-    (DWORD, "LowPart"),
-    (LONG, "HighPart"),
-])
-
-DXGI_USAGE = Alias("DXGI_USAGE", UINT)
-DXGI_SWAP_EFFECT = Enum("DXGI_SWAP_EFFECT", [
-    "DXGI_SWAP_EFFECT_DISCARD",
-    "DXGI_SWAP_EFFECT_SEQUENTIAL",
-])
-
-DXGI_RESIDENCY = Enum("DXGI_RESIDENCY", [
-    "DXGI_RESIDENCY_FULLY_RESIDENT",
-    "DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY",
-    "DXGI_RESIDENCY_EVICTED_TO_DISK",
-])
-
-DXGI_SURFACE_DESC = Struct("DXGI_SURFACE_DESC", [
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (DXGI_FORMAT, "Format"),
-    (DXGI_SAMPLE_DESC, "SampleDesc"),
-])
-
-DXGI_MAPPED_RECT = Struct("DXGI_MAPPED_RECT", [
-    (INT, "Pitch"),
-    (OpaquePointer(BYTE), "pBits"),
-])
-
-DXGI_OUTPUT_DESC = Struct("DXGI_OUTPUT_DESC", [
-    (Array(WCHAR, "32"), "DeviceName"),
-    (RECT, "DesktopCoordinates"),
-    (BOOL, "AttachedToDesktop"),
-    (DXGI_MODE_ROTATION, "Rotation"),
-    (HMONITOR, "Monitor"),
-])
-
-DXGI_FRAME_STATISTICS = Struct("DXGI_FRAME_STATISTICS", [
-    (UINT, "PresentCount"),
-    (UINT, "PresentRefreshCount"),
-    (UINT, "SyncRefreshCount"),
-    (LARGE_INTEGER, "SyncQPCTime"),
-    (LARGE_INTEGER, "SyncGPUTime"),
-])
-
-DXGI_ADAPTER_DESC = Struct("DXGI_ADAPTER_DESC", [
-    (Array(WCHAR, "128"), "Description"),
-    (UINT, "VendorId"),
-    (UINT, "DeviceId"),
-    (UINT, "SubSysId"),
-    (UINT, "Revision"),
-    (SIZE_T, "DedicatedVideoMemory"),
-    (SIZE_T, "DedicatedSystemMemory"),
-    (SIZE_T, "SharedSystemMemory"),
-    (LUID, "AdapterLuid"),
-])
-
-DXGI_SWAP_CHAIN_FLAG = Enum("DXGI_SWAP_CHAIN_FLAG", [
-    "DXGI_SWAP_CHAIN_FLAG_NONPREROTATED",
-    "DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH",
-    "DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE",
-])
-
-DXGI_SWAP_CHAIN_DESC = Struct("DXGI_SWAP_CHAIN_DESC", [
-    (DXGI_MODE_DESC, "BufferDesc"),
-    (DXGI_SAMPLE_DESC, "SampleDesc"),
-    (DXGI_USAGE, "BufferUsage"),
-    (UINT, "BufferCount"),
-    (HWND, "OutputWindow"),
-    (BOOL, "Windowed"),
-    (DXGI_SWAP_EFFECT, "SwapEffect"),
-    (UINT, "Flags"),
-])
-
-DXGI_SHARED_RESOURCE = Struct("DXGI_SHARED_RESOURCE", [
-    (HANDLE, "Handle"),
-])
-
-IDXGIObject = Interface("IDXGIObject", IUnknown)
-IDXGIObject.methods += [
-    Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "data_size"), (OpaquePointer(Const(Void)), "data")]),
-    Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "object")]),
-    Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(OpaquePointer(UINT), "data_size"), Out(OpaquePointer(Void), "data")]),
-    Method(HRESULT, "GetParent", [(REFIID, "riid"), Out(OpaquePointer(OpaquePointer(Void)), "parent")]),
-]
-
-IDXGIDeviceSubObject = Interface("IDXGIDeviceSubObject", IDXGIObject)
-IDXGIDeviceSubObject.methods += [
-    Method(HRESULT, "GetDevice", [(REFIID, "riid"), Out(OpaquePointer(OpaquePointer(Void)), "device")]),
-]
-
-IDXGISurface = Interface("IDXGISurface", IDXGIDeviceSubObject)
-IDXGISurface.methods += [
-    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_SURFACE_DESC), "desc")]),
-    Method(HRESULT, "Map", [Out(OpaquePointer(DXGI_MAPPED_RECT), "mapped_rect"), (UINT, "flags")]),
-    Method(HRESULT, "Unmap", []),
-]
-
-IDXGIOutput = Interface("IDXGIOutput", IDXGIObject)
-IDXGIOutput.methods += [
-    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_OUTPUT_DESC), "desc")]),
-    Method(HRESULT, "GetDisplayModeList", [(DXGI_FORMAT, "format"), (UINT, "flags"), Out(OpaquePointer(UINT), "mode_count"), Out(OpaquePointer(DXGI_MODE_DESC), "desc")]),
-    Method(HRESULT, "FindClosestMatchingMode", [(Const(OpaquePointer(DXGI_MODE_DESC)), "mode"), Out(OpaquePointer(DXGI_MODE_DESC), "closest_match"), (OpaquePointer(IUnknown), "device")]),
-    Method(HRESULT, "WaitForVBlank", []),
-    Method(HRESULT, "TakeOwnership", [(OpaquePointer(IUnknown), "device"), (BOOL, "exclusive")]),
-    Method(Void, "ReleaseOwnership", []),
-    Method(HRESULT, "GetGammaControlCapabilities", [Out(OpaquePointer(DXGI_GAMMA_CONTROL_CAPABILITIES), "gamma_caps")]),
-    Method(HRESULT, "SetGammaControl", [(Const(OpaquePointer(DXGI_GAMMA_CONTROL)), "gamma_control")]),
-    Method(HRESULT, "GetGammaControl", [Out(OpaquePointer(DXGI_GAMMA_CONTROL), "gamma_control")]),
-    Method(HRESULT, "SetDisplaySurface", [(OpaquePointer(IDXGISurface), "surface")]),
-    Method(HRESULT, "GetDisplaySurfaceData", [(OpaquePointer(IDXGISurface), "surface")]),
-    Method(HRESULT, "GetFrameStatistics", [Out(OpaquePointer(DXGI_FRAME_STATISTICS), "stats")]),
-]
-
-IDXGIAdapter = Interface("IDXGIAdapter", IDXGIObject)
-IDXGIAdapter.methods += [
-    Method(HRESULT, "EnumOutputs", [(UINT, "output_idx"), Out(OpaquePointer(OpaquePointer(IDXGIOutput)), "output")]),
-    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_ADAPTER_DESC), "desc")]),
-    Method(HRESULT, "CheckInterfaceSupport", [(REFGUID, "guid"), Out(OpaquePointer(LARGE_INTEGER), "umd_version")]),
-]
-
-IDXGISwapChain = Interface("IDXGISwapChain", IDXGIDeviceSubObject)
-IDXGISwapChain.methods += [
-    Method(HRESULT, "Present", [(UINT, "sync_interval"), (UINT, "flags")]),
-    Method(HRESULT, "GetBuffer", [(UINT, "buffer_idx"), (REFIID, "riid"), Out(OpaquePointer(OpaquePointer(Void)), "surface")]),
-    Method(HRESULT, "SetFullscreenState", [(BOOL, "fullscreen"), (OpaquePointer(IDXGIOutput), "target")]),
-    Method(HRESULT, "GetFullscreenState", [Out(OpaquePointer(BOOL), "fullscreen"), Out(OpaquePointer(OpaquePointer(IDXGIOutput)), "target")]),
-    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_SWAP_CHAIN_DESC), "desc")]),
-    Method(HRESULT, "ResizeBuffers", [(UINT, "buffer_count"), (UINT, "width"), (UINT, "height"), (DXGI_FORMAT, "format"), (UINT, "flags")]),
-    Method(HRESULT, "ResizeTarget", [(OpaquePointer(Const(DXGI_MODE_DESC)), "target_mode_desc")]),
-    Method(HRESULT, "GetContainingOutput", [Out(OpaquePointer(OpaquePointer(IDXGIOutput)), "output")]),
-    Method(HRESULT, "GetFrameStatistics", [Out(OpaquePointer(DXGI_FRAME_STATISTICS), "stats")]),
-    Method(HRESULT, "GetLastPresentCount", [Out(OpaquePointer(UINT), "last_present_count")]),
-]
-
-IDXGIFactory = Interface("IDXGIFactory", IDXGIObject)
-IDXGIFactory.methods += [
-    Method(HRESULT, "EnumAdapters", [(UINT, "adapter_idx"), Out(OpaquePointer(OpaquePointer(IDXGIAdapter)), "adapter")]),
-    Method(HRESULT, "MakeWindowAssociation", [(HWND, "window"), (UINT, "flags")]),
-    Method(HRESULT, "GetWindowAssociation", [(OpaquePointer(HWND), "window")]),
-    Method(HRESULT, "CreateSwapChain", [(OpaquePointer(IUnknown), "device"), (OpaquePointer(DXGI_SWAP_CHAIN_DESC), "desc"), Out(OpaquePointer(OpaquePointer(IDXGISwapChain)), "swapchain")]),
-    Method(HRESULT, "CreateSoftwareAdapter", [(HMODULE, "swrast"), Out(OpaquePointer(OpaquePointer(IDXGIAdapter)), "adapter")]),
-]
-
-#StdFunction(HRESULT, "CreateDXGIFactory", [(REFIID, "riid"), (OpaquePointer(OpaquePointer(Void)), "factory")]),
-
-IDXGIDevice = Interface("IDXGIDevice", IDXGIObject)
-IDXGIDevice.methods += [
-    Method(HRESULT, "GetAdapter", [Out(OpaquePointer(OpaquePointer(IDXGIAdapter)), "adapter")]),
-    Method(HRESULT, "CreateSurface", [(Const(OpaquePointer(DXGI_SURFACE_DESC)), "desc"), (UINT, "surface_count"), (DXGI_USAGE, "usage"), (Const(OpaquePointer(DXGI_SHARED_RESOURCE)), "shared_resource"), Out(OpaquePointer(OpaquePointer(IDXGISurface)), "surface")]),
-    Method(HRESULT, "QueryResourceResidency", [(OpaquePointer(Const(OpaquePointer(IUnknown))), "resources"), Out(OpaquePointer(DXGI_RESIDENCY), "residency"), (UINT, "resource_count")]),
-    Method(HRESULT, "SetGPUThreadPriority", [(INT, "priority")]),
-    Method(HRESULT, "GetGPUThreadPriority", [Out(OpaquePointer(INT), "priority")]),
-]
-
diff --git a/dxgiformat.py b/dxgiformat.py
deleted file mode 100644 (file)
index 1d00f64..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-
-from winapi import *
-
-DXGI_FORMAT = Enum("DXGI_FORMAT", [
-    "DXGI_FORMAT_UNKNOWN",
-    "DXGI_FORMAT_R32G32B32A32_TYPELESS",
-    "DXGI_FORMAT_R32G32B32A32_FLOAT",
-    "DXGI_FORMAT_R32G32B32A32_UINT",
-    "DXGI_FORMAT_R32G32B32A32_SINT",
-    "DXGI_FORMAT_R32G32B32_TYPELESS",
-    "DXGI_FORMAT_R32G32B32_FLOAT",
-    "DXGI_FORMAT_R32G32B32_UINT",
-    "DXGI_FORMAT_R32G32B32_SINT",
-    "DXGI_FORMAT_R16G16B16A16_TYPELESS",
-    "DXGI_FORMAT_R16G16B16A16_FLOAT",
-    "DXGI_FORMAT_R16G16B16A16_UNORM",
-    "DXGI_FORMAT_R16G16B16A16_UINT",
-    "DXGI_FORMAT_R16G16B16A16_SNORM",
-    "DXGI_FORMAT_R16G16B16A16_SINT",
-    "DXGI_FORMAT_R32G32_TYPELESS",
-    "DXGI_FORMAT_R32G32_FLOAT",
-    "DXGI_FORMAT_R32G32_UINT",
-    "DXGI_FORMAT_R32G32_SINT",
-    "DXGI_FORMAT_R32G8X24_TYPELESS",
-    "DXGI_FORMAT_D32_FLOAT_S8X24_UINT",
-    "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",
-    "DXGI_FORMAT_X32_TYPELESS_G8X24_UINT",
-    "DXGI_FORMAT_R10G10B10A2_TYPELESS",
-    "DXGI_FORMAT_R10G10B10A2_UNORM",
-    "DXGI_FORMAT_R10G10B10A2_UINT",
-    "DXGI_FORMAT_R11G11B10_FLOAT",
-    "DXGI_FORMAT_R8G8B8A8_TYPELESS",
-    "DXGI_FORMAT_R8G8B8A8_UNORM",
-    "DXGI_FORMAT_R8G8B8A8_UNORM_SRGB",
-    "DXGI_FORMAT_R8G8B8A8_UINT",
-    "DXGI_FORMAT_R8G8B8A8_SNORM",
-    "DXGI_FORMAT_R8G8B8A8_SINT",
-    "DXGI_FORMAT_R16G16_TYPELESS",
-    "DXGI_FORMAT_R16G16_FLOAT",
-    "DXGI_FORMAT_R16G16_UNORM",
-    "DXGI_FORMAT_R16G16_UINT",
-    "DXGI_FORMAT_R16G16_SNORM",
-    "DXGI_FORMAT_R16G16_SINT",
-    "DXGI_FORMAT_R32_TYPELESS",
-    "DXGI_FORMAT_D32_FLOAT",
-    "DXGI_FORMAT_R32_FLOAT",
-    "DXGI_FORMAT_R32_UINT",
-    "DXGI_FORMAT_R32_SINT",
-    "DXGI_FORMAT_R24G8_TYPELESS",
-    "DXGI_FORMAT_D24_UNORM_S8_UINT",
-    "DXGI_FORMAT_R24_UNORM_X8_TYPELESS",
-    "DXGI_FORMAT_X24_TYPELESS_G8_UINT",
-    "DXGI_FORMAT_R8G8_TYPELESS",
-    "DXGI_FORMAT_R8G8_UNORM",
-    "DXGI_FORMAT_R8G8_UINT",
-    "DXGI_FORMAT_R8G8_SNORM",
-    "DXGI_FORMAT_R8G8_SINT",
-    "DXGI_FORMAT_R16_TYPELESS",
-    "DXGI_FORMAT_R16_FLOAT",
-    "DXGI_FORMAT_D16_UNORM",
-    "DXGI_FORMAT_R16_UNORM",
-    "DXGI_FORMAT_R16_UINT",
-    "DXGI_FORMAT_R16_SNORM",
-    "DXGI_FORMAT_R16_SINT",
-    "DXGI_FORMAT_R8_TYPELESS",
-    "DXGI_FORMAT_R8_UNORM",
-    "DXGI_FORMAT_R8_UINT",
-    "DXGI_FORMAT_R8_SNORM",
-    "DXGI_FORMAT_R8_SINT",
-    "DXGI_FORMAT_A8_UNORM",
-    "DXGI_FORMAT_R1_UNORM",
-    "DXGI_FORMAT_R9G9B9E5_SHAREDEXP",
-    "DXGI_FORMAT_R8G8_B8G8_UNORM",
-    "DXGI_FORMAT_G8R8_G8B8_UNORM",
-    "DXGI_FORMAT_BC1_TYPELESS",
-    "DXGI_FORMAT_BC1_UNORM",
-    "DXGI_FORMAT_BC1_UNORM_SRGB",
-    "DXGI_FORMAT_BC2_TYPELESS",
-    "DXGI_FORMAT_BC2_UNORM",
-    "DXGI_FORMAT_BC2_UNORM_SRGB",
-    "DXGI_FORMAT_BC3_TYPELESS",
-    "DXGI_FORMAT_BC3_UNORM",
-    "DXGI_FORMAT_BC3_UNORM_SRGB",
-    "DXGI_FORMAT_BC4_TYPELESS",
-    "DXGI_FORMAT_BC4_UNORM",
-    "DXGI_FORMAT_BC4_SNORM",
-    "DXGI_FORMAT_BC5_TYPELESS",
-    "DXGI_FORMAT_BC5_UNORM",
-    "DXGI_FORMAT_BC5_SNORM",
-    "DXGI_FORMAT_B5G6R5_UNORM",
-    "DXGI_FORMAT_B5G5R5A1_UNORM",
-    "DXGI_FORMAT_B8G8R8A8_UNORM",
-    "DXGI_FORMAT_B8G8R8X8_UNORM",
-    "DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM",
-    "DXGI_FORMAT_B8G8R8A8_TYPELESS",
-    "DXGI_FORMAT_B8G8R8A8_UNORM_SRGB",
-    "DXGI_FORMAT_B8G8R8X8_TYPELESS",
-    "DXGI_FORMAT_B8G8R8X8_UNORM_SRGB",
-    "DXGI_FORMAT_BC6H_TYPELESS",
-    "DXGI_FORMAT_BC6H_UF16",
-    "DXGI_FORMAT_BC6H_SF16",
-    "DXGI_FORMAT_BC7_TYPELESS",
-    "DXGI_FORMAT_BC7_UNORM",
-    "DXGI_FORMAT_BC7_UNORM_SRGB",
-    "DXGI_FORMAT_FORCE_UINT",
-])
-
diff --git a/dxgitype.py b/dxgitype.py
deleted file mode 100644 (file)
index 31cadde..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-from dxgiformat import *
-
-DXGI_RGB = Struct("DXGI_RGB", [
-    (Float, "Red"),
-    (Float, "Green"),
-    (Float, "Blue"),
-])
-
-DXGI_GAMMA_CONTROL = Struct("DXGI_GAMMA_CONTROL", [
-    (DXGI_RGB, "Scale"),
-    (DXGI_RGB, "Offset"),
-    (Array(DXGI_RGB, "1025"), "GammaCurve"),
-])
-
-DXGI_GAMMA_CONTROL_CAPABILITIES = Struct("DXGI_GAMMA_CONTROL_CAPABILITIES", [
-    (BOOL, "ScaleAndOffsetSupported"),
-    (Float, "MaxConvertedValue"),
-    (Float, "MinConvertedValue"),
-    (UINT, "NumGammaControlPoints"),
-    (Array(Float, "1025"), "ControlPointPositions"),
-])
-
-DXGI_RATIONAL = Struct("DXGI_RATIONAL", [
-    (UINT, "Numerator"),
-    (UINT, "Denominator"),
-])
-
-DXGI_MODE_SCANLINE_ORDER = Enum("DXGI_MODE_SCANLINE_ORDER", [
-    "DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED",
-    "DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE",
-    "DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST",
-    "DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST",
-])
-
-DXGI_MODE_SCALING = Enum("DXGI_MODE_SCALING", [
-    "DXGI_MODE_SCALING_UNSPECIFIED",
-    "DXGI_MODE_SCALING_CENTERED",
-    "DXGI_MODE_SCALING_STRETCHED",
-])
-
-DXGI_MODE_ROTATION = Enum("DXGI_MODE_ROTATION", [
-    "DXGI_MODE_ROTATION_UNSPECIFIED",
-    "DXGI_MODE_ROTATION_IDENTITY",
-    "DXGI_MODE_ROTATION_ROTATE90",
-    "DXGI_MODE_ROTATION_ROTATE180",
-    "DXGI_MODE_ROTATION_ROTATE270",
-])
-
-DXGI_MODE_DESC = Struct("DXGI_MODE_DESC", [
-    (UINT, "Width"),
-    (UINT, "Height"),
-    (DXGI_RATIONAL, "RefreshRate"),
-    (DXGI_FORMAT, "Format"),
-    (DXGI_MODE_SCANLINE_ORDER, "ScanlineOrdering"),
-    (DXGI_MODE_SCALING, "Scaling"),
-])
-
-DXGI_SAMPLE_DESC = Struct("DXGI_SAMPLE_DESC", [
-    (UINT, "Count"),
-    (UINT, "Quality"),
-])
-
diff --git a/glapi.py b/glapi.py
deleted file mode 100644 (file)
index e5edd99..0000000
--- a/glapi.py
+++ /dev/null
@@ -1,2818 +0,0 @@
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# Copyright 2008-2010 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-"""GL API description.
-
-Most of these were automatically generated with the apigen/glspec.py script
-from Khronos OpenGL spec files, and then manually edited to cover the corner
-cases correctly.
-
-"""
-
-
-from stdapi import *
-from gltypes import *
-import glparams
-
-
-def GlFunction(*args, **kwargs):
-    kwargs.setdefault('call', 'APIENTRY')
-    return Function(*args, **kwargs)
-
-
-glapi = API('GL')
-
-
-glapi.add_functions([
-    # GL_VERSION_1_0
-    GlFunction(Void, "glCullFace", [(GLenum, "mode")]),
-    GlFunction(Void, "glFrontFace", [(GLenum, "mode")]),
-    GlFunction(Void, "glHint", [(GLenum, "target"), (GLenum, "mode")]),
-    GlFunction(Void, "glLineWidth", [(GLfloat, "width")]),
-    GlFunction(Void, "glPointSize", [(GLfloat, "size")]),
-    GlFunction(Void, "glPolygonMode", [(GLenum, "face"), (GLenum, "mode")]),
-    GlFunction(Void, "glScissor", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glTexParameterf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glTexParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glTexParameterfv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexParameteri", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glTexParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glTexParameteriv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage1D_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage2D_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glDrawBuffer", [(GLenum, "mode")]),
-    GlFunction(Void, "glClear", [(GLbitfield_attrib, "mask")]),
-    GlFunction(Void, "glClearColor", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
-    GlFunction(Void, "glClearStencil", [(GLint, "s")]),
-    GlFunction(Void, "glClearDepth", [(GLclampd, "depth")]),
-    GlFunction(Void, "glStencilMask", [(GLuint, "mask")]),
-    GlFunction(Void, "glColorMask", [(GLboolean, "red"), (GLboolean, "green"), (GLboolean, "blue"), (GLboolean, "alpha")]),
-    GlFunction(Void, "glDepthMask", [(GLboolean, "flag")]),
-    GlFunction(Void, "glDisable", [(GLenum, "cap")]),
-    GlFunction(Void, "glEnable", [(GLenum, "cap")]),
-    GlFunction(Void, "glFinish", []),
-    GlFunction(Void, "glFlush", []),
-    GlFunction(Void, "glBlendFunc", [(GLenum, "sfactor"), (GLenum, "dfactor")]),
-    GlFunction(Void, "glLogicOp", [(GLenum, "opcode")]),
-    GlFunction(Void, "glStencilFunc", [(GLenum, "func"), (GLint, "ref"), (GLuint, "mask")]),
-    GlFunction(Void, "glStencilOp", [(GLenum, "fail"), (GLenum, "zfail"), (GLenum, "zpass")]),
-    GlFunction(Void, "glDepthFunc", [(GLenum, "func")]),
-    GlFunction(Void, "glPixelStoref", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPixelStorei", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glReadBuffer", [(GLenum, "mode")]),
-    GlFunction(Void, "glReadPixels", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), Out(OpaquePointer(GLvoid), "pixels")]),
-    GlFunction(Void, "glGetBooleanv", [(GLenum, "pname"), Out(Array(GLboolean, "__glGetBooleanv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetDoublev", [(GLenum, "pname"), Out(Array(GLdouble, "__glGetDoublev_size(pname)"), "params")], sideeffects=False),
-    GlFunction(GLenum_error, "glGetError", [], sideeffects=False),
-    GlFunction(Void, "glGetFloatv", [(GLenum, "pname"), Out(Array(GLfloat, "__glGetFloatv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetIntegerv", [(GLenum, "pname"), Out(Array(GLint, "__glGetIntegerv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(String("const GLubyte *"), "glGetString", [(GLenum, "name")], sideeffects=False),
-    GlFunction(Void, "glGetTexImage", [(GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaquePointer(GLvoid), "pixels")]),
-    GlFunction(Void, "glGetTexParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexParameterfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexLevelParameterfv", [(GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexLevelParameterfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexLevelParameteriv", [(GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexLevelParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(GLboolean, "glIsEnabled", [(GLenum, "cap")], sideeffects=False),
-    GlFunction(Void, "glDepthRange", [(GLclampd, "zNear"), (GLclampd, "zFar")]),
-    GlFunction(Void, "glViewport", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-
-    # GL_VERSION_1_0_DEPRECATED
-    GlFunction(Void, "glNewList", [(GLlist, "list"), (GLenum, "mode")]),
-    GlFunction(Void, "glEndList", []),
-    GlFunction(Void, "glCallList", [(GLlist, "list")]),
-    GlFunction(Void, "glCallLists", [(GLsizei, "n"), (GLenum, "type"), (Blob(Const(GLvoid), "__glCallLists_size(n, type)"), "lists")]),
-    GlFunction(Void, "glDeleteLists", [(GLlist, "list"), (GLsizei, "range")]),
-    GlFunction(Handle("list", GLuint, "range"), "glGenLists", [(GLsizei, "range")]),
-    GlFunction(Void, "glListBase", [(GLuint, "base")]),
-    GlFunction(Void, "glBegin", [(GLenum_mode, "mode")]),
-    GlFunction(Void, "glBitmap", [(GLsizei, "width"), (GLsizei, "height"), (GLfloat, "xorig"), (GLfloat, "yorig"), (GLfloat, "xmove"), (GLfloat, "ymove"), (Blob(Const(GLubyte), "__glBitmap_size(width, height)"), "bitmap")]),
-    GlFunction(Void, "glColor3b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
-    GlFunction(Void, "glColor3bv", [(Array(Const(GLbyte), "3"), "v")]),
-    GlFunction(Void, "glColor3d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
-    GlFunction(Void, "glColor3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glColor3f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
-    GlFunction(Void, "glColor3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glColor3i", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
-    GlFunction(Void, "glColor3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glColor3s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
-    GlFunction(Void, "glColor3sv", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glColor3ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
-    GlFunction(Void, "glColor3ubv", [(Array(Const(GLubyte), "3"), "v")]),
-    GlFunction(Void, "glColor3ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
-    GlFunction(Void, "glColor3uiv", [(Array(Const(GLuint), "3"), "v")]),
-    GlFunction(Void, "glColor3us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
-    GlFunction(Void, "glColor3usv", [(Array(Const(GLushort), "3"), "v")]),
-    GlFunction(Void, "glColor4b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue"), (GLbyte, "alpha")]),
-    GlFunction(Void, "glColor4bv", [(Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glColor4d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue"), (GLdouble, "alpha")]),
-    GlFunction(Void, "glColor4dv", [(Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glColor4f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue"), (GLfloat, "alpha")]),
-    GlFunction(Void, "glColor4fv", [(Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glColor4i", [(GLint, "red"), (GLint, "green"), (GLint, "blue"), (GLint, "alpha")]),
-    GlFunction(Void, "glColor4iv", [(Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glColor4s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue"), (GLshort, "alpha")]),
-    GlFunction(Void, "glColor4sv", [(Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glColor4ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue"), (GLubyte, "alpha")]),
-    GlFunction(Void, "glColor4ubv", [(Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glColor4ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue"), (GLuint, "alpha")]),
-    GlFunction(Void, "glColor4uiv", [(Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glColor4us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue"), (GLushort, "alpha")]),
-    GlFunction(Void, "glColor4usv", [(Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glEdgeFlag", [(GLboolean, "flag")]),
-    GlFunction(Void, "glEdgeFlagv", [(Pointer(Const(GLboolean)), "flag")]),
-    GlFunction(Void, "glEnd", []),
-    GlFunction(Void, "glIndexd", [(GLdouble, "c")]),
-    GlFunction(Void, "glIndexdv", [(Pointer(Const(GLdouble)), "c")]),
-    GlFunction(Void, "glIndexf", [(GLfloat, "c")]),
-    GlFunction(Void, "glIndexfv", [(Pointer(Const(GLfloat)), "c")]),
-    GlFunction(Void, "glIndexi", [(GLint, "c")]),
-    GlFunction(Void, "glIndexiv", [(Pointer(Const(GLint)), "c")]),
-    GlFunction(Void, "glIndexs", [(GLshort, "c")]),
-    GlFunction(Void, "glIndexsv", [(Pointer(Const(GLshort)), "c")]),
-    GlFunction(Void, "glNormal3b", [(GLbyte, "nx"), (GLbyte, "ny"), (GLbyte, "nz")]),
-    GlFunction(Void, "glNormal3bv", [(Array(Const(GLbyte), "3"), "v")]),
-    GlFunction(Void, "glNormal3d", [(GLdouble, "nx"), (GLdouble, "ny"), (GLdouble, "nz")]),
-    GlFunction(Void, "glNormal3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glNormal3f", [(GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz")]),
-    GlFunction(Void, "glNormal3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glNormal3i", [(GLint, "nx"), (GLint, "ny"), (GLint, "nz")]),
-    GlFunction(Void, "glNormal3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glNormal3s", [(GLshort, "nx"), (GLshort, "ny"), (GLshort, "nz")]),
-    GlFunction(Void, "glNormal3sv", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glRasterPos2d", [(GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glRasterPos2dv", [(Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glRasterPos2f", [(GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glRasterPos2fv", [(Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glRasterPos2i", [(GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glRasterPos2iv", [(Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glRasterPos2s", [(GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glRasterPos2sv", [(Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glRasterPos3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glRasterPos3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glRasterPos3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glRasterPos3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glRasterPos3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glRasterPos3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glRasterPos3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glRasterPos3sv", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glRasterPos4d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glRasterPos4dv", [(Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glRasterPos4f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glRasterPos4fv", [(Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glRasterPos4i", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glRasterPos4iv", [(Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glRasterPos4s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glRasterPos4sv", [(Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glRectd", [(GLdouble, "x1"), (GLdouble, "y1"), (GLdouble, "x2"), (GLdouble, "y2")]),
-    GlFunction(Void, "glRectdv", [(Array(Const(GLdouble), "2"), "v1"), (Array(Const(GLdouble), "2"), "v2")]),
-    GlFunction(Void, "glRectf", [(GLfloat, "x1"), (GLfloat, "y1"), (GLfloat, "x2"), (GLfloat, "y2")]),
-    GlFunction(Void, "glRectfv", [(Array(Const(GLfloat), "2"), "v1"), (Array(Const(GLfloat), "2"), "v2")]),
-    GlFunction(Void, "glRecti", [(GLint, "x1"), (GLint, "y1"), (GLint, "x2"), (GLint, "y2")]),
-    GlFunction(Void, "glRectiv", [(Array(Const(GLint), "2"), "v1"), (Array(Const(GLint), "2"), "v2")]),
-    GlFunction(Void, "glRects", [(GLshort, "x1"), (GLshort, "y1"), (GLshort, "x2"), (GLshort, "y2")]),
-    GlFunction(Void, "glRectsv", [(Array(Const(GLshort), "2"), "v1"), (Array(Const(GLshort), "2"), "v2")]),
-    GlFunction(Void, "glTexCoord1d", [(GLdouble, "s")]),
-    GlFunction(Void, "glTexCoord1dv", [(Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glTexCoord1f", [(GLfloat, "s")]),
-    GlFunction(Void, "glTexCoord1fv", [(Pointer(Const(GLfloat)), "v")]),
-    GlFunction(Void, "glTexCoord1i", [(GLint, "s")]),
-    GlFunction(Void, "glTexCoord1iv", [(Pointer(Const(GLint)), "v")]),
-    GlFunction(Void, "glTexCoord1s", [(GLshort, "s")]),
-    GlFunction(Void, "glTexCoord1sv", [(Pointer(Const(GLshort)), "v")]),
-    GlFunction(Void, "glTexCoord2d", [(GLdouble, "s"), (GLdouble, "t")]),
-    GlFunction(Void, "glTexCoord2dv", [(Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glTexCoord2f", [(GLfloat, "s"), (GLfloat, "t")]),
-    GlFunction(Void, "glTexCoord2fv", [(Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glTexCoord2i", [(GLint, "s"), (GLint, "t")]),
-    GlFunction(Void, "glTexCoord2iv", [(Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glTexCoord2s", [(GLshort, "s"), (GLshort, "t")]),
-    GlFunction(Void, "glTexCoord2sv", [(Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glTexCoord3d", [(GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
-    GlFunction(Void, "glTexCoord3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glTexCoord3f", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
-    GlFunction(Void, "glTexCoord3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord3i", [(GLint, "s"), (GLint, "t"), (GLint, "r")]),
-    GlFunction(Void, "glTexCoord3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glTexCoord3s", [(GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
-    GlFunction(Void, "glTexCoord3sv", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glTexCoord4d", [(GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
-    GlFunction(Void, "glTexCoord4dv", [(Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glTexCoord4f", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
-    GlFunction(Void, "glTexCoord4fv", [(Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glTexCoord4i", [(GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
-    GlFunction(Void, "glTexCoord4iv", [(Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glTexCoord4s", [(GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
-    GlFunction(Void, "glTexCoord4sv", [(Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertex2d", [(GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertex2dv", [(Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glVertex2f", [(GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glVertex2fv", [(Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glVertex2i", [(GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glVertex2iv", [(Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glVertex2s", [(GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glVertex2sv", [(Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glVertex3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertex3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glVertex3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glVertex3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glVertex3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glVertex3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glVertex3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glVertex3sv", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glVertex4d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertex4dv", [(Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glVertex4f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glVertex4fv", [(Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glVertex4i", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glVertex4iv", [(Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertex4s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glVertex4sv", [(Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glClipPlane", [(GLenum, "plane"), (Array(Const(GLdouble), "4"), "equation")]),
-    GlFunction(Void, "glColorMaterial", [(GLenum, "face"), (GLenum, "mode")]),
-    GlFunction(Void, "glFogf", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glFogfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__glFogfv_size(pname)"), "params")]),
-    GlFunction(Void, "glFogi", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glFogiv", [(GLenum, "pname"), (Array(Const(GLint), "__glFogiv_size(pname)"), "params")]),
-    GlFunction(Void, "glLightf", [(GLenum, "light"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glLightfv", [(GLenum, "light"), (GLenum, "pname"), (Array(Const(GLfloat), "__glLightfv_size(pname)"), "params")]),
-    GlFunction(Void, "glLighti", [(GLenum, "light"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glLightiv", [(GLenum, "light"), (GLenum, "pname"), (Array(Const(GLint), "__glLightiv_size(pname)"), "params")]),
-    GlFunction(Void, "glLightModelf", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glLightModelfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__glLightModelfv_size(pname)"), "params")]),
-    GlFunction(Void, "glLightModeli", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glLightModeliv", [(GLenum, "pname"), (Array(Const(GLint), "__glLightModeliv_size(pname)"), "params")]),
-    GlFunction(Void, "glLineStipple", [(GLint, "factor"), (GLushort, "pattern")]),
-    GlFunction(Void, "glMaterialf", [(GLenum, "face"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glMaterialfv", [(GLenum, "face"), (GLenum, "pname"), (Array(Const(GLfloat), "__glMaterialfv_size(pname)"), "params")]),
-    GlFunction(Void, "glMateriali", [(GLenum, "face"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glMaterialiv", [(GLenum, "face"), (GLenum, "pname"), (Array(Const(GLint), "__glMaterialiv_size(pname)"), "params")]),
-    GlFunction(Void, "glPolygonStipple", [(Array(Const(GLubyte), "__glPolygonStipple_size()"), "mask")]),
-    GlFunction(Void, "glShadeModel", [(GLenum, "mode")]),
-    GlFunction(Void, "glTexEnvf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glTexEnvfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glTexEnvfv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexEnvi", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glTexEnviv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glTexEnviv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexGend", [(GLenum, "coord"), (GLenum, "pname"), (GLdouble, "param")]),
-    GlFunction(Void, "glTexGendv", [(GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLdouble), "__glTexGendv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexGenf", [(GLenum, "coord"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glTexGenfv", [(GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLfloat), "__glTexGenfv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexGeni", [(GLenum, "coord"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glTexGeniv", [(GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLint), "__glTexGeniv_size(pname)"), "params")]),
-    GlFunction(Void, "glFeedbackBuffer", [(GLsizei, "size"), (GLenum, "type"), Out(Array(GLfloat, "size"), "buffer")]),
-    GlFunction(Void, "glSelectBuffer", [(GLsizei, "size"), Out(Array(GLuint, "size"), "buffer")]),
-    GlFunction(Alias("GLint", GLenum), "glRenderMode", [(GLenum, "mode")]),
-    GlFunction(Void, "glInitNames", []),
-    GlFunction(Void, "glLoadName", [(GLuint, "name")]),
-    GlFunction(Void, "glPassThrough", [(GLfloat, "token")]),
-    GlFunction(Void, "glPopName", []),
-    GlFunction(Void, "glPushName", [(GLuint, "name")]),
-    GlFunction(Void, "glClearAccum", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue"), (GLfloat, "alpha")]),
-    GlFunction(Void, "glClearIndex", [(GLfloat, "c")]),
-    GlFunction(Void, "glIndexMask", [(GLuint, "mask")]),
-    GlFunction(Void, "glAccum", [(GLenum, "op"), (GLfloat, "value")]),
-    GlFunction(Void, "glPopAttrib", []),
-    GlFunction(Void, "glPushAttrib", [(GLbitfield_attrib, "mask")]),
-    GlFunction(Void, "glMap1d", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "stride"), (GLint, "order"), (Array(Const(GLdouble), "__glMap1d_size(target, stride, order)"), "points")]),
-    GlFunction(Void, "glMap1f", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "stride"), (GLint, "order"), (Array(Const(GLfloat), "__glMap1f_size(target, stride, order)"), "points")]),
-    GlFunction(Void, "glMap2d", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (Array(Const(GLdouble), "__glMap2d_size(target, ustride, uorder, vstride, vorder)"), "points")]),
-    GlFunction(Void, "glMap2f", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (Array(Const(GLfloat), "__glMap2f_size(target, ustride, uorder, vstride, vorder)"), "points")]),
-    GlFunction(Void, "glMapGrid1d", [(GLint, "un"), (GLdouble, "u1"), (GLdouble, "u2")]),
-    GlFunction(Void, "glMapGrid1f", [(GLint, "un"), (GLfloat, "u1"), (GLfloat, "u2")]),
-    GlFunction(Void, "glMapGrid2d", [(GLint, "un"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "vn"), (GLdouble, "v1"), (GLdouble, "v2")]),
-    GlFunction(Void, "glMapGrid2f", [(GLint, "un"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "vn"), (GLfloat, "v1"), (GLfloat, "v2")]),
-    GlFunction(Void, "glEvalCoord1d", [(GLdouble, "u")]),
-    GlFunction(Void, "glEvalCoord1dv", [(Pointer(Const(GLdouble)), "u")]),
-    GlFunction(Void, "glEvalCoord1f", [(GLfloat, "u")]),
-    GlFunction(Void, "glEvalCoord1fv", [(Pointer(Const(GLfloat)), "u")]),
-    GlFunction(Void, "glEvalCoord2d", [(GLdouble, "u"), (GLdouble, "v")]),
-    GlFunction(Void, "glEvalCoord2dv", [(Array(Const(GLdouble), "2"), "u")]),
-    GlFunction(Void, "glEvalCoord2f", [(GLfloat, "u"), (GLfloat, "v")]),
-    GlFunction(Void, "glEvalCoord2fv", [(Array(Const(GLfloat), "2"), "u")]),
-    GlFunction(Void, "glEvalMesh1", [(GLenum, "mode"), (GLint, "i1"), (GLint, "i2")]),
-    GlFunction(Void, "glEvalPoint1", [(GLint, "i")]),
-    GlFunction(Void, "glEvalMesh2", [(GLenum, "mode"), (GLint, "i1"), (GLint, "i2"), (GLint, "j1"), (GLint, "j2")]),
-    GlFunction(Void, "glEvalPoint2", [(GLint, "i"), (GLint, "j")]),
-    GlFunction(Void, "glAlphaFunc", [(GLenum, "func"), (GLclampf, "ref")]),
-    GlFunction(Void, "glPixelZoom", [(GLfloat, "xfactor"), (GLfloat, "yfactor")]),
-    GlFunction(Void, "glPixelTransferf", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPixelTransferi", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glPixelMapfv", [(GLenum, "map"), (GLsizei, "mapsize"), (Array(Const(GLfloat), "mapsize"), "values")]),
-    GlFunction(Void, "glPixelMapuiv", [(GLenum, "map"), (GLsizei, "mapsize"), (Array(Const(GLuint), "mapsize"), "values")]),
-    GlFunction(Void, "glPixelMapusv", [(GLenum, "map"), (GLsizei, "mapsize"), (Array(Const(GLushort), "mapsize"), "values")]),
-    GlFunction(Void, "glCopyPixels", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "type")]),
-    GlFunction(Void, "glDrawPixels", [(GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glDrawPixels_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glGetClipPlane", [(GLenum, "plane"), Out(Array(GLdouble, "4"), "equation")], sideeffects=False),
-    GlFunction(Void, "glGetLightfv", [(GLenum, "light"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetLightfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetLightiv", [(GLenum, "light"), (GLenum, "pname"), Out(Array(GLint, "__glGetLightiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMapdv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLdouble), "v")], sideeffects=False),
-    GlFunction(Void, "glGetMapfv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLfloat), "v")], sideeffects=False),
-    GlFunction(Void, "glGetMapiv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLint), "v")], sideeffects=False),
-    GlFunction(Void, "glGetMaterialfv", [(GLenum, "face"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetMaterialfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMaterialiv", [(GLenum, "face"), (GLenum, "pname"), Out(Array(GLint, "__glGetMaterialiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetPixelMapfv", [(GLenum, "map"), Out(Pointer(GLfloat), "values")]),
-    GlFunction(Void, "glGetPixelMapuiv", [(GLenum, "map"), Out(Pointer(GLuint), "values")]),
-    GlFunction(Void, "glGetPixelMapusv", [(GLenum, "map"), Out(Pointer(GLushort), "values")]),
-    GlFunction(Void, "glGetPolygonStipple", [Out(OpaquePointer(GLubyte), "mask")]),
-    GlFunction(Void, "glGetTexEnvfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexEnvfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexEnviv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexEnviv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexGendv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLdouble, "__glGetTexGendv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexGenfv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexGenfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexGeniv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexGeniv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(GLboolean, "glIsList", [(GLuint, "list")], sideeffects=False),
-    GlFunction(Void, "glFrustum", [(GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
-    GlFunction(Void, "glLoadIdentity", []),
-    GlFunction(Void, "glLoadMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glLoadMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glMatrixMode", [(GLenum, "mode")]),
-    GlFunction(Void, "glMultMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMultMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glOrtho", [(GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
-    GlFunction(Void, "glPopMatrix", []),
-    GlFunction(Void, "glPushMatrix", []),
-    GlFunction(Void, "glRotated", [(GLdouble, "angle"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glRotatef", [(GLfloat, "angle"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glScaled", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glScalef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glTranslated", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glTranslatef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-
-    # GL_VERSION_1_1
-    GlFunction(Void, "glDrawArrays", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
-    GlFunction(Void, "glDrawElements", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices")]),
-    GlFunction(Void, "glGetPointerv", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
-    GlFunction(Void, "glPolygonOffset", [(GLfloat, "factor"), (GLfloat, "units")]),
-    GlFunction(Void, "glCopyTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
-    GlFunction(Void, "glCopyTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
-    GlFunction(Void, "glCopyTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glCopyTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage1D_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage2D_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glBindTexture", [(GLenum, "target"), (GLtexture, "texture")]),
-    GlFunction(Void, "glDeleteTextures", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures")]),
-    GlFunction(Void, "glGenTextures", [(GLsizei, "n"), Out(Array(GLtexture, "n"), "textures")]),
-    GlFunction(GLboolean, "glIsTexture", [(GLtexture, "texture")], sideeffects=False),
-
-    # GL_VERSION_1_1_DEPRECATED
-    GlFunction(Void, "glArrayElement", [(GLint, "i")]),
-    GlFunction(Void, "glColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glDisableClientState", [(GLenum, "array")]),
-    GlFunction(Void, "glEdgeFlagPointer", [(GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glEnableClientState", [(GLenum, "array")]),
-    GlFunction(Void, "glIndexPointer", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glInterleavedArrays", [(GLenum, "format"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glNormalPointer", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glTexCoordPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glVertexPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(GLboolean, "glAreTexturesResident", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), Out(Array(GLboolean, "n"), "residences")], sideeffects=False),
-    GlFunction(Void, "glPrioritizeTextures", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), (Array(Const(GLclampf), "n"), "priorities")]),
-    GlFunction(Void, "glIndexub", [(GLubyte, "c")]),
-    GlFunction(Void, "glIndexubv", [(Pointer(Const(GLubyte)), "c")]),
-    GlFunction(Void, "glPopClientAttrib", []),
-    GlFunction(Void, "glPushClientAttrib", [(GLbitfield_client_attrib, "mask")]),
-
-    # GL_VERSION_1_2
-    GlFunction(Void, "glBlendColor", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
-    GlFunction(Void, "glBlendEquation", [(GLenum, "mode")]),
-    GlFunction(Void, "glDrawRangeElements", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices")]),
-    GlFunction(Void, "glTexImage3D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage3D_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage3D_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glCopyTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-
-    # GL_VERSION_1_2_DEPRECATED
-    GlFunction(Void, "glColorTable", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glColorTable_size(format, type, width)"), "table")]),
-    GlFunction(Void, "glColorTableParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glColorTableParameterfv_size(pname)"), "params")]),
-    GlFunction(Void, "glColorTableParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glColorTableParameteriv_size(pname)"), "params")]),
-    GlFunction(Void, "glCopyColorTable", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glGetColorTable", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTable_size(target, format, type)"), "table")], sideeffects=False),
-    GlFunction(Void, "glGetColorTableParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetColorTableParameterfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetColorTableParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetColorTableParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glColorSubTable", [(GLenum, "target"), (GLsizei, "start"), (GLsizei, "count"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glColorSubTable_size(format, type, count)"), "data")]),
-    GlFunction(Void, "glCopyColorSubTable", [(GLenum, "target"), (GLsizei, "start"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glConvolutionFilter1D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glConvolutionFilter1D_size(format, type, width)"), "image")]),
-    GlFunction(Void, "glConvolutionFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glConvolutionFilter2D_size(format, type, width, height)"), "image")]),
-    GlFunction(Void, "glConvolutionParameterf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "params")]),
-    GlFunction(Void, "glConvolutionParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glConvolutionParameterfv_size(pname)"), "params")]),
-    GlFunction(Void, "glConvolutionParameteri", [(GLenum, "target"), (GLenum, "pname"), (GLint, "params")]),
-    GlFunction(Void, "glConvolutionParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glConvolutionParameteriv_size(pname)"), "params")]),
-    GlFunction(Void, "glCopyConvolutionFilter1D", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glCopyConvolutionFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetConvolutionFilter", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetConvolutionFilter_size(target, format, type)"), "image")]),
-    GlFunction(Void, "glGetConvolutionParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetConvolutionParameterfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetConvolutionParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetConvolutionParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetSeparableFilter", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilter_size(target, format, type)"), "row"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilter_size(target, format, type)"), "column"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilter_size(target, format, type)"), "span")]),
-    GlFunction(Void, "glSeparableFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glConvolutionFilter1D_size(format, type, width)"), "row"), (Blob(Const(GLvoid), "__glConvolutionFilter1D_size(format, type, height)"), "column")]),
-    GlFunction(Void, "glGetHistogram", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetHistogram_size(target, format, type)"), "values")]),
-    GlFunction(Void, "glGetHistogramParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetHistogramParameterfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetHistogramParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetHistogramParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMinmax", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMinmax_size(target, format, type)"), "values")]),
-    GlFunction(Void, "glGetMinmaxParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetMinmaxParameterfv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMinmaxParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetMinmaxParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glHistogram", [(GLenum, "target"), (GLsizei, "width"), (GLenum, "internalformat"), (GLboolean, "sink")]),
-    GlFunction(Void, "glMinmax", [(GLenum, "target"), (GLenum, "internalformat"), (GLboolean, "sink")]),
-    GlFunction(Void, "glResetHistogram", [(GLenum, "target")]),
-    GlFunction(Void, "glResetMinmax", [(GLenum, "target")]),
-
-    # GL_VERSION_1_3
-    GlFunction(Void, "glActiveTexture", [(GLenum, "texture")]),
-    GlFunction(Void, "glSampleCoverage", [(GLclampf, "value"), (GLboolean, "invert")]),
-    GlFunction(Void, "glCompressedTexImage3D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glGetCompressedTexImage", [(GLenum, "target"), (GLint, "level"), Out(OpaqueBlob(GLvoid, "__glGetCompressedTexImage_size(target, level)"), "img")]),
-
-    # GL_VERSION_1_3_DEPRECATED
-    GlFunction(Void, "glClientActiveTexture", [(GLenum, "texture")]),
-    GlFunction(Void, "glMultiTexCoord1d", [(GLenum, "target"), (GLdouble, "s")]),
-    GlFunction(Void, "glMultiTexCoord1dv", [(GLenum, "target"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glMultiTexCoord1f", [(GLenum, "target"), (GLfloat, "s")]),
-    GlFunction(Void, "glMultiTexCoord1fv", [(GLenum, "target"), (Pointer(Const(GLfloat)), "v")]),
-    GlFunction(Void, "glMultiTexCoord1i", [(GLenum, "target"), (GLint, "s")]),
-    GlFunction(Void, "glMultiTexCoord1iv", [(GLenum, "target"), (Pointer(Const(GLint)), "v")]),
-    GlFunction(Void, "glMultiTexCoord1s", [(GLenum, "target"), (GLshort, "s")]),
-    GlFunction(Void, "glMultiTexCoord1sv", [(GLenum, "target"), (Pointer(Const(GLshort)), "v")]),
-    GlFunction(Void, "glMultiTexCoord2d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t")]),
-    GlFunction(Void, "glMultiTexCoord2dv", [(GLenum, "target"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord2f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t")]),
-    GlFunction(Void, "glMultiTexCoord2fv", [(GLenum, "target"), (Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord2i", [(GLenum, "target"), (GLint, "s"), (GLint, "t")]),
-    GlFunction(Void, "glMultiTexCoord2iv", [(GLenum, "target"), (Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord2s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t")]),
-    GlFunction(Void, "glMultiTexCoord2sv", [(GLenum, "target"), (Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
-    GlFunction(Void, "glMultiTexCoord3dv", [(GLenum, "target"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
-    GlFunction(Void, "glMultiTexCoord3fv", [(GLenum, "target"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3i", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r")]),
-    GlFunction(Void, "glMultiTexCoord3iv", [(GLenum, "target"), (Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
-    GlFunction(Void, "glMultiTexCoord3sv", [(GLenum, "target"), (Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
-    GlFunction(Void, "glMultiTexCoord4dv", [(GLenum, "target"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
-    GlFunction(Void, "glMultiTexCoord4fv", [(GLenum, "target"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4i", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
-    GlFunction(Void, "glMultiTexCoord4iv", [(GLenum, "target"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
-    GlFunction(Void, "glMultiTexCoord4sv", [(GLenum, "target"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glLoadTransposeMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glLoadTransposeMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glMultTransposeMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMultTransposeMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
-
-    # GL_VERSION_1_4
-    GlFunction(Void, "glBlendFuncSeparate", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
-    GlFunction(Void, "glMultiDrawArrays", [(GLenum_mode, "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glMultiDrawElements", [(GLenum_mode, "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glPointParameterf", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPointParameterfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__glPointParameterfv_size(pname)"), "params")]),
-    GlFunction(Void, "glPointParameteri", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glPointParameteriv", [(GLenum, "pname"), (Array(Const(GLint), "__glPointParameteriv_size(pname)"), "params")]),
-
-    # GL_VERSION_1_4_DEPRECATED
-    GlFunction(Void, "glFogCoordf", [(GLfloat, "coord")]),
-    GlFunction(Void, "glFogCoordfv", [(Pointer(Const(GLfloat)), "coord")]),
-    GlFunction(Void, "glFogCoordd", [(GLdouble, "coord")]),
-    GlFunction(Void, "glFogCoorddv", [(Pointer(Const(GLdouble)), "coord")]),
-    GlFunction(Void, "glFogCoordPointer", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glSecondaryColor3b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
-    GlFunction(Void, "glSecondaryColor3bv", [(Array(Const(GLbyte), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
-    GlFunction(Void, "glSecondaryColor3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
-    GlFunction(Void, "glSecondaryColor3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3i", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
-    GlFunction(Void, "glSecondaryColor3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
-    GlFunction(Void, "glSecondaryColor3sv", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
-    GlFunction(Void, "glSecondaryColor3ubv", [(Array(Const(GLubyte), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
-    GlFunction(Void, "glSecondaryColor3uiv", [(Array(Const(GLuint), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
-    GlFunction(Void, "glSecondaryColor3usv", [(Array(Const(GLushort), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glWindowPos2d", [(GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glWindowPos2dv", [(Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2f", [(GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glWindowPos2fv", [(Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2i", [(GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glWindowPos2iv", [(Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2s", [(GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glWindowPos2sv", [(Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glWindowPos3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glWindowPos3dv", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glWindowPos3fv", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glWindowPos3iv", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glWindowPos3sv", [(Array(Const(GLshort), "3"), "v")]),
-
-    # GL_VERSION_1_5
-    GlFunction(Void, "glGenQueries", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
-    GlFunction(Void, "glDeleteQueries", [(GLsizei, "n"), (Array(Const(GLquery), "n"), "ids")]),
-    GlFunction(GLboolean, "glIsQuery", [(GLquery, "id")], sideeffects=False),
-    GlFunction(Void, "glBeginQuery", [(GLenum, "target"), (GLquery, "id")]),
-    GlFunction(Void, "glEndQuery", [(GLenum, "target")]),
-    GlFunction(Void, "glGetQueryiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryivARB_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetQueryObjectiv", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryObjectivARB_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetQueryObjectuiv", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLuint, "__glGetQueryObjectuivARB_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glBindBuffer", [(GLenum, "target"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glDeleteBuffers", [(GLsizei, "n"), (Array(Const(GLbuffer), "n"), "buffer")]),
-    GlFunction(Void, "glGenBuffers", [(GLsizei, "n"), Out(Array(GLbuffer, "n"), "buffer")]),
-    GlFunction(GLboolean, "glIsBuffer", [(GLbuffer, "buffer")], sideeffects=False),
-    GlFunction(Void, "glBufferData", [(GLenum, "target"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
-    GlFunction(Void, "glBufferSubData", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data")]),
-    GlFunction(Void, "glGetBufferSubData", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size"), Out(Blob(GLvoid, "size"), "data")], sideeffects=False),
-    GlFunction(GLmap, "glMapBuffer", [(GLenum, "target"), (GLenum, "access")]),
-    GlFunction(GLboolean, "glUnmapBuffer", [(GLenum, "target")]),
-    GlFunction(Void, "glGetBufferParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetBufferPointerv", [(GLenum, "target"), (GLenum, "pname"), (Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
-
-    # GL_VERSION_2_0
-    GlFunction(Void, "glBlendEquationSeparate", [(GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
-    GlFunction(Void, "glDrawBuffers", [(GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
-    GlFunction(Void, "glStencilOpSeparate", [(GLenum, "face"), (GLenum, "sfail"), (GLenum, "dpfail"), (GLenum, "dppass")]),
-    GlFunction(Void, "glStencilFuncSeparate", [(GLenum, "face"), (GLenum, "func"), (GLint, "ref"), (GLuint, "mask")]),
-    GlFunction(Void, "glStencilMaskSeparate", [(GLenum, "face"), (GLuint, "mask")]),
-    GlFunction(Void, "glAttachShader", [(GLprogram, "program"), (GLshader, "shader")]),
-    GlFunction(Void, "glBindAttribLocation", [(GLprogram, "program"), (GLuint, "index"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glCompileShader", [(GLshader, "shader")]),
-    GlFunction(GLprogram, "glCreateProgram", []),
-    GlFunction(GLshader, "glCreateShader", [(GLenum, "type")]),
-    GlFunction(Void, "glDeleteProgram", [(GLprogram, "program")]),
-    GlFunction(Void, "glDeleteShader", [(GLshader, "shader")]),
-    GlFunction(Void, "glDetachShader", [(GLprogram, "program"), (GLshader, "shader")]),
-    GlFunction(Void, "glDisableVertexAttribArray", [(GLuint, "index")]),
-    GlFunction(Void, "glEnableVertexAttribArray", [(GLuint, "index")]),
-    GlFunction(Void, "glGetActiveAttrib", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
-    GlFunction(Void, "glGetActiveUniform", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
-    GlFunction(Void, "glGetAttachedShaders", [(GLprogram, "program"), (GLsizei, "maxCount"), Out(Pointer(GLsizei), "count"), Out(Array(GLuint, "(count ? *count : maxCount)"), "obj")], sideeffects=False),
-    GlFunction(GLint, "glGetAttribLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glGetProgramiv", [(GLprogram, "program"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramInfoLog", [(GLprogram, "program"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
-    GlFunction(Void, "glGetShaderiv", [(GLshader, "shader"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetShaderInfoLog", [(GLshader, "shader"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
-    GlFunction(Void, "glGetShaderSource", [(GLshader, "shader"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(String("GLchar *", "*length"), "source")], sideeffects=False),
-    GlFunction(GLlocation, "glGetUniformLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glGetUniformfv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetUniformiv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribdv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLdouble, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribfv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribPointerv", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
-    GlFunction(GLboolean, "glIsProgram", [(GLprogram, "program")], sideeffects=False),
-    GlFunction(GLboolean, "glIsShader", [(GLshader, "shader")], sideeffects=False),
-    GlFunction(Void, "glLinkProgram", [(GLprogram, "program")]),
-    GlFunction(Void, "glShaderSource", [(GLshader, "shader"), (GLsizei, "count"), (Const(Array(Const(GLstringARB), "count")), "string"), (Array(Const(GLint), "count"), "length")]),
-    GlFunction(Void, "glUseProgram", [(GLprogram, "program")]),
-    GlFunction(Void, "glUniform1f", [(GLlocation, "location"), (GLfloat, "v0")]),
-    GlFunction(Void, "glUniform2f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
-    GlFunction(Void, "glUniform3f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
-    GlFunction(Void, "glUniform4f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
-    GlFunction(Void, "glUniform1i", [(GLlocation, "location"), (GLint, "v0")]),
-    GlFunction(Void, "glUniform2i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
-    GlFunction(Void, "glUniform3i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
-    GlFunction(Void, "glUniform4i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
-    GlFunction(Void, "glUniform1fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
-    GlFunction(Void, "glUniform2fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
-    GlFunction(Void, "glUniform1iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
-    GlFunction(Void, "glUniform2iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
-    GlFunction(Void, "glUniformMatrix4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
-    GlFunction(Void, "glValidateProgram", [(GLprogram, "program")]),
-    GlFunction(Void, "glVertexAttrib1d", [(GLuint, "index"), (GLdouble, "x")]),
-    GlFunction(Void, "glVertexAttrib1dv", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glVertexAttrib1f", [(GLuint, "index"), (GLfloat, "x")]),
-    GlFunction(Void, "glVertexAttrib1fv", [(GLuint, "index"), (Pointer(Const(GLfloat)), "v")]),
-    GlFunction(Void, "glVertexAttrib1s", [(GLuint, "index"), (GLshort, "x")]),
-    GlFunction(Void, "glVertexAttrib1sv", [(GLuint, "index"), (Pointer(Const(GLshort)), "v")]),
-    GlFunction(Void, "glVertexAttrib2d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertexAttrib2dv", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib2f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glVertexAttrib2fv", [(GLuint, "index"), (Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib2s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glVertexAttrib2sv", [(GLuint, "index"), (Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib3d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertexAttrib3dv", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib3f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glVertexAttrib3fv", [(GLuint, "index"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib3s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glVertexAttrib3sv", [(GLuint, "index"), (Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib4Nbv", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4Niv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4Nsv", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4Nub", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
-    GlFunction(Void, "glVertexAttrib4Nubv", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4Nuiv", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4Nusv", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4bv", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertexAttrib4dv", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glVertexAttrib4fv", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4iv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glVertexAttrib4sv", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4ubv", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4uiv", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4usv", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_VERSION_2_1
-    GlFunction(Void, "glUniformMatrix2x3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*3"), "value")]),
-    GlFunction(Void, "glUniformMatrix3x2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix2x4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix4x2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix3x4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix4x3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*3"), "value")]),
-
-    # GL_VERSION_3_0
-    GlFunction(Void, "glColorMaski", [(GLuint, "index"), (GLboolean, "r"), (GLboolean, "g"), (GLboolean, "b"), (GLboolean, "a")]),
-    GlFunction(Void, "glGetBooleani_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLboolean, "__glGetBooleani_v_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetIntegeri_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "__glGetIntegeri_v_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glEnablei", [(GLenum, "target"), (GLuint, "index")]),
-    GlFunction(Void, "glDisablei", [(GLenum, "target"), (GLuint, "index")]),
-    GlFunction(GLboolean, "glIsEnabledi", [(GLenum, "target"), (GLuint, "index")], sideeffects=False),
-    GlFunction(Void, "glBeginTransformFeedback", [(GLenum_mode, "primitiveMode")]),
-    GlFunction(Void, "glEndTransformFeedback", []),
-    GlFunction(Void, "glBindBufferRange", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
-    GlFunction(Void, "glBindBufferBase", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glTransformFeedbackVaryings", [(GLprogram, "program"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "varyings"), (GLenum, "bufferMode")]),
-    GlFunction(Void, "glGetTransformFeedbackVarying", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
-    GlFunction(Void, "glClampColor", [(GLenum, "target"), (GLenum, "clamp")]),
-    GlFunction(Void, "glBeginConditionalRender", [(GLuint, "id"), (GLenum, "mode")]),
-    GlFunction(Void, "glEndConditionalRender", []),
-    GlFunction(Void, "glVertexAttribIPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glGetVertexAttribIiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribIuiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glVertexAttribI1i", [(GLuint, "index"), (GLint, "x")]),
-    GlFunction(Void, "glVertexAttribI2i", [(GLuint, "index"), (GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glVertexAttribI3i", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glVertexAttribI4i", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glVertexAttribI1ui", [(GLuint, "index"), (GLuint, "x")]),
-    GlFunction(Void, "glVertexAttribI2ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y")]),
-    GlFunction(Void, "glVertexAttribI3ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z")]),
-    GlFunction(Void, "glVertexAttribI4ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
-    GlFunction(Void, "glVertexAttribI1iv", [(GLuint, "index"), (Pointer(Const(GLint)), "v")]),
-    GlFunction(Void, "glVertexAttribI2iv", [(GLuint, "index"), (Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribI3iv", [(GLuint, "index"), (Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribI4iv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI1uiv", [(GLuint, "index"), (Pointer(Const(GLuint)), "v")]),
-    GlFunction(Void, "glVertexAttribI2uiv", [(GLuint, "index"), (Array(Const(GLuint), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribI3uiv", [(GLuint, "index"), (Array(Const(GLuint), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribI4uiv", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4bv", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4sv", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4ubv", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4usv", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glGetUniformuiv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLuint, "__glGetUniformuiv_size(program, location)"), "params")], sideeffects=False),
-    GlFunction(Void, "glBindFragDataLocation", [(GLprogram, "program"), (GLuint, "color"), (Const(GLstring), "name")]),
-    GlFunction(GLlocation, "glGetFragDataLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glUniform1ui", [(GLlocation, "location"), (GLuint, "v0")]),
-    GlFunction(Void, "glUniform2ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
-    GlFunction(Void, "glUniform3ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
-    GlFunction(Void, "glUniform4ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
-    GlFunction(Void, "glUniform1uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
-    GlFunction(Void, "glUniform2uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
-    GlFunction(Void, "glTexParameterIiv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glTexParameterIiv_size(pname)"), "params")]),
-    GlFunction(Void, "glTexParameterIuiv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLuint), "__glTexParameterIuiv_size(pname)"), "params")]),
-    GlFunction(Void, "glGetTexParameterIiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexParameterIiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexParameterIuiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLuint, "__glGetTexParameterIuiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glClearBufferiv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Array(Const(GLint), "__glClearBuffer_size(buffer)"), "value")]),
-    GlFunction(Void, "glClearBufferuiv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Array(Const(GLuint), "__glClearBuffer_size(buffer)"), "value")]),
-    GlFunction(Void, "glClearBufferfv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Array(Const(GLfloat), "__glClearBuffer_size(buffer)"), "value")]),
-    GlFunction(Void, "glClearBufferfi", [(GLenum, "buffer"), (GLint, "drawbuffer"), (GLfloat, "depth"), (GLint, "stencil")]),
-    GlFunction(String("const GLubyte *"), "glGetStringi", [(GLenum, "name"), (GLuint, "index")], sideeffects=False),
-
-    # GL_VERSION_3_1
-    GlFunction(Void, "glDrawArraysInstanced", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glDrawElementsInstanced", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glTexBuffer", [(GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glPrimitiveRestartIndex", [(GLuint, "index")]),
-
-    # GL_VERSION_3_2
-    GlFunction(Void, "glGetInteger64i_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint64, "__glGetInteger64i_v_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetBufferParameteri64v", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetBufferParameteri64v_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glFramebufferTexture", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
-
-    # GL_VERSION_3_3
-    GlFunction(Void, "glVertexAttribDivisor", [(GLuint, "index"), (GLuint, "divisor")]),
-
-    # GL_VERSION_4_0
-    GlFunction(Void, "glMinSampleShading", [(GLclampf, "value")]),
-    GlFunction(Void, "glBlendEquationi", [(GLuint, "buf"), (GLenum, "mode")]),
-    GlFunction(Void, "glBlendEquationSeparatei", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
-    GlFunction(Void, "glBlendFunci", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
-    GlFunction(Void, "glBlendFuncSeparatei", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
-
-    # GL_ARB_multitexture
-    GlFunction(Void, "glActiveTextureARB", [(GLenum, "texture")]),
-    GlFunction(Void, "glClientActiveTextureARB", [(GLenum, "texture")]),
-    GlFunction(Void, "glMultiTexCoord1dARB", [(GLenum, "target"), (GLdouble, "s")]),
-    GlFunction(Void, "glMultiTexCoord1dvARB", [(GLenum, "target"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glMultiTexCoord1fARB", [(GLenum, "target"), (GLfloat, "s")]),
-    GlFunction(Void, "glMultiTexCoord1fvARB", [(GLenum, "target"), (Pointer(Const(GLfloat)), "v")]),
-    GlFunction(Void, "glMultiTexCoord1iARB", [(GLenum, "target"), (GLint, "s")]),
-    GlFunction(Void, "glMultiTexCoord1ivARB", [(GLenum, "target"), (Pointer(Const(GLint)), "v")]),
-    GlFunction(Void, "glMultiTexCoord1sARB", [(GLenum, "target"), (GLshort, "s")]),
-    GlFunction(Void, "glMultiTexCoord1svARB", [(GLenum, "target"), (Pointer(Const(GLshort)), "v")]),
-    GlFunction(Void, "glMultiTexCoord2dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t")]),
-    GlFunction(Void, "glMultiTexCoord2dvARB", [(GLenum, "target"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord2fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t")]),
-    GlFunction(Void, "glMultiTexCoord2fvARB", [(GLenum, "target"), (Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord2iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t")]),
-    GlFunction(Void, "glMultiTexCoord2ivARB", [(GLenum, "target"), (Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord2sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t")]),
-    GlFunction(Void, "glMultiTexCoord2svARB", [(GLenum, "target"), (Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
-    GlFunction(Void, "glMultiTexCoord3dvARB", [(GLenum, "target"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
-    GlFunction(Void, "glMultiTexCoord3fvARB", [(GLenum, "target"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r")]),
-    GlFunction(Void, "glMultiTexCoord3ivARB", [(GLenum, "target"), (Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
-    GlFunction(Void, "glMultiTexCoord3svARB", [(GLenum, "target"), (Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
-    GlFunction(Void, "glMultiTexCoord4dvARB", [(GLenum, "target"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
-    GlFunction(Void, "glMultiTexCoord4fvARB", [(GLenum, "target"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
-    GlFunction(Void, "glMultiTexCoord4ivARB", [(GLenum, "target"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
-    GlFunction(Void, "glMultiTexCoord4svARB", [(GLenum, "target"), (Array(Const(GLshort), "4"), "v")]),
-
-    # GL_ARB_transpose_matrix
-    GlFunction(Void, "glLoadTransposeMatrixfARB", [(Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glLoadTransposeMatrixdARB", [(Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glMultTransposeMatrixfARB", [(Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMultTransposeMatrixdARB", [(Array(Const(GLdouble), "16"), "m")]),
-
-    # GL_ARB_multisample
-    GlFunction(Void, "glSampleCoverageARB", [(GLclampf, "value"), (GLboolean, "invert")]),
-
-    # GL_ARB_texture_compression
-    GlFunction(Void, "glCompressedTexImage3DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexImage2DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexImage1DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexSubImage3DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexSubImage2DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glCompressedTexSubImage1DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
-    GlFunction(Void, "glGetCompressedTexImageARB", [(GLenum, "target"), (GLint, "level"), Out(OpaquePointer(GLvoid), "img")], sideeffects=False),
-
-    # GL_ARB_point_parameters
-    GlFunction(Void, "glPointParameterfARB", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPointParameterfvARB", [(GLenum, "pname"), (Array(Const(GLfloat), "__glPointParameterfvARB_size(pname)"), "params")]),
-
-    # GL_ARB_vertex_blend
-    GlFunction(Void, "glWeightbvARB", [(GLint, "size"), (Array(Const(GLbyte), "size"), "weights")]),
-    GlFunction(Void, "glWeightsvARB", [(GLint, "size"), (Array(Const(GLshort), "size"), "weights")]),
-    GlFunction(Void, "glWeightivARB", [(GLint, "size"), (Array(Const(GLint), "size"), "weights")]),
-    GlFunction(Void, "glWeightfvARB", [(GLint, "size"), (Array(Const(GLfloat), "size"), "weights")]),
-    GlFunction(Void, "glWeightdvARB", [(GLint, "size"), (Array(Const(GLdouble), "size"), "weights")]),
-    GlFunction(Void, "glWeightubvARB", [(GLint, "size"), (Array(Const(GLubyte), "size"), "weights")]),
-    GlFunction(Void, "glWeightusvARB", [(GLint, "size"), (Array(Const(GLushort), "size"), "weights")]),
-    GlFunction(Void, "glWeightuivARB", [(GLint, "size"), (Array(Const(GLuint), "size"), "weights")]),
-    GlFunction(Void, "glWeightPointerARB", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glVertexBlendARB", [(GLint, "count")]),
-
-    # GL_ARB_matrix_palette
-    GlFunction(Void, "glCurrentPaletteMatrixARB", [(GLint, "index")]),
-    GlFunction(Void, "glMatrixIndexubvARB", [(GLint, "size"), (Array(Const(GLubyte), "size"), "indices")]),
-    GlFunction(Void, "glMatrixIndexusvARB", [(GLint, "size"), (Array(Const(GLushort), "size"), "indices")]),
-    GlFunction(Void, "glMatrixIndexuivARB", [(GLint, "size"), (Array(Const(GLuint), "size"), "indices")]),
-    GlFunction(Void, "glMatrixIndexPointerARB", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_ARB_window_pos
-    GlFunction(Void, "glWindowPos2dARB", [(GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glWindowPos2dvARB", [(Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2fARB", [(GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glWindowPos2fvARB", [(Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2iARB", [(GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glWindowPos2ivARB", [(Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2sARB", [(GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glWindowPos2svARB", [(Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glWindowPos3dARB", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glWindowPos3dvARB", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3fARB", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glWindowPos3fvARB", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3iARB", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glWindowPos3ivARB", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3sARB", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glWindowPos3svARB", [(Array(Const(GLshort), "3"), "v")]),
-
-    # GL_ARB_vertex_program
-    GlFunction(Void, "glVertexAttrib1dARB", [(GLuint, "index"), (GLdouble, "x")]),
-    GlFunction(Void, "glVertexAttrib1dvARB", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glVertexAttrib1fARB", [(GLuint, "index"), (GLfloat, "x")]),
-    GlFunction(Void, "glVertexAttrib1fvARB", [(GLuint, "index"), (Pointer(Const(GLfloat)), "v")]),
-    GlFunction(Void, "glVertexAttrib1sARB", [(GLuint, "index"), (GLshort, "x")]),
-    GlFunction(Void, "glVertexAttrib1svARB", [(GLuint, "index"), (Pointer(Const(GLshort)), "v")]),
-    GlFunction(Void, "glVertexAttrib2dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertexAttrib2dvARB", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib2fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glVertexAttrib2fvARB", [(GLuint, "index"), (Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib2sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glVertexAttrib2svARB", [(GLuint, "index"), (Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib3dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertexAttrib3dvARB", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib3fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glVertexAttrib3fvARB", [(GLuint, "index"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib3sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glVertexAttrib3svARB", [(GLuint, "index"), (Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib4NbvARB", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4NivARB", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4NsvARB", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4NubARB", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
-    GlFunction(Void, "glVertexAttrib4NubvARB", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4NuivARB", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4NusvARB", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4bvARB", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertexAttrib4dvARB", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glVertexAttrib4fvARB", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4ivARB", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glVertexAttrib4svARB", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4ubvARB", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4uivARB", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4usvARB", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribPointerARB", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glEnableVertexAttribArrayARB", [(GLuint, "index")]),
-    GlFunction(Void, "glDisableVertexAttribArrayARB", [(GLuint, "index")]),
-    GlFunction(Void, "glProgramStringARB", [(GLenum, "target"), (GLenum, "format"), (GLsizei, "len"), (String("const void *", "len"), "string")]),
-    GlFunction(Void, "glBindProgramARB", [(GLenum, "target"), (GLprogramARB, "program")]),
-    GlFunction(Void, "glDeleteProgramsARB", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "programs")]),
-    GlFunction(Void, "glGenProgramsARB", [(GLsizei, "n"), Out(Array(GLprogramARB, "n"), "programs")]),
-    GlFunction(Void, "glProgramEnvParameter4dARB", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glProgramEnvParameter4dvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "params")]),
-    GlFunction(Void, "glProgramEnvParameter4fARB", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glProgramEnvParameter4fvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "params")]),
-    GlFunction(Void, "glProgramLocalParameter4dARB", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glProgramLocalParameter4dvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "params")]),
-    GlFunction(Void, "glProgramLocalParameter4fARB", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glProgramLocalParameter4fvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "params")]),
-    GlFunction(Void, "glGetProgramEnvParameterdvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramEnvParameterfvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramLocalParameterdvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramLocalParameterfvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramStringARB", [(GLenum, "target"), (GLenum, "pname"), Out(OpaquePointer(GLvoid), "string")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribdvARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLdouble, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribfvARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribivARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribPointervARB", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
-    GlFunction(GLboolean, "glIsProgramARB", [(GLprogramARB, "program")], sideeffects=False),
-
-    # GL_ARB_vertex_buffer_object
-    GlFunction(Void, "glBindBufferARB", [(GLenum, "target"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glDeleteBuffersARB", [(GLsizei, "n"), (Array(Const(GLbuffer), "n"), "buffers")]),
-    GlFunction(Void, "glGenBuffersARB", [(GLsizei, "n"), Out(Array(GLbuffer, "n"), "buffers")]),
-    GlFunction(GLboolean, "glIsBufferARB", [(GLbuffer, "buffer")], sideeffects=False),
-    GlFunction(Void, "glBufferDataARB", [(GLenum, "target"), (GLsizeiptrARB, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
-    GlFunction(Void, "glBufferSubDataARB", [(GLenum, "target"), (GLintptrARB, "offset"), (GLsizeiptrARB, "size"), (Blob(Const(GLvoid), "size"), "data")]),
-    GlFunction(Void, "glGetBufferSubDataARB", [(GLenum, "target"), (GLintptrARB, "offset"), (GLsizeiptrARB, "size"), Out(Blob(GLvoid, "size"), "data")], sideeffects=False),
-    GlFunction(GLmap, "glMapBufferARB", [(GLenum, "target"), (GLenum, "access")]),
-    GlFunction(GLboolean, "glUnmapBufferARB", [(GLenum, "target")]),
-    GlFunction(Void, "glGetBufferParameterivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetBufferPointervARB", [(GLenum, "target"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
-
-    # GL_ARB_occlusion_query
-    GlFunction(Void, "glGenQueriesARB", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
-    GlFunction(Void, "glDeleteQueriesARB", [(GLsizei, "n"), (Array(Const(GLquery), "n"), "ids")]),
-    GlFunction(GLboolean, "glIsQueryARB", [(GLquery, "id")], sideeffects=False),
-    GlFunction(Void, "glBeginQueryARB", [(GLenum, "target"), (GLquery, "id")]),
-    GlFunction(Void, "glEndQueryARB", [(GLenum, "target")]),
-    GlFunction(Void, "glGetQueryivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryivARB_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetQueryObjectivARB", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryObjectivARB_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetQueryObjectuivARB", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLuint, "__glGetQueryObjectuivARB_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_shader_objects
-    GlFunction(Void, "glDeleteObjectARB", [(GLhandleARB, "obj")]),
-    GlFunction(GLhandleARB, "glGetHandleARB", [(GLenum, "pname")], sideeffects=False),
-    GlFunction(Void, "glDetachObjectARB", [(GLhandleARB, "containerObj"), (GLhandleARB, "attachedObj")]),
-    GlFunction(GLhandleARB, "glCreateShaderObjectARB", [(GLenum, "shaderType")]),
-    GlFunction(Void, "glShaderSourceARB", [(GLhandleARB, "shaderObj"), (GLsizei, "count"), (Const(Array(Const(GLstringARB), "count")), "string"), (Array(Const(GLint), "count"), "length")]),
-    GlFunction(Void, "glCompileShaderARB", [(GLhandleARB, "shaderObj")]),
-    GlFunction(GLhandleARB, "glCreateProgramObjectARB", []),
-    GlFunction(Void, "glAttachObjectARB", [(GLhandleARB, "containerObj"), (GLhandleARB, "obj")]),
-    GlFunction(Void, "glLinkProgramARB", [(GLhandleARB, "programObj")]),
-    GlFunction(Void, "glUseProgramObjectARB", [(GLhandleARB, "programObj")]),
-    GlFunction(Void, "glValidateProgramARB", [(GLhandleARB, "programObj")]),
-    GlFunction(Void, "glUniform1fARB", [(GLlocationARB, "location"), (GLfloat, "v0")]),
-    GlFunction(Void, "glUniform2fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
-    GlFunction(Void, "glUniform3fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
-    GlFunction(Void, "glUniform4fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
-    GlFunction(Void, "glUniform1iARB", [(GLlocationARB, "location"), (GLint, "v0")]),
-    GlFunction(Void, "glUniform2iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1")]),
-    GlFunction(Void, "glUniform3iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
-    GlFunction(Void, "glUniform4iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
-    GlFunction(Void, "glUniform1fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
-    GlFunction(Void, "glUniform2fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
-    GlFunction(Void, "glUniform1ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
-    GlFunction(Void, "glUniform2ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix2fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix3fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
-    GlFunction(Void, "glUniformMatrix4fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
-    GlFunction(Void, "glGetObjectParameterfvARB", [(GLhandleARB, "obj"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetObjectParameterivARB", [(GLhandleARB, "obj"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetInfoLogARB", [(GLhandleARB, "obj"), (GLsizei, "maxLength"), Out(Pointer(GLsizei), "length"), Out(GLstringARB, "infoLog")], sideeffects=False),
-    GlFunction(Void, "glGetAttachedObjectsARB", [(GLhandleARB, "containerObj"), (GLsizei, "maxCount"), Out(Pointer(GLsizei), "count"), Out(Array(GLhandleARB, "(count ? *count : maxCount)"), "obj")], sideeffects=False),
-    GlFunction(GLlocationARB, "glGetUniformLocationARB", [(GLhandleARB, "programObj"), (Const(GLstringARB), "name")]),
-    GlFunction(Void, "glGetActiveUniformARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstringARB, "name")], sideeffects=False),
-    GlFunction(Void, "glGetUniformfvARB", [(GLhandleARB, "programObj"), (GLlocationARB, "location"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetUniformivARB", [(GLhandleARB, "programObj"), (GLlocationARB, "location"), (OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetShaderSourceARB", [(GLhandleARB, "obj"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstringARB, "source")], sideeffects=False),
-
-    # GL_ARB_vertex_shader
-    GlFunction(Void, "glBindAttribLocationARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (Const(GLstringARB), "name")]),
-    GlFunction(Void, "glGetActiveAttribARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (GLsizei, "maxLength"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstringARB, "name")], sideeffects=False),
-    GlFunction(GLint, "glGetAttribLocationARB", [(GLhandleARB, "programObj"), (Const(GLstringARB), "name")]),
-
-    # GL_ARB_draw_buffers
-    GlFunction(Void, "glDrawBuffersARB", [(GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
-
-    # GL_ARB_color_buffer_float
-    GlFunction(Void, "glClampColorARB", [(GLenum, "target"), (GLenum, "clamp")]),
-
-    # GL_ARB_draw_instanced
-    GlFunction(Void, "glDrawArraysInstancedARB", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glDrawElementsInstancedARB", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount")]),
-
-    # GL_ARB_framebuffer_object
-    GlFunction(GLboolean, "glIsRenderbuffer", [(GLrenderbuffer, "renderbuffer")], sideeffects=False),
-    GlFunction(Void, "glBindRenderbuffer", [(GLenum, "target"), (GLrenderbuffer, "renderbuffer")]),
-    GlFunction(Void, "glDeleteRenderbuffers", [(GLsizei, "n"), (Array(Const(GLrenderbuffer), "n"), "renderbuffers")]),
-    GlFunction(Void, "glGenRenderbuffers", [(GLsizei, "n"), Out(Array(GLrenderbuffer, "n"), "renderbuffers")]),
-    GlFunction(Void, "glRenderbufferStorage", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetRenderbufferParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(GLboolean, "glIsFramebuffer", [(GLframebuffer, "framebuffer")], sideeffects=False),
-    GlFunction(Void, "glBindFramebuffer", [(GLenum, "target"), (GLframebuffer, "framebuffer")]),
-    GlFunction(Void, "glDeleteFramebuffers", [(GLsizei, "n"), (Array(Const(GLframebuffer), "n"), "framebuffers")]),
-    GlFunction(Void, "glGenFramebuffers", [(GLsizei, "n"), Out(Array(GLframebuffer, "n"), "framebuffers")]),
-    GlFunction(GLenum, "glCheckFramebufferStatus", [(GLenum, "target")]),
-    GlFunction(Void, "glFramebufferTexture1D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glFramebufferTexture2D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glFramebufferTexture3D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
-    GlFunction(Void, "glFramebufferRenderbuffer", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
-    GlFunction(Void, "glGetFramebufferAttachmentParameteriv", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "pname"), Out(Array(GLint, "__glGetFramebufferAttachmentParameteriv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGenerateMipmap", [(GLenum, "target")]),
-    GlFunction(Void, "glBlitFramebuffer", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
-    GlFunction(Void, "glRenderbufferStorageMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glFramebufferTextureLayer", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
-
-    # GL_ARB_geometry_shader4
-    GlFunction(Void, "glProgramParameteriARB", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
-    GlFunction(Void, "glFramebufferTextureARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glFramebufferTextureLayerARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
-    GlFunction(Void, "glFramebufferTextureFaceARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
-
-    # GL_ARB_instanced_arrays
-    GlFunction(Void, "glVertexAttribDivisorARB", [(GLuint, "index"), (GLuint, "divisor")]),
-
-    # GL_ARB_map_buffer_range
-    GlFunction(GLmap, "glMapBufferRange", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "length"), (GLbitfield_access, "access")]),
-    GlFunction(Void, "glFlushMappedBufferRange", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "length")]),
-
-    # GL_ARB_texture_buffer_object
-    GlFunction(Void, "glTexBufferARB", [(GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
-
-    # GL_ARB_vertex_array_object
-    GlFunction(Void, "glBindVertexArray", [(GLarray, "array")]),
-    GlFunction(Void, "glDeleteVertexArrays", [(GLsizei, "n"), (Array(Const(GLarray), "n"), "arrays")]),
-    GlFunction(Void, "glGenVertexArrays", [(GLsizei, "n"), Out(Array(GLarray, "n"), "arrays")]),
-    GlFunction(GLboolean, "glIsVertexArray", [(GLarray, "array")], sideeffects=False),
-
-    # GL_ARB_uniform_buffer_object
-    GlFunction(Void, "glGetUniformIndices", [(GLprogram, "program"), (GLsizei, "uniformCount"), (Array(Const(GLstring), "uniformCount"), "uniformNames"), Out(Array(GLuint, "uniformCount"), "uniformIndices")], sideeffects=False),
-    GlFunction(Void, "glGetActiveUniformsiv", [(GLprogram, "program"), (GLsizei, "uniformCount"), (Array(Const(GLuint), "uniformCount"), "uniformIndices"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveUniformsiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetActiveUniformName", [(GLprogram, "program"), (GLuint, "uniformIndex"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "uniformName")], sideeffects=False),
-    GlFunction(GLuint, "glGetUniformBlockIndex", [(GLprogram, "program"), (Const(GLstring), "uniformBlockName")]),
-    GlFunction(Void, "glGetActiveUniformBlockiv", [(GLprogram, "program"), (GLuint, "uniformBlockIndex"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveUniformBlockiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetActiveUniformBlockName", [(GLprogram, "program"), (GLuint, "uniformBlockIndex"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "uniformBlockName")], sideeffects=False),
-    GlFunction(Void, "glUniformBlockBinding", [(GLprogram, "program"), (GLuint, "uniformBlockIndex"), (GLuint, "uniformBlockBinding")]),
-
-    # GL_ARB_copy_buffer
-    GlFunction(Void, "glCopyBufferSubData", [(GLenum, "readTarget"), (GLenum, "writeTarget"), (GLintptr, "readOffset"), (GLintptr, "writeOffset"), (GLsizeiptr, "size")]),
-
-    # GL_ARB_draw_elements_base_vertex
-    GlFunction(Void, "glDrawElementsBaseVertex", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLint, "basevertex")]),
-    GlFunction(Void, "glDrawRangeElementsBaseVertex", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLint, "basevertex")]),
-    GlFunction(Void, "glDrawElementsInstancedBaseVertex", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount"), (GLint, "basevertex")]),
-    GlFunction(Void, "glMultiDrawElementsBaseVertex", [(GLenum_mode, "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount"), (Array(Const(GLint), "primcount"), "basevertex")]),
-
-    # GL_ARB_provoking_vertex
-    GlFunction(Void, "glProvokingVertex", [(GLenum, "mode")]),
-
-    # GL_ARB_sync
-    GlFunction(GLsync, "glFenceSync", [(GLenum, "condition"), (GLbitfield, "flags")]),
-    GlFunction(GLboolean, "glIsSync", [(GLsync, "sync")], sideeffects=False),
-    GlFunction(Void, "glDeleteSync", [(GLsync, "sync")]),
-    GlFunction(GLenum, "glClientWaitSync", [(GLsync, "sync"), (GLbitfield_sync_flush, "flags"), (GLuint64, "timeout")]),
-    GlFunction(Void, "glWaitSync", [(GLsync, "sync"), (GLbitfield, "flags"), (GLuint64, "timeout")]),
-    GlFunction(Void, "glGetInteger64v", [(GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetInteger64v_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetSynciv", [(GLsync, "sync"), (GLenum, "pname"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLint, "(length ? *length : bufSize)"), "values")], sideeffects=False),
-
-    # GL_ARB_texture_multisample
-    GlFunction(Void, "glTexImage2DMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLint, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedsamplelocations")]),
-    GlFunction(Void, "glTexImage3DMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLint, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedsamplelocations")]),
-    GlFunction(Void, "glGetMultisamplefv", [(GLenum, "pname"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetMultisamplefv_size(pname)"), "val")], sideeffects=False),
-    GlFunction(Void, "glSampleMaski", [(GLuint, "index"), (GLbitfield, "mask")]),
-
-    # GL_ARB_draw_buffers_blend
-    GlFunction(Void, "glBlendEquationiARB", [(GLuint, "buf"), (GLenum, "mode")]),
-    GlFunction(Void, "glBlendEquationSeparateiARB", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
-    GlFunction(Void, "glBlendFunciARB", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
-    GlFunction(Void, "glBlendFuncSeparateiARB", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
-
-    # GL_ARB_sample_shading
-    GlFunction(Void, "glMinSampleShadingARB", [(GLclampf, "value")]),
-
-    # GL_ARB_shading_language_include
-    GlFunction(Void, "glNamedStringARB", [(GLenum, "type"), (GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLint, "stringlen"), (Const(String('GLchar *', "stringlen")), "string")]),
-    GlFunction(Void, "glDeleteNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name")]),
-    GlFunction(Void, "glCompileShaderIncludeARB", [(GLshader, "shader"), (GLsizei, "count"), (Array(String("const GLchar *"), "count"), "path"), (Array(Const(GLint), "count"), "length")]),
-    GlFunction(GLboolean, "glIsNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name")], sideeffects=False),
-    GlFunction(Void, "glGetNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLsizei, "bufSize"), Out(Pointer(GLint), "stringlen"), Out(Array(GLchar, "bufSize"), "string")], sideeffects=False),
-    GlFunction(Void, "glGetNamedStringivARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetNamedStringivARB_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_blend_func_extended
-    GlFunction(Void, "glBindFragDataLocationIndexed", [(GLprogram, "program"), (GLuint, "colorNumber"), (GLuint, "index"), (Const(GLstring), "name")]),
-    GlFunction(GLint, "glGetFragDataIndex", [(GLprogram, "program"), (Const(GLstring), "name")], sideeffects=False),
-
-    # GL_ARB_sampler_objects
-    GlFunction(Void, "glGenSamplers", [(GLsizei, "count"), Out(Array(GLsampler, "count"), "samplers")]),
-    GlFunction(Void, "glDeleteSamplers", [(GLsizei, "count"), (Array(Const(GLsampler), "count"), "samplers")]),
-    GlFunction(GLboolean, "glIsSampler", [(GLsampler, "sampler")], sideeffects=False),
-    GlFunction(Void, "glBindSampler", [(GLuint, "unit"), (GLsampler, "sampler")]),
-    GlFunction(Void, "glSamplerParameteri", [(GLsampler, "sampler"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glSamplerParameteriv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "param")]),
-    GlFunction(Void, "glSamplerParameterf", [(GLsampler, "sampler"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glSamplerParameterfv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "param")]),
-    GlFunction(Void, "glSamplerParameterIiv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "param")]),
-    GlFunction(Void, "glSamplerParameterIuiv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLuint), "__gl_param_size(pname)"), "param")]),
-    GlFunction(Void, "glGetSamplerParameteriv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetSamplerParameterIiv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetSamplerParameterfv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetSamplerParameterIuiv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_timer_query
-    GlFunction(Void, "glQueryCounter", [(GLuint, "id"), (GLenum, "target")]),
-    GlFunction(Void, "glGetQueryObjecti64v", [(GLuint, "id"), (GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetQueryObjectivARB_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetQueryObjectui64v", [(GLuint, "id"), (GLenum, "pname"), Out(OpaqueArray(GLuint64, "__glGetQueryObjectuivARB_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_vertex_type_2_10_10_10_rev
-    GlFunction(Void, "glVertexP2ui", [(GLenum, "type"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexP2uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "value")]),
-    GlFunction(Void, "glVertexP3ui", [(GLenum, "type"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "value")]),
-    GlFunction(Void, "glVertexP4ui", [(GLenum, "type"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexP4uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "value")]),
-    GlFunction(Void, "glTexCoordP1ui", [(GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glTexCoordP1uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glTexCoordP2ui", [(GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glTexCoordP2uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glTexCoordP3ui", [(GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glTexCoordP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glTexCoordP4ui", [(GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glTexCoordP4uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glMultiTexCoordP1ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glMultiTexCoordP1uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glMultiTexCoordP2ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glMultiTexCoordP2uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glMultiTexCoordP3ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glMultiTexCoordP3uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glMultiTexCoordP4ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glMultiTexCoordP4uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glNormalP3ui", [(GLenum, "type"), (GLuint, "coords")]),
-    GlFunction(Void, "glNormalP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
-    GlFunction(Void, "glColorP3ui", [(GLenum, "type"), (GLuint, "color")]),
-    GlFunction(Void, "glColorP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "color")]),
-    GlFunction(Void, "glColorP4ui", [(GLenum, "type"), (GLuint, "color")]),
-    GlFunction(Void, "glColorP4uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "color")]),
-    GlFunction(Void, "glSecondaryColorP3ui", [(GLenum, "type"), (GLuint, "color")]),
-    GlFunction(Void, "glSecondaryColorP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "color")]),
-    GlFunction(Void, "glVertexAttribP1ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexAttribP1uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
-    GlFunction(Void, "glVertexAttribP2ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexAttribP2uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
-    GlFunction(Void, "glVertexAttribP3ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexAttribP3uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
-    GlFunction(Void, "glVertexAttribP4ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
-    GlFunction(Void, "glVertexAttribP4uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
-
-    # GL_ARB_draw_indirect
-    GlFunction(Void, "glDrawArraysIndirect", [(GLenum_mode, "mode"), (OpaquePointer(Const(GLvoid)), "indirect")]),
-    GlFunction(Void, "glDrawElementsIndirect", [(GLenum_mode, "mode"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indirect")]),
-
-    # GL_ARB_gpu_shader_fp64
-    GlFunction(Void, "glUniform1d", [(GLlocation, "location"), (GLdouble, "x")]),
-    GlFunction(Void, "glUniform2d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glUniform3d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glUniform4d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glUniform1dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "value")]),
-    GlFunction(Void, "glUniform2dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*3"), "value")]),
-    GlFunction(Void, "glUniformMatrix4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix2x3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*3"), "value")]),
-    GlFunction(Void, "glUniformMatrix2x4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix3x2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix3x4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*4"), "value")]),
-    GlFunction(Void, "glUniformMatrix4x2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*2"), "value")]),
-    GlFunction(Void, "glUniformMatrix4x3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*3"), "value")]),
-    GlFunction(Void, "glGetUniformdv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLdouble, "__glGetUniformdv_size(location)"), "params")], sideeffects=False),
-
-    # GL_ARB_shader_subroutine
-    GlFunction(GLlocation, "glGetSubroutineUniformLocation", [(GLprogram, "program"), (GLenum, "shadertype"), (Const(GLstring), "name")]),
-    GlFunction(GLuint, "glGetSubroutineIndex", [(GLprogram, "program"), (GLenum, "shadertype"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glGetActiveSubroutineUniformiv", [(GLprogram, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveSubroutineUniformiv_size(pname)"), "values")], sideeffects=False),
-    GlFunction(Void, "glGetActiveSubroutineUniformName", [(GLprogram, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLsizei, "bufsize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufsize"), "name")], sideeffects=False),
-    GlFunction(Void, "glGetActiveSubroutineName", [(GLprogram, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLsizei, "bufsize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufsize"), "name")], sideeffects=False),
-    GlFunction(Void, "glUniformSubroutinesuiv", [(GLenum, "shadertype"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "indices")]),
-    GlFunction(Void, "glGetUniformSubroutineuiv", [(GLenum, "shadertype"), (GLlocation, "location"), Out(Pointer(GLuint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramStageiv", [(GLprogram, "program"), (GLenum, "shadertype"), (GLenum, "pname"), Out(Pointer(GLint), "values")], sideeffects=False),
-
-    # GL_ARB_tessellation_shader
-    GlFunction(Void, "glPatchParameteri", [(GLenum, "pname"), (GLint, "value")]),
-    GlFunction(Void, "glPatchParameterfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "values")]),
-
-    # GL_ARB_transform_feedback2
-    GlFunction(Void, "glBindTransformFeedback", [(GLenum, "target"), (GLfeedback, "id")]),
-    GlFunction(Void, "glDeleteTransformFeedbacks", [(GLsizei, "n"), (Array(Const(GLfeedback), "n"), "ids")]),
-    GlFunction(Void, "glGenTransformFeedbacks", [(GLsizei, "n"), Out(Array(GLfeedback, "n"), "ids")]),
-    GlFunction(GLboolean, "glIsTransformFeedback", [(GLfeedback, "id")], sideeffects=False),
-    GlFunction(Void, "glPauseTransformFeedback", []),
-    GlFunction(Void, "glResumeTransformFeedback", []),
-    GlFunction(Void, "glDrawTransformFeedback", [(GLenum_mode, "mode"), (GLfeedback, "id")]),
-
-    # GL_ARB_transform_feedback3
-    GlFunction(Void, "glDrawTransformFeedbackStream", [(GLenum_mode, "mode"), (GLfeedback, "id"), (GLuint, "stream")]),
-    GlFunction(Void, "glBeginQueryIndexed", [(GLenum, "target"), (GLuint, "index"), (GLfeedback, "id")]),
-    GlFunction(Void, "glEndQueryIndexed", [(GLenum, "target"), (GLuint, "index")]),
-    GlFunction(Void, "glGetQueryIndexediv", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetQueryIndexediv_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_ES2_compatibility
-    GlFunction(Void, "glReleaseShaderCompiler", []),
-    GlFunction(Void, "glShaderBinary", [(GLsizei, "count"), (Array(Const(GLuint), "count"), "shaders"), (GLenum, "binaryformat"), (Blob(Const(GLvoid), "length"), "binary"), (GLsizei, "length")]),
-    GlFunction(Void, "glGetShaderPrecisionFormat", [(GLenum, "shadertype"), (GLenum, "precisiontype"), Out(Array(GLint, "2"), "range"), Out(Array(GLint, "2"), "precision")], sideeffects=False),
-    GlFunction(Void, "glDepthRangef", [(GLclampf, "n"), (GLclampf, "f")]),
-    GlFunction(Void, "glClearDepthf", [(GLclampf, "d")]),
-
-    # GL_ARB_get_program_binary
-    GlFunction(Void, "glGetProgramBinary", [(GLprogram, "program"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLenum), "binaryFormat"), Out(OpaqueArray(GLvoid, "__glGetProgramBinary_size(length)"), "binary")], sideeffects=False),
-    GlFunction(Void, "glProgramBinary", [(GLprogram, "program"), (GLenum, "binaryFormat"), (Blob(Const(GLvoid), "length"), "binary"), (GLsizei, "length")]),
-    GlFunction(Void, "glProgramParameteri", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
-
-    # GL_ARB_separate_shader_objects
-    GlFunction(Void, "glUseProgramStages", [(GLpipeline, "pipeline"), (GLbitfield_shader, "stages"), (GLprogram, "program")]),
-    GlFunction(Void, "glActiveShaderProgram", [(GLpipeline, "pipeline"), (GLprogram, "program")]),
-    GlFunction(GLprogram, "glCreateShaderProgramv", [(GLenum, "type"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "strings")]),
-    GlFunction(Void, "glBindProgramPipeline", [(GLpipeline, "pipeline")]),
-    GlFunction(Void, "glDeleteProgramPipelines", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "pipelines")]),
-    GlFunction(Void, "glGenProgramPipelines", [(GLsizei, "n"), Out(Array(GLpipeline, "n"), "pipelines")]),
-    GlFunction(GLboolean, "glIsProgramPipeline", [(GLpipeline, "pipeline")], sideeffects=False),
-    GlFunction(Void, "glGetProgramPipelineiv", [(GLpipeline, "pipeline"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetProgramPipelineiv_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glProgramUniform1i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0")]),
-    GlFunction(Void, "glProgramUniform1iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform1f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0")]),
-    GlFunction(Void, "glProgramUniform1fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform1d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0")]),
-    GlFunction(Void, "glProgramUniform1dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform1ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0")]),
-    GlFunction(Void, "glProgramUniform1uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
-    GlFunction(Void, "glProgramUniform2iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform2f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
-    GlFunction(Void, "glProgramUniform2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform2d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0"), (GLdouble, "v1")]),
-    GlFunction(Void, "glProgramUniform2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform2ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
-    GlFunction(Void, "glProgramUniform2uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
-    GlFunction(Void, "glProgramUniform3iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform3f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
-    GlFunction(Void, "glProgramUniform3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform3d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0"), (GLdouble, "v1"), (GLdouble, "v2")]),
-    GlFunction(Void, "glProgramUniform3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform3ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
-    GlFunction(Void, "glProgramUniform3uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
-    GlFunction(Void, "glProgramUniform4iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniform4f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
-    GlFunction(Void, "glProgramUniform4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniform4d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0"), (GLdouble, "v1"), (GLdouble, "v2"), (GLdouble, "v3")]),
-    GlFunction(Void, "glProgramUniform4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniform4ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
-    GlFunction(Void, "glProgramUniform4uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*3"), "value")]),
-    GlFunction(Void, "glValidateProgramPipeline", [(GLpipeline, "pipeline")]),
-    GlFunction(Void, "glGetProgramPipelineInfoLog", [(GLpipeline, "pipeline"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
-
-    # GL_ARB_vertex_attrib_64bit
-    GlFunction(Void, "glVertexAttribL1d", [(GLuint, "index"), (GLdouble, "x")]),
-    GlFunction(Void, "glVertexAttribL2d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertexAttribL3d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertexAttribL4d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertexAttribL1dv", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glVertexAttribL2dv", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribL3dv", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribL4dv", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribLPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glGetVertexAttribLdv", [(GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVertexAttribLdv_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_viewport_array
-    GlFunction(Void, "glViewportArrayv", [(GLuint, "first"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "v")]),
-    GlFunction(Void, "glViewportIndexedf", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "w"), (GLfloat, "h")]),
-    GlFunction(Void, "glViewportIndexedfv", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glScissorArrayv", [(GLuint, "first"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "v")]),
-    GlFunction(Void, "glScissorIndexed", [(GLuint, "index"), (GLint, "left"), (GLint, "bottom"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glScissorIndexedv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glDepthRangeArrayv", [(GLuint, "first"), (GLsizei, "count"), (Array(Const(GLclampd), "count*2"), "v")]),
-    GlFunction(Void, "glDepthRangeIndexed", [(GLuint, "index"), (GLclampd, "n"), (GLclampd, "f")]),
-    GlFunction(Void, "glGetFloati_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "__gl_param_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetDoublei_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "__gl_param_size(target)"), "data")], sideeffects=False),
-
-    # GL_ARB_debug_output
-    GlFunction(Void, "glDebugMessageControlARB", [(GLenum, "source"), (GLenum, "type"), (GLenum, "severity"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "ids"), (GLboolean, "enabled")], sideeffects=False),
-    GlFunction(Void, "glDebugMessageInsertARB", [(GLenum, "source"), (GLenum, "type"), (GLuint, "id"), (GLenum, "severity"), (GLsizei, "length"), (Const(String("GLchar *", "length")), "buf")], sideeffects=False),
-    GlFunction(Void, "glDebugMessageCallbackARB", [(GLDEBUGPROCARB, "callback"), (Opaque("const GLvoid *"), "userParam")], sideeffects=False),
-    GlFunction(GLuint, "glGetDebugMessageLogARB", [(GLuint, "count"), (GLsizei, "bufsize"), Out(Array(GLenum, "count"), "sources"), Out(Array(GLenum, "count"), "types"), Out(Array(GLuint, "count"), "ids"), Out(Array(GLenum, "count"), "severities"), Out(Array(GLsizei, "count"), "lengths"), Out(GLstring, "messageLog")], sideeffects=False),
-
-    # GL_ARB_robustness
-    GlFunction(GLenum, "glGetGraphicsResetStatusARB", [], sideeffects=False),
-    GlFunction(Void, "glGetnMapdvARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLdouble, "bufSize"), "v")], sideeffects=False),
-    GlFunction(Void, "glGetnMapfvARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "v")], sideeffects=False),
-    GlFunction(Void, "glGetnMapivARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "v")], sideeffects=False),
-    GlFunction(Void, "glGetnPixelMapfvARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "values")]),
-    GlFunction(Void, "glGetnPixelMapuivARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLuint, "bufSize"), "values")]),
-    GlFunction(Void, "glGetnPixelMapusvARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLushort, "bufSize"), "values")]),
-    GlFunction(Void, "glGetnPolygonStippleARB", [(GLsizei, "bufSize"), Out(Blob(GLubyte, "bufSize"), "pattern")]),
-    GlFunction(Void, "glGetnColorTableARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "table")], sideeffects=False),
-    GlFunction(Void, "glGetnConvolutionFilterARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "image")]),
-    GlFunction(Void, "glGetnSeparableFilterARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "rowBufSize"), Out(Blob(GLvoid, "rowBufSize"), "row"), (GLsizei, "columnBufSize"), Out(Blob(GLvoid, "columnBufSize"), "column"), Out(OpaquePointer(GLvoid), "span")]),
-    GlFunction(Void, "glGetnHistogramARB", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "values")]),
-    GlFunction(Void, "glGetnMinmaxARB", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "values")]),
-    GlFunction(Void, "glGetnTexImageARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "img")]),
-    GlFunction(Void, "glReadnPixelsARB", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "data")]),
-    GlFunction(Void, "glGetnCompressedTexImageARB", [(GLenum, "target"), (GLint, "lod"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "img")], sideeffects=False),
-    GlFunction(Void, "glGetnUniformfvARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetnUniformivARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetnUniformuivARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLuint, "bufSize"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetnUniformdvARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLdouble, "bufSize"), "params")], sideeffects=False),
-
-    # GL_ARB_base_instance
-    GlFunction(Void, "glDrawArraysInstancedBaseInstance", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount"), (GLuint, "baseinstance")]),
-    GlFunction(Void, "glDrawElementsInstancedBaseInstance", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount"), (GLuint, "baseinstance")]),
-    GlFunction(Void, "glDrawElementsInstancedBaseVertexBaseInstance", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount"), (GLint, "basevertex"), (GLuint, "baseinstance")]),
-
-    # GL_ARB_transform_feedback_instanced
-    GlFunction(Void, "glDrawTransformFeedbackInstanced", [(GLenum_mode, "mode"), (GLfeedback, "id"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glDrawTransformFeedbackStreamInstanced", [(GLenum_mode, "mode"), (GLfeedback, "id"), (GLuint, "stream"), (GLsizei, "primcount")]),
-
-    # GL_ARB_internalformat_query
-    GlFunction(Void, "glGetInternalformativ", [(GLenum, "target"), (GLenum, "internalformat"), (GLenum, "pname"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "params")], sideeffects=False),
-
-    # GL_ARB_shader_atomic_counters
-    GlFunction(Void, "glGetActiveAtomicCounterBufferiv", [(GLprogram, "program"), (GLuint, "bufferIndex"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveAtomicCounterBufferiv_size(pname)"), "params")], sideeffects=False),
-
-    # GL_ARB_shader_image_load_store
-    GlFunction(Void, "glBindImageTexture", [(GLuint, "unit"), (GLtexture, "texture"), (GLint, "level"), (GLboolean, "layered"), (GLint, "layer"), (GLenum, "access"), (GLenum, "format")]),
-    GlFunction(Void, "glMemoryBarrier", [(GLbitfield_barrier, "barriers")]),
-
-    # GL_ARB_texture_storage
-    GlFunction(Void, "glTexStorage1D", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width")]),
-    GlFunction(Void, "glTexStorage2D", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glTexStorage3D", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
-    GlFunction(Void, "glTextureStorage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width")]),
-    GlFunction(Void, "glTextureStorage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glTextureStorage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
-
-    # GL_EXT_blend_color
-    GlFunction(Void, "glBlendColorEXT", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
-
-    # GL_EXT_polygon_offset
-    GlFunction(Void, "glPolygonOffsetEXT", [(GLfloat, "factor"), (GLfloat, "bias")]),
-
-    # GL_EXT_texture3D
-    GlFunction(Void, "glTexImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage3D_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glTexSubImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage3D_size(format, type, width, height, depth)"), "pixels")]),
-
-    # GL_SGIS_texture_filter4
-    GlFunction(Void, "glGetTexFilterFuncSGIS", [(GLenum, "target"), (GLenum, "filter"), Out(OpaqueArray(GLfloat, "__glGetTexFilterFuncSGIS_size(target, filter)"), "weights")], sideeffects=False),
-    GlFunction(Void, "glTexFilterFuncSGIS", [(GLenum, "target"), (GLenum, "filter"), (GLsizei, "n"), (Array(Const(GLfloat), "n"), "weights")]),
-
-    # GL_EXT_subtexture
-    GlFunction(Void, "glTexSubImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage1D_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glTexSubImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage2D_size(format, type, width, height)"), "pixels")]),
-
-    # GL_EXT_copy_texture
-    GlFunction(Void, "glCopyTexImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
-    GlFunction(Void, "glCopyTexImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
-    GlFunction(Void, "glCopyTexSubImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glCopyTexSubImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glCopyTexSubImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-
-    # GL_EXT_histogram
-    GlFunction(Void, "glGetHistogramEXT", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetHistogramEXT_size(target, format, type)"), "values")], sideeffects=False),
-    GlFunction(Void, "glGetHistogramParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetHistogramParameterfvEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetHistogramParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetHistogramParameterivEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMinmaxEXT", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMinmaxEXT_size(target, format, type)"), "values")], sideeffects=False),
-    GlFunction(Void, "glGetMinmaxParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMinmaxParameterfvEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMinmaxParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMinmaxParameterivEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glHistogramEXT", [(GLenum, "target"), (GLsizei, "width"), (GLenum, "internalformat"), (GLboolean, "sink")]),
-    GlFunction(Void, "glMinmaxEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLboolean, "sink")]),
-    GlFunction(Void, "glResetHistogramEXT", [(GLenum, "target")]),
-    GlFunction(Void, "glResetMinmaxEXT", [(GLenum, "target")]),
-
-    # GL_EXT_convolution
-    GlFunction(Void, "glConvolutionFilter1DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glConvolutionFilter1DEXT_size(format, type, width)"), "image")]),
-    GlFunction(Void, "glConvolutionFilter2DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glConvolutionFilter2DEXT_size(format, type, width, height)"), "image")]),
-    GlFunction(Void, "glConvolutionParameterfEXT", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "params")]),
-    GlFunction(Void, "glConvolutionParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glConvolutionParameterfvEXT_size(pname)"), "params")]),
-    GlFunction(Void, "glConvolutionParameteriEXT", [(GLenum, "target"), (GLenum, "pname"), (GLint, "params")]),
-    GlFunction(Void, "glConvolutionParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glConvolutionParameterivEXT_size(pname)"), "params")]),
-    GlFunction(Void, "glCopyConvolutionFilter1DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glCopyConvolutionFilter2DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetConvolutionFilterEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetConvolutionFilterEXT_size(target, format, type)"), "image")], sideeffects=False),
-    GlFunction(Void, "glGetConvolutionParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetConvolutionParameterfvEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetConvolutionParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetConvolutionParameterivEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetSeparableFilterEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilterEXT_size(target, format, type)"), "row"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilterEXT_size(target, format, type)"), "column"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilterEXT_size(target, format, type)"), "span")], sideeffects=False),
-    GlFunction(Void, "glSeparableFilter2DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glSeparableFilter2DEXT_size(target, format, type, width)"), "row"), (OpaqueBlob(Const(GLvoid), "__glSeparableFilter2DEXT_size(target, format, type, height)"), "column")]),
-
-    # GL_SGI_color_table
-    GlFunction(Void, "glColorTableSGI", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glColorTableSGI_size(format, type, width)"), "table")]),
-    GlFunction(Void, "glColorTableParameterfvSGI", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glColorTableParameterfvSGI_size(pname)"), "params")]),
-    GlFunction(Void, "glColorTableParameterivSGI", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glColorTableParameterivSGI_size(pname)"), "params")]),
-    GlFunction(Void, "glCopyColorTableSGI", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glGetColorTableSGI", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTableSGI_size(target, format, type)"), "table")], sideeffects=False),
-    GlFunction(Void, "glGetColorTableParameterfvSGI", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetColorTableParameterfvSGI_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetColorTableParameterivSGI", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetColorTableParameterivSGI_size(pname)"), "params")], sideeffects=False),
-
-    # GL_SGIX_pixel_texture
-    GlFunction(Void, "glPixelTexGenSGIX", [(GLenum, "mode")]),
-
-    # GL_SGIS_pixel_texture
-    GlFunction(Void, "glPixelTexGenParameteriSGIS", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glPixelTexGenParameterivSGIS", [(GLenum, "pname"), (OpaqueArray(Const(GLint), "__glPixelTexGenParameterivSGIS_size(pname)"), "params")]),
-    GlFunction(Void, "glPixelTexGenParameterfSGIS", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPixelTexGenParameterfvSGIS", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glPixelTexGenParameterfvSGIS_size(pname)"), "params")]),
-    GlFunction(Void, "glGetPixelTexGenParameterivSGIS", [(GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetPixelTexGenParameterivSGIS_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetPixelTexGenParameterfvSGIS", [(GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetPixelTexGenParameterfvSGIS_size(pname)"), "params")], sideeffects=False),
-
-    # GL_SGIS_texture4D
-    GlFunction(Void, "glTexImage4DSGIS", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLsizei, "size4d"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glTexImage4DSGIS_size(format, type, width, height, depth, size4d)"), "pixels")]),
-    GlFunction(Void, "glTexSubImage4DSGIS", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "woffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLsizei, "size4d"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glTexSubImage4DSGIS_size(format, type, width, height, depth, size4d)"), "pixels")]),
-
-    # GL_EXT_texture_object
-    GlFunction(GLboolean, "glAreTexturesResidentEXT", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), Out(Array(GLboolean, "n"), "residences")]),
-    GlFunction(Void, "glBindTextureEXT", [(GLenum, "target"), (GLtexture, "texture")]),
-    GlFunction(Void, "glDeleteTexturesEXT", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures")]),
-    GlFunction(Void, "glGenTexturesEXT", [(GLsizei, "n"), Out(Array(GLtexture, "n"), "textures")]),
-    GlFunction(GLboolean, "glIsTextureEXT", [(GLtexture, "texture")], sideeffects=False),
-    GlFunction(Void, "glPrioritizeTexturesEXT", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), (Array(Const(GLclampf), "n"), "priorities")]),
-
-    # GL_SGIS_detail_texture
-    GlFunction(Void, "glDetailTexFuncSGIS", [(GLenum, "target"), (GLsizei, "n"), (Array(Const(GLfloat), "n*2"), "points")]),
-    GlFunction(Void, "glGetDetailTexFuncSGIS", [(GLenum, "target"), Out(OpaqueArray(GLfloat, "__glGetDetailTexFuncSGIS_size(target)"), "points")], sideeffects=False),
-
-    # GL_SGIS_sharpen_texture
-    GlFunction(Void, "glSharpenTexFuncSGIS", [(GLenum, "target"), (GLsizei, "n"), (Array(Const(GLfloat), "n*2"), "points")]),
-    GlFunction(Void, "glGetSharpenTexFuncSGIS", [(GLenum, "target"), Out(OpaqueArray(GLfloat, "__glGetSharpenTexFuncSGIS_size(target)"), "points")], sideeffects=False),
-
-    # GL_SGIS_multisample
-    GlFunction(Void, "glSampleMaskSGIS", [(GLclampf, "value"), (GLboolean, "invert")]),
-    GlFunction(Void, "glSamplePatternSGIS", [(GLenum, "pattern")]),
-
-    # GL_EXT_vertex_array
-    GlFunction(Void, "glArrayElementEXT", [(GLint, "i")]),
-    GlFunction(Void, "glColorPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glDrawArraysEXT", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
-    GlFunction(Void, "glEdgeFlagPointerEXT", [(GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLboolean)), "pointer")]),
-    GlFunction(Void, "glGetPointervEXT", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
-    GlFunction(Void, "glIndexPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glNormalPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glTexCoordPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glVertexPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_EXT_blend_minmax
-    GlFunction(Void, "glBlendEquationEXT", [(GLenum, "mode")]),
-
-    # GL_SGIX_sprite
-    GlFunction(Void, "glSpriteParameterfSGIX", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glSpriteParameterfvSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glSpriteParameterfvSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glSpriteParameteriSGIX", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glSpriteParameterivSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLint), "__glSpriteParameterivSGIX_size(pname)"), "params")]),
-
-    # GL_EXT_point_parameters
-    GlFunction(Void, "glPointParameterfEXT", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPointParameterfvEXT", [(GLenum, "pname"), (Array(Const(GLfloat), "__glPointParameterfv_size(pname)"), "params")]),
-
-    # GL_SGIS_point_parameters
-    GlFunction(Void, "glPointParameterfSGIS", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPointParameterfvSGIS", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glPointParameterfvSGIS_size(pname)"), "params")]),
-
-    # GL_SGIX_instruments
-    GlFunction(GLint, "glGetInstrumentsSGIX", [], sideeffects=False),
-    GlFunction(Void, "glInstrumentsBufferSGIX", [(GLsizei, "size"), Out(OpaquePointer(GLint), "buffer")]),
-    GlFunction(GLint, "glPollInstrumentsSGIX", [Out(Pointer(GLint), "marker_p")]),
-    GlFunction(Void, "glReadInstrumentsSGIX", [(GLint, "marker")]),
-    GlFunction(Void, "glStartInstrumentsSGIX", []),
-    GlFunction(Void, "glStopInstrumentsSGIX", [(GLint, "marker")]),
-
-    # GL_SGIX_framezoom
-    GlFunction(Void, "glFrameZoomSGIX", [(GLint, "factor")]),
-
-    # GL_SGIX_tag_sample_buffer
-    GlFunction(Void, "glTagSampleBufferSGIX", []),
-
-    # GL_SGIX_polynomial_ffd
-    GlFunction(Void, "glDeformationMap3dSGIX", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (GLdouble, "w1"), (GLdouble, "w2"), (GLint, "wstride"), (GLint, "worder"), (OpaqueArray(Const(GLdouble), "__glDeformationMap3dSGIX_size(target, ustride, uorder, vstride, vorder, wstride, worder)"), "points")]),
-    GlFunction(Void, "glDeformationMap3fSGIX", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (GLfloat, "w1"), (GLfloat, "w2"), (GLint, "wstride"), (GLint, "worder"), (OpaqueArray(Const(GLfloat), "__glDeformationMap3fSGIX_size(target, ustride, uorder, vstride, vorder, wstride, worder)"), "points")]),
-    GlFunction(Void, "glDeformSGIX", [(GLbitfield, "mask")]),
-    GlFunction(Void, "glLoadIdentityDeformationMapSGIX", [(GLbitfield, "mask")]),
-
-    # GL_SGIX_reference_plane
-    GlFunction(Void, "glReferencePlaneSGIX", [(Array(Const(GLdouble), "4"), "equation")]),
-
-    # GL_SGIX_flush_raster
-    GlFunction(Void, "glFlushRasterSGIX", []),
-
-    # GL_SGIS_fog_function
-    GlFunction(Void, "glFogFuncSGIS", [(GLsizei, "n"), (Array(Const(GLfloat), "n*2"), "points")]),
-    GlFunction(Void, "glGetFogFuncSGIS", [Out(OpaqueArray(GLfloat, "__glGetFogFuncSGIS_size()"), "points")], sideeffects=False),
-
-    # GL_HP_image_transform
-    GlFunction(Void, "glImageTransformParameteriHP", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glImageTransformParameterfHP", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glImageTransformParameterivHP", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glImageTransformParameterivHP_size(pname)"), "params")]),
-    GlFunction(Void, "glImageTransformParameterfvHP", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glImageTransformParameterfvHP_size(pname)"), "params")]),
-    GlFunction(Void, "glGetImageTransformParameterivHP", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetImageTransformParameterivHP_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetImageTransformParameterfvHP", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetImageTransformParameterfvHP_size(pname)"), "params")], sideeffects=False),
-
-    # GL_EXT_color_subtable
-    GlFunction(Void, "glColorSubTableEXT", [(GLenum, "target"), (GLsizei, "start"), (GLsizei, "count"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glColorSubTable_size(format, type, count)"), "data")]),
-    GlFunction(Void, "glCopyColorSubTableEXT", [(GLenum, "target"), (GLsizei, "start"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-
-    # GL_PGI_misc_hints
-    GlFunction(Void, "glHintPGI", [(GLenum, "target"), (GLint, "mode")]),
-
-    # GL_EXT_paletted_texture
-    GlFunction(Void, "glColorTableEXT", [(GLenum, "target"), (GLenum, "internalFormat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glColorTableEXT_size(format, type, width)"), "table")]),
-    GlFunction(Void, "glGetColorTableEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTableEXT_size(target, format, type)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetColorTableParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetColorTableParameterivEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetColorTableParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetColorTableParameterfvEXT_size(pname)"), "params")], sideeffects=False),
-
-    # GL_SGIX_list_priority
-    GlFunction(Void, "glGetListParameterfvSGIX", [(GLuint, "list"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetListParameterfvSGIX_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetListParameterivSGIX", [(GLuint, "list"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetListParameterivSGIX_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glListParameterfSGIX", [(GLuint, "list"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glListParameterfvSGIX", [(GLuint, "list"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glListParameterfvSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glListParameteriSGIX", [(GLuint, "list"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glListParameterivSGIX", [(GLuint, "list"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glListParameterivSGIX_size(pname)"), "params")]),
-
-    # GL_EXT_index_material
-    GlFunction(Void, "glIndexMaterialEXT", [(GLenum, "face"), (GLenum, "mode")]),
-
-    # GL_EXT_index_func
-    GlFunction(Void, "glIndexFuncEXT", [(GLenum, "func"), (GLclampf, "ref")]),
-
-    # GL_EXT_compiled_vertex_array
-    GlFunction(Void, "glLockArraysEXT", [(GLint, "first"), (GLsizei, "count")]),
-    GlFunction(Void, "glUnlockArraysEXT", []),
-
-    # GL_EXT_cull_vertex
-    GlFunction(Void, "glCullParameterdvEXT", [(GLenum, "pname"), Out(Array(GLdouble, "4"), "params")]),
-    GlFunction(Void, "glCullParameterfvEXT", [(GLenum, "pname"), Out(Array(GLfloat, "4"), "params")]),
-
-    # GL_SGIX_fragment_lighting
-    GlFunction(Void, "glFragmentColorMaterialSGIX", [(GLenum, "face"), (GLenum, "mode")]),
-    GlFunction(Void, "glFragmentLightfSGIX", [(GLenum, "light"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glFragmentLightfvSGIX", [(GLenum, "light"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glFragmentLightfvSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glFragmentLightiSGIX", [(GLenum, "light"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glFragmentLightivSGIX", [(GLenum, "light"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glFragmentLightivSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glFragmentLightModelfSGIX", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glFragmentLightModelfvSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glFragmentLightModelfvSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glFragmentLightModeliSGIX", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glFragmentLightModelivSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLint), "__glFragmentLightModelivSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glFragmentMaterialfSGIX", [(GLenum, "face"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glFragmentMaterialfvSGIX", [(GLenum, "face"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glFragmentMaterialfvSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glFragmentMaterialiSGIX", [(GLenum, "face"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glFragmentMaterialivSGIX", [(GLenum, "face"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glFragmentMaterialivSGIX_size(pname)"), "params")]),
-    GlFunction(Void, "glGetFragmentLightfvSGIX", [(GLenum, "light"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetFragmentLightfvSGIX_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetFragmentLightivSGIX", [(GLenum, "light"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFragmentLightivSGIX_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetFragmentMaterialfvSGIX", [(GLenum, "face"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetFragmentMaterialfvSGIX_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetFragmentMaterialivSGIX", [(GLenum, "face"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFragmentMaterialivSGIX_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glLightEnviSGIX", [(GLenum, "pname"), (GLint, "param")]),
-
-    # GL_EXT_draw_range_elements
-    GlFunction(Void, "glDrawRangeElementsEXT", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices")]),
-
-    # GL_EXT_light_texture
-    GlFunction(Void, "glApplyTextureEXT", [(GLenum, "mode")]),
-    GlFunction(Void, "glTextureLightEXT", [(GLenum, "pname")]),
-    GlFunction(Void, "glTextureMaterialEXT", [(GLenum, "face"), (GLenum, "mode")]),
-
-    # GL_SGIX_async
-    GlFunction(Void, "glAsyncMarkerSGIX", [(GLuint, "marker")]),
-    GlFunction(GLint, "glFinishAsyncSGIX", [Out(Pointer(GLuint), "markerp")]),
-    GlFunction(GLint, "glPollAsyncSGIX", [Out(Pointer(GLuint), "markerp")]),
-    GlFunction(GLuint, "glGenAsyncMarkersSGIX", [(GLsizei, "range")]),
-    GlFunction(Void, "glDeleteAsyncMarkersSGIX", [(GLuint, "marker"), (GLsizei, "range")]),
-    GlFunction(GLboolean, "glIsAsyncMarkerSGIX", [(GLuint, "marker")], sideeffects=False),
-
-    # GL_INTEL_parallel_arrays
-    GlFunction(Void, "glVertexPointervINTEL", [(GLint, "size"), (GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
-    GlFunction(Void, "glNormalPointervINTEL", [(GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
-    GlFunction(Void, "glColorPointervINTEL", [(GLint, "size"), (GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
-    GlFunction(Void, "glTexCoordPointervINTEL", [(GLint, "size"), (GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
-
-    # GL_EXT_pixel_transform
-    GlFunction(Void, "glPixelTransformParameteriEXT", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glPixelTransformParameterfEXT", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glPixelTransformParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (Pointer(Const(GLint)), "params")]),
-    GlFunction(Void, "glPixelTransformParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), (Pointer(Const(GLfloat)), "params")]),
-
-    # GL_EXT_secondary_color
-    GlFunction(Void, "glSecondaryColor3bEXT", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
-    GlFunction(Void, "glSecondaryColor3bvEXT", [(Array(Const(GLbyte), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3dEXT", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
-    GlFunction(Void, "glSecondaryColor3dvEXT", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3fEXT", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
-    GlFunction(Void, "glSecondaryColor3fvEXT", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3iEXT", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
-    GlFunction(Void, "glSecondaryColor3ivEXT", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3sEXT", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
-    GlFunction(Void, "glSecondaryColor3svEXT", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3ubEXT", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
-    GlFunction(Void, "glSecondaryColor3ubvEXT", [(Array(Const(GLubyte), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3uiEXT", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
-    GlFunction(Void, "glSecondaryColor3uivEXT", [(Array(Const(GLuint), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColor3usEXT", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
-    GlFunction(Void, "glSecondaryColor3usvEXT", [(Array(Const(GLushort), "3"), "v")]),
-    GlFunction(Void, "glSecondaryColorPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_EXT_texture_perturb_normal
-    GlFunction(Void, "glTextureNormalEXT", [(GLenum, "mode")]),
-
-    # GL_EXT_multi_draw_arrays
-    GlFunction(Void, "glMultiDrawArraysEXT", [(GLenum_mode, "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glMultiDrawElementsEXT", [(GLenum_mode, "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount")]),
-
-    # GL_EXT_fog_coord
-    GlFunction(Void, "glFogCoordfEXT", [(GLfloat, "coord")]),
-    GlFunction(Void, "glFogCoordfvEXT", [(Pointer(Const(GLfloat)), "coord")]),
-    GlFunction(Void, "glFogCoorddEXT", [(GLdouble, "coord")]),
-    GlFunction(Void, "glFogCoorddvEXT", [(Pointer(Const(GLdouble)), "coord")]),
-    GlFunction(Void, "glFogCoordPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_EXT_coordinate_frame
-    GlFunction(Void, "glTangent3bEXT", [(GLbyte, "tx"), (GLbyte, "ty"), (GLbyte, "tz")]),
-    GlFunction(Void, "glTangent3bvEXT", [(Array(Const(GLbyte), "3"), "v")]),
-    GlFunction(Void, "glTangent3dEXT", [(GLdouble, "tx"), (GLdouble, "ty"), (GLdouble, "tz")]),
-    GlFunction(Void, "glTangent3dvEXT", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glTangent3fEXT", [(GLfloat, "tx"), (GLfloat, "ty"), (GLfloat, "tz")]),
-    GlFunction(Void, "glTangent3fvEXT", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTangent3iEXT", [(GLint, "tx"), (GLint, "ty"), (GLint, "tz")]),
-    GlFunction(Void, "glTangent3ivEXT", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glTangent3sEXT", [(GLshort, "tx"), (GLshort, "ty"), (GLshort, "tz")]),
-    GlFunction(Void, "glTangent3svEXT", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glBinormal3bEXT", [(GLbyte, "bx"), (GLbyte, "by"), (GLbyte, "bz")]),
-    GlFunction(Void, "glBinormal3bvEXT", [(Array(Const(GLbyte), "3"), "v")]),
-    GlFunction(Void, "glBinormal3dEXT", [(GLdouble, "bx"), (GLdouble, "by"), (GLdouble, "bz")]),
-    GlFunction(Void, "glBinormal3dvEXT", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glBinormal3fEXT", [(GLfloat, "bx"), (GLfloat, "by"), (GLfloat, "bz")]),
-    GlFunction(Void, "glBinormal3fvEXT", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glBinormal3iEXT", [(GLint, "bx"), (GLint, "by"), (GLint, "bz")]),
-    GlFunction(Void, "glBinormal3ivEXT", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glBinormal3sEXT", [(GLshort, "bx"), (GLshort, "by"), (GLshort, "bz")]),
-    GlFunction(Void, "glBinormal3svEXT", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glTangentPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glBinormalPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_SUNX_constant_data
-    GlFunction(Void, "glFinishTextureSUNX", []),
-
-    # GL_SUN_global_alpha
-    GlFunction(Void, "glGlobalAlphaFactorbSUN", [(GLbyte, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactorsSUN", [(GLshort, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactoriSUN", [(GLint, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactorfSUN", [(GLfloat, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactordSUN", [(GLdouble, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactorubSUN", [(GLubyte, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactorusSUN", [(GLushort, "factor")]),
-    GlFunction(Void, "glGlobalAlphaFactoruiSUN", [(GLuint, "factor")]),
-
-    # GL_SUN_triangle_list
-    GlFunction(Void, "glReplacementCodeuiSUN", [(GLuint, "code")]),
-    GlFunction(Void, "glReplacementCodeusSUN", [(GLushort, "code")]),
-    GlFunction(Void, "glReplacementCodeubSUN", [(GLubyte, "code")]),
-    GlFunction(Void, "glReplacementCodeuivSUN", [(OpaqueArray(Const(GLuint), "__glReplacementCodeuivSUN_size()"), "code")]),
-    GlFunction(Void, "glReplacementCodeusvSUN", [(OpaqueArray(Const(GLushort), "__glReplacementCodeusvSUN_size()"), "code")]),
-    GlFunction(Void, "glReplacementCodeubvSUN", [(OpaqueArray(Const(GLubyte), "__glReplacementCodeubvSUN_size()"), "code")]),
-    GlFunction(Void, "glReplacementCodePointerSUN", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer")]),
-
-    # GL_SUN_vertex
-    GlFunction(Void, "glColor4ubVertex2fSUN", [(GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glColor4ubVertex2fvSUN", [(Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glColor4ubVertex3fSUN", [(GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glColor4ubVertex3fvSUN", [(Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glColor3fVertex3fSUN", [(GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glColor3fVertex3fvSUN", [(Array(Const(GLfloat), "3"), "c"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glNormal3fVertex3fSUN", [(GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glColor4fNormal3fVertex3fSUN", [(GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glColor4fNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord2fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glTexCoord2fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord4fVertex4fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "p"), (GLfloat, "q"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glTexCoord4fVertex4fvSUN", [(Array(Const(GLfloat), "4"), "tc"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glTexCoord2fColor4ubVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glTexCoord2fColor4ubVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord2fColor3fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glTexCoord2fColor3fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "c"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord2fNormal3fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glTexCoord2fNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord2fColor4fNormal3fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glTexCoord2fColor4fNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glTexCoord4fColor4fNormal3fVertex4fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "p"), (GLfloat, "q"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glTexCoord4fColor4fNormal3fVertex4fvSUN", [(Array(Const(GLfloat), "4"), "tc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiVertex3fSUN", [(GLuint, "rc"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiColor4ubVertex3fSUN", [(GLuint, "rc"), (GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiColor4ubVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiColor3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiColor3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "3"), "c"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiColor4fNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiTexCoord2fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiTexCoord2fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
-
-    # GL_EXT_blend_func_separate
-    GlFunction(Void, "glBlendFuncSeparateEXT", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
-
-    # GL_INGR_blend_func_separate
-    GlFunction(Void, "glBlendFuncSeparateINGR", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
-
-    # GL_EXT_vertex_weighting
-    GlFunction(Void, "glVertexWeightfEXT", [(GLfloat, "weight")]),
-    GlFunction(Void, "glVertexWeightfvEXT", [(Pointer(Const(GLfloat)), "weight")]),
-    GlFunction(Void, "glVertexWeightPointerEXT", [(GLsizei, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_NV_vertex_array_range
-    GlFunction(Void, "glFlushVertexArrayRangeNV", []),
-    GlFunction(Void, "glVertexArrayRangeNV", [(GLsizei, "length"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-
-    # GL_NV_register_combiners
-    GlFunction(Void, "glCombinerParameterfvNV", [(GLenum, "pname"), (OpaquePointer(Const(GLfloat)), "params")]),
-    GlFunction(Void, "glCombinerParameterfNV", [(GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glCombinerParameterivNV", [(GLenum, "pname"), (OpaquePointer(Const(GLint)), "params")]),
-    GlFunction(Void, "glCombinerParameteriNV", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glCombinerInputNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "input"), (GLenum, "mapping"), (GLenum, "componentUsage")]),
-    GlFunction(Void, "glCombinerOutputNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "abOutput"), (GLenum, "cdOutput"), (GLenum, "sumOutput"), (GLenum, "scale"), (GLenum, "bias"), (GLboolean, "abDotProduct"), (GLboolean, "cdDotProduct"), (GLboolean, "muxSum")]),
-    GlFunction(Void, "glFinalCombinerInputNV", [(GLenum, "variable"), (GLenum, "input"), (GLenum, "mapping"), (GLenum, "componentUsage")]),
-    GlFunction(Void, "glGetCombinerInputParameterfvNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetCombinerInputParameterivNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetCombinerOutputParameterfvNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetCombinerOutputParameterivNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetFinalCombinerInputParameterfvNV", [(GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetFinalCombinerInputParameterivNV", [(GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
-
-    # GL_MESA_resize_buffers
-    GlFunction(Void, "glResizeBuffersMESA", []),
-
-    # GL_MESA_window_pos
-    GlFunction(Void, "glWindowPos2dMESA", [(GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glWindowPos2dvMESA", [(Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2fMESA", [(GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glWindowPos2fvMESA", [(Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2iMESA", [(GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glWindowPos2ivMESA", [(Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glWindowPos2sMESA", [(GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glWindowPos2svMESA", [(Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glWindowPos3dMESA", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glWindowPos3dvMESA", [(Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3fMESA", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glWindowPos3fvMESA", [(Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3iMESA", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glWindowPos3ivMESA", [(Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glWindowPos3sMESA", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glWindowPos3svMESA", [(Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glWindowPos4dMESA", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glWindowPos4dvMESA", [(Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glWindowPos4fMESA", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glWindowPos4fvMESA", [(Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glWindowPos4iMESA", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glWindowPos4ivMESA", [(Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glWindowPos4sMESA", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glWindowPos4svMESA", [(Array(Const(GLshort), "4"), "v")]),
-
-    # GL_IBM_multimode_draw_arrays
-    GlFunction(Void, "glMultiModeDrawArraysIBM", [(Array(Const(GLenum), "primcount"), "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount"), (GLint, "modestride")]),
-    GlFunction(Void, "glMultiModeDrawElementsIBM", [(Array(Const(GLenum), "primcount"), "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Const(Opaque("const GLvoid *")), "primcount"), "indices"), (GLsizei, "primcount"), (GLint, "modestride")]),
-
-    # GL_IBM_vertex_array_lists
-    GlFunction(Void, "glColorPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glSecondaryColorPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glEdgeFlagPointerListIBM", [(GLint, "stride"), (OpaquePointer(Opaque("const GLboolean *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glFogCoordPointerListIBM", [(GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glIndexPointerListIBM", [(GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glNormalPointerListIBM", [(GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glTexCoordPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-    GlFunction(Void, "glVertexPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
-
-    # GL_3DFX_tbuffer
-    GlFunction(Void, "glTbufferMask3DFX", [(GLuint, "mask")]),
-
-    # GL_EXT_multisample
-    GlFunction(Void, "glSampleMaskEXT", [(GLclampf, "value"), (GLboolean, "invert")]),
-    GlFunction(Void, "glSamplePatternEXT", [(GLenum, "pattern")]),
-
-    # GL_SGIS_texture_color_mask
-    GlFunction(Void, "glTextureColorMaskSGIS", [(GLboolean, "red"), (GLboolean, "green"), (GLboolean, "blue"), (GLboolean, "alpha")]),
-
-    # GL_SGIX_igloo_interface
-    GlFunction(Void, "glIglooInterfaceSGIX", [(GLenum, "pname"), (OpaqueBlob(Const(GLvoid), "__glIglooInterfaceSGIX_size(pname)"), "params")]),
-
-    # GL_NV_fence
-    GlFunction(Void, "glDeleteFencesNV", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "fences")]),
-    GlFunction(Void, "glGenFencesNV", [(GLsizei, "n"), Out(Array(GLuint, "n"), "fences")]),
-    GlFunction(GLboolean, "glIsFenceNV", [(GLuint, "fence")], sideeffects=False),
-    GlFunction(GLboolean, "glTestFenceNV", [(GLuint, "fence")]),
-    GlFunction(Void, "glGetFenceivNV", [(GLuint, "fence"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFenceivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glFinishFenceNV", [(GLuint, "fence")]),
-    GlFunction(Void, "glSetFenceNV", [(GLuint, "fence"), (GLenum, "condition")]),
-
-    # GL_NV_evaluators
-    GlFunction(Void, "glMapControlPointsNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "type"), (GLsizei, "ustride"), (GLsizei, "vstride"), (GLint, "uorder"), (GLint, "vorder"), (GLboolean, "packed"), (OpaqueBlob(Const(GLvoid), "__glMapControlPointsNV_size(target, uorder, vorder)"), "points")]),
-    GlFunction(Void, "glMapParameterivNV", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glMapParameterivNV_size(target, pname)"), "params")]),
-    GlFunction(Void, "glMapParameterfvNV", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glMapParameterfvNV_size(target, pname)"), "params")]),
-    GlFunction(Void, "glGetMapControlPointsNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "type"), (GLsizei, "ustride"), (GLsizei, "vstride"), (GLboolean, "packed"), Out(OpaqueBlob(GLvoid, "__glGetMapControlPointsNV_size(target)"), "points")], sideeffects=False),
-    GlFunction(Void, "glGetMapParameterivNV", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMapParameterivNV_size(target, pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMapParameterfvNV", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMapParameterfvNV_size(target, pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMapAttribParameterivNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMapAttribParameterivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMapAttribParameterfvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMapAttribParameterfvNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glEvalMapsNV", [(GLenum, "target"), (GLenum, "mode")]),
-
-    # GL_NV_register_combiners2
-    GlFunction(Void, "glCombinerStageParameterfvNV", [(GLenum, "stage"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glCombinerStageParameterfvNV_size(pname)"), "params")]),
-    GlFunction(Void, "glGetCombinerStageParameterfvNV", [(GLenum, "stage"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetCombinerStageParameterfvNV_size(pname)"), "params")], sideeffects=False),
-
-    # GL_NV_vertex_program
-    GlFunction(GLboolean, "glAreProgramsResidentNV", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "ids"), Out(Array(GLboolean, "n"), "residences")]),
-    GlFunction(Void, "glBindProgramNV", [(GLenum, "target"), (GLprogramARB, "program")]),
-    GlFunction(Void, "glDeleteProgramsNV", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "programs")]),
-    GlFunction(Void, "glExecuteProgramNV", [(GLenum, "target"), (GLprogramARB, "id"), (Array(Const(GLfloat), "4"), "params")]),
-    GlFunction(Void, "glGenProgramsNV", [(GLsizei, "n"), Out(Array(GLprogramARB, "n"), "programs")]),
-    GlFunction(Void, "glGetProgramParameterdvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramParameterfvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramivNV", [(GLprogramARB, "id"), (GLenum, "pname"), (Pointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramStringNV", [(GLprogramARB, "id"), (GLenum, "pname"), (OpaquePointer(GLubyte), "program")], sideeffects=False),
-    GlFunction(Void, "glGetTrackMatrixivNV", [(GLenum, "target"), (GLuint, "address"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribdvNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribfvNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribivNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribPointervNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
-    GlFunction(GLboolean, "glIsProgramNV", [(GLprogramARB, "program")], sideeffects=False),
-    GlFunction(Void, "glLoadProgramNV", [(GLenum, "target"), (GLprogramARB, "id"), (GLsizei, "len"), (String("const GLubyte *", "len"), "program")]),
-    GlFunction(Void, "glProgramParameter4dNV", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glProgramParameter4dvNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glProgramParameter4fNV", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glProgramParameter4fvNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glProgramParameters4dvNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "v")]),
-    GlFunction(Void, "glProgramParameters4fvNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "v")]),
-    GlFunction(Void, "glRequestResidentProgramsNV", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "programs")]),
-    GlFunction(Void, "glTrackMatrixNV", [(GLenum, "target"), (GLuint, "address"), (GLenum, "matrix"), (GLenum, "transform")]),
-    GlFunction(Void, "glVertexAttribPointerNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glVertexAttrib1dNV", [(GLuint, "index"), (GLdouble, "x")]),
-    GlFunction(Void, "glVertexAttrib1dvNV", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glVertexAttrib1fNV", [(GLuint, "index"), (GLfloat, "x")]),
-    GlFunction(Void, "glVertexAttrib1fvNV", [(GLuint, "index"), (Pointer(Const(GLfloat)), "v")]),
-    GlFunction(Void, "glVertexAttrib1sNV", [(GLuint, "index"), (GLshort, "x")]),
-    GlFunction(Void, "glVertexAttrib1svNV", [(GLuint, "index"), (Pointer(Const(GLshort)), "v")]),
-    GlFunction(Void, "glVertexAttrib2dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertexAttrib2dvNV", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib2fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glVertexAttrib2fvNV", [(GLuint, "index"), (Array(Const(GLfloat), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib2sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glVertexAttrib2svNV", [(GLuint, "index"), (Array(Const(GLshort), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib3dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertexAttrib3dvNV", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib3fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glVertexAttrib3fvNV", [(GLuint, "index"), (Array(Const(GLfloat), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib3sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glVertexAttrib3svNV", [(GLuint, "index"), (Array(Const(GLshort), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib4dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertexAttrib4dvNV", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glVertexAttrib4fvNV", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glVertexAttrib4svNV", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttrib4ubNV", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
-    GlFunction(Void, "glVertexAttrib4ubvNV", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribs1dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "v")]),
-    GlFunction(Void, "glVertexAttribs1fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "v")]),
-    GlFunction(Void, "glVertexAttribs1svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count"), "v")]),
-    GlFunction(Void, "glVertexAttribs2dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "v")]),
-    GlFunction(Void, "glVertexAttribs2fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "v")]),
-    GlFunction(Void, "glVertexAttribs2svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count*2"), "v")]),
-    GlFunction(Void, "glVertexAttribs3dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "v")]),
-    GlFunction(Void, "glVertexAttribs3fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "v")]),
-    GlFunction(Void, "glVertexAttribs3svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count*3"), "v")]),
-    GlFunction(Void, "glVertexAttribs4dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "v")]),
-    GlFunction(Void, "glVertexAttribs4fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "v")]),
-    GlFunction(Void, "glVertexAttribs4svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count*4"), "v")]),
-    GlFunction(Void, "glVertexAttribs4ubvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLubyte), "count*4"), "v")]),
-
-    # GL_ATI_envmap_bumpmap
-    GlFunction(Void, "glTexBumpParameterivATI", [(GLenum, "pname"), (OpaquePointer(Const(GLint)), "param")]),
-    GlFunction(Void, "glTexBumpParameterfvATI", [(GLenum, "pname"), (OpaquePointer(Const(GLfloat)), "param")]),
-    GlFunction(Void, "glGetTexBumpParameterivATI", [(GLenum, "pname"), Out(OpaquePointer(GLint), "param")], sideeffects=False),
-    GlFunction(Void, "glGetTexBumpParameterfvATI", [(GLenum, "pname"), Out(OpaquePointer(GLfloat), "param")], sideeffects=False),
-
-    # GL_ATI_fragment_shader
-    GlFunction(Handle("fragmentShaderATI", GLuint, "range"), "glGenFragmentShadersATI", [(GLuint, "range")]),
-    GlFunction(Void, "glBindFragmentShaderATI", [(GLfragmentShaderATI, "id")]),
-    GlFunction(Void, "glDeleteFragmentShaderATI", [(GLfragmentShaderATI, "id")]),
-    GlFunction(Void, "glBeginFragmentShaderATI", []),
-    GlFunction(Void, "glEndFragmentShaderATI", []),
-    GlFunction(Void, "glPassTexCoordATI", [(GLuint, "dst"), (GLuint, "coord"), (GLenum, "swizzle")]),
-    GlFunction(Void, "glSampleMapATI", [(GLuint, "dst"), (GLuint, "interp"), (GLenum, "swizzle")]),
-    GlFunction(Void, "glColorFragmentOp1ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod")]),
-    GlFunction(Void, "glColorFragmentOp2ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod")]),
-    GlFunction(Void, "glColorFragmentOp3ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod"), (GLuint, "arg3"), (GLuint, "arg3Rep"), (GLuint, "arg3Mod")]),
-    GlFunction(Void, "glAlphaFragmentOp1ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod")]),
-    GlFunction(Void, "glAlphaFragmentOp2ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod")]),
-    GlFunction(Void, "glAlphaFragmentOp3ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod"), (GLuint, "arg3"), (GLuint, "arg3Rep"), (GLuint, "arg3Mod")]),
-    GlFunction(Void, "glSetFragmentShaderConstantATI", [(GLuint, "dst"), (Array(Const(GLfloat), "4"), "value")]),
-
-    # GL_ATI_pn_triangles
-    GlFunction(Void, "glPNTrianglesiATI", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glPNTrianglesfATI", [(GLenum, "pname"), (GLfloat, "param")]),
-
-    # GL_ATI_vertex_array_object
-    GlFunction(GLuint, "glNewObjectBufferATI", [(GLsizei, "size"), (Blob(Const(GLvoid), "size"), "pointer"), (GLenum, "usage")]),
-    GlFunction(GLboolean, "glIsObjectBufferATI", [(GLuint, "buffer")], sideeffects=False),
-    GlFunction(Void, "glUpdateObjectBufferATI", [(GLuint, "buffer"), (GLuint, "offset"), (GLsizei, "size"), (Blob(Const(GLvoid), "size"), "pointer"), (GLenum, "preserve")]),
-    GlFunction(Void, "glGetObjectBufferfvATI", [(GLuint, "buffer"), (GLenum, "pname"), Out(Pointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetObjectBufferivATI", [(GLuint, "buffer"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glFreeObjectBufferATI", [(GLuint, "buffer")]),
-    GlFunction(Void, "glArrayObjectATI", [(GLenum, "array"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLuint, "buffer"), (GLuint, "offset")]),
-    GlFunction(Void, "glGetArrayObjectfvATI", [(GLenum, "array"), (GLenum, "pname"), Out(Pointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetArrayObjectivATI", [(GLenum, "array"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glVariantArrayObjectATI", [(GLuint, "id"), (GLenum, "type"), (GLsizei, "stride"), (GLuint, "buffer"), (GLuint, "offset")]),
-    GlFunction(Void, "glGetVariantArrayObjectfvATI", [(GLuint, "id"), (GLenum, "pname"), Out(Pointer(GLfloat), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVariantArrayObjectivATI", [(GLuint, "id"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
-
-    # GL_EXT_vertex_shader
-    GlFunction(Void, "glBeginVertexShaderEXT", []),
-    GlFunction(Void, "glEndVertexShaderEXT", []),
-    GlFunction(Void, "glBindVertexShaderEXT", [(GLuint, "id")]),
-    GlFunction(GLuint, "glGenVertexShadersEXT", [(GLuint, "range")]),
-    GlFunction(Void, "glDeleteVertexShaderEXT", [(GLuint, "id")]),
-    GlFunction(Void, "glShaderOp1EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1")]),
-    GlFunction(Void, "glShaderOp2EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1"), (GLuint, "arg2")]),
-    GlFunction(Void, "glShaderOp3EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1"), (GLuint, "arg2"), (GLuint, "arg3")]),
-    GlFunction(Void, "glSwizzleEXT", [(GLuint, "res"), (GLuint, "in"), (GLenum, "outX"), (GLenum, "outY"), (GLenum, "outZ"), (GLenum, "outW")]),
-    GlFunction(Void, "glWriteMaskEXT", [(GLuint, "res"), (GLuint, "in"), (GLenum, "outX"), (GLenum, "outY"), (GLenum, "outZ"), (GLenum, "outW")]),
-    GlFunction(Void, "glInsertComponentEXT", [(GLuint, "res"), (GLuint, "src"), (GLuint, "num")]),
-    GlFunction(Void, "glExtractComponentEXT", [(GLuint, "res"), (GLuint, "src"), (GLuint, "num")]),
-    GlFunction(GLuint, "glGenSymbolsEXT", [(GLenum, "datatype"), (GLenum, "storagetype"), (GLenum, "range"), (GLuint, "components")]),
-    GlFunction(Void, "glSetInvariantEXT", [(GLuint, "id"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glSetInvariantEXT_size(id, type)"), "addr")]),
-    GlFunction(Void, "glSetLocalConstantEXT", [(GLuint, "id"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glSetLocalConstantEXT_size(id, type)"), "addr")]),
-    GlFunction(Void, "glVariantbvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLbyte), "__glVariantbvEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantsvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLshort), "__glVariantsvEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantivEXT", [(GLuint, "id"), (OpaqueArray(Const(GLint), "__glVariantivEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantfvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLfloat), "__glVariantfvEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantdvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLdouble), "__glVariantdvEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantubvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLubyte), "__glVariantubvEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantusvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLushort), "__glVariantusvEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantuivEXT", [(GLuint, "id"), (OpaqueArray(Const(GLuint), "__glVariantuivEXT_size(id)"), "addr")]),
-    GlFunction(Void, "glVariantPointerEXT", [(GLuint, "id"), (GLenum, "type"), (GLuint, "stride"), (OpaqueBlob(Const(GLvoid), "__glVariantPointerEXT_size(id, type, stride)"), "addr")]),
-    GlFunction(Void, "glEnableVariantClientStateEXT", [(GLuint, "id")]),
-    GlFunction(Void, "glDisableVariantClientStateEXT", [(GLuint, "id")]),
-    GlFunction(GLuint, "glBindLightParameterEXT", [(GLenum, "light"), (GLenum, "value")]),
-    GlFunction(GLuint, "glBindMaterialParameterEXT", [(GLenum, "face"), (GLenum, "value")]),
-    GlFunction(GLuint, "glBindTexGenParameterEXT", [(GLenum, "unit"), (GLenum, "coord"), (GLenum, "value")]),
-    GlFunction(GLuint, "glBindTextureUnitParameterEXT", [(GLenum, "unit"), (GLenum, "value")]),
-    GlFunction(GLuint, "glBindParameterEXT", [(GLenum, "value")]),
-    GlFunction(GLboolean, "glIsVariantEnabledEXT", [(GLuint, "id"), (GLenum, "cap")], sideeffects=False),
-    GlFunction(Void, "glGetVariantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetVariantBooleanvEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetVariantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetVariantIntegervEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetVariantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetVariantFloatvEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetVariantPointervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetVariantPointervEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetInvariantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetInvariantBooleanvEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetInvariantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetInvariantIntegervEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetInvariantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetInvariantFloatvEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetLocalConstantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetLocalConstantBooleanvEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetLocalConstantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetLocalConstantIntegervEXT_size(id)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetLocalConstantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetLocalConstantFloatvEXT_size(id)"), "data")], sideeffects=False),
-
-    # GL_ATI_vertex_streams
-    GlFunction(Void, "glVertexStream1sATI", [(GLenum, "stream"), (GLshort, "x")]),
-    GlFunction(Void, "glVertexStream1svATI", [(GLenum, "stream"), (Pointer(Const(GLshort)), "coords")]),
-    GlFunction(Void, "glVertexStream1iATI", [(GLenum, "stream"), (GLint, "x")]),
-    GlFunction(Void, "glVertexStream1ivATI", [(GLenum, "stream"), (Pointer(Const(GLint)), "coords")]),
-    GlFunction(Void, "glVertexStream1fATI", [(GLenum, "stream"), (GLfloat, "x")]),
-    GlFunction(Void, "glVertexStream1fvATI", [(GLenum, "stream"), (Pointer(Const(GLfloat)), "coords")]),
-    GlFunction(Void, "glVertexStream1dATI", [(GLenum, "stream"), (GLdouble, "x")]),
-    GlFunction(Void, "glVertexStream1dvATI", [(GLenum, "stream"), (Pointer(Const(GLdouble)), "coords")]),
-    GlFunction(Void, "glVertexStream2sATI", [(GLenum, "stream"), (GLshort, "x"), (GLshort, "y")]),
-    GlFunction(Void, "glVertexStream2svATI", [(GLenum, "stream"), (Array(Const(GLshort), "2"), "coords")]),
-    GlFunction(Void, "glVertexStream2iATI", [(GLenum, "stream"), (GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glVertexStream2ivATI", [(GLenum, "stream"), (Array(Const(GLint), "2"), "coords")]),
-    GlFunction(Void, "glVertexStream2fATI", [(GLenum, "stream"), (GLfloat, "x"), (GLfloat, "y")]),
-    GlFunction(Void, "glVertexStream2fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "2"), "coords")]),
-    GlFunction(Void, "glVertexStream2dATI", [(GLenum, "stream"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertexStream2dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "2"), "coords")]),
-    GlFunction(Void, "glVertexStream3sATI", [(GLenum, "stream"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
-    GlFunction(Void, "glVertexStream3svATI", [(GLenum, "stream"), (Array(Const(GLshort), "3"), "coords")]),
-    GlFunction(Void, "glVertexStream3iATI", [(GLenum, "stream"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glVertexStream3ivATI", [(GLenum, "stream"), (Array(Const(GLint), "3"), "coords")]),
-    GlFunction(Void, "glVertexStream3fATI", [(GLenum, "stream"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glVertexStream3fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "3"), "coords")]),
-    GlFunction(Void, "glVertexStream3dATI", [(GLenum, "stream"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertexStream3dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "3"), "coords")]),
-    GlFunction(Void, "glVertexStream4sATI", [(GLenum, "stream"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
-    GlFunction(Void, "glVertexStream4svATI", [(GLenum, "stream"), (Array(Const(GLshort), "4"), "coords")]),
-    GlFunction(Void, "glVertexStream4iATI", [(GLenum, "stream"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glVertexStream4ivATI", [(GLenum, "stream"), (Array(Const(GLint), "4"), "coords")]),
-    GlFunction(Void, "glVertexStream4fATI", [(GLenum, "stream"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glVertexStream4fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "4"), "coords")]),
-    GlFunction(Void, "glVertexStream4dATI", [(GLenum, "stream"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertexStream4dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "4"), "coords")]),
-    GlFunction(Void, "glNormalStream3bATI", [(GLenum, "stream"), (GLbyte, "nx"), (GLbyte, "ny"), (GLbyte, "nz")]),
-    GlFunction(Void, "glNormalStream3bvATI", [(GLenum, "stream"), (Array(Const(GLbyte), "3"), "coords")]),
-    GlFunction(Void, "glNormalStream3sATI", [(GLenum, "stream"), (GLshort, "nx"), (GLshort, "ny"), (GLshort, "nz")]),
-    GlFunction(Void, "glNormalStream3svATI", [(GLenum, "stream"), (Array(Const(GLshort), "3"), "coords")]),
-    GlFunction(Void, "glNormalStream3iATI", [(GLenum, "stream"), (GLint, "nx"), (GLint, "ny"), (GLint, "nz")]),
-    GlFunction(Void, "glNormalStream3ivATI", [(GLenum, "stream"), (Array(Const(GLint), "3"), "coords")]),
-    GlFunction(Void, "glNormalStream3fATI", [(GLenum, "stream"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz")]),
-    GlFunction(Void, "glNormalStream3fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "3"), "coords")]),
-    GlFunction(Void, "glNormalStream3dATI", [(GLenum, "stream"), (GLdouble, "nx"), (GLdouble, "ny"), (GLdouble, "nz")]),
-    GlFunction(Void, "glNormalStream3dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "3"), "coords")]),
-    GlFunction(Void, "glClientActiveVertexStreamATI", [(GLenum, "stream")]),
-    GlFunction(Void, "glVertexBlendEnviATI", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glVertexBlendEnvfATI", [(GLenum, "pname"), (GLfloat, "param")]),
-
-    # GL_ATI_element_array
-    GlFunction(Void, "glElementPointerATI", [(GLenum, "type"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glDrawElementArrayATI", [(GLenum_mode, "mode"), (GLsizei, "count")]),
-    GlFunction(Void, "glDrawRangeElementArrayATI", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count")]),
-
-    # GL_SUN_mesh_array
-    GlFunction(Void, "glDrawMeshArraysSUN", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "width")]),
-
-    # GL_NV_occlusion_query
-    GlFunction(Void, "glGenOcclusionQueriesNV", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
-    GlFunction(Void, "glDeleteOcclusionQueriesNV", [(GLsizei, "n"), (Array(Const(GLquery), "n"), "ids")]),
-    GlFunction(GLboolean, "glIsOcclusionQueryNV", [(GLquery, "id")], sideeffects=False),
-    GlFunction(Void, "glBeginOcclusionQueryNV", [(GLquery, "id")]),
-    GlFunction(Void, "glEndOcclusionQueryNV", []),
-    GlFunction(Void, "glGetOcclusionQueryivNV", [(GLquery, "id"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetOcclusionQueryivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetOcclusionQueryuivNV", [(GLquery, "id"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetOcclusionQueryuivNV_size(pname)"), "params")], sideeffects=False),
-
-    # GL_NV_point_sprite
-    GlFunction(Void, "glPointParameteriNV", [(GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glPointParameterivNV", [(GLenum, "pname"), (OpaquePointer(Const(GLint)), "params")]),
-
-    # GL_EXT_stencil_two_side
-    GlFunction(Void, "glActiveStencilFaceEXT", [(GLenum, "face")]),
-
-    # GL_APPLE_element_array
-    GlFunction(Void, "glElementPointerAPPLE", [(GLenum, "type"), (Blob(Const(GLvoid), "type"), "pointer")]),
-    GlFunction(Void, "glDrawElementArrayAPPLE", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
-    GlFunction(Void, "glDrawRangeElementArrayAPPLE", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLint, "first"), (GLsizei, "count")]),
-    GlFunction(Void, "glMultiDrawElementArrayAPPLE", [(GLenum_mode, "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glMultiDrawRangeElementArrayAPPLE", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
-
-    # GL_APPLE_fence
-    GlFunction(Void, "glGenFencesAPPLE", [(GLsizei, "n"), Out(Array(GLuint, "n"), "fences")]),
-    GlFunction(Void, "glDeleteFencesAPPLE", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "fences")]),
-    GlFunction(Void, "glSetFenceAPPLE", [(GLuint, "fence")]),
-    GlFunction(GLboolean, "glIsFenceAPPLE", [(GLuint, "fence")], sideeffects=False),
-    GlFunction(GLboolean, "glTestFenceAPPLE", [(GLuint, "fence")]),
-    GlFunction(Void, "glFinishFenceAPPLE", [(GLuint, "fence")]),
-    GlFunction(GLboolean, "glTestObjectAPPLE", [(GLenum, "object"), (GLuint, "name")]),
-    GlFunction(Void, "glFinishObjectAPPLE", [(GLenum, "object"), (GLint, "name")]),
-
-    # GL_APPLE_vertex_array_object
-    GlFunction(Void, "glBindVertexArrayAPPLE", [(GLuint, "array")]),
-    GlFunction(Void, "glDeleteVertexArraysAPPLE", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "arrays")]),
-    GlFunction(Void, "glGenVertexArraysAPPLE", [(GLsizei, "n"), Out(Array(GLuint, "n"), "arrays")]),
-    GlFunction(GLboolean, "glIsVertexArrayAPPLE", [(GLuint, "array")], sideeffects=False),
-
-    # GL_APPLE_vertex_array_range
-    GlFunction(Void, "glVertexArrayRangeAPPLE", [(GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
-    GlFunction(Void, "glFlushVertexArrayRangeAPPLE", [(GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
-    GlFunction(Void, "glVertexArrayParameteriAPPLE", [(GLenum, "pname"), (GLint, "param")]),
-
-    # GL_APPLE_flush_render
-    GlFunction(Void, "glFlushRenderAPPLE", []),
-    GlFunction(Void, "glFinishRenderAPPLE", []),
-    GlFunction(Void, "glSwapAPPLE", []),
-
-    # GL_ATI_draw_buffers
-    GlFunction(Void, "glDrawBuffersATI", [(GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
-
-    # GL_NV_fragment_program
-    GlFunction(Void, "glProgramNamedParameter4fNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glProgramNamedParameter4dNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glProgramNamedParameter4fvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (Array(Const(GLfloat), "4"), "v")]),
-    GlFunction(Void, "glProgramNamedParameter4dvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glGetProgramNamedParameterdvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramNamedParameterfvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
-
-    # GL_NV_half_float
-    GlFunction(Void, "glVertex2hNV", [(GLhalfNV, "x"), (GLhalfNV, "y")]),
-    GlFunction(Void, "glVertex2hvNV", [(Array(Const(GLhalfNV), "2"), "v")]),
-    GlFunction(Void, "glVertex3hNV", [(GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z")]),
-    GlFunction(Void, "glVertex3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glVertex4hNV", [(GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z"), (GLhalfNV, "w")]),
-    GlFunction(Void, "glVertex4hvNV", [(Array(Const(GLhalfNV), "4"), "v")]),
-    GlFunction(Void, "glNormal3hNV", [(GLhalfNV, "nx"), (GLhalfNV, "ny"), (GLhalfNV, "nz")]),
-    GlFunction(Void, "glNormal3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glColor3hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue")]),
-    GlFunction(Void, "glColor3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glColor4hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue"), (GLhalfNV, "alpha")]),
-    GlFunction(Void, "glColor4hvNV", [(Array(Const(GLhalfNV), "4"), "v")]),
-    GlFunction(Void, "glTexCoord1hNV", [(GLhalfNV, "s")]),
-    GlFunction(Void, "glTexCoord1hvNV", [(Pointer(Const(GLhalfNV)), "v")]),
-    GlFunction(Void, "glTexCoord2hNV", [(GLhalfNV, "s"), (GLhalfNV, "t")]),
-    GlFunction(Void, "glTexCoord2hvNV", [(Array(Const(GLhalfNV), "2"), "v")]),
-    GlFunction(Void, "glTexCoord3hNV", [(GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r")]),
-    GlFunction(Void, "glTexCoord3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glTexCoord4hNV", [(GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r"), (GLhalfNV, "q")]),
-    GlFunction(Void, "glTexCoord4hvNV", [(Array(Const(GLhalfNV), "4"), "v")]),
-    GlFunction(Void, "glMultiTexCoord1hNV", [(GLenum, "target"), (GLhalfNV, "s")]),
-    GlFunction(Void, "glMultiTexCoord1hvNV", [(GLenum, "target"), (Pointer(Const(GLhalfNV)), "v")]),
-    GlFunction(Void, "glMultiTexCoord2hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t")]),
-    GlFunction(Void, "glMultiTexCoord2hvNV", [(GLenum, "target"), (Array(Const(GLhalfNV), "2"), "v")]),
-    GlFunction(Void, "glMultiTexCoord3hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r")]),
-    GlFunction(Void, "glMultiTexCoord3hvNV", [(GLenum, "target"), (Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glMultiTexCoord4hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r"), (GLhalfNV, "q")]),
-    GlFunction(Void, "glMultiTexCoord4hvNV", [(GLenum, "target"), (Array(Const(GLhalfNV), "4"), "v")]),
-    GlFunction(Void, "glFogCoordhNV", [(GLhalfNV, "fog")]),
-    GlFunction(Void, "glFogCoordhvNV", [(Pointer(Const(GLhalfNV)), "fog")]),
-    GlFunction(Void, "glSecondaryColor3hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue")]),
-    GlFunction(Void, "glSecondaryColor3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glVertexWeighthNV", [(GLhalfNV, "weight")]),
-    GlFunction(Void, "glVertexWeighthvNV", [(Pointer(Const(GLhalfNV)), "weight")]),
-    GlFunction(Void, "glVertexAttrib1hNV", [(GLuint, "index"), (GLhalfNV, "x")]),
-    GlFunction(Void, "glVertexAttrib1hvNV", [(GLuint, "index"), (Pointer(Const(GLhalfNV)), "v")]),
-    GlFunction(Void, "glVertexAttrib2hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y")]),
-    GlFunction(Void, "glVertexAttrib2hvNV", [(GLuint, "index"), (Array(Const(GLhalfNV), "2"), "v")]),
-    GlFunction(Void, "glVertexAttrib3hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z")]),
-    GlFunction(Void, "glVertexAttrib3hvNV", [(GLuint, "index"), (Array(Const(GLhalfNV), "3"), "v")]),
-    GlFunction(Void, "glVertexAttrib4hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z"), (GLhalfNV, "w")]),
-    GlFunction(Void, "glVertexAttrib4hvNV", [(GLuint, "index"), (Array(Const(GLhalfNV), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribs1hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
-    GlFunction(Void, "glVertexAttribs2hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
-    GlFunction(Void, "glVertexAttribs3hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
-    GlFunction(Void, "glVertexAttribs4hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
-
-    # GL_NV_pixel_data_range
-    GlFunction(Void, "glPixelDataRangeNV", [(GLenum, "target"), (GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
-    GlFunction(Void, "glFlushPixelDataRangeNV", [(GLenum, "target")]),
-
-    # GL_NV_primitive_restart
-    GlFunction(Void, "glPrimitiveRestartNV", []),
-    GlFunction(Void, "glPrimitiveRestartIndexNV", [(GLuint, "index")]),
-
-    # GL_ATI_map_object_buffer
-    GlFunction(GLmap, "glMapObjectBufferATI", [(GLbuffer, "buffer")]),
-    GlFunction(Void, "glUnmapObjectBufferATI", [(GLbuffer, "buffer")]),
-
-    # GL_ATI_separate_stencil
-    GlFunction(Void, "glStencilOpSeparateATI", [(GLenum, "face"), (GLenum, "sfail"), (GLenum, "dpfail"), (GLenum, "dppass")]),
-    GlFunction(Void, "glStencilFuncSeparateATI", [(GLenum, "frontfunc"), (GLenum, "backfunc"), (GLint, "ref"), (GLuint, "mask")]),
-
-    # GL_ATI_vertex_attrib_array_object
-    GlFunction(Void, "glVertexAttribArrayObjectATI", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (GLuint, "buffer"), (GLuint, "offset")]),
-    GlFunction(Void, "glGetVertexAttribArrayObjectfvATI", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "pname"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribArrayObjectivATI", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "pname"), "params")], sideeffects=False),
-
-    # GL_EXT_depth_bounds_test
-    GlFunction(Void, "glDepthBoundsEXT", [(GLclampd, "zmin"), (GLclampd, "zmax")]),
-
-    # GL_EXT_blend_equation_separate
-    GlFunction(Void, "glBlendEquationSeparateEXT", [(GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
-
-    # GL_EXT_framebuffer_object
-    GlFunction(GLboolean, "glIsRenderbufferEXT", [(GLrenderbuffer, "renderbuffer")], sideeffects=False),
-    GlFunction(Void, "glBindRenderbufferEXT", [(GLenum, "target"), (GLrenderbuffer, "renderbuffer")]),
-    GlFunction(Void, "glDeleteRenderbuffersEXT", [(GLsizei, "n"), (Array(Const(GLrenderbuffer), "n"), "renderbuffers")]),
-    GlFunction(Void, "glGenRenderbuffersEXT", [(GLsizei, "n"), Out(Array(GLrenderbuffer, "n"), "renderbuffers")]),
-    GlFunction(Void, "glRenderbufferStorageEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetRenderbufferParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(GLboolean, "glIsFramebufferEXT", [(GLframebuffer, "framebuffer")], sideeffects=False),
-    GlFunction(Void, "glBindFramebufferEXT", [(GLenum, "target"), (GLframebuffer, "framebuffer")]),
-    GlFunction(Void, "glDeleteFramebuffersEXT", [(GLsizei, "n"), (Array(Const(GLframebuffer), "n"), "framebuffers")]),
-    GlFunction(Void, "glGenFramebuffersEXT", [(GLsizei, "n"), Out(Array(GLframebuffer, "n"), "framebuffers")]),
-    GlFunction(GLenum, "glCheckFramebufferStatusEXT", [(GLenum, "target")]),
-    GlFunction(Void, "glFramebufferTexture1DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glFramebufferTexture2DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glFramebufferTexture3DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
-    GlFunction(Void, "glFramebufferRenderbufferEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
-    GlFunction(Void, "glGetFramebufferAttachmentParameterivEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGenerateMipmapEXT", [(GLenum, "target")]),
-
-    # GL_GREMEDY_string_marker
-    GlFunction(Void, "glStringMarkerGREMEDY", [(GLsizei, "len"), (Const(String("GLvoid *", "len ? len : strlen((const char *)string)")), "string")], sideeffects=False),
-
-    # GL_EXT_stencil_clear_tag
-    GlFunction(Void, "glStencilClearTagEXT", [(GLsizei, "stencilTagBits"), (GLuint, "stencilClearTag")]),
-
-    # GL_EXT_framebuffer_blit
-    GlFunction(Void, "glBlitFramebufferEXT", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
-
-    # GL_EXT_framebuffer_multisample
-    GlFunction(Void, "glRenderbufferStorageMultisampleEXT", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-
-    # GL_EXT_timer_query
-    GlFunction(Void, "glGetQueryObjecti64vEXT", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLint64EXT), "params")], sideeffects=False),
-    GlFunction(Void, "glGetQueryObjectui64vEXT", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLuint64EXT), "params")], sideeffects=False),
-
-    # GL_EXT_gpu_program_parameters
-    GlFunction(Void, "glProgramEnvParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "params")]),
-    GlFunction(Void, "glProgramLocalParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "params")]),
-
-    # GL_APPLE_flush_buffer_range
-    GlFunction(Void, "glBufferParameteriAPPLE", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glFlushMappedBufferRangeAPPLE", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
-
-    # GL_NV_gpu_program4
-    GlFunction(Void, "glProgramLocalParameterI4iNV", [(GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glProgramLocalParameterI4ivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLint), "4"), "params")]),
-    GlFunction(Void, "glProgramLocalParametersI4ivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "params")]),
-    GlFunction(Void, "glProgramLocalParameterI4uiNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
-    GlFunction(Void, "glProgramLocalParameterI4uivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLuint), "4"), "params")]),
-    GlFunction(Void, "glProgramLocalParametersI4uivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "params")]),
-    GlFunction(Void, "glProgramEnvParameterI4iNV", [(GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glProgramEnvParameterI4ivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLint), "4"), "params")]),
-    GlFunction(Void, "glProgramEnvParametersI4ivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "params")]),
-    GlFunction(Void, "glProgramEnvParameterI4uiNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
-    GlFunction(Void, "glProgramEnvParameterI4uivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLuint), "4"), "params")]),
-    GlFunction(Void, "glProgramEnvParametersI4uivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "params")]),
-    GlFunction(Void, "glGetProgramLocalParameterIivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramLocalParameterIuivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramEnvParameterIivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetProgramEnvParameterIuivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
-
-    # GL_NV_geometry_program4
-    GlFunction(Void, "glProgramVertexLimitNV", [(GLenum, "target"), (GLint, "limit")]),
-    GlFunction(Void, "glFramebufferTextureEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glFramebufferTextureLayerEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
-    GlFunction(Void, "glFramebufferTextureFaceEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
-
-    # GL_EXT_geometry_shader4
-    GlFunction(Void, "glProgramParameteriEXT", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
-
-    # GL_NV_vertex_program4
-    GlFunction(Void, "glVertexAttribI1iEXT", [(GLuint, "index"), (GLint, "x")]),
-    GlFunction(Void, "glVertexAttribI2iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y")]),
-    GlFunction(Void, "glVertexAttribI3iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
-    GlFunction(Void, "glVertexAttribI4iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glVertexAttribI1uiEXT", [(GLuint, "index"), (GLuint, "x")]),
-    GlFunction(Void, "glVertexAttribI2uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y")]),
-    GlFunction(Void, "glVertexAttribI3uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z")]),
-    GlFunction(Void, "glVertexAttribI4uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
-    GlFunction(Void, "glVertexAttribI1ivEXT", [(GLuint, "index"), (Pointer(Const(GLint)), "v")]),
-    GlFunction(Void, "glVertexAttribI2ivEXT", [(GLuint, "index"), (Array(Const(GLint), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribI3ivEXT", [(GLuint, "index"), (Array(Const(GLint), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribI4ivEXT", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI1uivEXT", [(GLuint, "index"), (Pointer(Const(GLuint)), "v")]),
-    GlFunction(Void, "glVertexAttribI2uivEXT", [(GLuint, "index"), (Array(Const(GLuint), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribI3uivEXT", [(GLuint, "index"), (Array(Const(GLuint), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribI4uivEXT", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4bvEXT", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4svEXT", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4ubvEXT", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribI4usvEXT", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribIPointerEXT", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glGetVertexAttribIivEXT", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribIuivEXT", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLuint), "params")], sideeffects=False),
-
-    # GL_EXT_gpu_shader4
-    GlFunction(Void, "glGetUniformuivEXT", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLuint, "__glGetUniformuivEXT_size(program, location)"), "params")], sideeffects=False),
-    GlFunction(Void, "glBindFragDataLocationEXT", [(GLprogram, "program"), (GLuint, "color"), (Const(GLstring), "name")]),
-    GlFunction(GLlocation, "glGetFragDataLocationEXT", [(GLprogram, "program"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glUniform1uiEXT", [(GLlocation, "location"), (GLuint, "v0")]),
-    GlFunction(Void, "glUniform2uiEXT", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
-    GlFunction(Void, "glUniform3uiEXT", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
-    GlFunction(Void, "glUniform4uiEXT", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
-    GlFunction(Void, "glUniform1uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
-    GlFunction(Void, "glUniform2uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
-
-    # GL_EXT_draw_instanced
-    GlFunction(Void, "glDrawArraysInstancedEXT", [(GLenum_mode, "mode"), (GLint, "start"), (GLsizei, "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glDrawElementsInstancedEXT", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount")]),
-
-    # GL_EXT_texture_buffer_object
-    GlFunction(Void, "glTexBufferEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
-
-    # GL_NV_depth_buffer_float
-    GlFunction(Void, "glDepthRangedNV", [(GLdouble, "zNear"), (GLdouble, "zFar")]),
-    GlFunction(Void, "glClearDepthdNV", [(GLdouble, "depth")]),
-    GlFunction(Void, "glDepthBoundsdNV", [(GLdouble, "zmin"), (GLdouble, "zmax")]),
-
-    # GL_NV_framebuffer_multisample_coverage
-    GlFunction(Void, "glRenderbufferStorageMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-
-    # GL_NV_parameter_buffer_object
-    GlFunction(Void, "glProgramBufferParametersfvNV", [(GLenum, "target"), (GLbuffer, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "params")]),
-    GlFunction(Void, "glProgramBufferParametersIivNV", [(GLenum, "target"), (GLbuffer, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count"), "params")]),
-    GlFunction(Void, "glProgramBufferParametersIuivNV", [(GLenum, "target"), (GLbuffer, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "params")]),
-
-    # GL_EXT_draw_buffers2
-    GlFunction(Void, "glColorMaskIndexedEXT", [(GLuint, "index"), (GLboolean, "r"), (GLboolean, "g"), (GLboolean, "b"), (GLboolean, "a")]),
-    GlFunction(Void, "glGetBooleanIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLboolean, "__glGetBooleanIndexedvEXT_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetIntegerIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLint, "__glGetIntegerIndexedvEXT_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glEnableIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
-    GlFunction(Void, "glDisableIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
-    GlFunction(GLboolean, "glIsEnabledIndexedEXT", [(GLenum, "target"), (GLuint, "index")], sideeffects=False),
-
-    # GL_NV_transform_feedback
-    GlFunction(Void, "glBeginTransformFeedbackNV", [(GLenum_mode, "primitiveMode")]),
-    GlFunction(Void, "glEndTransformFeedbackNV", []),
-    GlFunction(Void, "glTransformFeedbackAttribsNV", [(GLuint, "count"), (OpaqueArray(Const(GLint), "__glTransformFeedbackAttribsNV_size(count)"), "attribs"), (GLenum, "bufferMode")]),
-    GlFunction(Void, "glBindBufferRangeNV", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
-    GlFunction(Void, "glBindBufferOffsetNV", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset")]),
-    GlFunction(Void, "glBindBufferBaseNV", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glTransformFeedbackVaryingsNV", [(GLprogram, "program"), (GLsizei, "count"), (Array(Const(GLint), "count"), "locations"), (GLenum, "bufferMode")]),
-    GlFunction(Void, "glActiveVaryingNV", [(GLprogram, "program"), (Const(GLstring), "name")]),
-    GlFunction(GLlocation, "glGetVaryingLocationNV", [(GLprogram, "program"), (Const(GLstring), "name")]),
-    GlFunction(Void, "glGetActiveVaryingNV", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
-    GlFunction(Void, "glGetTransformFeedbackVaryingNV", [(GLprogram, "program"), (GLuint, "index"), Out(Pointer(GLlocation), "location")], sideeffects=False),
-    GlFunction(Void, "glTransformFeedbackStreamAttribsNV", [(GLsizei, "count"), (Array(Const(GLint), "count"), "attribs"), (GLsizei, "nbuffers"), (Array(Const(GLint), "nbuffers"), "bufstreams"), (GLenum, "bufferMode")]),
-
-    # GL_EXT_bindable_uniform
-    GlFunction(Void, "glUniformBufferEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLbuffer, "buffer")]),
-    GlFunction(GLint, "glGetUniformBufferSizeEXT", [(GLprogram, "program"), (GLlocation, "location")]),
-    GlFunction(GLintptr, "glGetUniformOffsetEXT", [(GLprogram, "program"), (GLlocation, "location")]),
-
-    # GL_EXT_texture_integer
-    GlFunction(Void, "glTexParameterIivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glTexParameterIivEXT_size(pname)"), "params")]),
-    GlFunction(Void, "glTexParameterIuivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLuint), "__glTexParameterIuivEXT_size(pname)"), "params")]),
-    GlFunction(Void, "glGetTexParameterIivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTexParameterIivEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTexParameterIuivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetTexParameterIuivEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glClearColorIiEXT", [(GLint, "red"), (GLint, "green"), (GLint, "blue"), (GLint, "alpha")]),
-    GlFunction(Void, "glClearColorIuiEXT", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue"), (GLuint, "alpha")]),
-
-    # GL_GREMEDY_frame_terminator
-    GlFunction(Void, "glFrameTerminatorGREMEDY", []),
-
-    # GL_NV_conditional_render
-    GlFunction(Void, "glBeginConditionalRenderNV", [(GLuint, "id"), (GLenum, "mode")]),
-    GlFunction(Void, "glEndConditionalRenderNV", []),
-
-    # GL_NV_present_video
-    GlFunction(Void, "glPresentFrameKeyedNV", [(GLuint, "video_slot"), (GLuint64EXT, "minPresentTime"), (GLuint, "beginPresentTimeId"), (GLuint, "presentDurationId"), (GLenum, "type"), (GLenum, "target0"), (GLuint, "fill0"), (GLuint, "key0"), (GLenum, "target1"), (GLuint, "fill1"), (GLuint, "key1")]),
-    GlFunction(Void, "glPresentFrameDualFillNV", [(GLuint, "video_slot"), (GLuint64EXT, "minPresentTime"), (GLuint, "beginPresentTimeId"), (GLuint, "presentDurationId"), (GLenum, "type"), (GLenum, "target0"), (GLuint, "fill0"), (GLenum, "target1"), (GLuint, "fill1"), (GLenum, "target2"), (GLuint, "fill2"), (GLenum, "target3"), (GLuint, "fill3")]),
-    GlFunction(Void, "glGetVideoivNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVideouivNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetVideouivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVideoi64vNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint64EXT, "__glGetVideoi64vNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVideoui64vNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetVideoui64vNV_size(pname)"), "params")], sideeffects=False),
-
-    # GL_EXT_transform_feedback
-    GlFunction(Void, "glBeginTransformFeedbackEXT", [(GLenum_mode, "primitiveMode")]),
-    GlFunction(Void, "glEndTransformFeedbackEXT", []),
-    GlFunction(Void, "glBindBufferRangeEXT", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
-    GlFunction(Void, "glBindBufferOffsetEXT", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset")]),
-    GlFunction(Void, "glBindBufferBaseEXT", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glTransformFeedbackVaryingsEXT", [(GLprogram, "program"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "varyings"), (GLenum, "bufferMode")]),
-    GlFunction(Void, "glGetTransformFeedbackVaryingEXT", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
-
-    # GL_EXT_direct_state_access
-    GlFunction(Void, "glClientAttribDefaultEXT", [(GLbitfield_client_attrib, "mask")]),
-    GlFunction(Void, "glPushClientAttribDefaultEXT", [(GLbitfield_client_attrib, "mask")]),
-    GlFunction(Void, "glMatrixLoadfEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMatrixLoaddEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glMatrixMultfEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMatrixMultdEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glMatrixLoadIdentityEXT", [(GLenum, "mode")]),
-    GlFunction(Void, "glMatrixRotatefEXT", [(GLenum, "mode"), (GLfloat, "angle"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glMatrixRotatedEXT", [(GLenum, "mode"), (GLdouble, "angle"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glMatrixScalefEXT", [(GLenum, "mode"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glMatrixScaledEXT", [(GLenum, "mode"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glMatrixTranslatefEXT", [(GLenum, "mode"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
-    GlFunction(Void, "glMatrixTranslatedEXT", [(GLenum, "mode"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glMatrixFrustumEXT", [(GLenum, "mode"), (GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
-    GlFunction(Void, "glMatrixOrthoEXT", [(GLenum, "mode"), (GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
-    GlFunction(Void, "glMatrixPopEXT", [(GLenum, "mode")]),
-    GlFunction(Void, "glMatrixPushEXT", [(GLenum, "mode")]),
-    GlFunction(Void, "glMatrixLoadTransposefEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMatrixLoadTransposedEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glMatrixMultTransposefEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
-    GlFunction(Void, "glMatrixMultTransposedEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
-    GlFunction(Void, "glTextureParameterfEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glTextureParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glTextureParameteriEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glTextureParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureImage1DEXT_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureImage2DEXT_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureSubImage1DEXT_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureSubImage2DEXT_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glCopyTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
-    GlFunction(Void, "glCopyTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
-    GlFunction(Void, "glCopyTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glCopyTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetTextureImageEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetTextureImageEXT_size(target, level, format, type)"), "pixels")], sideeffects=False),
-    GlFunction(Void, "glGetTextureParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTextureParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTextureLevelParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTextureLevelParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glTextureImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureSubImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glCopyTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glMultiTexParameterfEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glMultiTexParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexParameteriEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glMultiTexParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexImage1DEXT_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexImage2DEXT_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexSubImage1DEXT_size(format, type, width)"), "pixels")]),
-    GlFunction(Void, "glMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexSubImage2DEXT_size(format, type, width, height)"), "pixels")]),
-    GlFunction(Void, "glCopyMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
-    GlFunction(Void, "glCopyMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
-    GlFunction(Void, "glCopyMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
-    GlFunction(Void, "glCopyMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetMultiTexImageEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMultiTexImageEXT_size(target, level, format, type)"), "pixels")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexLevelParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexLevelParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glMultiTexImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexSubImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
-    GlFunction(Void, "glCopyMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glBindMultiTextureEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLtexture, "texture")]),
-    GlFunction(Void, "glEnableClientStateIndexedEXT", [(GLenum, "array"), (GLuint, "index")]),
-    GlFunction(Void, "glDisableClientStateIndexedEXT", [(GLenum, "array"), (GLuint, "index")]),
-    GlFunction(Void, "glMultiTexCoordPointerEXT", [(GLenum, "texunit"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
-    GlFunction(Void, "glMultiTexEnvfEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glMultiTexEnvfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexEnviEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glMultiTexEnvivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexGendEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLdouble, "param")]),
-    GlFunction(Void, "glMultiTexGendvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLdouble), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexGenfEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLfloat, "param")]),
-    GlFunction(Void, "glMultiTexGenfvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexGeniEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLint, "param")]),
-    GlFunction(Void, "glMultiTexGenivEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glGetMultiTexEnvfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexEnvivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexGendvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(Array(GLdouble, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexGenfvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexGenivEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetFloatIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetFloatIndexedvEXT_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetDoubleIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLdouble, "__glGetDoubleIndexedvEXT_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGetPointerIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetPointerIndexedvEXT_size(target)"), "data")], sideeffects=False),
-    GlFunction(Void, "glCompressedTextureImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glGetCompressedTextureImageEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "lod"), Out(OpaqueBlob(GLvoid, "__glGetCompressedTextureImageEXT_size(target, lod)"), "img")], sideeffects=False),
-    GlFunction(Void, "glCompressedMultiTexImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glCompressedMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
-    GlFunction(Void, "glGetCompressedMultiTexImageEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "lod"), Out(OpaqueBlob(GLvoid, "__glGetCompressedMultiTexImageEXT_size(target, lod)"), "img")], sideeffects=False),
-    GlFunction(Void, "glNamedProgramStringEXT", [(GLprogram, "program"), (GLenum, "target"), (GLenum, "format"), (GLsizei, "len"), (Const(String("GLvoid *", "len")), "string")]),
-    GlFunction(Void, "glNamedProgramLocalParameter4dEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glNamedProgramLocalParameter4dvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "params")]),
-    GlFunction(Void, "glNamedProgramLocalParameter4fEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
-    GlFunction(Void, "glNamedProgramLocalParameter4fvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "params")]),
-    GlFunction(Void, "glGetNamedProgramLocalParameterdvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedProgramLocalParameterfvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedProgramivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedProgramStringEXT", [(GLprogram, "program"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueBlob(GLvoid, "__glGetNamedProgramStringEXT_size(program,pname)"), "string")], sideeffects=False),
-    GlFunction(Void, "glNamedProgramLocalParameters4fvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "params")]),
-    GlFunction(Void, "glNamedProgramLocalParameterI4iEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
-    GlFunction(Void, "glNamedProgramLocalParameterI4ivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLint), "4"), "params")]),
-    GlFunction(Void, "glNamedProgramLocalParametersI4ivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "params")]),
-    GlFunction(Void, "glNamedProgramLocalParameterI4uiEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
-    GlFunction(Void, "glNamedProgramLocalParameterI4uivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLuint), "4"), "params")]),
-    GlFunction(Void, "glNamedProgramLocalParametersI4uivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "params")]),
-    GlFunction(Void, "glGetNamedProgramLocalParameterIivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedProgramLocalParameterIuivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
-    GlFunction(Void, "glTextureParameterIivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glTextureParameterIuivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLuint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glGetTextureParameterIivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetTextureParameterIuivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glMultiTexParameterIivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glMultiTexParameterIuivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLuint), "__gl_param_size(pname)"), "params")]),
-    GlFunction(Void, "glGetMultiTexParameterIivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetMultiTexParameterIuivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glProgramUniform1fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0")]),
-    GlFunction(Void, "glProgramUniform2fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
-    GlFunction(Void, "glProgramUniform3fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
-    GlFunction(Void, "glProgramUniform4fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
-    GlFunction(Void, "glProgramUniform1iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0")]),
-    GlFunction(Void, "glProgramUniform2iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
-    GlFunction(Void, "glProgramUniform3iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
-    GlFunction(Void, "glProgramUniform4iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
-    GlFunction(Void, "glProgramUniform1fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniform1ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*3"), "value")]),
-    GlFunction(Void, "glProgramUniform1uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0")]),
-    GlFunction(Void, "glProgramUniform2uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
-    GlFunction(Void, "glProgramUniform3uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
-    GlFunction(Void, "glProgramUniform4uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
-    GlFunction(Void, "glProgramUniform1uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
-    GlFunction(Void, "glNamedBufferDataEXT", [(GLbuffer, "buffer"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
-    GlFunction(Void, "glNamedBufferSubDataEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data")]),
-    GlFunction(GLmap, "glMapNamedBufferEXT", [(GLbuffer, "buffer"), (GLenum, "access")]),
-    GlFunction(GLboolean, "glUnmapNamedBufferEXT", [(GLbuffer, "buffer")]),
-    GlFunction(GLmap, "glMapNamedBufferRangeEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "length"), (GLbitfield_access, "access")]),
-    GlFunction(Void, "glFlushMappedNamedBufferRangeEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "length")]),
-    GlFunction(Void, "glNamedCopyBufferSubDataEXT", [(GLbuffer, "readBuffer"), (GLbuffer, "writeBuffer"), (GLintptr, "readOffset"), (GLintptr, "writeOffset"), (GLsizeiptr, "size")]),
-    GlFunction(Void, "glGetNamedBufferParameterivEXT", [(GLbuffer, "buffer"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedBufferPointervEXT", [(GLbuffer, "buffer"), (GLenum, "pname"), Out(Array(OpaquePointer(GLvoid), "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedBufferSubDataEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size"), Out(OpaqueBlob(GLvoid, "__glGetNamedBufferSubDataEXT_size(size)"), "data")], sideeffects=False),
-    GlFunction(Void, "glTextureBufferEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glMultiTexBufferEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
-    GlFunction(Void, "glNamedRenderbufferStorageEXT", [(GLrenderbuffer, "renderbuffer"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glGetNamedRenderbufferParameterivEXT", [(GLrenderbuffer, "renderbuffer"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(GLenum, "glCheckNamedFramebufferStatusEXT", [(GLframebuffer, "framebuffer"), (GLenum, "target")]),
-    GlFunction(Void, "glNamedFramebufferTexture1DEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glNamedFramebufferTexture2DEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glNamedFramebufferTexture3DEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
-    GlFunction(Void, "glNamedFramebufferRenderbufferEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
-    GlFunction(Void, "glGetNamedFramebufferAttachmentParameterivEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGenerateTextureMipmapEXT", [(GLtexture, "texture"), (GLenum, "target")]),
-    GlFunction(Void, "glGenerateMultiTexMipmapEXT", [(GLenum, "texunit"), (GLenum, "target")]),
-    GlFunction(Void, "glFramebufferDrawBufferEXT", [(GLframebuffer, "framebuffer"), (GLenum, "mode")]),
-    GlFunction(Void, "glFramebufferDrawBuffersEXT", [(GLframebuffer, "framebuffer"), (GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
-    GlFunction(Void, "glFramebufferReadBufferEXT", [(GLframebuffer, "framebuffer"), (GLenum, "mode")]),
-    GlFunction(Void, "glGetFramebufferParameterivEXT", [(GLframebuffer, "framebuffer"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glNamedRenderbufferStorageMultisampleEXT", [(GLrenderbuffer, "renderbuffer"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glNamedRenderbufferStorageMultisampleCoverageEXT", [(GLrenderbuffer, "renderbuffer"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glNamedFramebufferTextureEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
-    GlFunction(Void, "glNamedFramebufferTextureLayerEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
-    GlFunction(Void, "glNamedFramebufferTextureFaceEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
-    GlFunction(Void, "glTextureRenderbufferEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLuint, "renderbuffer")]),
-    GlFunction(Void, "glMultiTexRenderbufferEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLuint, "renderbuffer")]),
-    GlFunction(Void, "glProgramUniform1dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x")]),
-    GlFunction(Void, "glProgramUniform2dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glProgramUniform3dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glProgramUniform4dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glProgramUniform1dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*3"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix2x4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix3x4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*4"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*2"), "value")]),
-    GlFunction(Void, "glProgramUniformMatrix4x3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*3"), "value")]),
-    GlFunction(Void, "glVertexArrayVertexOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayColorOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayEdgeFlagOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayIndexOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayNormalOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayTexCoordOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayMultiTexCoordOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "texunit"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayFogCoordOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArraySecondaryColorOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayVertexAttribOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glVertexArrayVertexAttribIOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-    GlFunction(Void, "glEnableVertexArrayEXT", [(GLarray, "vaobj"), (GLenum, "array")]),
-    GlFunction(Void, "glDisableVertexArrayEXT", [(GLarray, "vaobj"), (GLenum, "array")]),
-    GlFunction(Void, "glEnableVertexArrayAttribEXT", [(GLarray, "vaobj"), (GLuint, "index")]),
-    GlFunction(Void, "glDisableVertexArrayAttribEXT", [(GLarray, "vaobj"), (GLuint, "index")]),
-    GlFunction(Void, "glGetVertexArrayIntegervEXT", [(GLarray, "vaobj"), (GLenum, "pname"), Out(Pointer(GLint), "param")]),
-    GlFunction(Void, "glGetVertexArrayPointervEXT", [(GLarray, "vaobj"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "param")]),
-    GlFunction(Void, "glGetVertexArrayIntegeri_vEXT", [(GLarray, "vaobj"), (GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLint), "param")]),
-    GlFunction(Void, "glGetVertexArrayPointeri_vEXT", [(GLarray, "vaobj"), (GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "param")]),
-
-    # GL_NV_explicit_multisample
-    GlFunction(Void, "glGetMultisamplefvNV", [(GLenum, "pname"), (GLuint, "index"), Out(Array(GLfloat, "2"), "val")], sideeffects=False),
-    GlFunction(Void, "glSampleMaskIndexedNV", [(GLuint, "index"), (GLbitfield, "mask")]),
-    GlFunction(Void, "glTexRenderbufferNV", [(GLenum, "target"), (GLuint, "renderbuffer")]),
-
-    # GL_NV_transform_feedback2
-    GlFunction(Void, "glBindTransformFeedbackNV", [(GLenum, "target"), (GLfeedback, "id")]),
-    GlFunction(Void, "glDeleteTransformFeedbacksNV", [(GLsizei, "n"), (Array(Const(GLfeedback), "n"), "ids")]),
-    GlFunction(Void, "glGenTransformFeedbacksNV", [(GLsizei, "n"), Out(Array(GLfeedback, "n"), "ids")]),
-    GlFunction(GLboolean, "glIsTransformFeedbackNV", [(GLfeedback, "id")], sideeffects=False),
-    GlFunction(Void, "glPauseTransformFeedbackNV", []),
-    GlFunction(Void, "glResumeTransformFeedbackNV", []),
-    GlFunction(Void, "glDrawTransformFeedbackNV", [(GLenum_mode, "mode"), (GLfeedback, "id")]),
-
-    # GL_AMD_performance_monitor
-    GlFunction(Void, "glGetPerfMonitorGroupsAMD", [Out(Pointer(GLint), "numGroups"), (GLsizei, "groupsSize"), Out(Array(GLuint, "groupsSize"), "groups")], sideeffects=False),
-    GlFunction(Void, "glGetPerfMonitorCountersAMD", [(GLuint, "group"), Out(Pointer(GLint), "numCounters"), Out(Pointer(GLint), "maxActiveCounters"), (GLsizei, "counterSize"), Out(Array(GLuint, "counterSize"), "counters")], sideeffects=False),
-    GlFunction(Void, "glGetPerfMonitorGroupStringAMD", [(GLuint, "group"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "groupString")], sideeffects=False),
-    GlFunction(Void, "glGetPerfMonitorCounterStringAMD", [(GLuint, "group"), (GLuint, "counter"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "counterString")], sideeffects=False),
-    GlFunction(Void, "glGetPerfMonitorCounterInfoAMD", [(GLuint, "group"), (GLuint, "counter"), (GLenum, "pname"), Out(OpaqueBlob(GLvoid, "__glGetPerfMonitorCounterInfoAMD_size(pname)"), "data")], sideeffects=False),
-    GlFunction(Void, "glGenPerfMonitorsAMD", [(GLsizei, "n"), Out(Array(GLuint, "n"), "monitors")]),
-    GlFunction(Void, "glDeletePerfMonitorsAMD", [(GLsizei, "n"), Out(Array(GLuint, "n"), "monitors")]),
-    GlFunction(Void, "glSelectPerfMonitorCountersAMD", [(GLuint, "monitor"), (GLboolean, "enable"), (GLuint, "group"), (GLint, "numCounters"), Out(Array(GLuint, "numCounters"), "counterList")]),
-    GlFunction(Void, "glBeginPerfMonitorAMD", [(GLuint, "monitor")]),
-    GlFunction(Void, "glEndPerfMonitorAMD", [(GLuint, "monitor")]),
-    GlFunction(Void, "glGetPerfMonitorCounterDataAMD", [(GLuint, "monitor"), (GLenum, "pname"), (GLsizei, "dataSize"), Out(Array(GLuint, "dataSize"), "data"), Out(Pointer(GLint), "bytesWritten")], sideeffects=False),
-
-    # GL_AMD_vertex_shader_tesselator
-    GlFunction(Void, "glTessellationFactorAMD", [(GLfloat, "factor")]),
-    GlFunction(Void, "glTessellationModeAMD", [(GLenum, "mode")]),
-
-    # GL_EXT_provoking_vertex
-    GlFunction(Void, "glProvokingVertexEXT", [(GLenum, "mode")]),
-
-    # GL_AMD_draw_buffers_blend
-    GlFunction(Void, "glBlendFuncIndexedAMD", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
-    GlFunction(Void, "glBlendFuncSeparateIndexedAMD", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
-    GlFunction(Void, "glBlendEquationIndexedAMD", [(GLuint, "buf"), (GLenum, "mode")]),
-    GlFunction(Void, "glBlendEquationSeparateIndexedAMD", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
-
-    # GL_APPLE_texture_range
-    GlFunction(Void, "glTextureRangeAPPLE", [(GLenum, "target"), (GLsizei, "length"), (Blob(Const(GLvoid), "length"), "pointer")]),
-    GlFunction(Void, "glGetTexParameterPointervAPPLE", [(GLenum, "target"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
-
-    # GL_APPLE_vertex_program_evaluators
-    GlFunction(Void, "glEnableVertexAttribAPPLE", [(GLuint, "index"), (GLenum, "pname")]),
-    GlFunction(Void, "glDisableVertexAttribAPPLE", [(GLuint, "index"), (GLenum, "pname")]),
-    GlFunction(GLboolean, "glIsVertexAttribEnabledAPPLE", [(GLuint, "index"), (GLenum, "pname")], sideeffects=False),
-    GlFunction(Void, "glMapVertexAttrib1dAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "stride"), (GLint, "order"), (OpaqueArray(Const(GLdouble), "__glMapVertexAttrib1dAPPLE_size(size, stride, order)"), "points")]),
-    GlFunction(Void, "glMapVertexAttrib1fAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "stride"), (GLint, "order"), (OpaqueArray(Const(GLfloat), "__glMapVertexAttrib1fAPPLE_size(size, stride, order)"), "points")]),
-    GlFunction(Void, "glMapVertexAttrib2dAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (OpaqueArray(Const(GLdouble), "__glMapVertexAttrib2dAPPLE_size(size, ustride, uorder, vstride, vorder)"), "points")]),
-    GlFunction(Void, "glMapVertexAttrib2fAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (OpaqueArray(Const(GLfloat), "__glMapVertexAttrib2fAPPLE_size(size, ustride, uorder, vstride, vorder)"), "points")]),
-
-    # GL_APPLE_object_purgeable
-    GlFunction(GLenum, "glObjectPurgeableAPPLE", [(GLenum, "objectType"), (GLuint, "name"), (GLenum, "option")]),
-    GlFunction(GLenum, "glObjectUnpurgeableAPPLE", [(GLenum, "objectType"), (GLuint, "name"), (GLenum, "option")]),
-    GlFunction(Void, "glGetObjectParameterivAPPLE", [(GLenum, "objectType"), (GLuint, "name"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetObjectParameterivAPPLE_size(pname)"), "params")], sideeffects=False),
-
-    # GL_NV_video_capture
-    GlFunction(Void, "glBeginVideoCaptureNV", [(GLuint, "video_capture_slot")]),
-    GlFunction(Void, "glBindVideoCaptureStreamBufferNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "frame_region"), (GLintptrARB, "offset")]),
-    GlFunction(Void, "glBindVideoCaptureStreamTextureNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "frame_region"), (GLenum, "target"), (GLuint, "texture")]),
-    GlFunction(Void, "glEndVideoCaptureNV", [(GLuint, "video_capture_slot")]),
-    GlFunction(Void, "glGetVideoCaptureivNV", [(GLuint, "video_capture_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoCaptureivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVideoCaptureStreamivNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoCaptureStreamivNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVideoCaptureStreamfvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetVideoCaptureStreamfvNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVideoCaptureStreamdvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVideoCaptureStreamdvNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(GLenum, "glVideoCaptureNV", [(GLuint, "video_capture_slot"), Out(Pointer(GLuint), "sequence_num"), Out(Pointer(GLuint64EXT), "capture_time")]),
-    GlFunction(Void, "glVideoCaptureStreamParameterivNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glVideoCaptureStreamParameterivNV_size(pname)"), "params")]),
-    GlFunction(Void, "glVideoCaptureStreamParameterfvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glVideoCaptureStreamParameterfvNV_size(pname)"), "params")]),
-    GlFunction(Void, "glVideoCaptureStreamParameterdvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), (OpaqueArray(Const(GLdouble), "__glVideoCaptureStreamParameterdvNV_size(pname)"), "params")]),
-
-    # GL_NV_copy_image
-    GlFunction(Void, "glCopyImageSubDataNV", [(GLuint, "srcName"), (GLenum, "srcTarget"), (GLint, "srcLevel"), (GLint, "srcX"), (GLint, "srcY"), (GLint, "srcZ"), (GLuint, "dstName"), (GLenum, "dstTarget"), (GLint, "dstLevel"), (GLint, "dstX"), (GLint, "dstY"), (GLint, "dstZ"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
-
-    # GL_EXT_separate_shader_objects
-    GlFunction(Void, "glUseShaderProgramEXT", [(GLenum, "type"), (GLprogram, "program")]),
-    GlFunction(Void, "glActiveProgramEXT", [(GLprogram, "program")]),
-    GlFunction(GLprogram, "glCreateShaderProgramEXT", [(GLenum, "type"), (Const(GLstring), "string")]),
-
-    # GL_NV_shader_buffer_load
-    GlFunction(Void, "glMakeBufferResidentNV", [(GLenum, "target"), (GLenum, "access")]),
-    GlFunction(Void, "glMakeBufferNonResidentNV", [(GLenum, "target")]),
-    GlFunction(GLboolean, "glIsBufferResidentNV", [(GLenum, "target")], sideeffects=False),
-    GlFunction(Void, "glMakeNamedBufferResidentNV", [(GLuint, "buffer"), (GLenum, "access")]),
-    GlFunction(Void, "glMakeNamedBufferNonResidentNV", [(GLuint, "buffer")]),
-    GlFunction(GLboolean, "glIsNamedBufferResidentNV", [(GLuint, "buffer")], sideeffects=False),
-    GlFunction(Void, "glGetBufferParameterui64vNV", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetBufferParameterui64vNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetNamedBufferParameterui64vNV", [(GLuint, "buffer"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetNamedBufferParameterui64vNV_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetIntegerui64vNV", [(GLenum, "value"), Out(OpaqueArray(GLuint64EXT, "__glGetIntegerui64vNV_size(value)"), "result")], sideeffects=False),
-    GlFunction(Void, "glUniformui64NV", [(GLint, "location"), (GLuint64EXT, "value")]),
-    GlFunction(Void, "glUniformui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
-    GlFunction(Void, "glGetUniformui64vNV", [(GLuint, "program"), (GLint, "location"), Out(OpaqueArray(GLuint64EXT, "__glGetUniformui64vNV_size(program, location)"), "params")], sideeffects=False),
-    GlFunction(Void, "glProgramUniformui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "value")]),
-    GlFunction(Void, "glProgramUniformui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
-
-    # GL_NV_vertex_buffer_unified_memory
-    GlFunction(Void, "glBufferAddressRangeNV", [(GLenum, "pname"), (GLuint, "index"), (GLuint64EXT, "address"), (GLsizeiptr, "length")]),
-    GlFunction(Void, "glVertexFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glNormalFormatNV", [(GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glColorFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glIndexFormatNV", [(GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glTexCoordFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glEdgeFlagFormatNV", [(GLsizei, "stride")]),
-    GlFunction(Void, "glSecondaryColorFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glFogCoordFormatNV", [(GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glVertexAttribFormatNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride")]),
-    GlFunction(Void, "glVertexAttribIFormatNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
-    GlFunction(Void, "glGetIntegerui64i_vNV", [(GLenum, "value"), (GLuint, "index"), Out(OpaqueArray(GLuint64EXT, "__glGetIntegerui64i_vNV_size(value)"), "result")], sideeffects=False),
-
-    # GL_NV_texture_barrier
-    GlFunction(Void, "glTextureBarrierNV", []),
-
-    # GL_EXT_shader_image_load_store
-    GlFunction(Void, "glBindImageTextureEXT", [(GLuint, "index"), (GLtexture, "texture"), (GLint, "level"), (GLboolean, "layered"), (GLint, "layer"), (GLenum, "access"), (GLint, "format")]),
-    GlFunction(Void, "glMemoryBarrierEXT", [(GLbitfield_barrier, "barriers")]),
-
-    # GL_EXT_vertex_attrib_64bit
-    GlFunction(Void, "glVertexAttribL1dEXT", [(GLuint, "index"), (GLdouble, "x")]),
-    GlFunction(Void, "glVertexAttribL2dEXT", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
-    GlFunction(Void, "glVertexAttribL3dEXT", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
-    GlFunction(Void, "glVertexAttribL4dEXT", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
-    GlFunction(Void, "glVertexAttribL1dvEXT", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
-    GlFunction(Void, "glVertexAttribL2dvEXT", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribL3dvEXT", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribL4dvEXT", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribLPointerEXT", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Blob(Const(GLvoid), "size"), "pointer")]),
-    GlFunction(Void, "glGetVertexAttribLdvEXT", [(GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVertexAttribLdvEXT_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glVertexArrayVertexAttribLOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
-
-    # GL_NV_gpu_program5
-    GlFunction(Void, "glProgramSubroutineParametersuivNV", [(GLenum, "target"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "params")]),
-    GlFunction(Void, "glGetProgramSubroutineParameteruivNV", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLuint, "__glGetProgramSubroutineParameteruivNV_size(target)"), "param")], sideeffects=False),
-
-    # GL_NV_gpu_shader5
-    GlFunction(Void, "glUniform1i64NV", [(GLint, "location"), (GLint64EXT, "x")]),
-    GlFunction(Void, "glUniform2i64NV", [(GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y")]),
-    GlFunction(Void, "glUniform3i64NV", [(GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z")]),
-    GlFunction(Void, "glUniform4i64NV", [(GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z"), (GLint64EXT, "w")]),
-    GlFunction(Void, "glUniform1i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count"), "value")]),
-    GlFunction(Void, "glUniform2i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*4"), "value")]),
-    GlFunction(Void, "glUniform1ui64NV", [(GLint, "location"), (GLuint64EXT, "x")]),
-    GlFunction(Void, "glUniform2ui64NV", [(GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y")]),
-    GlFunction(Void, "glUniform3ui64NV", [(GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z")]),
-    GlFunction(Void, "glUniform4ui64NV", [(GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z"), (GLuint64EXT, "w")]),
-    GlFunction(Void, "glUniform1ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
-    GlFunction(Void, "glUniform2ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*2"), "value")]),
-    GlFunction(Void, "glUniform3ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*3"), "value")]),
-    GlFunction(Void, "glUniform4ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*4"), "value")]),
-    GlFunction(Void, "glGetUniformi64vNV", [(GLuint, "program"), (GLint, "location"), Out(OpaqueArray(GLint64EXT, "__glGetUniformi64vNV_size(location)"), "params")], sideeffects=False),
-    GlFunction(Void, "glProgramUniform1i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x")]),
-    GlFunction(Void, "glProgramUniform2i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y")]),
-    GlFunction(Void, "glProgramUniform3i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z")]),
-    GlFunction(Void, "glProgramUniform4i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z"), (GLint64EXT, "w")]),
-    GlFunction(Void, "glProgramUniform1i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*4"), "value")]),
-    GlFunction(Void, "glProgramUniform1ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x")]),
-    GlFunction(Void, "glProgramUniform2ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y")]),
-    GlFunction(Void, "glProgramUniform3ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z")]),
-    GlFunction(Void, "glProgramUniform4ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z"), (GLuint64EXT, "w")]),
-    GlFunction(Void, "glProgramUniform1ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
-    GlFunction(Void, "glProgramUniform2ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*2"), "value")]),
-    GlFunction(Void, "glProgramUniform3ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*3"), "value")]),
-    GlFunction(Void, "glProgramUniform4ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*4"), "value")]),
-
-    # GL_NV_vertex_attrib_integer_64bit
-    GlFunction(Void, "glVertexAttribL1i64NV", [(GLuint, "index"), (GLint64EXT, "x")]),
-    GlFunction(Void, "glVertexAttribL2i64NV", [(GLuint, "index"), (GLint64EXT, "x"), (GLint64EXT, "y")]),
-    GlFunction(Void, "glVertexAttribL3i64NV", [(GLuint, "index"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z")]),
-    GlFunction(Void, "glVertexAttribL4i64NV", [(GLuint, "index"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z"), (GLint64EXT, "w")]),
-    GlFunction(Void, "glVertexAttribL1i64vNV", [(GLuint, "index"), (Pointer(Const(GLint64EXT)), "v")]),
-    GlFunction(Void, "glVertexAttribL2i64vNV", [(GLuint, "index"), (Array(Const(GLint64EXT), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribL3i64vNV", [(GLuint, "index"), (Array(Const(GLint64EXT), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribL4i64vNV", [(GLuint, "index"), (Array(Const(GLint64EXT), "4"), "v")]),
-    GlFunction(Void, "glVertexAttribL1ui64NV", [(GLuint, "index"), (GLuint64EXT, "x")]),
-    GlFunction(Void, "glVertexAttribL2ui64NV", [(GLuint, "index"), (GLuint64EXT, "x"), (GLuint64EXT, "y")]),
-    GlFunction(Void, "glVertexAttribL3ui64NV", [(GLuint, "index"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z")]),
-    GlFunction(Void, "glVertexAttribL4ui64NV", [(GLuint, "index"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z"), (GLuint64EXT, "w")]),
-    GlFunction(Void, "glVertexAttribL1ui64vNV", [(GLuint, "index"), (Pointer(Const(GLuint64EXT)), "v")]),
-    GlFunction(Void, "glVertexAttribL2ui64vNV", [(GLuint, "index"), (Array(Const(GLuint64EXT), "2"), "v")]),
-    GlFunction(Void, "glVertexAttribL3ui64vNV", [(GLuint, "index"), (Array(Const(GLuint64EXT), "3"), "v")]),
-    GlFunction(Void, "glVertexAttribL4ui64vNV", [(GLuint, "index"), (Array(Const(GLuint64EXT), "4"), "v")]),
-    GlFunction(Void, "glGetVertexAttribLi64vNV", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint64EXT, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glGetVertexAttribLui64vNV", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLuint64EXT, "__gl_param_size(pname)"), "params")], sideeffects=False),
-    GlFunction(Void, "glVertexAttribLFormatNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
-
-    # GL_AMD_name_gen_delete
-    GlFunction(Void, "glGenNamesAMD", [(GLenum, "identifier"), (GLuint, "num"), Out(Array(GLuint, "num"), "names")]),
-    GlFunction(Void, "glDeleteNamesAMD", [(GLenum, "identifier"), (GLuint, "num"), (Array(Const(GLuint), "num"), "names")]),
-    GlFunction(GLboolean, "glIsNameAMD", [(GLenum, "identifier"), (GLuint, "name")], sideeffects=False),
-
-    # GL_AMD_debug_output
-    GlFunction(Void, "glDebugMessageEnableAMD", [(GLenum, "category"), (GLenum, "severity"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "ids"), (GLboolean, "enabled")], sideeffects=False),
-    GlFunction(Void, "glDebugMessageInsertAMD", [(GLenum, "category"), (GLenum, "severity"), (GLuint, "id"), (GLsizei, "length"), (Array(Const(GLchar), "length"), "buf")], sideeffects=False),
-    GlFunction(Void, "glDebugMessageCallbackAMD", [(GLDEBUGPROCAMD, "callback"), (Opaque("GLvoid *"), "userParam")], sideeffects=False),
-    GlFunction(GLuint, "glGetDebugMessageLogAMD", [(GLuint, "count"), (GLsizei, "bufsize"), Out(Array(GLenum, "count"), "categories"), Out(Array(GLuint, "count"), "severities"), Out(Array(GLuint, "count"), "ids"), Out(Array(GLsizei, "count"), "lengths"), Out(Array(GLchar, "bufsize"), "message")], sideeffects=False),
-
-    # GL_NV_texture_multisample
-    GlFunction(Void, "glTexImage2DMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedSampleLocations")]),
-    GlFunction(Void, "glTexImage3DMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedSampleLocations")]),
-    GlFunction(Void, "glTextureImage2DMultisampleNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "samples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedSampleLocations")]),
-    GlFunction(Void, "glTextureImage3DMultisampleNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "samples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedSampleLocations")]),
-    GlFunction(Void, "glTextureImage2DMultisampleCoverageNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedSampleLocations")]),
-    GlFunction(Void, "glTextureImage3DMultisampleCoverageNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedSampleLocations")]),
-
-    # GL_AMD_sample_positions
-    GlFunction(Void, "glSetMultisamplefvAMD", [(GLenum, "pname"), (GLuint, "index"), (Array(Const(GLfloat), "2"), "val")]),
-
-    # GL_EXT_x11_sync_object
-    GlFunction(GLsync, "glImportSyncEXT", [(GLenum, "external_sync_type"), (GLintptr, "external_sync"), (GLbitfield, "flags")]),
-
-    # GL_AMD_multi_draw_indirect
-    GlFunction(Void, "glMultiDrawArraysIndirectAMD", [(GLenum_mode, "mode"), (OpaquePointer(Const(GLvoid)), "indirect"), (GLsizei, "primcount"), (GLsizei, "stride")]),
-    GlFunction(Void, "glMultiDrawElementsIndirectAMD", [(GLenum_mode, "mode"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indirect"), (GLsizei, "primcount"), (GLsizei, "stride")]),
-
-    # GL_KTX_buffer_region
-    # XXX: http://www.west.net/~brittain/3dsmax2.htm does not mention EXT suffix
-    GlFunction(GLregion, "glNewBufferRegion", [(GLenum, "type")]),
-    GlFunction(Void, "glDeleteBufferRegion", [(GLregion, "region")]),
-    GlFunction(Void, "glReadBufferRegion", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glDrawBufferRegion", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "xDest"), (GLint, "yDest")]),
-    GlFunction(GLuint, "glBufferRegionEnabled", [], sideeffects=False),
-    # XXX: but GLEW uses EXT suffix
-    GlFunction(GLregion, "glNewBufferRegionEXT", [(GLenum, "type")]),
-    GlFunction(Void, "glDeleteBufferRegionEXT", [(GLregion, "region")]),
-    GlFunction(Void, "glReadBufferRegionEXT", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-    GlFunction(Void, "glDrawBufferRegionEXT", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "xDest"), (GLint, "yDest")]),
-    GlFunction(GLuint, "glBufferRegionEnabledEXT", [], sideeffects=False),
-
-    # GL_WIN_swap_hint
-    GlFunction(Void, "glAddSwapHintRectWIN", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
-])
-
-
-# memcpy's prototype.  We don't really want to trace all memcpy calls -- just
-# emit a few fake memcpy calls --, which is why the prototype is not together
-# with the rest.
-memcpy = Function(Void, "memcpy", [(GLmap, "dest"), (Blob(Const(Void), "n"), "src"), (SizeT, "n")])
diff --git a/glparams.py b/glparams.py
deleted file mode 100644 (file)
index 8636877..0000000
+++ /dev/null
@@ -1,2985 +0,0 @@
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-'''Describe GL parameters.'''
-
-
-from stdapi import *
-
-from gltypes import *
-
-
-# Shorthands for the types
-X = None # To be determined, merely an enum
-B = GLboolean
-I = GLint
-I64 = GLint64
-E = GLenum
-F = GLfloat
-D = GLdouble
-P = OpaquePointer(Void)
-S = CString
-H = GLhandleARB
-
-# A underscore prefix (e.g., _glGet) is used to skip automatic code generation
-# for parameters that are obtained through other ways.
-
-parameters = [
-    # (functions, type, count, name) # value
-    ("",       X,      1,      "GL_ZERO"),     # 0x0000
-    ("",       X,      1,      "GL_ONE"),      # 0x0001
-
-    # These are enumerated separately in GLenum_mode
-    #("",      X,      1,      "GL_POINTS"),   # 0x0000
-    #("",      X,      1,      "GL_LINES"),    # 0x0001
-    #("",      X,      1,      "GL_LINE_LOOP"),        # 0x0002
-    #("",      X,      1,      "GL_LINE_STRIP"),       # 0x0003
-    #("",      X,      1,      "GL_TRIANGLES"),        # 0x0004
-    #("",      X,      1,      "GL_TRIANGLE_STRIP"),   # 0x0005
-    #("",      X,      1,      "GL_TRIANGLE_FAN"),     # 0x0006
-    #("",      X,      1,      "GL_QUADS"),    # 0x0007
-    #("",      X,      1,      "GL_QUAD_STRIP"),       # 0x0008
-    #("",      X,      1,      "GL_POLYGON"),  # 0x0009
-    #("",      X,      1,      "GL_LINES_ADJACENCY"),  # 0x000A
-    #("",      X,      1,      "GL_LINE_STRIP_ADJACENCY"),     # 0x000B
-    #("",      X,      1,      "GL_TRIANGLES_ADJACENCY"),      # 0x000C
-    #("",      X,      1,      "GL_TRIANGLE_STRIP_ADJACENCY"), # 0x000D
-    #("",      X,      1,      "GL_PATCHES"),  # 0x000E
-
-    ("",       X,      1,      "GL_ACCUM"),    # 0x0100
-    ("",       X,      1,      "GL_LOAD"),     # 0x0101
-    ("",       X,      1,      "GL_RETURN"),   # 0x0102
-    ("",       X,      1,      "GL_MULT"),     # 0x0103
-    ("",       X,      1,      "GL_ADD"),      # 0x0104
-    ("",       X,      1,      "GL_NEVER"),    # 0x0200
-    ("",       X,      1,      "GL_LESS"),     # 0x0201
-    ("",       X,      1,      "GL_EQUAL"),    # 0x0202
-    ("",       X,      1,      "GL_LEQUAL"),   # 0x0203
-    ("",       X,      1,      "GL_GREATER"),  # 0x0204
-    ("",       X,      1,      "GL_NOTEQUAL"), # 0x0205
-    ("",       X,      1,      "GL_GEQUAL"),   # 0x0206
-    ("",       X,      1,      "GL_ALWAYS"),   # 0x0207
-    ("",       X,      1,      "GL_SRC_COLOR"),        # 0x0300
-    ("",       X,      1,      "GL_ONE_MINUS_SRC_COLOR"),      # 0x0301
-    ("",       X,      1,      "GL_SRC_ALPHA"),        # 0x0302
-    ("",       X,      1,      "GL_ONE_MINUS_SRC_ALPHA"),      # 0x0303
-    ("",       X,      1,      "GL_DST_ALPHA"),        # 0x0304
-    ("",       X,      1,      "GL_ONE_MINUS_DST_ALPHA"),      # 0x0305
-    ("",       X,      1,      "GL_DST_COLOR"),        # 0x0306
-    ("",       X,      1,      "GL_ONE_MINUS_DST_COLOR"),      # 0x0307
-    ("",       X,      1,      "GL_SRC_ALPHA_SATURATE"),       # 0x0308
-    ("",       X,      1,      "GL_FRONT_LEFT"),       # 0x0400
-    ("",       X,      1,      "GL_FRONT_RIGHT"),      # 0x0401
-    ("",       X,      1,      "GL_BACK_LEFT"),        # 0x0402
-    ("",       X,      1,      "GL_BACK_RIGHT"),       # 0x0403
-    ("",       X,      1,      "GL_FRONT"),    # 0x0404
-    ("",       X,      1,      "GL_BACK"),     # 0x0405
-    ("",       X,      1,      "GL_LEFT"),     # 0x0406
-    ("",       X,      1,      "GL_RIGHT"),    # 0x0407
-    ("",       X,      1,      "GL_FRONT_AND_BACK"),   # 0x0408
-    ("",       X,      1,      "GL_AUX0"),     # 0x0409
-    ("",       X,      1,      "GL_AUX1"),     # 0x040A
-    ("",       X,      1,      "GL_AUX2"),     # 0x040B
-    ("",       X,      1,      "GL_AUX3"),     # 0x040C
-    ("",       X,      1,      "GL_INVALID_ENUM"),     # 0x0500
-    ("",       X,      1,      "GL_INVALID_VALUE"),    # 0x0501
-    ("",       X,      1,      "GL_INVALID_OPERATION"),        # 0x0502
-    ("",       X,      1,      "GL_STACK_OVERFLOW"),   # 0x0503
-    ("",       X,      1,      "GL_STACK_UNDERFLOW"),  # 0x0504
-    ("",       X,      1,      "GL_OUT_OF_MEMORY"),    # 0x0505
-    ("",       X,      1,      "GL_INVALID_FRAMEBUFFER_OPERATION"),    # 0x0506
-    ("",       X,      1,      "GL_2D"),       # 0x0600
-    ("",       X,      1,      "GL_3D"),       # 0x0601
-    ("",       X,      1,      "GL_3D_COLOR"), # 0x0602
-    ("",       X,      1,      "GL_3D_COLOR_TEXTURE"), # 0x0603
-    ("",       X,      1,      "GL_4D_COLOR_TEXTURE"), # 0x0604
-    ("",       X,      1,      "GL_PASS_THROUGH_TOKEN"),       # 0x0700
-    ("",       X,      1,      "GL_POINT_TOKEN"),      # 0x0701
-    ("",       X,      1,      "GL_LINE_TOKEN"),       # 0x0702
-    ("",       X,      1,      "GL_POLYGON_TOKEN"),    # 0x0703
-    ("",       X,      1,      "GL_BITMAP_TOKEN"),     # 0x0704
-    ("",       X,      1,      "GL_DRAW_PIXEL_TOKEN"), # 0x0705
-    ("",       X,      1,      "GL_COPY_PIXEL_TOKEN"), # 0x0706
-    ("",       X,      1,      "GL_LINE_RESET_TOKEN"), # 0x0707
-    ("",       X,      1,      "GL_EXP"),      # 0x0800
-    ("",       X,      1,      "GL_EXP2"),     # 0x0801
-    ("",       X,      1,      "GL_CW"),       # 0x0900
-    ("",       X,      1,      "GL_CCW"),      # 0x0901
-    ("",       X,      1,      "GL_COEFF"),    # 0x0A00
-    ("",       X,      1,      "GL_ORDER"),    # 0x0A01
-    ("",       X,      1,      "GL_DOMAIN"),   # 0x0A02
-    ("glGet",  F,      4,      "GL_CURRENT_COLOR"),    # 0x0B00
-    ("glGet",  F,      1,      "GL_CURRENT_INDEX"),    # 0x0B01
-    ("glGet",  F,      3,      "GL_CURRENT_NORMAL"),   # 0x0B02
-    ("glGet",  F,      4,      "GL_CURRENT_TEXTURE_COORDS"),   # 0x0B03
-    ("glGet",  F,      4,      "GL_CURRENT_RASTER_COLOR"),     # 0x0B04
-    ("glGet",  F,      1,      "GL_CURRENT_RASTER_INDEX"),     # 0x0B05
-    ("glGet",  F,      4,      "GL_CURRENT_RASTER_TEXTURE_COORDS"),    # 0x0B06
-    ("glGet",  F,      4,      "GL_CURRENT_RASTER_POSITION"),  # 0x0B07
-    ("glGet",  I,      1,      "GL_CURRENT_RASTER_POSITION_VALID"),    # 0x0B08
-    ("glGet",  F,      1,      "GL_CURRENT_RASTER_DISTANCE"),  # 0x0B09
-    ("glGet",  B,      1,      "GL_POINT_SMOOTH"),     # 0x0B10
-    ("glGet",  F,      1,      "GL_POINT_SIZE"),       # 0x0B11
-    ("glGet",  F,      2,      "GL_POINT_SIZE_RANGE"), # 0x0B12
-    ("glGet",  F,      1,      "GL_POINT_SIZE_GRANULARITY"),   # 0x0B13
-    ("glGet",  B,      1,      "GL_LINE_SMOOTH"),      # 0x0B20
-    ("glGet",  F,      1,      "GL_LINE_WIDTH"),       # 0x0B21
-    ("glGet",  F,      2,      "GL_LINE_WIDTH_RANGE"), # 0x0B22
-    ("glGet",  F,      1,      "GL_LINE_WIDTH_GRANULARITY"),   # 0x0B23
-    ("glGet",  B,      1,      "GL_LINE_STIPPLE"),     # 0x0B24
-    ("glGet",  I,      1,      "GL_LINE_STIPPLE_PATTERN"),     # 0x0B25
-    ("glGet",  I,      1,      "GL_LINE_STIPPLE_REPEAT"),      # 0x0B26
-    ("glGet",  E,      1,      "GL_LIST_MODE"),        # 0x0B30
-    ("glGet",  I,      1,      "GL_MAX_LIST_NESTING"), # 0x0B31
-    ("glGet",  I,      1,      "GL_LIST_BASE"),        # 0x0B32
-    ("glGet",  I,      1,      "GL_LIST_INDEX"),       # 0x0B33
-    ("glGet",  E,      2,      "GL_POLYGON_MODE"),     # 0x0B40
-    ("glGet",  B,      1,      "GL_POLYGON_SMOOTH"),   # 0x0B41
-    ("glGet",  B,      1,      "GL_POLYGON_STIPPLE"),  # 0x0B42
-    ("glGet",  B,      1,      "GL_EDGE_FLAG"),        # 0x0B43
-    ("glGet",  B,      1,      "GL_CULL_FACE"),        # 0x0B44
-    ("glGet",  E,      1,      "GL_CULL_FACE_MODE"),   # 0x0B45
-    ("glGet",  E,      1,      "GL_FRONT_FACE"),       # 0x0B46
-    ("glGet",  B,      1,      "GL_LIGHTING"), # 0x0B50
-    ("glGet",  B,      1,      "GL_LIGHT_MODEL_LOCAL_VIEWER"), # 0x0B51
-    ("glGet",  B,      1,      "GL_LIGHT_MODEL_TWO_SIDE"),     # 0x0B52
-    ("glGet",  F,      4,      "GL_LIGHT_MODEL_AMBIENT"),      # 0x0B53
-    ("glGet",  E,      1,      "GL_SHADE_MODEL"),      # 0x0B54
-    ("glGet",  E,      1,      "GL_COLOR_MATERIAL_FACE"),      # 0x0B55
-    ("glGet",  E,      1,      "GL_COLOR_MATERIAL_PARAMETER"), # 0x0B56
-    ("glGet",  B,      1,      "GL_COLOR_MATERIAL"),   # 0x0B57
-    ("glGet",  B,      1,      "GL_FOG"),      # 0x0B60
-    ("glGet",  I,      1,      "GL_FOG_INDEX"),        # 0x0B61
-    ("glGet",  F,      1,      "GL_FOG_DENSITY"),      # 0x0B62
-    ("glGet",  F,      1,      "GL_FOG_START"),        # 0x0B63
-    ("glGet",  F,      1,      "GL_FOG_END"),  # 0x0B64
-    ("glGet",  E,      1,      "GL_FOG_MODE"), # 0x0B65
-    ("glGet",  F,      4,      "GL_FOG_COLOR"),        # 0x0B66
-    ("glGet",  F,      2,      "GL_DEPTH_RANGE"),      # 0x0B70
-    ("glGet",  B,      1,      "GL_DEPTH_TEST"),       # 0x0B71
-    ("glGet",  B,      1,      "GL_DEPTH_WRITEMASK"),  # 0x0B72
-    ("glGet",  F,      1,      "GL_DEPTH_CLEAR_VALUE"),        # 0x0B73
-    ("glGet",  E,      1,      "GL_DEPTH_FUNC"),       # 0x0B74
-    ("glGet",  F,      4,      "GL_ACCUM_CLEAR_VALUE"),        # 0x0B80
-    ("glGet",  B,      1,      "GL_STENCIL_TEST"),     # 0x0B90
-    ("glGet",  I,      1,      "GL_STENCIL_CLEAR_VALUE"),      # 0x0B91
-    ("glGet",  E,      1,      "GL_STENCIL_FUNC"),     # 0x0B92
-    ("glGet",  I,      1,      "GL_STENCIL_VALUE_MASK"),       # 0x0B93
-    ("glGet",  E,      1,      "GL_STENCIL_FAIL"),     # 0x0B94
-    ("glGet",  E,      1,      "GL_STENCIL_PASS_DEPTH_FAIL"),  # 0x0B95
-    ("glGet",  E,      1,      "GL_STENCIL_PASS_DEPTH_PASS"),  # 0x0B96
-    ("glGet",  I,      1,      "GL_STENCIL_REF"),      # 0x0B97
-    ("glGet",  I,      1,      "GL_STENCIL_WRITEMASK"),        # 0x0B98
-    ("glGet",  E,      1,      "GL_MATRIX_MODE"),      # 0x0BA0
-    ("glGet",  B,      1,      "GL_NORMALIZE"),        # 0x0BA1
-    ("glGet",  I,      4,      "GL_VIEWPORT"), # 0x0BA2
-    ("glGet",  I,      1,      "GL_MODELVIEW_STACK_DEPTH"),    # 0x0BA3
-    ("glGet",  I,      1,      "GL_PROJECTION_STACK_DEPTH"),   # 0x0BA4
-    ("glGet",  I,      1,      "GL_TEXTURE_STACK_DEPTH"),      # 0x0BA5
-    ("glGet",  F,      16,     "GL_MODELVIEW_MATRIX"), # 0x0BA6
-    ("glGet",  F,      16,     "GL_PROJECTION_MATRIX"),        # 0x0BA7
-    ("glGet",  F,      16,     "GL_TEXTURE_MATRIX"),   # 0x0BA8
-    ("glGet",  I,      1,      "GL_ATTRIB_STACK_DEPTH"),       # 0x0BB0
-    ("glGet",  I,      1,      "GL_CLIENT_ATTRIB_STACK_DEPTH"),        # 0x0BB1
-    ("glGet",  B,      1,      "GL_ALPHA_TEST"),       # 0x0BC0
-    ("glGet",  E,      1,      "GL_ALPHA_TEST_FUNC"),  # 0x0BC1
-    ("glGet",  F,      1,      "GL_ALPHA_TEST_REF"),   # 0x0BC2
-    ("glGet",  B,      1,      "GL_DITHER"),   # 0x0BD0
-    ("glGet",  E,      1,      "GL_BLEND_DST"),        # 0x0BE0
-    ("glGet",  E,      1,      "GL_BLEND_SRC"),        # 0x0BE1
-    ("glGet",  B,      1,      "GL_BLEND"),    # 0x0BE2
-    ("glGet",  E,      1,      "GL_LOGIC_OP_MODE"),    # 0x0BF0
-    ("glGet",  B,      1,      "GL_INDEX_LOGIC_OP"),   # 0x0BF1
-    ("glGet",  B,      1,      "GL_COLOR_LOGIC_OP"),   # 0x0BF2
-    ("glGet",  I,      1,      "GL_AUX_BUFFERS"),      # 0x0C00
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER"),      # 0x0C01
-    ("glGet",  E,      1,      "GL_READ_BUFFER"),      # 0x0C02
-    ("glGet",  I,      4,      "GL_SCISSOR_BOX"),      # 0x0C10
-    ("glGet",  B,      1,      "GL_SCISSOR_TEST"),     # 0x0C11
-    ("glGet",  I,      1,      "GL_INDEX_CLEAR_VALUE"),        # 0x0C20
-    ("glGet",  I,      1,      "GL_INDEX_WRITEMASK"),  # 0x0C21
-    ("glGet",  F,      4,      "GL_COLOR_CLEAR_VALUE"),        # 0x0C22
-    ("glGet",  B,      4,      "GL_COLOR_WRITEMASK"),  # 0x0C23
-    ("glGet",  B,      1,      "GL_INDEX_MODE"),       # 0x0C30
-    ("glGet",  B,      1,      "GL_RGBA_MODE"),        # 0x0C31
-    ("glGet",  B,      1,      "GL_DOUBLEBUFFER"),     # 0x0C32
-    ("glGet",  B,      1,      "GL_STEREO"),   # 0x0C33
-    ("glGet",  E,      1,      "GL_RENDER_MODE"),      # 0x0C40
-    ("glGet",  E,      1,      "GL_PERSPECTIVE_CORRECTION_HINT"),      # 0x0C50
-    ("glGet",  E,      1,      "GL_POINT_SMOOTH_HINT"),        # 0x0C51
-    ("glGet",  E,      1,      "GL_LINE_SMOOTH_HINT"), # 0x0C52
-    ("glGet",  E,      1,      "GL_POLYGON_SMOOTH_HINT"),      # 0x0C53
-    ("glGet",  E,      1,      "GL_FOG_HINT"), # 0x0C54
-    ("glGet",  B,      1,      "GL_TEXTURE_GEN_S"),    # 0x0C60
-    ("glGet",  B,      1,      "GL_TEXTURE_GEN_T"),    # 0x0C61
-    ("glGet",  B,      1,      "GL_TEXTURE_GEN_R"),    # 0x0C62
-    ("glGet",  B,      1,      "GL_TEXTURE_GEN_Q"),    # 0x0C63
-    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_I"), # 0x0C70
-    ("",       X,      1,      "GL_PIXEL_MAP_S_TO_S"), # 0x0C71
-    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_R"), # 0x0C72
-    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_G"), # 0x0C73
-    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_B"), # 0x0C74
-    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_A"), # 0x0C75
-    ("",       X,      1,      "GL_PIXEL_MAP_R_TO_R"), # 0x0C76
-    ("",       X,      1,      "GL_PIXEL_MAP_G_TO_G"), # 0x0C77
-    ("",       X,      1,      "GL_PIXEL_MAP_B_TO_B"), # 0x0C78
-    ("",       X,      1,      "GL_PIXEL_MAP_A_TO_A"), # 0x0C79
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_I_SIZE"),    # 0x0CB0
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_S_TO_S_SIZE"),    # 0x0CB1
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_R_SIZE"),    # 0x0CB2
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_G_SIZE"),    # 0x0CB3
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_B_SIZE"),    # 0x0CB4
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_A_SIZE"),    # 0x0CB5
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_R_TO_R_SIZE"),    # 0x0CB6
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_G_TO_G_SIZE"),    # 0x0CB7
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_B_TO_B_SIZE"),    # 0x0CB8
-    ("glGet",  I,      1,      "GL_PIXEL_MAP_A_TO_A_SIZE"),    # 0x0CB9
-    ("glGet",  B,      1,      "GL_UNPACK_SWAP_BYTES"),        # 0x0CF0
-    ("glGet",  B,      1,      "GL_UNPACK_LSB_FIRST"), # 0x0CF1
-    ("glGet",  I,      1,      "GL_UNPACK_ROW_LENGTH"),        # 0x0CF2
-    ("glGet",  I,      1,      "GL_UNPACK_SKIP_ROWS"), # 0x0CF3
-    ("glGet",  I,      1,      "GL_UNPACK_SKIP_PIXELS"),       # 0x0CF4
-    ("glGet",  I,      1,      "GL_UNPACK_ALIGNMENT"), # 0x0CF5
-    ("glGet",  B,      1,      "GL_PACK_SWAP_BYTES"),  # 0x0D00
-    ("glGet",  B,      1,      "GL_PACK_LSB_FIRST"),   # 0x0D01
-    ("glGet",  I,      1,      "GL_PACK_ROW_LENGTH"),  # 0x0D02
-    ("glGet",  I,      1,      "GL_PACK_SKIP_ROWS"),   # 0x0D03
-    ("glGet",  I,      1,      "GL_PACK_SKIP_PIXELS"), # 0x0D04
-    ("glGet",  I,      1,      "GL_PACK_ALIGNMENT"),   # 0x0D05
-    ("glGet",  B,      1,      "GL_MAP_COLOR"),        # 0x0D10
-    ("glGet",  B,      1,      "GL_MAP_STENCIL"),      # 0x0D11
-    ("glGet",  I,      1,      "GL_INDEX_SHIFT"),      # 0x0D12
-    ("glGet",  I,      1,      "GL_INDEX_OFFSET"),     # 0x0D13
-    ("glGet",  F,      1,      "GL_RED_SCALE"),        # 0x0D14
-    ("glGet",  F,      1,      "GL_RED_BIAS"), # 0x0D15
-    ("glGet",  F,      1,      "GL_ZOOM_X"),   # 0x0D16
-    ("glGet",  F,      1,      "GL_ZOOM_Y"),   # 0x0D17
-    ("glGet",  F,      1,      "GL_GREEN_SCALE"),      # 0x0D18
-    ("glGet",  F,      1,      "GL_GREEN_BIAS"),       # 0x0D19
-    ("glGet",  F,      1,      "GL_BLUE_SCALE"),       # 0x0D1A
-    ("glGet",  F,      1,      "GL_BLUE_BIAS"),        # 0x0D1B
-    ("glGet,glGetTexEnv",      F,      1,      "GL_ALPHA_SCALE"),      # 0x0D1C
-    ("glGet",  F,      1,      "GL_ALPHA_BIAS"),       # 0x0D1D
-    ("glGet",  F,      1,      "GL_DEPTH_SCALE"),      # 0x0D1E
-    ("glGet",  F,      1,      "GL_DEPTH_BIAS"),       # 0x0D1F
-    ("glGet",  I,      1,      "GL_MAX_EVAL_ORDER"),   # 0x0D30
-    ("glGet",  I,      1,      "GL_MAX_LIGHTS"),       # 0x0D31
-    ("glGet",  I,      1,      "GL_MAX_CLIP_DISTANCES"),       # 0x0D32
-    ("glGet",  I,      1,      "GL_MAX_TEXTURE_SIZE"), # 0x0D33
-    ("glGet",  I,      1,      "GL_MAX_PIXEL_MAP_TABLE"),      # 0x0D34
-    ("glGet",  I,      1,      "GL_MAX_ATTRIB_STACK_DEPTH"),   # 0x0D35
-    ("glGet",  I,      1,      "GL_MAX_MODELVIEW_STACK_DEPTH"),        # 0x0D36
-    ("glGet",  I,      1,      "GL_MAX_NAME_STACK_DEPTH"),     # 0x0D37
-    ("glGet",  I,      1,      "GL_MAX_PROJECTION_STACK_DEPTH"),       # 0x0D38
-    ("glGet",  I,      1,      "GL_MAX_TEXTURE_STACK_DEPTH"),  # 0x0D39
-    ("glGet",  F,      2,      "GL_MAX_VIEWPORT_DIMS"),        # 0x0D3A
-    ("glGet",  I,      1,      "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH"),    # 0x0D3B
-    ("glGet",  I,      1,      "GL_SUBPIXEL_BITS"),    # 0x0D50
-    ("glGet",  I,      1,      "GL_INDEX_BITS"),       # 0x0D51
-    ("glGet",  I,      1,      "GL_RED_BITS"), # 0x0D52
-    ("glGet",  I,      1,      "GL_GREEN_BITS"),       # 0x0D53
-    ("glGet",  I,      1,      "GL_BLUE_BITS"),        # 0x0D54
-    ("glGet",  I,      1,      "GL_ALPHA_BITS"),       # 0x0D55
-    ("glGet",  I,      1,      "GL_DEPTH_BITS"),       # 0x0D56
-    ("glGet",  I,      1,      "GL_STENCIL_BITS"),     # 0x0D57
-    ("glGet",  I,      1,      "GL_ACCUM_RED_BITS"),   # 0x0D58
-    ("glGet",  I,      1,      "GL_ACCUM_GREEN_BITS"), # 0x0D59
-    ("glGet",  I,      1,      "GL_ACCUM_BLUE_BITS"),  # 0x0D5A
-    ("glGet",  I,      1,      "GL_ACCUM_ALPHA_BITS"), # 0x0D5B
-    ("glGet",  I,      1,      "GL_NAME_STACK_DEPTH"), # 0x0D70
-    ("glGet",  B,      1,      "GL_AUTO_NORMAL"),      # 0x0D80
-    ("glGet",  B,      1,      "GL_MAP1_COLOR_4"),     # 0x0D90
-    ("glGet",  B,      1,      "GL_MAP1_INDEX"),       # 0x0D91
-    ("glGet",  B,      1,      "GL_MAP1_NORMAL"),      # 0x0D92
-    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_1"),     # 0x0D93
-    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_2"),     # 0x0D94
-    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_3"),     # 0x0D95
-    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_4"),     # 0x0D96
-    ("glGet",  B,      1,      "GL_MAP1_VERTEX_3"),    # 0x0D97
-    ("glGet",  B,      1,      "GL_MAP1_VERTEX_4"),    # 0x0D98
-    ("glGet",  B,      1,      "GL_MAP2_COLOR_4"),     # 0x0DB0
-    ("glGet",  B,      1,      "GL_MAP2_INDEX"),       # 0x0DB1
-    ("glGet",  B,      1,      "GL_MAP2_NORMAL"),      # 0x0DB2
-    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_1"),     # 0x0DB3
-    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_2"),     # 0x0DB4
-    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_3"),     # 0x0DB5
-    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_4"),     # 0x0DB6
-    ("glGet",  B,      1,      "GL_MAP2_VERTEX_3"),    # 0x0DB7
-    ("glGet",  B,      1,      "GL_MAP2_VERTEX_4"),    # 0x0DB8
-    ("glGet",  F,      2,      "GL_MAP1_GRID_DOMAIN"), # 0x0DD0
-    ("glGet",  I,      1,      "GL_MAP1_GRID_SEGMENTS"),       # 0x0DD1
-    ("glGet",  F,      4,      "GL_MAP2_GRID_DOMAIN"), # 0x0DD2
-    ("glGet",  I,      2,      "GL_MAP2_GRID_SEGMENTS"),       # 0x0DD3
-    ("_glGet", B,      1,      "GL_TEXTURE_1D"),       # 0x0DE0
-    ("_glGet", B,      1,      "GL_TEXTURE_2D"),       # 0x0DE1
-    ("glGet",  P,      1,      "GL_FEEDBACK_BUFFER_POINTER"),  # 0x0DF0
-    ("glGet",  I,      1,      "GL_FEEDBACK_BUFFER_SIZE"),     # 0x0DF1
-    ("glGet",  E,      1,      "GL_FEEDBACK_BUFFER_TYPE"),     # 0x0DF2
-    ("glGet",  P,      1,      "GL_SELECTION_BUFFER_POINTER"), # 0x0DF3
-    ("glGet",  I,      1,      "GL_SELECTION_BUFFER_SIZE"),    # 0x0DF4
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_WIDTH"),    # 0x1000
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_HEIGHT"),   # 0x1001
-    ("glGetTexLevelParameter", E,      1,      "GL_TEXTURE_INTERNAL_FORMAT"),  # 0x1003
-    ("glGetTexParameter",      F,      4,      "GL_TEXTURE_BORDER_COLOR"),     # 0x1004
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_BORDER"),   # 0x1005
-    ("",       X,      1,      "GL_DONT_CARE"),        # 0x1100
-    ("",       X,      1,      "GL_FASTEST"),  # 0x1101
-    ("",       X,      1,      "GL_NICEST"),   # 0x1102
-    ("glGetLight,glGetMaterial",       F,      4,      "GL_AMBIENT"),  # 0x1200
-    ("glGetLight,glGetMaterial",       F,      4,      "GL_DIFFUSE"),  # 0x1201
-    ("glGetLight,glGetMaterial",       F,      4,      "GL_SPECULAR"), # 0x1202
-    ("glGetLight",     F,      4,      "GL_POSITION"), # 0x1203
-    ("glGetLight",     F,      3,      "GL_SPOT_DIRECTION"),   # 0x1204
-    ("glGetLight",     F,      1,      "GL_SPOT_EXPONENT"),    # 0x1205
-    ("glGetLight",     F,      1,      "GL_SPOT_CUTOFF"),      # 0x1206
-    ("glGetLight",     F,      1,      "GL_CONSTANT_ATTENUATION"),     # 0x1207
-    ("glGetLight",     F,      1,      "GL_LINEAR_ATTENUATION"),       # 0x1208
-    ("glGetLight",     F,      1,      "GL_QUADRATIC_ATTENUATION"),    # 0x1209
-    ("",       X,      1,      "GL_COMPILE"),  # 0x1300
-    ("",       X,      1,      "GL_COMPILE_AND_EXECUTE"),      # 0x1301
-    ("",       X,      1,      "GL_BYTE"),     # 0x1400
-    ("",       X,      1,      "GL_UNSIGNED_BYTE"),    # 0x1401
-    ("",       X,      1,      "GL_SHORT"),    # 0x1402
-    ("",       X,      1,      "GL_UNSIGNED_SHORT"),   # 0x1403
-    ("",       X,      1,      "GL_INT"),      # 0x1404
-    ("",       X,      1,      "GL_UNSIGNED_INT"),     # 0x1405
-    ("",       X,      1,      "GL_FLOAT"),    # 0x1406
-    ("",       X,      1,      "GL_2_BYTES"),  # 0x1407
-    ("",       X,      1,      "GL_3_BYTES"),  # 0x1408
-    ("",       X,      1,      "GL_4_BYTES"),  # 0x1409
-    ("",       X,      1,      "GL_DOUBLE"),   # 0x140A
-    ("",       X,      1,      "GL_HALF_FLOAT"),       # 0x140B
-    ("",       X,      1,      "GL_FIXED"),    # 0x140C
-    ("",       X,      1,      "GL_INT64_NV"), # 0x140E
-    ("",       X,      1,      "GL_UNSIGNED_INT64_NV"),        # 0x140F
-    ("",       X,      1,      "GL_CLEAR"),    # 0x1500
-    ("",       X,      1,      "GL_AND"),      # 0x1501
-    ("",       X,      1,      "GL_AND_REVERSE"),      # 0x1502
-    ("",       X,      1,      "GL_COPY"),     # 0x1503
-    ("",       X,      1,      "GL_AND_INVERTED"),     # 0x1504
-    ("",       X,      1,      "GL_NOOP"),     # 0x1505
-    ("",       X,      1,      "GL_XOR"),      # 0x1506
-    ("",       X,      1,      "GL_OR"),       # 0x1507
-    ("",       X,      1,      "GL_NOR"),      # 0x1508
-    ("",       X,      1,      "GL_EQUIV"),    # 0x1509
-    ("",       X,      1,      "GL_INVERT"),   # 0x150A
-    ("",       X,      1,      "GL_OR_REVERSE"),       # 0x150B
-    ("",       X,      1,      "GL_COPY_INVERTED"),    # 0x150C
-    ("",       X,      1,      "GL_OR_INVERTED"),      # 0x150D
-    ("",       X,      1,      "GL_NAND"),     # 0x150E
-    ("",       X,      1,      "GL_SET"),      # 0x150F
-    ("glGetMaterial",  F,      4,      "GL_EMISSION"), # 0x1600
-    ("glGetMaterial",  F,      1,      "GL_SHININESS"),        # 0x1601
-    ("",       F,      4,      "GL_AMBIENT_AND_DIFFUSE"),      # 0x1602
-    ("glGetMaterial",  F,      3,      "GL_COLOR_INDEXES"),    # 0x1603
-    ("",       X,      1,      "GL_MODELVIEW"),        # 0x1700
-    ("",       X,      1,      "GL_PROJECTION"),       # 0x1701
-    ("",       X,      1,      "GL_TEXTURE"),  # 0x1702
-    ("",       X,      1,      "GL_COLOR"),    # 0x1800
-    ("",       X,      1,      "GL_DEPTH"),    # 0x1801
-    ("",       X,      1,      "GL_STENCIL"),  # 0x1802
-    ("",       X,      1,      "GL_COLOR_INDEX"),      # 0x1900
-    ("",       X,      1,      "GL_STENCIL_INDEX"),    # 0x1901
-    ("",       X,      1,      "GL_DEPTH_COMPONENT"),  # 0x1902
-    ("",       X,      1,      "GL_RED"),      # 0x1903
-    ("",       X,      1,      "GL_GREEN"),    # 0x1904
-    ("",       X,      1,      "GL_BLUE"),     # 0x1905
-    ("",       X,      1,      "GL_ALPHA"),    # 0x1906
-    ("",       X,      1,      "GL_RGB"),      # 0x1907
-    ("",       X,      1,      "GL_RGBA"),     # 0x1908
-    ("",       X,      1,      "GL_LUMINANCE"),        # 0x1909
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA"),  # 0x190A
-    ("_glGet", B,      1,      "GL_RASTER_POSITION_UNCLIPPED_IBM"),    # 0x19262
-    ("",       X,      1,      "GL_BITMAP"),   # 0x1A00
-    ("",       X,      1,      "GL_PREFER_DOUBLEBUFFER_HINT_PGI"),     # 0x1A1F8
-    ("",       X,      1,      "GL_CONSERVE_MEMORY_HINT_PGI"), # 0x1A1FD
-    ("",       X,      1,      "GL_RECLAIM_MEMORY_HINT_PGI"),  # 0x1A1FE
-    ("",       X,      1,      "GL_NATIVE_GRAPHICS_HANDLE_PGI"),       # 0x1A202
-    ("",       X,      1,      "GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI"),   # 0x1A203
-    ("",       X,      1,      "GL_NATIVE_GRAPHICS_END_HINT_PGI"),     # 0x1A204
-    ("",       X,      1,      "GL_ALWAYS_FAST_HINT_PGI"),     # 0x1A20C
-    ("",       X,      1,      "GL_ALWAYS_SOFT_HINT_PGI"),     # 0x1A20D
-    ("",       X,      1,      "GL_ALLOW_DRAW_OBJ_HINT_PGI"),  # 0x1A20E
-    ("",       X,      1,      "GL_ALLOW_DRAW_WIN_HINT_PGI"),  # 0x1A20F
-    ("",       X,      1,      "GL_ALLOW_DRAW_FRG_HINT_PGI"),  # 0x1A210
-    ("",       X,      1,      "GL_ALLOW_DRAW_MEM_HINT_PGI"),  # 0x1A211
-    ("",       X,      1,      "GL_STRICT_DEPTHFUNC_HINT_PGI"),        # 0x1A216
-    ("",       X,      1,      "GL_STRICT_LIGHTING_HINT_PGI"), # 0x1A217
-    ("",       X,      1,      "GL_STRICT_SCISSOR_HINT_PGI"),  # 0x1A218
-    ("",       X,      1,      "GL_FULL_STIPPLE_HINT_PGI"),    # 0x1A219
-    ("",       X,      1,      "GL_CLIP_NEAR_HINT_PGI"),       # 0x1A220
-    ("",       X,      1,      "GL_CLIP_FAR_HINT_PGI"),        # 0x1A221
-    ("",       X,      1,      "GL_WIDE_LINE_HINT_PGI"),       # 0x1A222
-    ("",       X,      1,      "GL_BACK_NORMALS_HINT_PGI"),    # 0x1A223
-    ("",       X,      1,      "GL_VERTEX_DATA_HINT_PGI"),     # 0x1A22A
-    ("",       X,      1,      "GL_VERTEX_CONSISTENT_HINT_PGI"),       # 0x1A22B
-    ("",       X,      1,      "GL_MATERIAL_SIDE_HINT_PGI"),   # 0x1A22C
-    ("",       X,      1,      "GL_MAX_VERTEX_HINT_PGI"),      # 0x1A22D
-    ("",       X,      1,      "GL_POINT"),    # 0x1B00
-    ("",       X,      1,      "GL_LINE"),     # 0x1B01
-    ("",       X,      1,      "GL_FILL"),     # 0x1B02
-    ("",       X,      1,      "GL_RENDER"),   # 0x1C00
-    ("",       X,      1,      "GL_FEEDBACK"), # 0x1C01
-    ("",       X,      1,      "GL_SELECT"),   # 0x1C02
-    ("",       X,      1,      "GL_FLAT"),     # 0x1D00
-    ("",       X,      1,      "GL_SMOOTH"),   # 0x1D01
-    ("",       X,      1,      "GL_KEEP"),     # 0x1E00
-    ("",       X,      1,      "GL_REPLACE"),  # 0x1E01
-    ("",       X,      1,      "GL_INCR"),     # 0x1E02
-    ("",       X,      1,      "GL_DECR"),     # 0x1E03
-    ("glGet",  S,      1,      "GL_VENDOR"),   # 0x1F00
-    ("glGet",  S,      1,      "GL_RENDERER"), # 0x1F01
-    ("glGet",  S,      1,      "GL_VERSION"),  # 0x1F02
-    ("glGet",  S,      1,      "GL_EXTENSIONS"),       # 0x1F03
-    ("",       X,      1,      "GL_S"),        # 0x2000
-    ("",       X,      1,      "GL_T"),        # 0x2001
-    ("",       X,      1,      "GL_R"),        # 0x2002
-    ("",       X,      1,      "GL_Q"),        # 0x2003
-    ("",       X,      1,      "GL_MODULATE"), # 0x2100
-    ("",       X,      1,      "GL_DECAL"),    # 0x2101
-    ("glGetTexEnv",    E,      1,      "GL_TEXTURE_ENV_MODE"), # 0x2200
-    ("glGetTexEnv",    F,      4,      "GL_TEXTURE_ENV_COLOR"),        # 0x2201
-    ("_glGet", X,      1,      "GL_TEXTURE_ENV"),      # 0x2300
-    ("",       X,      1,      "GL_EYE_LINEAR"),       # 0x2400
-    ("",       X,      1,      "GL_OBJECT_LINEAR"),    # 0x2401
-    ("",       X,      1,      "GL_SPHERE_MAP"),       # 0x2402
-    ("glGetTexGen",    E,      1,      "GL_TEXTURE_GEN_MODE"), # 0x2500
-    ("glGetTexGen",    F,      4,      "GL_OBJECT_PLANE"),     # 0x2501
-    ("glGetTexGen",    F,      4,      "GL_EYE_PLANE"),        # 0x2502
-    ("",       X,      1,      "GL_NEAREST"),  # 0x2600
-    ("",       X,      1,      "GL_LINEAR"),   # 0x2601
-    ("",       X,      1,      "GL_NEAREST_MIPMAP_NEAREST"),   # 0x2700
-    ("",       X,      1,      "GL_LINEAR_MIPMAP_NEAREST"),    # 0x2701
-    ("",       X,      1,      "GL_NEAREST_MIPMAP_LINEAR"),    # 0x2702
-    ("",       X,      1,      "GL_LINEAR_MIPMAP_LINEAR"),     # 0x2703
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_MAG_FILTER"),       # 0x2800
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_MIN_FILTER"),       # 0x2801
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_WRAP_S"),   # 0x2802
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_WRAP_T"),   # 0x2803
-    ("",       X,      1,      "GL_CLAMP"),    # 0x2900
-    ("",       X,      1,      "GL_REPEAT"),   # 0x2901
-    ("glGet",  F,      1,      "GL_POLYGON_OFFSET_UNITS"),     # 0x2A00
-    ("glGet",  B,      1,      "GL_POLYGON_OFFSET_POINT"),     # 0x2A01
-    ("glGet",  B,      1,      "GL_POLYGON_OFFSET_LINE"),      # 0x2A02
-    ("",       X,      1,      "GL_R3_G3_B2"), # 0x2A10
-    ("",       X,      1,      "GL_V2F"),      # 0x2A20
-    ("",       X,      1,      "GL_V3F"),      # 0x2A21
-    ("",       X,      1,      "GL_C4UB_V2F"), # 0x2A22
-    ("",       X,      1,      "GL_C4UB_V3F"), # 0x2A23
-    ("",       X,      1,      "GL_C3F_V3F"),  # 0x2A24
-    ("",       X,      1,      "GL_N3F_V3F"),  # 0x2A25
-    ("",       X,      1,      "GL_C4F_N3F_V3F"),      # 0x2A26
-    ("",       X,      1,      "GL_T2F_V3F"),  # 0x2A27
-    ("",       X,      1,      "GL_T4F_V4F"),  # 0x2A28
-    ("",       X,      1,      "GL_T2F_C4UB_V3F"),     # 0x2A29
-    ("",       X,      1,      "GL_T2F_C3F_V3F"),      # 0x2A2A
-    ("",       X,      1,      "GL_T2F_N3F_V3F"),      # 0x2A2B
-    ("",       X,      1,      "GL_T2F_C4F_N3F_V3F"),  # 0x2A2C
-    ("",       X,      1,      "GL_T4F_C4F_N3F_V4F"),  # 0x2A2D
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE0"),   # 0x3000
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE1"),   # 0x3001
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE2"),   # 0x3002
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE3"),   # 0x3003
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE4"),   # 0x3004
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE5"),   # 0x3005
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE6"),   # 0x3006
-    ("glGet",  B,      1,      "GL_CLIP_DISTANCE7"),   # 0x3007
-    ("_glGet", B,      1,      "GL_LIGHT0"),   # 0x4000
-    ("_glGet", B,      1,      "GL_LIGHT1"),   # 0x4001
-    ("_glGet", B,      1,      "GL_LIGHT2"),   # 0x4002
-    ("_glGet", B,      1,      "GL_LIGHT3"),   # 0x4003
-    ("_glGet", B,      1,      "GL_LIGHT4"),   # 0x4004
-    ("_glGet", B,      1,      "GL_LIGHT5"),   # 0x4005
-    ("_glGet", B,      1,      "GL_LIGHT6"),   # 0x4006
-    ("_glGet", B,      1,      "GL_LIGHT7"),   # 0x4007
-    ("",       X,      1,      "GL_ABGR_EXT"), # 0x8000
-    ("",       X,      1,      "GL_CONSTANT_COLOR"),   # 0x8001
-    ("",       X,      1,      "GL_ONE_MINUS_CONSTANT_COLOR"), # 0x8002
-    ("",       X,      1,      "GL_CONSTANT_ALPHA"),   # 0x8003
-    ("",       X,      1,      "GL_ONE_MINUS_CONSTANT_ALPHA"), # 0x8004
-    ("glGet",  F,      4,      "GL_BLEND_COLOR"),      # 0x8005
-    ("",       X,      1,      "GL_FUNC_ADD"), # 0x8006
-    ("",       X,      1,      "GL_MIN"),      # 0x8007
-    ("",       X,      1,      "GL_MAX"),      # 0x8008
-    ("glGet",  E,      1,      "GL_BLEND_EQUATION"),   # 0x8009
-    ("",       X,      1,      "GL_FUNC_SUBTRACT"),    # 0x800A
-    ("",       X,      1,      "GL_FUNC_REVERSE_SUBTRACT"),    # 0x800B
-    ("",       X,      1,      "GL_CMYK_EXT"), # 0x800C
-    ("",       X,      1,      "GL_CMYKA_EXT"),        # 0x800D
-    ("glGet",  I,      1,      "GL_PACK_CMYK_HINT_EXT"),       # 0x800E
-    ("glGet",  I,      1,      "GL_UNPACK_CMYK_HINT_EXT"),     # 0x800F
-    ("glGet",  B,      1,      "GL_CONVOLUTION_1D"),   # 0x8010
-    ("glGet",  B,      1,      "GL_CONVOLUTION_2D"),   # 0x8011
-    ("glGet",  B,      1,      "GL_SEPARABLE_2D"),     # 0x8012
-    ("glGetConvolutionParameter",      E,      1,      "GL_CONVOLUTION_BORDER_MODE"),  # 0x8013
-    ("glGetConvolutionParameter",      F,      4,      "GL_CONVOLUTION_FILTER_SCALE"), # 0x8014
-    ("glGetConvolutionParameter",      F,      4,      "GL_CONVOLUTION_FILTER_BIAS"),  # 0x8015
-    ("",       X,      1,      "GL_REDUCE"),   # 0x8016
-    ("glGetConvolutionParameter",      E,      1,      "GL_CONVOLUTION_FORMAT"),       # 0x8017
-    ("glGetConvolutionParameter",      I,      1,      "GL_CONVOLUTION_WIDTH"),        # 0x8018
-    ("glGetConvolutionParameter",      I,      1,      "GL_CONVOLUTION_HEIGHT"),       # 0x8019
-    ("glGetConvolutionParameter",      I,      1,      "GL_MAX_CONVOLUTION_WIDTH"),    # 0x801A
-    ("glGetConvolutionParameter",      I,      1,      "GL_MAX_CONVOLUTION_HEIGHT"),   # 0x801B
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_RED_SCALE"),       # 0x801C
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_GREEN_SCALE"),     # 0x801D
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_BLUE_SCALE"),      # 0x801E
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_ALPHA_SCALE"),     # 0x801F
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_RED_BIAS"),        # 0x8020
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_GREEN_BIAS"),      # 0x8021
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_BLUE_BIAS"),       # 0x8022
-    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_ALPHA_BIAS"),      # 0x8023
-    ("glGet",  B,      1,      "GL_HISTOGRAM"),        # 0x8024
-    ("",       X,      1,      "GL_PROXY_HISTOGRAM"),  # 0x8025
-    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_WIDTH"),  # 0x8026
-    ("glGetHistogramParameter",        E,      1,      "GL_HISTOGRAM_FORMAT"), # 0x8027
-    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_RED_SIZE"),       # 0x8028
-    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_GREEN_SIZE"),     # 0x8029
-    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_BLUE_SIZE"),      # 0x802A
-    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_ALPHA_SIZE"),     # 0x802B
-    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_LUMINANCE_SIZE"), # 0x802C
-    ("glGetHistogramParameter",        B,      1,      "GL_HISTOGRAM_SINK"),   # 0x802D
-    ("glGet",  B,      1,      "GL_MINMAX"),   # 0x802E
-    ("glGetMinMaxParameter",   E,      1,      "GL_MINMAX_FORMAT"),    # 0x802F
-    ("glGetMinMaxParameter",   B,      1,      "GL_MINMAX_SINK"),      # 0x8030
-    ("",       X,      1,      "GL_TABLE_TOO_LARGE"),  # 0x8031
-    ("",       X,      1,      "GL_UNSIGNED_BYTE_3_3_2"),      # 0x8032
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_4_4_4_4"),   # 0x8033
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_5_5_5_1"),   # 0x8034
-    ("",       X,      1,      "GL_UNSIGNED_INT_8_8_8_8"),     # 0x8035
-    ("",       X,      1,      "GL_UNSIGNED_INT_10_10_10_2"),  # 0x8036
-    ("glGet",  B,      1,      "GL_POLYGON_OFFSET_FILL"),      # 0x8037
-    ("glGet",  F,      1,      "GL_POLYGON_OFFSET_FACTOR"),    # 0x8038
-    ("glGet",  F,      1,      "GL_POLYGON_OFFSET_BIAS_EXT"),  # 0x8039
-    ("glGet",  B,      1,      "GL_RESCALE_NORMAL"),   # 0x803A
-    ("",       X,      1,      "GL_ALPHA4"),   # 0x803B
-    ("",       X,      1,      "GL_ALPHA8"),   # 0x803C
-    ("",       X,      1,      "GL_ALPHA12"),  # 0x803D
-    ("",       X,      1,      "GL_ALPHA16"),  # 0x803E
-    ("",       X,      1,      "GL_LUMINANCE4"),       # 0x803F
-    ("",       X,      1,      "GL_LUMINANCE8"),       # 0x8040
-    ("",       X,      1,      "GL_LUMINANCE12"),      # 0x8041
-    ("",       X,      1,      "GL_LUMINANCE16"),      # 0x8042
-    ("",       X,      1,      "GL_LUMINANCE4_ALPHA4"),        # 0x8043
-    ("",       X,      1,      "GL_LUMINANCE6_ALPHA2"),        # 0x8044
-    ("",       X,      1,      "GL_LUMINANCE8_ALPHA8"),        # 0x8045
-    ("",       X,      1,      "GL_LUMINANCE12_ALPHA4"),       # 0x8046
-    ("",       X,      1,      "GL_LUMINANCE12_ALPHA12"),      # 0x8047
-    ("",       X,      1,      "GL_LUMINANCE16_ALPHA16"),      # 0x8048
-    ("",       X,      1,      "GL_INTENSITY"),        # 0x8049
-    ("",       X,      1,      "GL_INTENSITY4"),       # 0x804A
-    ("",       X,      1,      "GL_INTENSITY8"),       # 0x804B
-    ("",       X,      1,      "GL_INTENSITY12"),      # 0x804C
-    ("",       X,      1,      "GL_INTENSITY16"),      # 0x804D
-    ("",       X,      1,      "GL_RGB2_EXT"), # 0x804E
-    ("",       X,      1,      "GL_RGB4"),     # 0x804F
-    ("",       X,      1,      "GL_RGB5"),     # 0x8050
-    ("",       X,      1,      "GL_RGB8"),     # 0x8051
-    ("",       X,      1,      "GL_RGB10"),    # 0x8052
-    ("",       X,      1,      "GL_RGB12"),    # 0x8053
-    ("",       X,      1,      "GL_RGB16"),    # 0x8054
-    ("",       X,      1,      "GL_RGBA2"),    # 0x8055
-    ("",       X,      1,      "GL_RGBA4"),    # 0x8056
-    ("",       X,      1,      "GL_RGB5_A1"),  # 0x8057
-    ("",       X,      1,      "GL_RGBA8"),    # 0x8058
-    ("",       X,      1,      "GL_RGB10_A2"), # 0x8059
-    ("",       X,      1,      "GL_RGBA12"),   # 0x805A
-    ("",       X,      1,      "GL_RGBA16"),   # 0x805B
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_RED_SIZE"), # 0x805C
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_GREEN_SIZE"),       # 0x805D
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_BLUE_SIZE"),        # 0x805E
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_ALPHA_SIZE"),       # 0x805F
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_LUMINANCE_SIZE"),   # 0x8060
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_INTENSITY_SIZE"),   # 0x8061
-    ("",       X,      1,      "GL_REPLACE_EXT"),      # 0x8062
-    ("",       X,      1,      "GL_PROXY_TEXTURE_1D"), # 0x8063
-    ("",       X,      1,      "GL_PROXY_TEXTURE_2D"), # 0x8064
-    ("",       X,      1,      "GL_TEXTURE_TOO_LARGE_EXT"),    # 0x8065
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_PRIORITY"), # 0x8066
-    ("glGetTexParameter",      B,      1,      "GL_TEXTURE_RESIDENT"), # 0x8067
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_1D"),       # 0x8068
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_2D"),       # 0x8069
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_3D"),       # 0x806A
-    ("glGet",  I,      1,      "GL_PACK_SKIP_IMAGES"), # 0x806B
-    ("glGet",  F,      1,      "GL_PACK_IMAGE_HEIGHT"),        # 0x806C
-    ("glGet",  I,      1,      "GL_UNPACK_SKIP_IMAGES"),       # 0x806D
-    ("glGet",  F,      1,      "GL_UNPACK_IMAGE_HEIGHT"),      # 0x806E
-    ("glGet",  B,      1,      "GL_TEXTURE_3D"),       # 0x806F
-    ("",       X,      1,      "GL_PROXY_TEXTURE_3D"), # 0x8070
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_DEPTH"),    # 0x8071
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_WRAP_R"),   # 0x8072
-    ("glGet",  I,      1,      "GL_MAX_3D_TEXTURE_SIZE"),      # 0x8073
-    ("glGet",  B,      1,      "GL_VERTEX_ARRAY"),     # 0x8074
-    ("glGet",  B,      1,      "GL_NORMAL_ARRAY"),     # 0x8075
-    ("glGet",  B,      1,      "GL_COLOR_ARRAY"),      # 0x8076
-    ("glGet",  B,      1,      "GL_INDEX_ARRAY"),      # 0x8077
-    ("glGet",  B,      1,      "GL_TEXTURE_COORD_ARRAY"),      # 0x8078
-    ("glGet",  B,      1,      "GL_EDGE_FLAG_ARRAY"),  # 0x8079
-    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_SIZE"),        # 0x807A
-    ("glGet",  E,      1,      "GL_VERTEX_ARRAY_TYPE"),        # 0x807B
-    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_STRIDE"),      # 0x807C
-    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_COUNT_EXT"),   # 0x807D
-    ("glGet",  E,      1,      "GL_NORMAL_ARRAY_TYPE"),        # 0x807E
-    ("glGet",  I,      1,      "GL_NORMAL_ARRAY_STRIDE"),      # 0x807F
-    ("glGet",  I,      1,      "GL_NORMAL_ARRAY_COUNT_EXT"),   # 0x8080
-    ("glGet",  I,      1,      "GL_COLOR_ARRAY_SIZE"), # 0x8081
-    ("glGet",  E,      1,      "GL_COLOR_ARRAY_TYPE"), # 0x8082
-    ("glGet",  I,      1,      "GL_COLOR_ARRAY_STRIDE"),       # 0x8083
-    ("glGet",  I,      1,      "GL_COLOR_ARRAY_COUNT_EXT"),    # 0x8084
-    ("glGet",  E,      1,      "GL_INDEX_ARRAY_TYPE"), # 0x8085
-    ("glGet",  I,      1,      "GL_INDEX_ARRAY_STRIDE"),       # 0x8086
-    ("glGet",  I,      1,      "GL_INDEX_ARRAY_COUNT_EXT"),    # 0x8087
-    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_SIZE"), # 0x8088
-    ("glGet",  E,      1,      "GL_TEXTURE_COORD_ARRAY_TYPE"), # 0x8089
-    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_STRIDE"),       # 0x808A
-    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_COUNT_EXT"),    # 0x808B
-    ("glGet",  I,      1,      "GL_EDGE_FLAG_ARRAY_STRIDE"),   # 0x808C
-    ("glGet",  I,      1,      "GL_EDGE_FLAG_ARRAY_COUNT_EXT"),        # 0x808D
-    ("glGet",  P,      1,      "GL_VERTEX_ARRAY_POINTER"),     # 0x808E
-    ("glGet",  P,      1,      "GL_NORMAL_ARRAY_POINTER"),     # 0x808F
-    ("glGet",  P,      1,      "GL_COLOR_ARRAY_POINTER"),      # 0x8090
-    ("glGet",  P,      1,      "GL_INDEX_ARRAY_POINTER"),      # 0x8091
-    ("glGet",  P,      1,      "GL_TEXTURE_COORD_ARRAY_POINTER"),      # 0x8092
-    ("glGet",  P,      1,      "GL_EDGE_FLAG_ARRAY_POINTER"),  # 0x8093
-    ("glGet",  I,      1,      "GL_INTERLACE_SGIX"),   # 0x8094
-    ("",       X,      1,      "GL_DETAIL_TEXTURE_2D_SGIS"),   # 0x8095
-    ("glGet",  I,      1,      "GL_DETAIL_TEXTURE_2D_BINDING_SGIS"),   # 0x8096
-    ("",       X,      1,      "GL_LINEAR_DETAIL_SGIS"),       # 0x8097
-    ("",       X,      1,      "GL_LINEAR_DETAIL_ALPHA_SGIS"), # 0x8098
-    ("",       X,      1,      "GL_LINEAR_DETAIL_COLOR_SGIS"), # 0x8099
-    ("",       X,      1,      "GL_DETAIL_TEXTURE_LEVEL_SGIS"),        # 0x809A
-    ("",       X,      1,      "GL_DETAIL_TEXTURE_MODE_SGIS"), # 0x809B
-    ("",       X,      1,      "GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS"),  # 0x809C
-    ("glGet",  I,      1,      "GL_MULTISAMPLE"),      # 0x809D
-    ("glGet",  I,      1,      "GL_SAMPLE_ALPHA_TO_COVERAGE"), # 0x809E
-    ("glGet",  I,      1,      "GL_SAMPLE_ALPHA_TO_ONE"),      # 0x809F
-    ("glGet",  I,      1,      "GL_SAMPLE_COVERAGE"),  # 0x80A0
-    ("",       X,      1,      "GL_1PASS_EXT"),        # 0x80A1
-    ("",       X,      1,      "GL_2PASS_0_EXT"),      # 0x80A2
-    ("",       X,      1,      "GL_2PASS_1_EXT"),      # 0x80A3
-    ("",       X,      1,      "GL_4PASS_0_EXT"),      # 0x80A4
-    ("",       X,      1,      "GL_4PASS_1_EXT"),      # 0x80A5
-    ("",       X,      1,      "GL_4PASS_2_EXT"),      # 0x80A6
-    ("",       X,      1,      "GL_4PASS_3_EXT"),      # 0x80A7
-    ("glGet",  I,      1,      "GL_SAMPLE_BUFFERS"),   # 0x80A8
-    ("glGet",  I,      1,      "GL_SAMPLES"),  # 0x80A9
-    ("glGet",  F,      1,      "GL_SAMPLE_COVERAGE_VALUE"),    # 0x80AA
-    ("glGet",  I,      1,      "GL_SAMPLE_COVERAGE_INVERT"),   # 0x80AB
-    ("glGet",  I,      1,      "GL_SAMPLE_PATTERN_EXT"),       # 0x80AC
-    ("",       X,      1,      "GL_LINEAR_SHARPEN_SGIS"),      # 0x80AD
-    ("",       X,      1,      "GL_LINEAR_SHARPEN_ALPHA_SGIS"),        # 0x80AE
-    ("",       X,      1,      "GL_LINEAR_SHARPEN_COLOR_SGIS"),        # 0x80AF
-    ("",       X,      1,      "GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS"), # 0x80B0
-    ("glGet",  F,      16,     "GL_COLOR_MATRIX"),     # 0x80B1
-    ("glGet",  I,      1,      "GL_COLOR_MATRIX_STACK_DEPTH"), # 0x80B2
-    ("glGet",  I,      1,      "GL_MAX_COLOR_MATRIX_STACK_DEPTH"),     # 0x80B3
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_RED_SCALE"),      # 0x80B4
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_GREEN_SCALE"),    # 0x80B5
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_BLUE_SCALE"),     # 0x80B6
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_ALPHA_SCALE"),    # 0x80B7
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_RED_BIAS"),       # 0x80B8
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_GREEN_BIAS"),     # 0x80B9
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_BLUE_BIAS"),      # 0x80BA
-    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_ALPHA_BIAS"),     # 0x80BB
-    ("glGet",  I,      1,      "GL_TEXTURE_COLOR_TABLE_SGI"),  # 0x80BC
-    ("",       X,      1,      "GL_PROXY_TEXTURE_COLOR_TABLE_SGI"),    # 0x80BD
-    ("",       X,      1,      "GL_TEXTURE_ENV_BIAS_SGIX"),    # 0x80BE
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB"),   # 0x80BF
-    ("glGet",  E,      1,      "GL_BLEND_DST_RGB"),    # 0x80C8
-    ("glGet",  E,      1,      "GL_BLEND_SRC_RGB"),    # 0x80C9
-    ("glGet",  E,      1,      "GL_BLEND_DST_ALPHA"),  # 0x80CA
-    ("glGet",  E,      1,      "GL_BLEND_SRC_ALPHA"),  # 0x80CB
-    ("",       X,      1,      "GL_422_EXT"),  # 0x80CC
-    ("",       X,      1,      "GL_422_REV_EXT"),      # 0x80CD
-    ("",       X,      1,      "GL_422_AVERAGE_EXT"),  # 0x80CE
-    ("",       X,      1,      "GL_422_REV_AVERAGE_EXT"),      # 0x80CF
-    ("glGet",  B,      1,      "GL_COLOR_TABLE"),      # 0x80D0
-    ("glGet",  I,      1,      "GL_POST_CONVOLUTION_COLOR_TABLE"),     # 0x80D1
-    ("glGet",  I,      1,      "GL_POST_COLOR_MATRIX_COLOR_TABLE"),    # 0x80D2
-    ("",       X,      1,      "GL_PROXY_COLOR_TABLE"),        # 0x80D3
-    ("",       X,      1,      "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE"),       # 0x80D4
-    ("",       X,      1,      "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE"),      # 0x80D5
-    ("glGetColorTableParameter",       F,      4,      "GL_COLOR_TABLE_SCALE"),        # 0x80D6
-    ("glGetColorTableParameter",       F,      4,      "GL_COLOR_TABLE_BIAS"), # 0x80D7
-    ("glGetColorTableParameter",       E,      1,      "GL_COLOR_TABLE_FORMAT"),       # 0x80D8
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_WIDTH"),        # 0x80D9
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_RED_SIZE"),     # 0x80DA
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_GREEN_SIZE"),   # 0x80DB
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_BLUE_SIZE"),    # 0x80DC
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_ALPHA_SIZE"),   # 0x80DD
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_LUMINANCE_SIZE"),       # 0x80DE
-    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_INTENSITY_SIZE"),       # 0x80DF
-    ("",       X,      1,      "GL_BGR"),      # 0x80E0
-    ("",       X,      1,      "GL_BGRA"),     # 0x80E1
-    ("",       X,      1,      "GL_COLOR_INDEX1_EXT"), # 0x80E2
-    ("",       X,      1,      "GL_COLOR_INDEX2_EXT"), # 0x80E3
-    ("",       X,      1,      "GL_COLOR_INDEX4_EXT"), # 0x80E4
-    ("",       X,      1,      "GL_COLOR_INDEX8_EXT"), # 0x80E5
-    ("",       X,      1,      "GL_COLOR_INDEX12_EXT"),        # 0x80E6
-    ("",       X,      1,      "GL_COLOR_INDEX16_EXT"),        # 0x80E7
-    ("glGet",  I,      1,      "GL_MAX_ELEMENTS_VERTICES"),    # 0x80E8
-    ("glGet",  I,      1,      "GL_MAX_ELEMENTS_INDICES"),     # 0x80E9
-    ("",       X,      1,      "GL_PHONG_WIN"),        # 0x80EA
-    ("",       X,      1,      "GL_PHONG_HINT_WIN"),   # 0x80EB
-    ("",       X,      1,      "GL_FOG_SPECULAR_TEXTURE_WIN"), # 0x80EC
-    ("",       X,      1,      "GL_TEXTURE_INDEX_SIZE_EXT"),   # 0x80ED
-    ("glGet",  E,      1,      "GL_CLIP_VOLUME_CLIPPING_HINT_EXT"),    # 0x80F0
-    ("",       X,      1,      "GL_DUAL_ALPHA4_SGIS"), # 0x8110
-    ("",       X,      1,      "GL_DUAL_ALPHA8_SGIS"), # 0x8111
-    ("",       X,      1,      "GL_DUAL_ALPHA12_SGIS"),        # 0x8112
-    ("",       X,      1,      "GL_DUAL_ALPHA16_SGIS"),        # 0x8113
-    ("",       X,      1,      "GL_DUAL_LUMINANCE4_SGIS"),     # 0x8114
-    ("",       X,      1,      "GL_DUAL_LUMINANCE8_SGIS"),     # 0x8115
-    ("",       X,      1,      "GL_DUAL_LUMINANCE12_SGIS"),    # 0x8116
-    ("",       X,      1,      "GL_DUAL_LUMINANCE16_SGIS"),    # 0x8117
-    ("",       X,      1,      "GL_DUAL_INTENSITY4_SGIS"),     # 0x8118
-    ("",       X,      1,      "GL_DUAL_INTENSITY8_SGIS"),     # 0x8119
-    ("",       X,      1,      "GL_DUAL_INTENSITY12_SGIS"),    # 0x811A
-    ("",       X,      1,      "GL_DUAL_INTENSITY16_SGIS"),    # 0x811B
-    ("",       X,      1,      "GL_DUAL_LUMINANCE_ALPHA4_SGIS"),       # 0x811C
-    ("",       X,      1,      "GL_DUAL_LUMINANCE_ALPHA8_SGIS"),       # 0x811D
-    ("",       X,      1,      "GL_QUAD_ALPHA4_SGIS"), # 0x811E
-    ("",       X,      1,      "GL_QUAD_ALPHA8_SGIS"), # 0x811F
-    ("",       X,      1,      "GL_QUAD_LUMINANCE4_SGIS"),     # 0x8120
-    ("",       X,      1,      "GL_QUAD_LUMINANCE8_SGIS"),     # 0x8121
-    ("",       X,      1,      "GL_QUAD_INTENSITY4_SGIS"),     # 0x8122
-    ("",       X,      1,      "GL_QUAD_INTENSITY8_SGIS"),     # 0x8123
-    ("",       X,      1,      "GL_DUAL_TEXTURE_SELECT_SGIS"), # 0x8124
-    ("",       X,      1,      "GL_QUAD_TEXTURE_SELECT_SGIS"), # 0x8125
-    ("glGet",  F,      1,      "GL_POINT_SIZE_MIN"),   # 0x8126
-    ("glGet",  F,      1,      "GL_POINT_SIZE_MAX"),   # 0x8127
-    ("glGet",  F,      1,      "GL_POINT_FADE_THRESHOLD_SIZE"),        # 0x8128
-    ("glGet",  F,      3,      "GL_POINT_DISTANCE_ATTENUATION"),       # 0x8129
-    ("",       X,      1,      "GL_FOG_FUNC_SGIS"),    # 0x812A
-    ("glGet",  I,      1,      "GL_FOG_FUNC_POINTS_SGIS"),     # 0x812B
-    ("glGet",  I,      1,      "GL_MAX_FOG_FUNC_POINTS_SGIS"), # 0x812C
-    ("",       X,      1,      "GL_CLAMP_TO_BORDER"),  # 0x812D
-    ("",       X,      1,      "GL_TEXTURE_MULTI_BUFFER_HINT_SGIX"),   # 0x812E
-    ("",       X,      1,      "GL_CLAMP_TO_EDGE"),    # 0x812F
-    ("glGet",  I,      1,      "GL_PACK_SKIP_VOLUMES_SGIS"),   # 0x8130
-    ("glGet",  I,      1,      "GL_PACK_IMAGE_DEPTH_SGIS"),    # 0x8131
-    ("glGet",  I,      1,      "GL_UNPACK_SKIP_VOLUMES_SGIS"), # 0x8132
-    ("glGet",  I,      1,      "GL_UNPACK_IMAGE_DEPTH_SGIS"),  # 0x8133
-    ("glGet",  I,      1,      "GL_TEXTURE_4D_SGIS"),  # 0x8134
-    ("",       X,      1,      "GL_PROXY_TEXTURE_4D_SGIS"),    # 0x8135
-    ("",       X,      1,      "GL_TEXTURE_4DSIZE_SGIS"),      # 0x8136
-    ("",       X,      1,      "GL_TEXTURE_WRAP_Q_SGIS"),      # 0x8137
-    ("glGet",  I,      1,      "GL_MAX_4D_TEXTURE_SIZE_SGIS"), # 0x8138
-    ("glGet",  I,      1,      "GL_PIXEL_TEX_GEN_SGIX"),       # 0x8139
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MIN_LOD"),  # 0x813A
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_LOD"),  # 0x813B
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_BASE_LEVEL"),       # 0x813C
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_LEVEL"),        # 0x813D
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX"),   # 0x813E
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_CACHE_INCREMENT_SGIX"),  # 0x813F
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_WIDTH_SGIX"),    # 0x8140
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_HEIGHT_SGIX"),   # 0x8141
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_GRID_WIDTH_SGIX"),       # 0x8142
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_GRID_HEIGHT_SGIX"),      # 0x8143
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_GRID_DEPTH_SGIX"),       # 0x8144
-    ("glGet",  I,      1,      "GL_PIXEL_TILE_CACHE_SIZE_SGIX"),       # 0x8145
-    ("",       X,      1,      "GL_FILTER4_SGIS"),     # 0x8146
-    ("",       X,      1,      "GL_TEXTURE_FILTER4_SIZE_SGIS"),        # 0x8147
-    ("glGet",  I,      1,      "GL_SPRITE_SGIX"),      # 0x8148
-    ("glGet",  I,      1,      "GL_SPRITE_MODE_SGIX"), # 0x8149
-    ("glGet",  F,      3,      "GL_SPRITE_AXIS_SGIX"), # 0x814A
-    ("glGet",  F,      3,      "GL_SPRITE_TRANSLATION_SGIX"),  # 0x814B
-    ("",       X,      1,      "GL_SPRITE_AXIAL_SGIX"),        # 0x814C
-    ("",       X,      1,      "GL_SPRITE_OBJECT_ALIGNED_SGIX"),       # 0x814D
-    ("",       X,      1,      "GL_SPRITE_EYE_ALIGNED_SGIX"),  # 0x814E
-    ("glGet",  I,      1,      "GL_TEXTURE_4D_BINDING_SGIS"),  # 0x814F
-    ("",       X,      1,      "GL_IGNORE_BORDER_HP"), # 0x8150
-    ("",       X,      1,      "GL_CONSTANT_BORDER"),  # 0x8151
-    ("",       X,      1,      "GL_REPLICATE_BORDER"), # 0x8153
-    ("glGetConvolutionParameter",      F,      4,      "GL_CONVOLUTION_BORDER_COLOR"), # 0x8154
-    ("",       X,      1,      "GL_IMAGE_SCALE_X_HP"), # 0x8155
-    ("",       X,      1,      "GL_IMAGE_SCALE_Y_HP"), # 0x8156
-    ("",       X,      1,      "GL_IMAGE_TRANSLATE_X_HP"),     # 0x8157
-    ("",       X,      1,      "GL_IMAGE_TRANSLATE_Y_HP"),     # 0x8158
-    ("",       X,      1,      "GL_IMAGE_ROTATE_ANGLE_HP"),    # 0x8159
-    ("",       X,      1,      "GL_IMAGE_ROTATE_ORIGIN_X_HP"), # 0x815A
-    ("",       X,      1,      "GL_IMAGE_ROTATE_ORIGIN_Y_HP"), # 0x815B
-    ("",       X,      1,      "GL_IMAGE_MAG_FILTER_HP"),      # 0x815C
-    ("",       X,      1,      "GL_IMAGE_MIN_FILTER_HP"),      # 0x815D
-    ("",       X,      1,      "GL_IMAGE_CUBIC_WEIGHT_HP"),    # 0x815E
-    ("",       X,      1,      "GL_CUBIC_HP"), # 0x815F
-    ("",       X,      1,      "GL_AVERAGE_HP"),       # 0x8160
-    ("",       X,      1,      "GL_IMAGE_TRANSFORM_2D_HP"),    # 0x8161
-    ("",       X,      1,      "GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP"),      # 0x8162
-    ("",       X,      1,      "GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP"),        # 0x8163
-    ("_glGet", B,      1,      "GL_OCCLUSION_TEST_HP"),        # 0x8165
-    ("_glGet", B,      1,      "GL_OCCLUSION_TEST_RESULT_HP"), # 0x8166
-    ("",       X,      1,      "GL_TEXTURE_LIGHTING_MODE_HP"), # 0x8167
-    ("",       X,      1,      "GL_TEXTURE_POST_SPECULAR_HP"), # 0x8168
-    ("",       X,      1,      "GL_TEXTURE_PRE_SPECULAR_HP"),  # 0x8169
-    ("",       X,      1,      "GL_LINEAR_CLIPMAP_LINEAR_SGIX"),       # 0x8170
-    ("glGetTexParameter",      I,      2,      "GL_TEXTURE_CLIPMAP_CENTER_SGIX"),      # 0x8171
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_CLIPMAP_FRAME_SGIX"),       # 0x8172
-    ("glGetTexParameter",      I,      2,      "GL_TEXTURE_CLIPMAP_OFFSET_SGIX"),      # 0x8173
-    ("glGetTexParameter",      I,      3,      "GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX"),       # 0x8174
-    ("",       X,      1,      "GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX"),  # 0x8175
-    ("",       X,      1,      "GL_TEXTURE_CLIPMAP_DEPTH_SGIX"),       # 0x8176
-    ("glGet",  I,      1,      "GL_MAX_CLIPMAP_DEPTH_SGIX"),   # 0x8177
-    ("glGet",  I,      1,      "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX"),   # 0x8178
-    ("glGetTexParameter",      F,      1,      "GL_POST_TEXTURE_FILTER_BIAS_SGIX"),    # 0x8179
-    ("glGetTexParameter",      F,      1,      "GL_POST_TEXTURE_FILTER_SCALE_SGIX"),   # 0x817A
-    ("glGet",  F,      2,      "GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX"),      # 0x817B
-    ("glGet",  F,      2,      "GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX"),     # 0x817C
-    ("glGet",  I,      1,      "GL_REFERENCE_PLANE_SGIX"),     # 0x817D
-    ("glGet",  F,      4,      "GL_REFERENCE_PLANE_EQUATION_SGIX"),    # 0x817E
-    ("glGet",  I,      1,      "GL_IR_INSTRUMENT1_SGIX"),      # 0x817F
-    ("",       X,      1,      "GL_INSTRUMENT_BUFFER_POINTER_SGIX"),   # 0x8180
-    ("glGet",  I,      1,      "GL_INSTRUMENT_MEASUREMENTS_SGIX"),     # 0x8181
-    ("",       X,      1,      "GL_LIST_PRIORITY_SGIX"),       # 0x8182
-    ("glGet",  I,      1,      "GL_CALLIGRAPHIC_FRAGMENT_SGIX"),       # 0x8183
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_Q_CEILING_SGIX"),     # 0x8184
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_Q_ROUND_SGIX"),       # 0x8185
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX"),       # 0x8186
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX"), # 0x8187
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX"),      # 0x8188
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX"),      # 0x8189
-    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX"),      # 0x818A
-    ("glGet",  I,      1,      "GL_FRAMEZOOM_SGIX"),   # 0x818B
-    ("glGet",  I,      1,      "GL_FRAMEZOOM_FACTOR_SGIX"),    # 0x818C
-    ("glGet",  I,      1,      "GL_MAX_FRAMEZOOM_FACTOR_SGIX"),        # 0x818D
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_LOD_BIAS_S_SGIX"),  # 0x818E
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_LOD_BIAS_T_SGIX"),  # 0x818F
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_LOD_BIAS_R_SGIX"),  # 0x8190
-    ("glGetTexParameter",      B,      1,      "GL_GENERATE_MIPMAP"),  # 0x8191
-    ("glGet",  E,      1,      "GL_GENERATE_MIPMAP_HINT"),     # 0x8192
-    ("",       X,      1,      "GL_GEOMETRY_DEFORMATION_SGIX"),        # 0x8194
-    ("",       X,      1,      "GL_TEXTURE_DEFORMATION_SGIX"), # 0x8195
-    ("glGet",  I,      1,      "GL_DEFORMATIONS_MASK_SGIX"),   # 0x8196
-    ("",       X,      1,      "GL_MAX_DEFORMATION_ORDER_SGIX"),       # 0x8197
-    ("glGet",  I,      1,      "GL_FOG_OFFSET_SGIX"),  # 0x8198
-    ("glGet",  F,      4,      "GL_FOG_OFFSET_VALUE_SGIX"),    # 0x8199
-    ("glGetTexParameter",      B,      1,      "GL_TEXTURE_COMPARE_SGIX"),     # 0x819A
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_COMPARE_OPERATOR_SGIX"),    # 0x819B
-    ("",       X,      1,      "GL_TEXTURE_LEQUAL_R_SGIX"),    # 0x819C
-    ("",       X,      1,      "GL_TEXTURE_GEQUAL_R_SGIX"),    # 0x819D
-    ("",       X,      1,      "GL_DEPTH_COMPONENT16"),        # 0x81A5
-    ("",       X,      1,      "GL_DEPTH_COMPONENT24"),        # 0x81A6
-    ("",       X,      1,      "GL_DEPTH_COMPONENT32"),        # 0x81A7
-    ("",       X,      1,      "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT"),     # 0x81A8
-    ("",       X,      1,      "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT"),     # 0x81A9
-    ("",       X,      1,      "GL_CULL_VERTEX_EXT"),  # 0x81AA
-    ("",       X,      1,      "GL_CULL_VERTEX_EYE_POSITION_EXT"),     # 0x81AB
-    ("",       X,      1,      "GL_CULL_VERTEX_OBJECT_POSITION_EXT"),  # 0x81AC
-    ("",       X,      1,      "GL_IUI_V2F_EXT"),      # 0x81AD
-    ("",       X,      1,      "GL_IUI_V3F_EXT"),      # 0x81AE
-    ("",       X,      1,      "GL_IUI_N3F_V2F_EXT"),  # 0x81AF
-    ("",       X,      1,      "GL_IUI_N3F_V3F_EXT"),  # 0x81B0
-    ("",       X,      1,      "GL_T2F_IUI_V2F_EXT"),  # 0x81B1
-    ("",       X,      1,      "GL_T2F_IUI_V3F_EXT"),  # 0x81B2
-    ("",       X,      1,      "GL_T2F_IUI_N3F_V2F_EXT"),      # 0x81B3
-    ("",       X,      1,      "GL_T2F_IUI_N3F_V3F_EXT"),      # 0x81B4
-    ("",       X,      1,      "GL_INDEX_TEST_EXT"),   # 0x81B5
-    ("",       X,      1,      "GL_INDEX_TEST_FUNC_EXT"),      # 0x81B6
-    ("",       X,      1,      "GL_INDEX_TEST_REF_EXT"),       # 0x81B7
-    ("",       X,      1,      "GL_INDEX_MATERIAL_EXT"),       # 0x81B8
-    ("",       X,      1,      "GL_INDEX_MATERIAL_PARAMETER_EXT"),     # 0x81B9
-    ("",       X,      1,      "GL_INDEX_MATERIAL_FACE_EXT"),  # 0x81BA
-    ("",       X,      1,      "GL_YCRCB_422_SGIX"),   # 0x81BB
-    ("",       X,      1,      "GL_YCRCB_444_SGIX"),   # 0x81BC
-    ("",       X,      1,      "GL_WRAP_BORDER_SUN"),  # 0x81D4
-    ("",       X,      1,      "GL_UNPACK_CONSTANT_DATA_SUNX"),        # 0x81D5
-    ("",       X,      1,      "GL_TEXTURE_CONSTANT_DATA_SUNX"),       # 0x81D6
-    ("",       X,      1,      "GL_TRIANGLE_LIST_SUN"),        # 0x81D7
-    ("",       X,      1,      "GL_REPLACEMENT_CODE_SUN"),     # 0x81D8
-    ("",       X,      1,      "GL_GLOBAL_ALPHA_SUN"), # 0x81D9
-    ("",       X,      1,      "GL_GLOBAL_ALPHA_FACTOR_SUN"),  # 0x81DA
-    ("",       X,      1,      "GL_TEXTURE_COLOR_WRITEMASK_SGIS"),     # 0x81EF
-    ("",       X,      1,      "GL_EYE_DISTANCE_TO_POINT_SGIS"),       # 0x81F0
-    ("",       X,      1,      "GL_OBJECT_DISTANCE_TO_POINT_SGIS"),    # 0x81F1
-    ("",       X,      1,      "GL_EYE_DISTANCE_TO_LINE_SGIS"),        # 0x81F2
-    ("",       X,      1,      "GL_OBJECT_DISTANCE_TO_LINE_SGIS"),     # 0x81F3
-    ("",       X,      1,      "GL_EYE_POINT_SGIS"),   # 0x81F4
-    ("",       X,      1,      "GL_OBJECT_POINT_SGIS"),        # 0x81F5
-    ("",       X,      1,      "GL_EYE_LINE_SGIS"),    # 0x81F6
-    ("",       X,      1,      "GL_OBJECT_LINE_SGIS"), # 0x81F7
-    ("glGet",  E,      1,      "GL_LIGHT_MODEL_COLOR_CONTROL"),        # 0x81F8
-    ("",       X,      1,      "GL_SINGLE_COLOR"),     # 0x81F9
-    ("",       X,      1,      "GL_SEPARATE_SPECULAR_COLOR"),  # 0x81FA
-    ("",       X,      1,      "GL_SHARED_TEXTURE_PALETTE_EXT"),       # 0x81FB
-    ("",       X,      1,      "GL_FOG_SCALE_SGIX"),   # 0x81FC
-    ("",       X,      1,      "GL_FOG_SCALE_VALUE_SGIX"),     # 0x81FD
-    ("",       X,      1,      "GL_TEXT_FRAGMENT_SHADER_ATI"), # 0x8200
-    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"),    # 0x8210
-    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"),    # 0x8211
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"),  # 0x8212
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"),        # 0x8213
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"), # 0x8214
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"),        # 0x8215
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"),        # 0x8216
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"),      # 0x8217
-    ("",       X,      1,      "GL_FRAMEBUFFER_DEFAULT"),      # 0x8218
-    ("",       X,      1,      "GL_FRAMEBUFFER_UNDEFINED"),    # 0x8219
-    ("",       X,      1,      "GL_DEPTH_STENCIL_ATTACHMENT"), # 0x821A
-    ("glGet",  I,      1,      "GL_MAJOR_VERSION"),    # 0x821B
-    ("glGet",  I,      1,      "GL_MINOR_VERSION"),    # 0x821C
-    ("glGet",  I,      1,      "GL_NUM_EXTENSIONS"),   # 0x821D
-    ("glGet",  I,      1,      "GL_CONTEXT_FLAGS"),    # 0x821E
-    ("",       X,      1,      "GL_INDEX"),    # 0x8222
-    ("",       X,      1,      "GL_DEPTH_BUFFER"),     # 0x8223
-    ("",       X,      1,      "GL_STENCIL_BUFFER"),   # 0x8224
-    ("",       X,      1,      "GL_COMPRESSED_RED"),   # 0x8225
-    ("",       X,      1,      "GL_COMPRESSED_RG"),    # 0x8226
-    ("",       X,      1,      "GL_RG"),       # 0x8227
-    ("",       X,      1,      "GL_RG_INTEGER"),       # 0x8228
-    ("",       X,      1,      "GL_R8"),       # 0x8229
-    ("",       X,      1,      "GL_R16"),      # 0x822A
-    ("",       X,      1,      "GL_RG8"),      # 0x822B
-    ("",       X,      1,      "GL_RG16"),     # 0x822C
-    ("",       X,      1,      "GL_R16F"),     # 0x822D
-    ("",       X,      1,      "GL_R32F"),     # 0x822E
-    ("",       X,      1,      "GL_RG16F"),    # 0x822F
-    ("",       X,      1,      "GL_RG32F"),    # 0x8230
-    ("",       X,      1,      "GL_R8I"),      # 0x8231
-    ("",       X,      1,      "GL_R8UI"),     # 0x8232
-    ("",       X,      1,      "GL_R16I"),     # 0x8233
-    ("",       X,      1,      "GL_R16UI"),    # 0x8234
-    ("",       X,      1,      "GL_R32I"),     # 0x8235
-    ("",       X,      1,      "GL_R32UI"),    # 0x8236
-    ("",       X,      1,      "GL_RG8I"),     # 0x8237
-    ("",       X,      1,      "GL_RG8UI"),    # 0x8238
-    ("",       X,      1,      "GL_RG16I"),    # 0x8239
-    ("",       X,      1,      "GL_RG16UI"),   # 0x823A
-    ("",       X,      1,      "GL_RG32I"),    # 0x823B
-    ("",       X,      1,      "GL_RG32UI"),   # 0x823C
-    ("",       X,      1,      "GL_SYNC_CL_EVENT_ARB"),        # 0x8240
-    ("",       X,      1,      "GL_SYNC_CL_EVENT_COMPLETE_ARB"),       # 0x8241
-    ("",       X,      1,      "GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB"),     # 0x8242
-    ("",       X,      1,      "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB"),     # 0x8243
-    ("",       X,      1,      "GL_DEBUG_CALLBACK_FUNCTION_ARB"),      # 0x8244
-    ("",       X,      1,      "GL_DEBUG_CALLBACK_USER_PARAM_ARB"),    # 0x8245
-    ("",       X,      1,      "GL_DEBUG_SOURCE_API_ARB"),     # 0x8246
-    ("",       X,      1,      "GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB"),   # 0x8247
-    ("",       X,      1,      "GL_DEBUG_SOURCE_SHADER_COMPILER_ARB"), # 0x8248
-    ("",       X,      1,      "GL_DEBUG_SOURCE_THIRD_PARTY_ARB"),     # 0x8249
-    ("",       X,      1,      "GL_DEBUG_SOURCE_APPLICATION_ARB"),     # 0x824A
-    ("",       X,      1,      "GL_DEBUG_SOURCE_OTHER_ARB"),   # 0x824B
-    ("",       X,      1,      "GL_DEBUG_TYPE_ERROR_ARB"),     # 0x824C
-    ("",       X,      1,      "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB"),       # 0x824D
-    ("",       X,      1,      "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB"),        # 0x824E
-    ("",       X,      1,      "GL_DEBUG_TYPE_PORTABILITY_ARB"),       # 0x824F
-    ("",       X,      1,      "GL_DEBUG_TYPE_PERFORMANCE_ARB"),       # 0x8250
-    ("",       X,      1,      "GL_DEBUG_TYPE_OTHER_ARB"),     # 0x8251
-    ("",       X,      1,      "GL_LOSE_CONTEXT_ON_RESET_ARB"),        # 0x8252
-    ("",       X,      1,      "GL_GUILTY_CONTEXT_RESET_ARB"), # 0x8253
-    ("",       X,      1,      "GL_INNOCENT_CONTEXT_RESET_ARB"),       # 0x8254
-    ("",       X,      1,      "GL_UNKNOWN_CONTEXT_RESET_ARB"),        # 0x8255
-    ("glGet",  E,      1,      "GL_RESET_NOTIFICATION_STRATEGY_ARB"),  # 0x8256
-    ("",       X,      1,      "GL_PROGRAM_BINARY_RETRIEVABLE_HINT"),  # 0x8257
-    ("",       X,      1,      "GL_PROGRAM_SEPARABLE"),        # 0x8258
-    ("glGet",  I,      1,      "GL_ACTIVE_PROGRAM"),   # 0x8259
-    ("glGet",  I,      1,      "GL_PROGRAM_PIPELINE_BINDING"), # 0x825A
-    ("glGet",  I,      1,      "GL_MAX_VIEWPORTS"),    # 0x825B
-    ("glGet",  I,      1,      "GL_VIEWPORT_SUBPIXEL_BITS"),   # 0x825C
-    ("glGet",  F,      2,      "GL_VIEWPORT_BOUNDS_RANGE"),    # 0x825D
-    ("glGet",  E,      1,      "GL_LAYER_PROVOKING_VERTEX"),   # 0x825E
-    ("glGet",  E,      1,      "GL_VIEWPORT_INDEX_PROVOKING_VERTEX"),  # 0x825F
-    ("",       X,      1,      "GL_UNDEFINED_VERTEX"), # 0x8260
-    ("",       X,      1,      "GL_NO_RESET_NOTIFICATION_ARB"),        # 0x8261
-    ("",       X,      1,      "GL_DEPTH_PASS_INSTRUMENT_SGIX"),       # 0x8310
-    ("",       X,      1,      "GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX"),      # 0x8311
-    ("",       X,      1,      "GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX"),   # 0x8312
-    ("glGet",  I,      1,      "GL_CONVOLUTION_HINT_SGIX"),    # 0x8316
-    ("",       X,      1,      "GL_YCRCB_SGIX"),       # 0x8318
-    ("",       X,      1,      "GL_YCRCBA_SGIX"),      # 0x8319
-    ("",       X,      1,      "GL_ALPHA_MIN_SGIX"),   # 0x8320
-    ("",       X,      1,      "GL_ALPHA_MAX_SGIX"),   # 0x8321
-    ("",       X,      1,      "GL_SCALEBIAS_HINT_SGIX"),      # 0x8322
-    ("",       X,      1,      "GL_ASYNC_MARKER_SGIX"),        # 0x8329
-    ("glGet",  I,      1,      "GL_PIXEL_TEX_GEN_MODE_SGIX"),  # 0x832B
-    ("",       X,      1,      "GL_ASYNC_HISTOGRAM_SGIX"),     # 0x832C
-    ("",       X,      1,      "GL_MAX_ASYNC_HISTOGRAM_SGIX"), # 0x832D
-    ("",       X,      1,      "GL_PIXEL_TRANSFORM_2D_EXT"),   # 0x8330
-    ("",       X,      1,      "GL_PIXEL_MAG_FILTER_EXT"),     # 0x8331
-    ("",       X,      1,      "GL_PIXEL_MIN_FILTER_EXT"),     # 0x8332
-    ("",       X,      1,      "GL_PIXEL_CUBIC_WEIGHT_EXT"),   # 0x8333
-    ("",       X,      1,      "GL_CUBIC_EXT"),        # 0x8334
-    ("",       X,      1,      "GL_AVERAGE_EXT"),      # 0x8335
-    ("",       X,      1,      "GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT"),       # 0x8336
-    ("",       X,      1,      "GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT"),   # 0x8337
-    ("",       X,      1,      "GL_PIXEL_TRANSFORM_2D_MATRIX_EXT"),    # 0x8338
-    ("",       X,      1,      "GL_FRAGMENT_MATERIAL_EXT"),    # 0x8349
-    ("",       X,      1,      "GL_FRAGMENT_NORMAL_EXT"),      # 0x834A
-    ("",       X,      1,      "GL_FRAGMENT_COLOR_EXT"),       # 0x834C
-    ("",       X,      1,      "GL_ATTENUATION_EXT"),  # 0x834D
-    ("",       X,      1,      "GL_SHADOW_ATTENUATION_EXT"),   # 0x834E
-    ("glGet",  I,      1,      "GL_TEXTURE_APPLICATION_MODE_EXT"),     # 0x834F
-    ("glGet",  I,      1,      "GL_TEXTURE_LIGHT_EXT"),        # 0x8350
-    ("glGet",  I,      1,      "GL_TEXTURE_MATERIAL_FACE_EXT"),        # 0x8351
-    ("glGet",  I,      1,      "GL_TEXTURE_MATERIAL_PARAMETER_EXT"),   # 0x8352
-    ("glGet",  I,      1,      "GL_PIXEL_TEXTURE_SGIS"),       # 0x8353
-    ("glGet",  I,      1,      "GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS"),   # 0x8354
-    ("glGet",  I,      1,      "GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS"), # 0x8355
-    ("glGet",  I,      1,      "GL_PIXEL_GROUP_COLOR_SGIS"),   # 0x8356
-    ("",       X,      1,      "GL_ASYNC_TEX_IMAGE_SGIX"),     # 0x835C
-    ("",       X,      1,      "GL_ASYNC_DRAW_PIXELS_SGIX"),   # 0x835D
-    ("",       X,      1,      "GL_ASYNC_READ_PIXELS_SGIX"),   # 0x835E
-    ("",       X,      1,      "GL_MAX_ASYNC_TEX_IMAGE_SGIX"), # 0x835F
-    ("",       X,      1,      "GL_MAX_ASYNC_DRAW_PIXELS_SGIX"),       # 0x8360
-    ("",       X,      1,      "GL_MAX_ASYNC_READ_PIXELS_SGIX"),       # 0x8361
-    ("",       X,      1,      "GL_UNSIGNED_BYTE_2_3_3_REV"),  # 0x8362
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_5_6_5"),     # 0x8363
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_5_6_5_REV"), # 0x8364
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_4_4_4_4_REV"),       # 0x8365
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_1_5_5_5_REV"),       # 0x8366
-    ("",       X,      1,      "GL_UNSIGNED_INT_8_8_8_8_REV"), # 0x8367
-    ("",       X,      1,      "GL_UNSIGNED_INT_2_10_10_10_REV"),      # 0x8368
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_CLAMP_S_SGIX"), # 0x8369
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_CLAMP_T_SGIX"), # 0x836A
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_CLAMP_R_SGIX"), # 0x836B
-    ("",       X,      1,      "GL_MIRRORED_REPEAT"),  # 0x8370
-    ("",       X,      1,      "GL_RGB_S3TC"), # 0x83A0
-    ("",       X,      1,      "GL_RGB4_S3TC"),        # 0x83A1
-    ("",       X,      1,      "GL_RGBA_S3TC"),        # 0x83A2
-    ("",       X,      1,      "GL_RGBA4_S3TC"),       # 0x83A3
-    ("",       X,      1,      "GL_VERTEX_PRECLIP_SGIX"),      # 0x83EE
-    ("",       X,      1,      "GL_VERTEX_PRECLIP_HINT_SGIX"), # 0x83EF
-    ("",       X,      1,      "GL_COMPRESSED_RGB_S3TC_DXT1_EXT"),     # 0x83F0
-    ("",       X,      1,      "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"),    # 0x83F1
-    ("",       X,      1,      "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"),    # 0x83F2
-    ("",       X,      1,      "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"),    # 0x83F3
-    ("",       X,      1,      "GL_PARALLEL_ARRAYS_INTEL"),    # 0x83F4
-    ("",       X,      1,      "GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL"),     # 0x83F5
-    ("",       X,      1,      "GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL"),     # 0x83F6
-    ("",       X,      1,      "GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL"),      # 0x83F7
-    ("",       X,      1,      "GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL"),      # 0x83F8
-    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHTING_SGIX"),   # 0x8400
-    ("glGet",  I,      1,      "GL_FRAGMENT_COLOR_MATERIAL_SGIX"),     # 0x8401
-    ("glGet",  I,      1,      "GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX"),        # 0x8402
-    ("glGet",  I,      1,      "GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX"),   # 0x8403
-    ("glGet",  I,      1,      "GL_MAX_FRAGMENT_LIGHTS_SGIX"), # 0x8404
-    ("glGet",  I,      1,      "GL_MAX_ACTIVE_LIGHTS_SGIX"),   # 0x8405
-    ("glGet",  I,      1,      "GL_CURRENT_RASTER_NORMAL_SGIX"),       # 0x8406
-    ("glGet",  I,      1,      "GL_LIGHT_ENV_MODE_SGIX"),      # 0x8407
-    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX"),   # 0x8408
-    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX"),       # 0x8409
-    ("glGet",  F,      4,      "GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX"),        # 0x840A
-    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX"),   # 0x840B
-    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT0_SGIX"),     # 0x840C
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT1_SGIX"),     # 0x840D
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT2_SGIX"),     # 0x840E
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT3_SGIX"),     # 0x840F
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT4_SGIX"),     # 0x8410
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT5_SGIX"),     # 0x8411
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT6_SGIX"),     # 0x8412
-    ("",       X,      1,      "GL_FRAGMENT_LIGHT7_SGIX"),     # 0x8413
-    ("",       X,      1,      "GL_PACK_RESAMPLE_SGIX"),       # 0x842C
-    ("",       X,      1,      "GL_UNPACK_RESAMPLE_SGIX"),     # 0x842D
-    ("",       X,      1,      "GL_RESAMPLE_REPLICATE_SGIX"),  # 0x842E
-    ("",       X,      1,      "GL_RESAMPLE_ZERO_FILL_SGIX"),  # 0x842F
-    ("",       X,      1,      "GL_RESAMPLE_DECIMATE_SGIX"),   # 0x8430
-    ("",       X,      1,      "GL_TANGENT_ARRAY_EXT"),        # 0x8439
-    ("",       X,      1,      "GL_BINORMAL_ARRAY_EXT"),       # 0x843A
-    ("",       X,      1,      "GL_CURRENT_TANGENT_EXT"),      # 0x843B
-    ("",       X,      1,      "GL_CURRENT_BINORMAL_EXT"),     # 0x843C
-    ("glGet",  E,      1,      "GL_TANGENT_ARRAY_TYPE_EXT"),   # 0x843E
-    ("",       X,      1,      "GL_TANGENT_ARRAY_STRIDE_EXT"), # 0x843F
-    ("glGet",  E,      1,      "GL_BINORMAL_ARRAY_TYPE_EXT"),  # 0x8440
-    ("",       X,      1,      "GL_BINORMAL_ARRAY_STRIDE_EXT"),        # 0x8441
-    ("glGet",  P,      1,      "GL_TANGENT_ARRAY_POINTER_EXT"),        # 0x8442
-    ("glGet",  P,      1,      "GL_BINORMAL_ARRAY_POINTER_EXT"),       # 0x8443
-    ("",       X,      1,      "GL_MAP1_TANGENT_EXT"), # 0x8444
-    ("",       X,      1,      "GL_MAP2_TANGENT_EXT"), # 0x8445
-    ("",       X,      1,      "GL_MAP1_BINORMAL_EXT"),        # 0x8446
-    ("",       X,      1,      "GL_MAP2_BINORMAL_EXT"),        # 0x8447
-    ("",       X,      1,      "GL_NEAREST_CLIPMAP_NEAREST_SGIX"),     # 0x844D
-    ("",       X,      1,      "GL_NEAREST_CLIPMAP_LINEAR_SGIX"),      # 0x844E
-    ("",       X,      1,      "GL_LINEAR_CLIPMAP_NEAREST_SGIX"),      # 0x844F
-    ("glGet",  E,      1,      "GL_FOG_COORD_SRC"),    # 0x8450
-    ("",       X,      1,      "GL_FOG_COORD"),        # 0x8451
-    ("",       X,      1,      "GL_FRAGMENT_DEPTH"),   # 0x8452
-    ("glGet",  F,      1,      "GL_CURRENT_FOG_COORD"),        # 0x8453
-    ("glGet",  E,      1,      "GL_FOG_COORD_ARRAY_TYPE"),     # 0x8454
-    ("glGet",  I,      1,      "GL_FOG_COORD_ARRAY_STRIDE"),   # 0x8455
-    ("",       X,      1,      "GL_FOG_COORD_ARRAY_POINTER"),  # 0x8456
-    ("glGet",  B,      1,      "GL_FOG_COORD_ARRAY"),  # 0x8457
-    ("glGet",  B,      1,      "GL_COLOR_SUM"),        # 0x8458
-    ("glGet",  F,      3,      "GL_CURRENT_SECONDARY_COLOR"),  # 0x8459
-    ("glGet",  I,      1,      "GL_SECONDARY_COLOR_ARRAY_SIZE"),       # 0x845A
-    ("glGet",  E,      1,      "GL_SECONDARY_COLOR_ARRAY_TYPE"),       # 0x845B
-    ("glGet",  I,      1,      "GL_SECONDARY_COLOR_ARRAY_STRIDE"),     # 0x845C
-    ("",       X,      1,      "GL_SECONDARY_COLOR_ARRAY_POINTER"),    # 0x845D
-    ("glGet",  B,      1,      "GL_SECONDARY_COLOR_ARRAY"),    # 0x845E
-    ("",       X,      1,      "GL_CURRENT_RASTER_SECONDARY_COLOR"),   # 0x845F
-    ("glGet",  F,      2,      "GL_ALIASED_POINT_SIZE_RANGE"), # 0x846D
-    ("glGet",  F,      2,      "GL_ALIASED_LINE_WIDTH_RANGE"), # 0x846E
-    ("",       X,      1,      "GL_SCREEN_COORDINATES_REND"),  # 0x8490
-    ("",       X,      1,      "GL_INVERTED_SCREEN_W_REND"),   # 0x8491
-    ("",       X,      1,      "GL_TEXTURE0"), # 0x84C0
-    ("",       X,      1,      "GL_TEXTURE1"), # 0x84C1
-    ("",       X,      1,      "GL_TEXTURE2"), # 0x84C2
-    ("",       X,      1,      "GL_TEXTURE3"), # 0x84C3
-    ("",       X,      1,      "GL_TEXTURE4"), # 0x84C4
-    ("",       X,      1,      "GL_TEXTURE5"), # 0x84C5
-    ("",       X,      1,      "GL_TEXTURE6"), # 0x84C6
-    ("",       X,      1,      "GL_TEXTURE7"), # 0x84C7
-    ("",       X,      1,      "GL_TEXTURE8"), # 0x84C8
-    ("",       X,      1,      "GL_TEXTURE9"), # 0x84C9
-    ("",       X,      1,      "GL_TEXTURE10"),        # 0x84CA
-    ("",       X,      1,      "GL_TEXTURE11"),        # 0x84CB
-    ("",       X,      1,      "GL_TEXTURE12"),        # 0x84CC
-    ("",       X,      1,      "GL_TEXTURE13"),        # 0x84CD
-    ("",       X,      1,      "GL_TEXTURE14"),        # 0x84CE
-    ("",       X,      1,      "GL_TEXTURE15"),        # 0x84CF
-    ("",       X,      1,      "GL_TEXTURE16"),        # 0x84D0
-    ("",       X,      1,      "GL_TEXTURE17"),        # 0x84D1
-    ("",       X,      1,      "GL_TEXTURE18"),        # 0x84D2
-    ("",       X,      1,      "GL_TEXTURE19"),        # 0x84D3
-    ("",       X,      1,      "GL_TEXTURE20"),        # 0x84D4
-    ("",       X,      1,      "GL_TEXTURE21"),        # 0x84D5
-    ("",       X,      1,      "GL_TEXTURE22"),        # 0x84D6
-    ("",       X,      1,      "GL_TEXTURE23"),        # 0x84D7
-    ("",       X,      1,      "GL_TEXTURE24"),        # 0x84D8
-    ("",       X,      1,      "GL_TEXTURE25"),        # 0x84D9
-    ("",       X,      1,      "GL_TEXTURE26"),        # 0x84DA
-    ("",       X,      1,      "GL_TEXTURE27"),        # 0x84DB
-    ("",       X,      1,      "GL_TEXTURE28"),        # 0x84DC
-    ("",       X,      1,      "GL_TEXTURE29"),        # 0x84DD
-    ("",       X,      1,      "GL_TEXTURE30"),        # 0x84DE
-    ("",       X,      1,      "GL_TEXTURE31"),        # 0x84DF
-    ("glGet",  E,      1,      "GL_ACTIVE_TEXTURE"),   # 0x84E0
-    ("glGet",  E,      1,      "GL_CLIENT_ACTIVE_TEXTURE"),    # 0x84E1
-    ("glGet",  I,      1,      "GL_MAX_TEXTURE_UNITS"),        # 0x84E2
-    ("glGet",  F,      16,     "GL_TRANSPOSE_MODELVIEW_MATRIX"),       # 0x84E3
-    ("glGet",  F,      16,     "GL_TRANSPOSE_PROJECTION_MATRIX"),      # 0x84E4
-    ("glGet",  F,      16,     "GL_TRANSPOSE_TEXTURE_MATRIX"), # 0x84E5
-    ("glGet",  F,      16,     "GL_TRANSPOSE_COLOR_MATRIX"),   # 0x84E6
-    ("",       X,      1,      "GL_SUBTRACT"), # 0x84E7
-    ("glGet",  I,      1,      "GL_MAX_RENDERBUFFER_SIZE"),    # 0x84E8
-    ("",       X,      1,      "GL_COMPRESSED_ALPHA"), # 0x84E9
-    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE"),     # 0x84EA
-    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE_ALPHA"),       # 0x84EB
-    ("",       X,      1,      "GL_COMPRESSED_INTENSITY"),     # 0x84EC
-    ("",       X,      1,      "GL_COMPRESSED_RGB"),   # 0x84ED
-    ("",       X,      1,      "GL_COMPRESSED_RGBA"),  # 0x84EE
-    ("glGet",  E,      1,      "GL_TEXTURE_COMPRESSION_HINT"), # 0x84EF
-    ("",       X,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"),  # 0x84F0
-    ("",       X,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"),       # 0x84F1
-    ("",       X,      1,      "GL_ALL_COMPLETED_NV"), # 0x84F2
-    ("",       X,      1,      "GL_FENCE_STATUS_NV"),  # 0x84F3
-    ("",       X,      1,      "GL_FENCE_CONDITION_NV"),       # 0x84F4
-    ("_glGet", B,      1,      "GL_TEXTURE_RECTANGLE"),        # 0x84F5
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_RECTANGLE"),        # 0x84F6
-    ("",       X,      1,      "GL_PROXY_TEXTURE_RECTANGLE"),  # 0x84F7
-    ("glGet",  I,      1,      "GL_MAX_RECTANGLE_TEXTURE_SIZE"),       # 0x84F8
-    ("",       X,      1,      "GL_DEPTH_STENCIL"),    # 0x84F9
-    ("",       X,      1,      "GL_UNSIGNED_INT_24_8"),        # 0x84FA
-    ("glGet",  F,      1,      "GL_MAX_TEXTURE_LOD_BIAS"),     # 0x84FD
-    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_ANISOTROPY_EXT"),       # 0x84FE
-    ("glGet",  F,      1,      "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"),   # 0x84FF
-    ("glGetTexEnv",    E,      1,      "GL_TEXTURE_FILTER_CONTROL"),   # 0x8500
-    ("glGetTexParameter,glGetTexEnv",  F,      1,      "GL_TEXTURE_LOD_BIAS"), # 0x8501
-    ("",       X,      1,      "GL_MODELVIEW1_STACK_DEPTH_EXT"),       # 0x8502
-    ("",       X,      1,      "GL_COMBINE4_NV"),      # 0x8503
-    ("glGet",  F,      1,      "GL_MAX_SHININESS_NV"), # 0x8504
-    ("glGet",  F,      1,      "GL_MAX_SPOT_EXPONENT_NV"),     # 0x8505
-    ("",       X,      1,      "GL_MODELVIEW1_MATRIX_EXT"),    # 0x8506
-    ("",       X,      1,      "GL_INCR_WRAP"),        # 0x8507
-    ("",       X,      1,      "GL_DECR_WRAP"),        # 0x8508
-    ("",       X,      1,      "GL_VERTEX_WEIGHTING_EXT"),     # 0x8509
-    ("",       X,      1,      "GL_MODELVIEW1_ARB"),   # 0x850A
-    ("",       X,      1,      "GL_CURRENT_VERTEX_WEIGHT_EXT"),        # 0x850B
-    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_EXT"),  # 0x850C
-    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT"),     # 0x850D
-    ("glGet",  E,      1,      "GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT"),     # 0x850E
-    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT"),   # 0x850F
-    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT"),  # 0x8510
-    ("",       X,      1,      "GL_NORMAL_MAP"),       # 0x8511
-    ("",       X,      1,      "GL_REFLECTION_MAP"),   # 0x8512
-    ("_glGet", B,      1,      "GL_TEXTURE_CUBE_MAP"), # 0x8513
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_CUBE_MAP"), # 0x8514
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_POSITIVE_X"),      # 0x8515
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_NEGATIVE_X"),      # 0x8516
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_POSITIVE_Y"),      # 0x8517
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"),      # 0x8518
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_POSITIVE_Z"),      # 0x8519
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"),      # 0x851A
-    ("",       X,      1,      "GL_PROXY_TEXTURE_CUBE_MAP"),   # 0x851B
-    ("glGet",  I,      1,      "GL_MAX_CUBE_MAP_TEXTURE_SIZE"),        # 0x851C
-    ("_glGet", B,      1,      "GL_VERTEX_ARRAY_RANGE_NV"),    # 0x851D
-    ("_glGet", I,      1,      "GL_VERTEX_ARRAY_RANGE_LENGTH_NV"),     # 0x851E
-    ("_glGet", B,      1,      "GL_VERTEX_ARRAY_RANGE_VALID_NV"),      # 0x851F
-    ("_glGet", I,      1,      "GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV"),        # 0x8520
-    ("_glGet", P,      1,      "GL_VERTEX_ARRAY_RANGE_POINTER_NV"),    # 0x8521
-    ("",       X,      1,      "GL_REGISTER_COMBINERS_NV"),    # 0x8522
-    ("",       X,      1,      "GL_VARIABLE_A_NV"),    # 0x8523
-    ("",       X,      1,      "GL_VARIABLE_B_NV"),    # 0x8524
-    ("",       X,      1,      "GL_VARIABLE_C_NV"),    # 0x8525
-    ("",       X,      1,      "GL_VARIABLE_D_NV"),    # 0x8526
-    ("",       X,      1,      "GL_VARIABLE_E_NV"),    # 0x8527
-    ("",       X,      1,      "GL_VARIABLE_F_NV"),    # 0x8528
-    ("",       X,      1,      "GL_VARIABLE_G_NV"),    # 0x8529
-    ("glGet",  F,      4,      "GL_CONSTANT_COLOR0_NV"),       # 0x852A
-    ("glGet",  F,      4,      "GL_CONSTANT_COLOR1_NV"),       # 0x852B
-    ("",       X,      1,      "GL_PRIMARY_COLOR_NV"), # 0x852C
-    ("",       X,      1,      "GL_SECONDARY_COLOR_NV"),       # 0x852D
-    ("",       X,      1,      "GL_SPARE0_NV"),        # 0x852E
-    ("",       X,      1,      "GL_SPARE1_NV"),        # 0x852F
-    ("",       X,      1,      "GL_DISCARD_NV"),       # 0x8530
-    ("",       X,      1,      "GL_E_TIMES_F_NV"),     # 0x8531
-    ("",       X,      1,      "GL_SPARE0_PLUS_SECONDARY_COLOR_NV"),   # 0x8532
-    ("",       X,      1,      "GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV"),      # 0x8533
-    ("glGet",  E,      1,      "GL_MULTISAMPLE_FILTER_HINT_NV"),       # 0x8534
-    ("",       X,      1,      "GL_PER_STAGE_CONSTANTS_NV"),   # 0x8535
-    ("",       X,      1,      "GL_UNSIGNED_IDENTITY_NV"),     # 0x8536
-    ("",       X,      1,      "GL_UNSIGNED_INVERT_NV"),       # 0x8537
-    ("",       X,      1,      "GL_EXPAND_NORMAL_NV"), # 0x8538
-    ("",       X,      1,      "GL_EXPAND_NEGATE_NV"), # 0x8539
-    ("",       X,      1,      "GL_HALF_BIAS_NORMAL_NV"),      # 0x853A
-    ("",       X,      1,      "GL_HALF_BIAS_NEGATE_NV"),      # 0x853B
-    ("",       X,      1,      "GL_SIGNED_IDENTITY_NV"),       # 0x853C
-    ("",       X,      1,      "GL_SIGNED_NEGATE_NV"), # 0x853D
-    ("",       X,      1,      "GL_SCALE_BY_TWO_NV"),  # 0x853E
-    ("",       X,      1,      "GL_SCALE_BY_FOUR_NV"), # 0x853F
-    ("",       X,      1,      "GL_SCALE_BY_ONE_HALF_NV"),     # 0x8540
-    ("",       X,      1,      "GL_BIAS_BY_NEGATIVE_ONE_HALF_NV"),     # 0x8541
-    ("",       X,      1,      "GL_COMBINER_INPUT_NV"),        # 0x8542
-    ("",       X,      1,      "GL_COMBINER_MAPPING_NV"),      # 0x8543
-    ("",       X,      1,      "GL_COMBINER_COMPONENT_USAGE_NV"),      # 0x8544
-    ("",       X,      1,      "GL_COMBINER_AB_DOT_PRODUCT_NV"),       # 0x8545
-    ("",       X,      1,      "GL_COMBINER_CD_DOT_PRODUCT_NV"),       # 0x8546
-    ("",       X,      1,      "GL_COMBINER_MUX_SUM_NV"),      # 0x8547
-    ("",       X,      1,      "GL_COMBINER_SCALE_NV"),        # 0x8548
-    ("",       X,      1,      "GL_COMBINER_BIAS_NV"), # 0x8549
-    ("",       X,      1,      "GL_COMBINER_AB_OUTPUT_NV"),    # 0x854A
-    ("",       X,      1,      "GL_COMBINER_CD_OUTPUT_NV"),    # 0x854B
-    ("",       X,      1,      "GL_COMBINER_SUM_OUTPUT_NV"),   # 0x854C
-    ("glGet",  I,      1,      "GL_MAX_GENERAL_COMBINERS_NV"), # 0x854D
-    ("glGet",  I,      1,      "GL_NUM_GENERAL_COMBINERS_NV"), # 0x854E
-    ("glGet",  B,      1,      "GL_COLOR_SUM_CLAMP_NV"),       # 0x854F
-    ("",       X,      1,      "GL_COMBINER0_NV"),     # 0x8550
-    ("",       X,      1,      "GL_COMBINER1_NV"),     # 0x8551
-    ("",       X,      1,      "GL_COMBINER2_NV"),     # 0x8552
-    ("",       X,      1,      "GL_COMBINER3_NV"),     # 0x8553
-    ("",       X,      1,      "GL_COMBINER4_NV"),     # 0x8554
-    ("",       X,      1,      "GL_COMBINER5_NV"),     # 0x8555
-    ("",       X,      1,      "GL_COMBINER6_NV"),     # 0x8556
-    ("",       X,      1,      "GL_COMBINER7_NV"),     # 0x8557
-    ("",       X,      1,      "GL_PRIMITIVE_RESTART_NV"),     # 0x8558
-    ("",       X,      1,      "GL_PRIMITIVE_RESTART_INDEX_NV"),       # 0x8559
-    ("glGet",  E,      1,      "GL_FOG_DISTANCE_MODE_NV"),     # 0x855A
-    ("",       X,      1,      "GL_EYE_RADIAL_NV"),    # 0x855B
-    ("",       X,      1,      "GL_EYE_PLANE_ABSOLUTE_NV"),    # 0x855C
-    ("",       X,      1,      "GL_EMBOSS_LIGHT_NV"),  # 0x855D
-    ("",       X,      1,      "GL_EMBOSS_CONSTANT_NV"),       # 0x855E
-    ("",       X,      1,      "GL_EMBOSS_MAP_NV"),    # 0x855F
-    ("",       X,      1,      "GL_RED_MIN_CLAMP_INGR"),       # 0x8560
-    ("",       X,      1,      "GL_GREEN_MIN_CLAMP_INGR"),     # 0x8561
-    ("",       X,      1,      "GL_BLUE_MIN_CLAMP_INGR"),      # 0x8562
-    ("",       X,      1,      "GL_ALPHA_MIN_CLAMP_INGR"),     # 0x8563
-    ("",       X,      1,      "GL_RED_MAX_CLAMP_INGR"),       # 0x8564
-    ("",       X,      1,      "GL_GREEN_MAX_CLAMP_INGR"),     # 0x8565
-    ("",       X,      1,      "GL_BLUE_MAX_CLAMP_INGR"),      # 0x8566
-    ("",       X,      1,      "GL_ALPHA_MAX_CLAMP_INGR"),     # 0x8567
-    ("",       X,      1,      "GL_INTERLACE_READ_INGR"),      # 0x8568
-    ("",       X,      1,      "GL_COMBINE"),  # 0x8570
-    ("glGetTexEnv",    E,      1,      "GL_COMBINE_RGB"),      # 0x8571
-    ("glGetTexEnv",    E,      1,      "GL_COMBINE_ALPHA"),    # 0x8572
-    ("glGetTexEnv",    F,      1,      "GL_RGB_SCALE"),        # 0x8573
-    ("",       X,      1,      "GL_ADD_SIGNED"),       # 0x8574
-    ("",       X,      1,      "GL_INTERPOLATE"),      # 0x8575
-    ("",       X,      1,      "GL_CONSTANT"), # 0x8576
-    ("",       X,      1,      "GL_PRIMARY_COLOR"),    # 0x8577
-    ("",       X,      1,      "GL_PREVIOUS"), # 0x8578
-    ("glGetTexEnv",    E,      1,      "GL_SRC0_RGB"), # 0x8580
-    ("glGetTexEnv",    E,      1,      "GL_SRC1_RGB"), # 0x8581
-    ("glGetTexEnv",    E,      1,      "GL_SRC2_RGB"), # 0x8582
-    ("glGetTexEnv",    E,      1,      "GL_SOURCE3_RGB_NV"),   # 0x8583
-    ("glGetTexEnv",    E,      1,      "GL_SRC0_ALPHA"),       # 0x8588
-    ("glGetTexEnv",    E,      1,      "GL_SRC1_ALPHA"),       # 0x8589
-    ("glGetTexEnv",    E,      1,      "GL_SRC2_ALPHA"),       # 0x858A
-    ("glGetTexEnv",    E,      1,      "GL_SOURCE3_ALPHA_NV"), # 0x858B
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND0_RGB"),     # 0x8590
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND1_RGB"),     # 0x8591
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND2_RGB"),     # 0x8592
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND3_RGB_NV"),  # 0x8593
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND0_ALPHA"),   # 0x8598
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND1_ALPHA"),   # 0x8599
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND2_ALPHA"),   # 0x859A
-    ("glGetTexEnv",    E,      1,      "GL_OPERAND3_ALPHA_NV"),        # 0x859B
-    ("",       X,      1,      "GL_PACK_SUBSAMPLE_RATE_SGIX"), # 0x85A0
-    ("",       X,      1,      "GL_UNPACK_SUBSAMPLE_RATE_SGIX"),       # 0x85A1
-    ("",       X,      1,      "GL_PIXEL_SUBSAMPLE_4444_SGIX"),        # 0x85A2
-    ("",       X,      1,      "GL_PIXEL_SUBSAMPLE_2424_SGIX"),        # 0x85A3
-    ("",       X,      1,      "GL_PIXEL_SUBSAMPLE_4242_SGIX"),        # 0x85A4
-    ("",       X,      1,      "GL_PERTURB_EXT"),      # 0x85AE
-    ("",       X,      1,      "GL_TEXTURE_NORMAL_EXT"),       # 0x85AF
-    ("",       X,      1,      "GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE"),        # 0x85B0
-    ("",       X,      1,      "GL_TRANSFORM_HINT_APPLE"),     # 0x85B1
-    ("",       X,      1,      "GL_UNPACK_CLIENT_STORAGE_APPLE"),      # 0x85B2
-    ("",       X,      1,      "GL_BUFFER_OBJECT_APPLE"),      # 0x85B3
-    ("",       X,      1,      "GL_STORAGE_CLIENT_APPLE"),     # 0x85B4
-    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_BINDING"),     # 0x85B5
-    ("glGetTexParameter",      X,      1,      "GL_TEXTURE_RANGE_LENGTH_APPLE"),       # 0x85B7
-    ("",       P,      1,      "GL_TEXTURE_RANGE_POINTER_APPLE"),      # 0x85B8
-    ("",       X,      1,      "GL_YCBCR_422_APPLE"),  # 0x85B9
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_8_8_MESA"),  # 0x85BA
-    ("",       X,      1,      "GL_UNSIGNED_SHORT_8_8_REV_MESA"),      # 0x85BB
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_STORAGE_HINT_APPLE"),       # 0x85BC
-    ("",       X,      1,      "GL_STORAGE_PRIVATE_APPLE"),    # 0x85BD
-    ("",       X,      1,      "GL_STORAGE_CACHED_APPLE"),     # 0x85BE
-    ("",       X,      1,      "GL_STORAGE_SHARED_APPLE"),     # 0x85BF
-    ("",       X,      1,      "GL_REPLACEMENT_CODE_ARRAY_SUN"),       # 0x85C0
-    ("glGet",  E,      1,      "GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN"),  # 0x85C1
-    ("",       X,      1,      "GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN"),        # 0x85C2
-    ("",       X,      1,      "GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN"),       # 0x85C3
-    ("",       X,      1,      "GL_R1UI_V3F_SUN"),     # 0x85C4
-    ("",       X,      1,      "GL_R1UI_C4UB_V3F_SUN"),        # 0x85C5
-    ("",       X,      1,      "GL_R1UI_C3F_V3F_SUN"), # 0x85C6
-    ("",       X,      1,      "GL_R1UI_N3F_V3F_SUN"), # 0x85C7
-    ("",       X,      1,      "GL_R1UI_C4F_N3F_V3F_SUN"),     # 0x85C8
-    ("",       X,      1,      "GL_R1UI_T2F_V3F_SUN"), # 0x85C9
-    ("",       X,      1,      "GL_R1UI_T2F_N3F_V3F_SUN"),     # 0x85CA
-    ("",       X,      1,      "GL_R1UI_T2F_C4F_N3F_V3F_SUN"), # 0x85CB
-    ("",       X,      1,      "GL_SLICE_ACCUM_SUN"),  # 0x85CC
-    ("",       X,      1,      "GL_QUAD_MESH_SUN"),    # 0x8614
-    ("",       X,      1,      "GL_TRIANGLE_MESH_SUN"),        # 0x8615
-    ("_glGet", B,      1,      "GL_VERTEX_PROGRAM_ARB"),       # 0x8620
-    ("",       X,      1,      "GL_VERTEX_STATE_PROGRAM_NV"),  # 0x8621
-    ("glGetVertexAttrib",      B,      1,      "GL_VERTEX_ATTRIB_ARRAY_ENABLED"),      # 0x8622
-    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_SIZE"), # 0x8623
-    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_STRIDE"),       # 0x8624
-    ("glGetVertexAttrib",      E,      1,      "GL_VERTEX_ATTRIB_ARRAY_TYPE"), # 0x8625
-    ("glGetVertexAttrib",      D,      4,      "GL_CURRENT_VERTEX_ATTRIB"),    # 0x8626
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_LENGTH_ARB"),       # 0x8627
-    ("",       S,      1,      "GL_PROGRAM_STRING_ARB"),       # 0x8628
-    ("",       X,      1,      "GL_MODELVIEW_PROJECTION_NV"),  # 0x8629
-    ("",       X,      1,      "GL_IDENTITY_NV"),      # 0x862A
-    ("",       X,      1,      "GL_INVERSE_NV"),       # 0x862B
-    ("",       X,      1,      "GL_TRANSPOSE_NV"),     # 0x862C
-    ("",       X,      1,      "GL_INVERSE_TRANSPOSE_NV"),     # 0x862D
-    ("glGet",  I,      1,      "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB"),       # 0x862E
-    ("glGet",  I,      1,      "GL_MAX_PROGRAM_MATRICES_ARB"), # 0x862F
-    ("",       X,      1,      "GL_MATRIX0_NV"),       # 0x8630
-    ("",       X,      1,      "GL_MATRIX1_NV"),       # 0x8631
-    ("",       X,      1,      "GL_MATRIX2_NV"),       # 0x8632
-    ("",       X,      1,      "GL_MATRIX3_NV"),       # 0x8633
-    ("",       X,      1,      "GL_MATRIX4_NV"),       # 0x8634
-    ("",       X,      1,      "GL_MATRIX5_NV"),       # 0x8635
-    ("",       X,      1,      "GL_MATRIX6_NV"),       # 0x8636
-    ("",       X,      1,      "GL_MATRIX7_NV"),       # 0x8637
-    ("glGet",  I,      1,      "GL_CURRENT_MATRIX_STACK_DEPTH_ARB"),   # 0x8640
-    ("glGet",  F,      16,     "GL_CURRENT_MATRIX_ARB"),       # 0x8641
-    ("glGet",  B,      1,      "GL_PROGRAM_POINT_SIZE"),       # 0x8642
-    ("glGet",  B,      1,      "GL_VERTEX_PROGRAM_TWO_SIDE"),  # 0x8643
-    ("",       X,      1,      "GL_PROGRAM_PARAMETER_NV"),     # 0x8644
-    ("glGetVertexAttrib",      P,      1,      "GL_VERTEX_ATTRIB_ARRAY_POINTER"),      # 0x8645
-    ("glGetProgramNV", I,      1,      "GL_PROGRAM_TARGET_NV"),        # 0x8646
-    ("glGetProgramNV", B,      1,      "GL_PROGRAM_RESIDENT_NV"),      # 0x8647
-    ("",       X,      1,      "GL_TRACK_MATRIX_NV"),  # 0x8648
-    ("",       X,      1,      "GL_TRACK_MATRIX_TRANSFORM_NV"),        # 0x8649
-    ("glGet",  I,      1,      "GL_VERTEX_PROGRAM_BINDING_NV"),        # 0x864A
-    ("glGet",  I,      1,      "GL_PROGRAM_ERROR_POSITION_ARB"),       # 0x864B
-    ("",       X,      1,      "GL_OFFSET_TEXTURE_RECTANGLE_NV"),      # 0x864C
-    ("",       X,      1,      "GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV"),        # 0x864D
-    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV"), # 0x864E
-    ("glGet",  B,      1,      "GL_DEPTH_CLAMP"),      # 0x864F
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY0_NV"),  # 0x8650
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY1_NV"),  # 0x8651
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY2_NV"),  # 0x8652
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY3_NV"),  # 0x8653
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY4_NV"),  # 0x8654
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY5_NV"),  # 0x8655
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY6_NV"),  # 0x8656
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY7_NV"),  # 0x8657
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY8_NV"),  # 0x8658
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY9_NV"),  # 0x8659
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY10_NV"), # 0x865A
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY11_NV"), # 0x865B
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY12_NV"), # 0x865C
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY13_NV"), # 0x865D
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY14_NV"), # 0x865E
-    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY15_NV"), # 0x865F
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB0_4_NV"), # 0x8660
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB1_4_NV"), # 0x8661
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB2_4_NV"), # 0x8662
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB3_4_NV"), # 0x8663
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB4_4_NV"), # 0x8664
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB5_4_NV"), # 0x8665
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB6_4_NV"), # 0x8666
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB7_4_NV"), # 0x8667
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB8_4_NV"), # 0x8668
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB9_4_NV"), # 0x8669
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB10_4_NV"),        # 0x866A
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB11_4_NV"),        # 0x866B
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB12_4_NV"),        # 0x866C
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB13_4_NV"),        # 0x866D
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB14_4_NV"),        # 0x866E
-    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB15_4_NV"),        # 0x866F
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB0_4_NV"), # 0x8670
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB1_4_NV"), # 0x8671
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB2_4_NV"), # 0x8672
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB3_4_NV"), # 0x8673
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB4_4_NV"), # 0x8674
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB5_4_NV"), # 0x8675
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB6_4_NV"), # 0x8676
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_BINDING_ARB"),      # 0x8677
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB8_4_NV"), # 0x8678
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB9_4_NV"), # 0x8679
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB10_4_NV"),        # 0x867A
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB11_4_NV"),        # 0x867B
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB12_4_NV"),        # 0x867C
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB13_4_NV"),        # 0x867D
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB14_4_NV"),        # 0x867E
-    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB15_4_NV"),        # 0x867F
-    ("",       X,      1,      "GL_TEXTURE_COMPRESSED_IMAGE_SIZE"),    # 0x86A0
-    ("glGetTexLevelParameter", B,      1,      "GL_TEXTURE_COMPRESSED"),       # 0x86A1
-    ("",       X,      1,      "GL_NUM_COMPRESSED_TEXTURE_FORMATS"),   # 0x86A2
-    #XXX: the list is GL_NUM_COMPRESSED_TEXTURES
-    #("glGet", E,      1,      "GL_COMPRESSED_TEXTURE_FORMATS"),       # 0x86A3
-    ("glGet",  I,      1,      "GL_MAX_VERTEX_UNITS_ARB"),     # 0x86A4
-    ("glGet",  I,      1,      "GL_ACTIVE_VERTEX_UNITS_ARB"),  # 0x86A5
-    ("glGet",  B,      1,      "GL_WEIGHT_SUM_UNITY_ARB"),     # 0x86A6
-    ("glGet",  B,      1,      "GL_VERTEX_BLEND_ARB"), # 0x86A7
-    ("glGet",  F,      1,      "GL_CURRENT_WEIGHT_ARB"),       # 0x86A8
-    ("glGet",  E,      1,      "GL_WEIGHT_ARRAY_TYPE_ARB"),    # 0x86A9
-    ("glGet",  I,      1,      "GL_WEIGHT_ARRAY_STRIDE_ARB"),  # 0x86AA
-    ("glGet",  I,      1,      "GL_WEIGHT_ARRAY_SIZE_ARB"),    # 0x86AB
-    ("glGet",  P,      1,      "GL_WEIGHT_ARRAY_POINTER_ARB"), # 0x86AC
-    ("glGet",  B,      1,      "GL_WEIGHT_ARRAY_ARB"), # 0x86AD
-    ("",       X,      1,      "GL_DOT3_RGB"), # 0x86AE
-    ("",       X,      1,      "GL_DOT3_RGBA"),        # 0x86AF
-    ("",       X,      1,      "GL_COMPRESSED_RGB_FXT1_3DFX"), # 0x86B0
-    ("",       X,      1,      "GL_COMPRESSED_RGBA_FXT1_3DFX"),        # 0x86B1
-    ("",       X,      1,      "GL_MULTISAMPLE_3DFX"), # 0x86B2
-    ("",       X,      1,      "GL_SAMPLE_BUFFERS_3DFX"),      # 0x86B3
-    ("",       X,      1,      "GL_SAMPLES_3DFX"),     # 0x86B4
-    ("",       X,      1,      "GL_EVAL_2D_NV"),       # 0x86C0
-    ("",       X,      1,      "GL_EVAL_TRIANGULAR_2D_NV"),    # 0x86C1
-    ("",       X,      1,      "GL_MAP_TESSELLATION_NV"),      # 0x86C2
-    ("",       X,      1,      "GL_MAP_ATTRIB_U_ORDER_NV"),    # 0x86C3
-    ("",       X,      1,      "GL_MAP_ATTRIB_V_ORDER_NV"),    # 0x86C4
-    ("",       X,      1,      "GL_EVAL_FRACTIONAL_TESSELLATION_NV"),  # 0x86C5
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB0_NV"),   # 0x86C6
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB1_NV"),   # 0x86C7
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB2_NV"),   # 0x86C8
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB3_NV"),   # 0x86C9
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB4_NV"),   # 0x86CA
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB5_NV"),   # 0x86CB
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB6_NV"),   # 0x86CC
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB7_NV"),   # 0x86CD
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB8_NV"),   # 0x86CE
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB9_NV"),   # 0x86CF
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB10_NV"),  # 0x86D0
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB11_NV"),  # 0x86D1
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB12_NV"),  # 0x86D2
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB13_NV"),  # 0x86D3
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB14_NV"),  # 0x86D4
-    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB15_NV"),  # 0x86D5
-    ("",       X,      1,      "GL_MAX_MAP_TESSELLATION_NV"),  # 0x86D6
-    ("",       X,      1,      "GL_MAX_RATIONAL_EVAL_ORDER_NV"),       # 0x86D7
-    ("",       X,      1,      "GL_MAX_PROGRAM_PATCH_ATTRIBS_NV"),     # 0x86D8
-    ("glGetTexEnv",    E,      1,      "GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV"),     # 0x86D9
-    ("",       X,      1,      "GL_UNSIGNED_INT_S8_S8_8_8_NV"),        # 0x86DA
-    ("",       X,      1,      "GL_UNSIGNED_INT_8_8_S8_S8_REV_NV"),    # 0x86DB
-    ("",       X,      1,      "GL_DSDT_MAG_INTENSITY_NV"),    # 0x86DC
-    ("",       X,      1,      "GL_SHADER_CONSISTENT_NV"),     # 0x86DD
-    ("",       X,      1,      "GL_TEXTURE_SHADER_NV"),        # 0x86DE
-    ("glGetTexEnv",    E,      1,      "GL_SHADER_OPERATION_NV"),      # 0x86DF
-    ("glGetTexEnv",    E,      4,      "GL_CULL_MODES_NV"),    # 0x86E0
-    ("glGetTexEnv",    F,      4,      "GL_OFFSET_TEXTURE_MATRIX_NV"), # 0x86E1
-    ("glGetTexEnv",    F,      1,      "GL_OFFSET_TEXTURE_SCALE_NV"),  # 0x86E2
-    ("glGetTexEnv",    F,      1,      "GL_OFFSET_TEXTURE_BIAS_NV"),   # 0x86E3
-    ("glGetTexEnv",    E,      1,      "GL_PREVIOUS_TEXTURE_INPUT_NV"),        # 0x86E4
-    ("glGetTexEnv",    F,      3,      "GL_CONST_EYE_NV"),     # 0x86E5
-    ("",       X,      1,      "GL_PASS_THROUGH_NV"),  # 0x86E6
-    ("",       X,      1,      "GL_CULL_FRAGMENT_NV"), # 0x86E7
-    ("",       X,      1,      "GL_OFFSET_TEXTURE_2D_NV"),     # 0x86E8
-    ("",       X,      1,      "GL_DEPENDENT_AR_TEXTURE_2D_NV"),       # 0x86E9
-    ("",       X,      1,      "GL_DEPENDENT_GB_TEXTURE_2D_NV"),       # 0x86EA
-    ("",       X,      1,      "GL_SURFACE_STATE_NV"), # 0x86EB
-    ("",       X,      1,      "GL_DOT_PRODUCT_NV"),   # 0x86EC
-    ("",       X,      1,      "GL_DOT_PRODUCT_DEPTH_REPLACE_NV"),     # 0x86ED
-    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_2D_NV"),        # 0x86EE
-    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_3D_NV"),        # 0x86EF
-    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV"),  # 0x86F0
-    ("",       X,      1,      "GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV"),  # 0x86F1
-    ("",       X,      1,      "GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV"),  # 0x86F2
-    ("",       X,      1,      "GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV"),        # 0x86F3
-    ("",       X,      1,      "GL_HILO_NV"),  # 0x86F4
-    ("",       X,      1,      "GL_DSDT_NV"),  # 0x86F5
-    ("",       X,      1,      "GL_DSDT_MAG_NV"),      # 0x86F6
-    ("",       X,      1,      "GL_DSDT_MAG_VIB_NV"),  # 0x86F7
-    ("",       X,      1,      "GL_HILO16_NV"),        # 0x86F8
-    ("",       X,      1,      "GL_SIGNED_HILO_NV"),   # 0x86F9
-    ("",       X,      1,      "GL_SIGNED_HILO16_NV"), # 0x86FA
-    ("",       X,      1,      "GL_SIGNED_RGBA_NV"),   # 0x86FB
-    ("",       X,      1,      "GL_SIGNED_RGBA8_NV"),  # 0x86FC
-    ("",       X,      1,      "GL_SURFACE_REGISTERED_NV"),    # 0x86FD
-    ("",       X,      1,      "GL_SIGNED_RGB_NV"),    # 0x86FE
-    ("",       X,      1,      "GL_SIGNED_RGB8_NV"),   # 0x86FF
-    ("",       X,      1,      "GL_SURFACE_MAPPED_NV"),        # 0x8700
-    ("",       X,      1,      "GL_SIGNED_LUMINANCE_NV"),      # 0x8701
-    ("",       X,      1,      "GL_SIGNED_LUMINANCE8_NV"),     # 0x8702
-    ("",       X,      1,      "GL_SIGNED_LUMINANCE_ALPHA_NV"),        # 0x8703
-    ("",       X,      1,      "GL_SIGNED_LUMINANCE8_ALPHA8_NV"),      # 0x8704
-    ("",       X,      1,      "GL_SIGNED_ALPHA_NV"),  # 0x8705
-    ("",       X,      1,      "GL_SIGNED_ALPHA8_NV"), # 0x8706
-    ("",       X,      1,      "GL_SIGNED_INTENSITY_NV"),      # 0x8707
-    ("",       X,      1,      "GL_SIGNED_INTENSITY8_NV"),     # 0x8708
-    ("",       X,      1,      "GL_DSDT8_NV"), # 0x8709
-    ("",       X,      1,      "GL_DSDT8_MAG8_NV"),    # 0x870A
-    ("",       X,      1,      "GL_DSDT8_MAG8_INTENSITY8_NV"), # 0x870B
-    ("",       X,      1,      "GL_SIGNED_RGB_UNSIGNED_ALPHA_NV"),     # 0x870C
-    ("",       X,      1,      "GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV"),   # 0x870D
-    ("",       X,      1,      "GL_HI_SCALE_NV"),      # 0x870E
-    ("",       X,      1,      "GL_LO_SCALE_NV"),      # 0x870F
-    ("",       X,      1,      "GL_DS_SCALE_NV"),      # 0x8710
-    ("",       X,      1,      "GL_DT_SCALE_NV"),      # 0x8711
-    ("",       X,      1,      "GL_MAGNITUDE_SCALE_NV"),       # 0x8712
-    ("",       X,      1,      "GL_VIBRANCE_SCALE_NV"),        # 0x8713
-    ("",       X,      1,      "GL_HI_BIAS_NV"),       # 0x8714
-    ("",       X,      1,      "GL_LO_BIAS_NV"),       # 0x8715
-    ("",       X,      1,      "GL_DS_BIAS_NV"),       # 0x8716
-    ("",       X,      1,      "GL_DT_BIAS_NV"),       # 0x8717
-    ("",       X,      1,      "GL_MAGNITUDE_BIAS_NV"),        # 0x8718
-    ("",       X,      1,      "GL_VIBRANCE_BIAS_NV"), # 0x8719
-    ("",       X,      1,      "GL_TEXTURE_BORDER_VALUES_NV"), # 0x871A
-    ("",       X,      1,      "GL_TEXTURE_HI_SIZE_NV"),       # 0x871B
-    ("",       X,      1,      "GL_TEXTURE_LO_SIZE_NV"),       # 0x871C
-    ("",       X,      1,      "GL_TEXTURE_DS_SIZE_NV"),       # 0x871D
-    ("",       X,      1,      "GL_TEXTURE_DT_SIZE_NV"),       # 0x871E
-    ("",       X,      1,      "GL_TEXTURE_MAG_SIZE_NV"),      # 0x871F
-    ("_glGet", F,      16,     "GL_MODELVIEW2_ARB"),   # 0x8722
-    ("_glGet", F,      16,     "GL_MODELVIEW3_ARB"),   # 0x8723
-    ("_glGet", F,      16,     "GL_MODELVIEW4_ARB"),   # 0x8724
-    ("_glGet", F,      16,     "GL_MODELVIEW5_ARB"),   # 0x8725
-    ("_glGet", F,      16,     "GL_MODELVIEW6_ARB"),   # 0x8726
-    ("_glGet", F,      16,     "GL_MODELVIEW7_ARB"),   # 0x8727
-    ("_glGet", F,      16,     "GL_MODELVIEW8_ARB"),   # 0x8728
-    ("_glGet", F,      16,     "GL_MODELVIEW9_ARB"),   # 0x8729
-    ("_glGet", F,      16,     "GL_MODELVIEW10_ARB"),  # 0x872A
-    ("_glGet", F,      16,     "GL_MODELVIEW11_ARB"),  # 0x872B
-    ("_glGet", F,      16,     "GL_MODELVIEW12_ARB"),  # 0x872C
-    ("_glGet", F,      16,     "GL_MODELVIEW13_ARB"),  # 0x872D
-    ("_glGet", F,      16,     "GL_MODELVIEW14_ARB"),  # 0x872E
-    ("_glGet", F,      16,     "GL_MODELVIEW15_ARB"),  # 0x872F
-    ("_glGet", F,      16,     "GL_MODELVIEW16_ARB"),  # 0x8730
-    ("_glGet", F,      16,     "GL_MODELVIEW17_ARB"),  # 0x8731
-    ("_glGet", F,      16,     "GL_MODELVIEW18_ARB"),  # 0x8732
-    ("_glGet", F,      16,     "GL_MODELVIEW19_ARB"),  # 0x8733
-    ("_glGet", F,      16,     "GL_MODELVIEW20_ARB"),  # 0x8734
-    ("_glGet", F,      16,     "GL_MODELVIEW21_ARB"),  # 0x8735
-    ("_glGet", F,      16,     "GL_MODELVIEW22_ARB"),  # 0x8736
-    ("_glGet", F,      16,     "GL_MODELVIEW23_ARB"),  # 0x8737
-    ("_glGet", F,      16,     "GL_MODELVIEW24_ARB"),  # 0x8738
-    ("_glGet", F,      16,     "GL_MODELVIEW25_ARB"),  # 0x8739
-    ("_glGet", F,      16,     "GL_MODELVIEW26_ARB"),  # 0x873A
-    ("_glGet", F,      16,     "GL_MODELVIEW27_ARB"),  # 0x873B
-    ("_glGet", F,      16,     "GL_MODELVIEW28_ARB"),  # 0x873C
-    ("_glGet", F,      16,     "GL_MODELVIEW29_ARB"),  # 0x873D
-    ("_glGet", F,      16,     "GL_MODELVIEW30_ARB"),  # 0x873E
-    ("_glGet", F,      16,     "GL_MODELVIEW31_ARB"),  # 0x873F
-    ("",       X,      1,      "GL_DOT3_RGB_EXT"),     # 0x8740
-    ("",       X,      1,      "GL_DOT3_RGBA_EXT"),    # 0x8741
-    ("",       X,      1,      "GL_MIRROR_CLAMP_ATI"), # 0x8742
-    ("",       X,      1,      "GL_MIRROR_CLAMP_TO_EDGE_ATI"), # 0x8743
-    ("",       X,      1,      "GL_MODULATE_ADD_ATI"), # 0x8744
-    ("",       X,      1,      "GL_MODULATE_SIGNED_ADD_ATI"),  # 0x8745
-    ("",       X,      1,      "GL_MODULATE_SUBTRACT_ATI"),    # 0x8746
-    ("",       X,      1,      "GL_YCBCR_MESA"),       # 0x8757
-    ("glGet",  B,      1,      "GL_PACK_INVERT_MESA"), # 0x8758
-    ("",       X,      1,      "GL_TEXTURE_1D_STACK_MESAX"),   # 0x8759
-    ("",       X,      1,      "GL_TEXTURE_2D_STACK_MESAX"),   # 0x875A
-    ("",       X,      1,      "GL_PROXY_TEXTURE_1D_STACK_MESAX"),     # 0x875B
-    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_STACK_MESAX"),     # 0x875C
-    ("",       X,      1,      "GL_TEXTURE_1D_STACK_BINDING_MESAX"),   # 0x875D
-    ("",       X,      1,      "GL_TEXTURE_2D_STACK_BINDING_MESAX"),   # 0x875E
-    ("",       X,      1,      "GL_STATIC_ATI"),       # 0x8760
-    ("",       X,      1,      "GL_DYNAMIC_ATI"),      # 0x8761
-    ("",       X,      1,      "GL_PRESERVE_ATI"),     # 0x8762
-    ("",       X,      1,      "GL_DISCARD_ATI"),      # 0x8763
-    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_SIZE"),      # 0x8764
-    ("glGetBufferParameter",   E,      1,      "GL_BUFFER_USAGE"),     # 0x8765
-    ("",       X,      1,      "GL_ARRAY_OBJECT_BUFFER_ATI"),  # 0x8766
-    ("",       X,      1,      "GL_ARRAY_OBJECT_OFFSET_ATI"),  # 0x8767
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_ATI"),        # 0x8768
-    ("glGet",  E,      1,      "GL_ELEMENT_ARRAY_TYPE_ATI"),   # 0x8769
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_POINTER_ATI"),        # 0x876A
-    ("",       X,      1,      "GL_MAX_VERTEX_STREAMS_ATI"),   # 0x876B
-    ("",       X,      1,      "GL_VERTEX_STREAM0_ATI"),       # 0x876C
-    ("",       X,      1,      "GL_VERTEX_STREAM1_ATI"),       # 0x876D
-    ("",       X,      1,      "GL_VERTEX_STREAM2_ATI"),       # 0x876E
-    ("",       X,      1,      "GL_VERTEX_STREAM3_ATI"),       # 0x876F
-    ("",       X,      1,      "GL_VERTEX_STREAM4_ATI"),       # 0x8770
-    ("",       X,      1,      "GL_VERTEX_STREAM5_ATI"),       # 0x8771
-    ("",       X,      1,      "GL_VERTEX_STREAM6_ATI"),       # 0x8772
-    ("",       X,      1,      "GL_VERTEX_STREAM7_ATI"),       # 0x8773
-    ("",       X,      1,      "GL_VERTEX_SOURCE_ATI"),        # 0x8774
-    ("",       X,      1,      "GL_BUMP_ROT_MATRIX_ATI"),      # 0x8775
-    ("",       X,      1,      "GL_BUMP_ROT_MATRIX_SIZE_ATI"), # 0x8776
-    ("",       X,      1,      "GL_BUMP_NUM_TEX_UNITS_ATI"),   # 0x8777
-    ("",       X,      1,      "GL_BUMP_TEX_UNITS_ATI"),       # 0x8778
-    ("",       X,      1,      "GL_DUDV_ATI"), # 0x8779
-    ("",       X,      1,      "GL_DU8DV8_ATI"),       # 0x877A
-    ("",       X,      1,      "GL_BUMP_ENVMAP_ATI"),  # 0x877B
-    ("glGetTexEnv",    E,      1,      "GL_BUMP_TARGET_ATI"),  # 0x877C
-    ("",       X,      1,      "GL_VERTEX_SHADER_EXT"),        # 0x8780
-    ("glGet",  I,      1,      "GL_VERTEX_SHADER_BINDING_EXT"),        # 0x8781
-    ("",       X,      1,      "GL_OP_INDEX_EXT"),     # 0x8782
-    ("",       X,      1,      "GL_OP_NEGATE_EXT"),    # 0x8783
-    ("",       X,      1,      "GL_OP_DOT3_EXT"),      # 0x8784
-    ("",       X,      1,      "GL_OP_DOT4_EXT"),      # 0x8785
-    ("",       X,      1,      "GL_OP_MUL_EXT"),       # 0x8786
-    ("",       X,      1,      "GL_OP_ADD_EXT"),       # 0x8787
-    ("",       X,      1,      "GL_OP_MADD_EXT"),      # 0x8788
-    ("",       X,      1,      "GL_OP_FRAC_EXT"),      # 0x8789
-    ("",       X,      1,      "GL_OP_MAX_EXT"),       # 0x878A
-    ("",       X,      1,      "GL_OP_MIN_EXT"),       # 0x878B
-    ("",       X,      1,      "GL_OP_SET_GE_EXT"),    # 0x878C
-    ("",       X,      1,      "GL_OP_SET_LT_EXT"),    # 0x878D
-    ("",       X,      1,      "GL_OP_CLAMP_EXT"),     # 0x878E
-    ("",       X,      1,      "GL_OP_FLOOR_EXT"),     # 0x878F
-    ("",       X,      1,      "GL_OP_ROUND_EXT"),     # 0x8790
-    ("",       X,      1,      "GL_OP_EXP_BASE_2_EXT"),        # 0x8791
-    ("",       X,      1,      "GL_OP_LOG_BASE_2_EXT"),        # 0x8792
-    ("",       X,      1,      "GL_OP_POWER_EXT"),     # 0x8793
-    ("",       X,      1,      "GL_OP_RECIP_EXT"),     # 0x8794
-    ("",       X,      1,      "GL_OP_RECIP_SQRT_EXT"),        # 0x8795
-    ("",       X,      1,      "GL_OP_SUB_EXT"),       # 0x8796
-    ("",       X,      1,      "GL_OP_CROSS_PRODUCT_EXT"),     # 0x8797
-    ("",       X,      1,      "GL_OP_MULTIPLY_MATRIX_EXT"),   # 0x8798
-    ("",       X,      1,      "GL_OP_MOV_EXT"),       # 0x8799
-    ("",       X,      1,      "GL_OUTPUT_VERTEX_EXT"),        # 0x879A
-    ("",       X,      1,      "GL_OUTPUT_COLOR0_EXT"),        # 0x879B
-    ("",       X,      1,      "GL_OUTPUT_COLOR1_EXT"),        # 0x879C
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD0_EXT"),        # 0x879D
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD1_EXT"),        # 0x879E
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD2_EXT"),        # 0x879F
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD3_EXT"),        # 0x87A0
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD4_EXT"),        # 0x87A1
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD5_EXT"),        # 0x87A2
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD6_EXT"),        # 0x87A3
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD7_EXT"),        # 0x87A4
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD8_EXT"),        # 0x87A5
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD9_EXT"),        # 0x87A6
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD10_EXT"),       # 0x87A7
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD11_EXT"),       # 0x87A8
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD12_EXT"),       # 0x87A9
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD13_EXT"),       # 0x87AA
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD14_EXT"),       # 0x87AB
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD15_EXT"),       # 0x87AC
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD16_EXT"),       # 0x87AD
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD17_EXT"),       # 0x87AE
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD18_EXT"),       # 0x87AF
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD19_EXT"),       # 0x87B0
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD20_EXT"),       # 0x87B1
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD21_EXT"),       # 0x87B2
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD22_EXT"),       # 0x87B3
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD23_EXT"),       # 0x87B4
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD24_EXT"),       # 0x87B5
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD25_EXT"),       # 0x87B6
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD26_EXT"),       # 0x87B7
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD27_EXT"),       # 0x87B8
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD28_EXT"),       # 0x87B9
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD29_EXT"),       # 0x87BA
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD30_EXT"),       # 0x87BB
-    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD31_EXT"),       # 0x87BC
-    ("",       X,      1,      "GL_OUTPUT_FOG_EXT"),   # 0x87BD
-    ("",       X,      1,      "GL_SCALAR_EXT"),       # 0x87BE
-    ("",       X,      1,      "GL_VECTOR_EXT"),       # 0x87BF
-    ("",       X,      1,      "GL_MATRIX_EXT"),       # 0x87C0
-    ("",       X,      1,      "GL_VARIANT_EXT"),      # 0x87C1
-    ("",       X,      1,      "GL_INVARIANT_EXT"),    # 0x87C2
-    ("",       X,      1,      "GL_LOCAL_CONSTANT_EXT"),       # 0x87C3
-    ("",       X,      1,      "GL_LOCAL_EXT"),        # 0x87C4
-    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT"),       # 0x87C5
-    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_VARIANTS_EXT"),   # 0x87C6
-    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_INVARIANTS_EXT"), # 0x87C7
-    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT"),    # 0x87C8
-    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_LOCALS_EXT"),     # 0x87C9
-    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT"),     # 0x87CA
-    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT"), # 0x87CB
-    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT"),  # 0x87CC
-    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT"),       # 0x87CD
-    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT"),   # 0x87CE
-    ("",       X,      1,      "GL_VERTEX_SHADER_INSTRUCTIONS_EXT"),   # 0x87CF
-    ("",       X,      1,      "GL_VERTEX_SHADER_VARIANTS_EXT"),       # 0x87D0
-    ("",       X,      1,      "GL_VERTEX_SHADER_INVARIANTS_EXT"),     # 0x87D1
-    ("",       X,      1,      "GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT"),        # 0x87D2
-    ("",       X,      1,      "GL_VERTEX_SHADER_LOCALS_EXT"), # 0x87D3
-    ("",       X,      1,      "GL_VERTEX_SHADER_OPTIMIZED_EXT"),      # 0x87D4
-    ("",       X,      1,      "GL_X_EXT"),    # 0x87D5
-    ("",       X,      1,      "GL_Y_EXT"),    # 0x87D6
-    ("",       X,      1,      "GL_Z_EXT"),    # 0x87D7
-    ("",       X,      1,      "GL_W_EXT"),    # 0x87D8
-    ("",       X,      1,      "GL_NEGATIVE_X_EXT"),   # 0x87D9
-    ("",       X,      1,      "GL_NEGATIVE_Y_EXT"),   # 0x87DA
-    ("",       X,      1,      "GL_NEGATIVE_Z_EXT"),   # 0x87DB
-    ("",       X,      1,      "GL_NEGATIVE_W_EXT"),   # 0x87DC
-    ("",       X,      1,      "GL_ZERO_EXT"), # 0x87DD
-    ("",       X,      1,      "GL_ONE_EXT"),  # 0x87DE
-    ("",       X,      1,      "GL_NEGATIVE_ONE_EXT"), # 0x87DF
-    ("",       X,      1,      "GL_NORMALIZED_RANGE_EXT"),     # 0x87E0
-    ("",       X,      1,      "GL_FULL_RANGE_EXT"),   # 0x87E1
-    ("",       X,      1,      "GL_CURRENT_VERTEX_EXT"),       # 0x87E2
-    ("",       X,      1,      "GL_MVP_MATRIX_EXT"),   # 0x87E3
-    ("",       X,      1,      "GL_VARIANT_VALUE_EXT"),        # 0x87E4
-    ("",       X,      1,      "GL_VARIANT_DATATYPE_EXT"),     # 0x87E5
-    ("",       X,      1,      "GL_VARIANT_ARRAY_STRIDE_EXT"), # 0x87E6
-    ("glGet",  E,      1,      "GL_VARIANT_ARRAY_TYPE_EXT"),   # 0x87E7
-    ("",       X,      1,      "GL_VARIANT_ARRAY_EXT"),        # 0x87E8
-    ("",       X,      1,      "GL_VARIANT_ARRAY_POINTER_EXT"),        # 0x87E9
-    ("",       X,      1,      "GL_INVARIANT_VALUE_EXT"),      # 0x87EA
-    ("",       X,      1,      "GL_INVARIANT_DATATYPE_EXT"),   # 0x87EB
-    ("",       X,      1,      "GL_LOCAL_CONSTANT_VALUE_EXT"), # 0x87EC
-    ("",       X,      1,      "GL_LOCAL_CONSTANT_DATATYPE_EXT"),      # 0x87ED
-    ("",       X,      1,      "GL_PN_TRIANGLES_ATI"), # 0x87F0
-    ("",       X,      1,      "GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI"),   # 0x87F1
-    ("",       X,      1,      "GL_PN_TRIANGLES_POINT_MODE_ATI"),      # 0x87F2
-    ("",       X,      1,      "GL_PN_TRIANGLES_NORMAL_MODE_ATI"),     # 0x87F3
-    ("",       X,      1,      "GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI"),       # 0x87F4
-    ("",       X,      1,      "GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI"),       # 0x87F5
-    ("",       X,      1,      "GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI"),        # 0x87F6
-    ("",       X,      1,      "GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI"),      # 0x87F7
-    ("",       X,      1,      "GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI"),   # 0x87F8
-    ("",       X,      1,      "GL_VBO_FREE_MEMORY_ATI"),      # 0x87FB
-    ("",       X,      1,      "GL_TEXTURE_FREE_MEMORY_ATI"),  # 0x87FC
-    ("",       X,      1,      "GL_RENDERBUFFER_FREE_MEMORY_ATI"),     # 0x87FD
-    ("",       X,      1,      "GL_NUM_PROGRAM_BINARY_FORMATS"),       # 0x87FE
-    ("",       X,      1,      "GL_PROGRAM_BINARY_FORMATS"),   # 0x87FF
-    ("glGet",  E,      1,      "GL_STENCIL_BACK_FUNC"),        # 0x8800
-    ("glGet",  E,      1,      "GL_STENCIL_BACK_FAIL"),        # 0x8801
-    ("glGet",  E,      1,      "GL_STENCIL_BACK_PASS_DEPTH_FAIL"),     # 0x8802
-    ("glGet",  E,      1,      "GL_STENCIL_BACK_PASS_DEPTH_PASS"),     # 0x8803
-    ("_glGet", B,      1,      "GL_FRAGMENT_PROGRAM_ARB"),     # 0x8804
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_ALU_INSTRUCTIONS_ARB"),     # 0x8805
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_TEX_INSTRUCTIONS_ARB"),     # 0x8806
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_TEX_INDIRECTIONS_ARB"),     # 0x8807
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB"),      # 0x8808
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB"),      # 0x8809
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB"),      # 0x880A
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB"), # 0x880B
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB"), # 0x880C
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB"), # 0x880D
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB"),  # 0x880E
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB"),  # 0x880F
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB"),  # 0x8810
-    ("",       X,      1,      "GL_RGBA32F"),  # 0x8814
-    ("",       X,      1,      "GL_RGB32F"),   # 0x8815
-    ("",       X,      1,      "GL_ALPHA32F_ARB"),     # 0x8816
-    ("",       X,      1,      "GL_INTENSITY32F_ARB"), # 0x8817
-    ("",       X,      1,      "GL_LUMINANCE32F_ARB"), # 0x8818
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA32F_ARB"),   # 0x8819
-    ("",       X,      1,      "GL_RGBA16F"),  # 0x881A
-    ("",       X,      1,      "GL_RGB16F"),   # 0x881B
-    ("",       X,      1,      "GL_ALPHA16F_ARB"),     # 0x881C
-    ("",       X,      1,      "GL_INTENSITY16F_ARB"), # 0x881D
-    ("",       X,      1,      "GL_LUMINANCE16F_ARB"), # 0x881E
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA16F_ARB"),   # 0x881F
-    ("",       X,      1,      "GL_RGBA_FLOAT_MODE_ARB"),      # 0x8820
-    ("glGet",  I,      1,      "GL_MAX_DRAW_BUFFERS"), # 0x8824
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER0"),     # 0x8825
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER1"),     # 0x8826
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER2"),     # 0x8827
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER3"),     # 0x8828
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER4"),     # 0x8829
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER5"),     # 0x882A
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER6"),     # 0x882B
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER7"),     # 0x882C
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER8"),     # 0x882D
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER9"),     # 0x882E
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER10"),    # 0x882F
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER11"),    # 0x8830
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER12"),    # 0x8831
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER13"),    # 0x8832
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER14"),    # 0x8833
-    ("glGet",  E,      1,      "GL_DRAW_BUFFER15"),    # 0x8834
-    ("",       X,      1,      "GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI"),  # 0x8835
-    ("glGet",  E,      1,      "GL_BLEND_EQUATION_ALPHA"),     # 0x883D
-    ("glGet",  B,      1,      "GL_MATRIX_PALETTE_ARB"),       # 0x8840
-    ("glGet",  I,      1,      "GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB"),       # 0x8841
-    ("glGet",  I,      1,      "GL_MAX_PALETTE_MATRICES_ARB"), # 0x8842
-    ("glGet",  I,      1,      "GL_CURRENT_PALETTE_MATRIX_ARB"),       # 0x8843
-    ("glGet",  B,      1,      "GL_MATRIX_INDEX_ARRAY_ARB"),   # 0x8844
-    ("glGet",  I,      1,      "GL_CURRENT_MATRIX_INDEX_ARB"), # 0x8845
-    ("glGet",  I,      1,      "GL_MATRIX_INDEX_ARRAY_SIZE_ARB"),      # 0x8846
-    ("glGet",  E,      1,      "GL_MATRIX_INDEX_ARRAY_TYPE_ARB"),      # 0x8847
-    ("glGet",  I,      1,      "GL_MATRIX_INDEX_ARRAY_STRIDE_ARB"),    # 0x8848
-    ("glGet",  P,      1,      "GL_MATRIX_INDEX_ARRAY_POINTER_ARB"),   # 0x8849
-    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_DEPTH_SIZE"),       # 0x884A
-    ("glGetTexParameter",      E,      1,      "GL_DEPTH_TEXTURE_MODE"),       # 0x884B
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_COMPARE_MODE"),     # 0x884C
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_COMPARE_FUNC"),     # 0x884D
-    ("",       X,      1,      "GL_COMPARE_REF_TO_TEXTURE"),   # 0x884E
-    ("glGet",  B,      1,      "GL_TEXTURE_CUBE_MAP_SEAMLESS"),        # 0x884F
-    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV"),  # 0x8850
-    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV"),    # 0x8851
-    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV"),   # 0x8852
-    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV"),     # 0x8853
-    ("",       X,      1,      "GL_OFFSET_HILO_TEXTURE_2D_NV"),        # 0x8854
-    ("",       X,      1,      "GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV"), # 0x8855
-    ("",       X,      1,      "GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV"),     # 0x8856
-    ("",       X,      1,      "GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV"),      # 0x8857
-    ("",       X,      1,      "GL_DEPENDENT_HILO_TEXTURE_2D_NV"),     # 0x8858
-    ("",       X,      1,      "GL_DEPENDENT_RGB_TEXTURE_3D_NV"),      # 0x8859
-    ("",       X,      1,      "GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV"),        # 0x885A
-    ("",       X,      1,      "GL_DOT_PRODUCT_PASS_THROUGH_NV"),      # 0x885B
-    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_1D_NV"),        # 0x885C
-    ("",       X,      1,      "GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV"),      # 0x885D
-    ("",       X,      1,      "GL_HILO8_NV"), # 0x885E
-    ("",       X,      1,      "GL_SIGNED_HILO8_NV"),  # 0x885F
-    ("",       X,      1,      "GL_FORCE_BLUE_TO_ONE_NV"),     # 0x8860
-    ("_glGet", B,      1,      "GL_POINT_SPRITE"),     # 0x8861
-    ("glGetTexEnv",    B,      1,      "GL_COORD_REPLACE"),    # 0x8862
-    ("glGet",  E,      1,      "GL_POINT_SPRITE_R_MODE_NV"),   # 0x8863
-    ("glGetQuery",     I,      1,      "GL_QUERY_COUNTER_BITS"),       # 0x8864
-    ("glGetQuery",     I,      1,      "GL_CURRENT_QUERY"),    # 0x8865
-    ("glGetQueryObject",       I,      1,      "GL_QUERY_RESULT"),     # 0x8866
-    ("glGetQueryObject",       B,      1,      "GL_QUERY_RESULT_AVAILABLE"),   # 0x8867
-    ("",       X,      1,      "GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV"), # 0x8868
-    ("glGet",  I,      1,      "GL_MAX_VERTEX_ATTRIBS"),       # 0x8869
-    ("glGetVertexAttrib",      B,      1,      "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"),   # 0x886A
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS"),        # 0x886C
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS"),     # 0x886D
-    ("",       X,      1,      "GL_DEPTH_STENCIL_TO_RGBA_NV"), # 0x886E
-    ("",       X,      1,      "GL_DEPTH_STENCIL_TO_BGRA_NV"), # 0x886F
-    ("",       X,      1,      "GL_FRAGMENT_PROGRAM_NV"),      # 0x8870
-    ("glGet",  I,      1,      "GL_MAX_TEXTURE_COORDS"),       # 0x8871
-    ("glGet",  I,      1,      "GL_MAX_TEXTURE_IMAGE_UNITS"),  # 0x8872
-    ("glGet",  I,      1,      "GL_FRAGMENT_PROGRAM_BINDING_NV"),      # 0x8873
-    ("glGet",  S,      1,      "GL_PROGRAM_ERROR_STRING_ARB"), # 0x8874
-    ("",       X,      1,      "GL_PROGRAM_FORMAT_ASCII_ARB"), # 0x8875
-    ("glGetProgramARB",        E,      1,      "GL_PROGRAM_FORMAT_ARB"),       # 0x8876
-    ("",       X,      1,      "GL_WRITE_PIXEL_DATA_RANGE_NV"),        # 0x8878
-    ("",       X,      1,      "GL_READ_PIXEL_DATA_RANGE_NV"), # 0x8879
-    ("",       X,      1,      "GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV"), # 0x887A
-    ("",       X,      1,      "GL_READ_PIXEL_DATA_RANGE_LENGTH_NV"),  # 0x887B
-    ("",       X,      1,      "GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV"),        # 0x887C
-    ("",       X,      1,      "GL_READ_PIXEL_DATA_RANGE_POINTER_NV"), # 0x887D
-    ("",       X,      1,      "GL_GEOMETRY_SHADER_INVOCATIONS"),      # 0x887F
-    ("",       X,      1,      "GL_FLOAT_R_NV"),       # 0x8880
-    ("",       X,      1,      "GL_FLOAT_RG_NV"),      # 0x8881
-    ("",       X,      1,      "GL_FLOAT_RGB_NV"),     # 0x8882
-    ("",       X,      1,      "GL_FLOAT_RGBA_NV"),    # 0x8883
-    ("",       X,      1,      "GL_FLOAT_R16_NV"),     # 0x8884
-    ("",       X,      1,      "GL_FLOAT_R32_NV"),     # 0x8885
-    ("",       X,      1,      "GL_FLOAT_RG16_NV"),    # 0x8886
-    ("",       X,      1,      "GL_FLOAT_RG32_NV"),    # 0x8887
-    ("",       X,      1,      "GL_FLOAT_RGB16_NV"),   # 0x8888
-    ("",       X,      1,      "GL_FLOAT_RGB32_NV"),   # 0x8889
-    ("",       X,      1,      "GL_FLOAT_RGBA16_NV"),  # 0x888A
-    ("",       X,      1,      "GL_FLOAT_RGBA32_NV"),  # 0x888B
-    ("",       X,      1,      "GL_TEXTURE_FLOAT_COMPONENTS_NV"),      # 0x888C
-    ("",       X,      1,      "GL_FLOAT_CLEAR_COLOR_VALUE_NV"),       # 0x888D
-    ("",       X,      1,      "GL_FLOAT_RGBA_MODE_NV"),       # 0x888E
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV"),   # 0x888F
-    ("glGet",  B,      1,      "GL_DEPTH_BOUNDS_TEST_EXT"),    # 0x8890
-    ("glGet",  F,      2,      "GL_DEPTH_BOUNDS_EXT"), # 0x8891
-    ("",       X,      1,      "GL_ARRAY_BUFFER"),     # 0x8892
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_BUFFER"),     # 0x8893
-    ("glGet",  I,      1,      "GL_ARRAY_BUFFER_BINDING"),     # 0x8894
-    ("glGet",  I,      1,      "GL_ELEMENT_ARRAY_BUFFER_BINDING"),     # 0x8895
-    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_BUFFER_BINDING"),      # 0x8896
-    ("glGet",  I,      1,      "GL_NORMAL_ARRAY_BUFFER_BINDING"),      # 0x8897
-    ("glGet",  I,      1,      "GL_COLOR_ARRAY_BUFFER_BINDING"),       # 0x8898
-    ("glGet",  I,      1,      "GL_INDEX_ARRAY_BUFFER_BINDING"),       # 0x8899
-    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING"),       # 0x889A
-    ("glGet",  I,      1,      "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING"),   # 0x889B
-    ("glGet",  I,      1,      "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING"),     # 0x889C
-    ("glGet",  I,      1,      "GL_FOG_COORD_ARRAY_BUFFER_BINDING"),   # 0x889D
-    ("glGet",  I,      1,      "GL_WEIGHT_ARRAY_BUFFER_BINDING"),      # 0x889E
-    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"),       # 0x889F
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_INSTRUCTIONS_ARB"), # 0x88A0
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_INSTRUCTIONS_ARB"),     # 0x88A1
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB"),  # 0x88A2
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB"),      # 0x88A3
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_TEMPORARIES_ARB"),  # 0x88A4
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_TEMPORARIES_ARB"),      # 0x88A5
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_TEMPORARIES_ARB"),   # 0x88A6
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB"),       # 0x88A7
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_PARAMETERS_ARB"),   # 0x88A8
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_PARAMETERS_ARB"),       # 0x88A9
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_PARAMETERS_ARB"),    # 0x88AA
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB"),        # 0x88AB
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_ATTRIBS_ARB"),      # 0x88AC
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ATTRIBS_ARB"),  # 0x88AD
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_ATTRIBS_ARB"),       # 0x88AE
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB"),   # 0x88AF
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_ADDRESS_REGISTERS_ARB"),    # 0x88B0
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB"),        # 0x88B1
-    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB"),     # 0x88B2
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB"), # 0x88B3
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB"), # 0x88B4
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB"),   # 0x88B5
-    ("glGetProgramARB",        B,      1,      "GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB"),  # 0x88B6
-    ("glGet",  E,      1,      "GL_TRANSPOSE_CURRENT_MATRIX_ARB"),     # 0x88B7
-    ("",       X,      1,      "GL_READ_ONLY"),        # 0x88B8
-    ("",       X,      1,      "GL_WRITE_ONLY"),       # 0x88B9
-    ("",       X,      1,      "GL_READ_WRITE"),       # 0x88BA
-    ("glGetBufferParameter",   E,      1,      "GL_BUFFER_ACCESS"),    # 0x88BB
-    ("glGetBufferParameter",   B,      1,      "GL_BUFFER_MAPPED"),    # 0x88BC
-    ("glGetBufferParameter",   P,      1,      "GL_BUFFER_MAP_POINTER"),       # 0x88BD
-    ("",       X,      1,      "GL_WRITE_DISCARD_NV"), # 0x88BE
-    ("",       X,      1,      "GL_TIME_ELAPSED"),     # 0x88BF
-    ("",       X,      1,      "GL_MATRIX0_ARB"),      # 0x88C0
-    ("",       X,      1,      "GL_MATRIX1_ARB"),      # 0x88C1
-    ("",       X,      1,      "GL_MATRIX2_ARB"),      # 0x88C2
-    ("",       X,      1,      "GL_MATRIX3_ARB"),      # 0x88C3
-    ("",       X,      1,      "GL_MATRIX4_ARB"),      # 0x88C4
-    ("",       X,      1,      "GL_MATRIX5_ARB"),      # 0x88C5
-    ("",       X,      1,      "GL_MATRIX6_ARB"),      # 0x88C6
-    ("",       X,      1,      "GL_MATRIX7_ARB"),      # 0x88C7
-    ("",       X,      1,      "GL_MATRIX8_ARB"),      # 0x88C8
-    ("",       X,      1,      "GL_MATRIX9_ARB"),      # 0x88C9
-    ("",       X,      1,      "GL_MATRIX10_ARB"),     # 0x88CA
-    ("",       X,      1,      "GL_MATRIX11_ARB"),     # 0x88CB
-    ("",       X,      1,      "GL_MATRIX12_ARB"),     # 0x88CC
-    ("",       X,      1,      "GL_MATRIX13_ARB"),     # 0x88CD
-    ("",       X,      1,      "GL_MATRIX14_ARB"),     # 0x88CE
-    ("",       X,      1,      "GL_MATRIX15_ARB"),     # 0x88CF
-    ("",       X,      1,      "GL_MATRIX16_ARB"),     # 0x88D0
-    ("",       X,      1,      "GL_MATRIX17_ARB"),     # 0x88D1
-    ("",       X,      1,      "GL_MATRIX18_ARB"),     # 0x88D2
-    ("",       X,      1,      "GL_MATRIX19_ARB"),     # 0x88D3
-    ("",       X,      1,      "GL_MATRIX20_ARB"),     # 0x88D4
-    ("",       X,      1,      "GL_MATRIX21_ARB"),     # 0x88D5
-    ("",       X,      1,      "GL_MATRIX22_ARB"),     # 0x88D6
-    ("",       X,      1,      "GL_MATRIX23_ARB"),     # 0x88D7
-    ("",       X,      1,      "GL_MATRIX24_ARB"),     # 0x88D8
-    ("",       X,      1,      "GL_MATRIX25_ARB"),     # 0x88D9
-    ("",       X,      1,      "GL_MATRIX26_ARB"),     # 0x88DA
-    ("",       X,      1,      "GL_MATRIX27_ARB"),     # 0x88DB
-    ("",       X,      1,      "GL_MATRIX28_ARB"),     # 0x88DC
-    ("",       X,      1,      "GL_MATRIX29_ARB"),     # 0x88DD
-    ("",       X,      1,      "GL_MATRIX30_ARB"),     # 0x88DE
-    ("",       X,      1,      "GL_MATRIX31_ARB"),     # 0x88DF
-    ("",       X,      1,      "GL_STREAM_DRAW"),      # 0x88E0
-    ("",       X,      1,      "GL_STREAM_READ"),      # 0x88E1
-    ("",       X,      1,      "GL_STREAM_COPY"),      # 0x88E2
-    ("",       X,      1,      "GL_STATIC_DRAW"),      # 0x88E4
-    ("",       X,      1,      "GL_STATIC_READ"),      # 0x88E5
-    ("",       X,      1,      "GL_STATIC_COPY"),      # 0x88E6
-    ("",       X,      1,      "GL_DYNAMIC_DRAW"),     # 0x88E8
-    ("",       X,      1,      "GL_DYNAMIC_READ"),     # 0x88E9
-    ("",       X,      1,      "GL_DYNAMIC_COPY"),     # 0x88EA
-    ("",       X,      1,      "GL_PIXEL_PACK_BUFFER"),        # 0x88EB
-    ("",       X,      1,      "GL_PIXEL_UNPACK_BUFFER"),      # 0x88EC
-    ("glGet",  I,      1,      "GL_PIXEL_PACK_BUFFER_BINDING"),        # 0x88ED
-    ("glGet",  I,      1,      "GL_PIXEL_UNPACK_BUFFER_BINDING"),      # 0x88EF
-    ("",       X,      1,      "GL_DEPTH24_STENCIL8"), # 0x88F0
-    ("",       X,      1,      "GL_TEXTURE_STENCIL_SIZE"),     # 0x88F1
-    ("",       X,      1,      "GL_STENCIL_TAG_BITS_EXT"),     # 0x88F2
-    ("",       X,      1,      "GL_STENCIL_CLEAR_TAG_VALUE_EXT"),      # 0x88F3
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV"), # 0x88F4
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_CALL_DEPTH_NV"),        # 0x88F5
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_IF_DEPTH_NV"),  # 0x88F6
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_LOOP_DEPTH_NV"),        # 0x88F7
-    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_LOOP_COUNT_NV"),        # 0x88F8
-    ("",       X,      1,      "GL_SRC1_COLOR"),       # 0x88F9
-    ("",       X,      1,      "GL_ONE_MINUS_SRC1_COLOR"),     # 0x88FA
-    ("",       X,      1,      "GL_ONE_MINUS_SRC1_ALPHA"),     # 0x88FB
-    ("",       X,      1,      "GL_MAX_DUAL_SOURCE_DRAW_BUFFERS"),     # 0x88FC
-    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_INTEGER"),      # 0x88FD
-    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_DIVISOR"),      # 0x88FE
-    ("glGet",  I,      1,      "GL_MAX_ARRAY_TEXTURE_LAYERS"), # 0x88FF
-    ("glGet",  F,      1,      "GL_MIN_PROGRAM_TEXEL_OFFSET"), # 0x8904
-    ("glGet",  F,      1,      "GL_MAX_PROGRAM_TEXEL_OFFSET"), # 0x8905
-    ("",       X,      1,      "GL_PROGRAM_ATTRIB_COMPONENTS_NV"),     # 0x8906
-    ("",       X,      1,      "GL_PROGRAM_RESULT_COMPONENTS_NV"),     # 0x8907
-    ("",       X,      1,      "GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV"), # 0x8908
-    ("",       X,      1,      "GL_MAX_PROGRAM_RESULT_COMPONENTS_NV"), # 0x8909
-    ("glGet",  B,      1,      "GL_STENCIL_TEST_TWO_SIDE_EXT"),        # 0x8910
-    ("glGet",  E,      1,      "GL_ACTIVE_STENCIL_FACE_EXT"),  # 0x8911
-    ("",       X,      1,      "GL_MIRROR_CLAMP_TO_BORDER_EXT"),       # 0x8912
-    ("",       X,      1,      "GL_SAMPLES_PASSED"),   # 0x8914
-    ("",       X,      1,      "GL_GEOMETRY_VERTICES_OUT"),    # 0x8916
-    ("",       X,      1,      "GL_GEOMETRY_INPUT_TYPE"),      # 0x8917
-    ("",       X,      1,      "GL_GEOMETRY_OUTPUT_TYPE"),     # 0x8918
-    ("glGet",  I,      1,      "GL_SAMPLER_BINDING"),  # 0x8919
-    ("",       X,      1,      "GL_CLAMP_VERTEX_COLOR"),       # 0x891A
-    ("",       X,      1,      "GL_CLAMP_FRAGMENT_COLOR"),     # 0x891B
-    ("",       X,      1,      "GL_CLAMP_READ_COLOR"), # 0x891C
-    ("",       X,      1,      "GL_FIXED_ONLY"),       # 0x891D
-    ("",       X,      1,      "GL_TESS_CONTROL_PROGRAM_NV"),  # 0x891E
-    ("",       X,      1,      "GL_TESS_EVALUATION_PROGRAM_NV"),       # 0x891F
-    ("",       X,      1,      "GL_FRAGMENT_SHADER_ATI"),      # 0x8920
-    ("",       X,      1,      "GL_REG_0_ATI"),        # 0x8921
-    ("",       X,      1,      "GL_REG_1_ATI"),        # 0x8922
-    ("",       X,      1,      "GL_REG_2_ATI"),        # 0x8923
-    ("",       X,      1,      "GL_REG_3_ATI"),        # 0x8924
-    ("",       X,      1,      "GL_REG_4_ATI"),        # 0x8925
-    ("",       X,      1,      "GL_REG_5_ATI"),        # 0x8926
-    ("",       X,      1,      "GL_REG_6_ATI"),        # 0x8927
-    ("",       X,      1,      "GL_REG_7_ATI"),        # 0x8928
-    ("",       X,      1,      "GL_REG_8_ATI"),        # 0x8929
-    ("",       X,      1,      "GL_REG_9_ATI"),        # 0x892A
-    ("",       X,      1,      "GL_REG_10_ATI"),       # 0x892B
-    ("",       X,      1,      "GL_REG_11_ATI"),       # 0x892C
-    ("",       X,      1,      "GL_REG_12_ATI"),       # 0x892D
-    ("",       X,      1,      "GL_REG_13_ATI"),       # 0x892E
-    ("",       X,      1,      "GL_REG_14_ATI"),       # 0x892F
-    ("",       X,      1,      "GL_REG_15_ATI"),       # 0x8930
-    ("",       X,      1,      "GL_REG_16_ATI"),       # 0x8931
-    ("",       X,      1,      "GL_REG_17_ATI"),       # 0x8932
-    ("",       X,      1,      "GL_REG_18_ATI"),       # 0x8933
-    ("",       X,      1,      "GL_REG_19_ATI"),       # 0x8934
-    ("",       X,      1,      "GL_REG_20_ATI"),       # 0x8935
-    ("",       X,      1,      "GL_REG_21_ATI"),       # 0x8936
-    ("",       X,      1,      "GL_REG_22_ATI"),       # 0x8937
-    ("",       X,      1,      "GL_REG_23_ATI"),       # 0x8938
-    ("",       X,      1,      "GL_REG_24_ATI"),       # 0x8939
-    ("",       X,      1,      "GL_REG_25_ATI"),       # 0x893A
-    ("",       X,      1,      "GL_REG_26_ATI"),       # 0x893B
-    ("",       X,      1,      "GL_REG_27_ATI"),       # 0x893C
-    ("",       X,      1,      "GL_REG_28_ATI"),       # 0x893D
-    ("",       X,      1,      "GL_REG_29_ATI"),       # 0x893E
-    ("",       X,      1,      "GL_REG_30_ATI"),       # 0x893F
-    ("",       X,      1,      "GL_REG_31_ATI"),       # 0x8940
-    ("",       X,      1,      "GL_CON_0_ATI"),        # 0x8941
-    ("",       X,      1,      "GL_CON_1_ATI"),        # 0x8942
-    ("",       X,      1,      "GL_CON_2_ATI"),        # 0x8943
-    ("",       X,      1,      "GL_CON_3_ATI"),        # 0x8944
-    ("",       X,      1,      "GL_CON_4_ATI"),        # 0x8945
-    ("",       X,      1,      "GL_CON_5_ATI"),        # 0x8946
-    ("",       X,      1,      "GL_CON_6_ATI"),        # 0x8947
-    ("",       X,      1,      "GL_CON_7_ATI"),        # 0x8948
-    ("",       X,      1,      "GL_CON_8_ATI"),        # 0x8949
-    ("",       X,      1,      "GL_CON_9_ATI"),        # 0x894A
-    ("",       X,      1,      "GL_CON_10_ATI"),       # 0x894B
-    ("",       X,      1,      "GL_CON_11_ATI"),       # 0x894C
-    ("",       X,      1,      "GL_CON_12_ATI"),       # 0x894D
-    ("",       X,      1,      "GL_CON_13_ATI"),       # 0x894E
-    ("",       X,      1,      "GL_CON_14_ATI"),       # 0x894F
-    ("",       X,      1,      "GL_CON_15_ATI"),       # 0x8950
-    ("",       X,      1,      "GL_CON_16_ATI"),       # 0x8951
-    ("",       X,      1,      "GL_CON_17_ATI"),       # 0x8952
-    ("",       X,      1,      "GL_CON_18_ATI"),       # 0x8953
-    ("",       X,      1,      "GL_CON_19_ATI"),       # 0x8954
-    ("",       X,      1,      "GL_CON_20_ATI"),       # 0x8955
-    ("",       X,      1,      "GL_CON_21_ATI"),       # 0x8956
-    ("",       X,      1,      "GL_CON_22_ATI"),       # 0x8957
-    ("",       X,      1,      "GL_CON_23_ATI"),       # 0x8958
-    ("",       X,      1,      "GL_CON_24_ATI"),       # 0x8959
-    ("",       X,      1,      "GL_CON_25_ATI"),       # 0x895A
-    ("",       X,      1,      "GL_CON_26_ATI"),       # 0x895B
-    ("",       X,      1,      "GL_CON_27_ATI"),       # 0x895C
-    ("",       X,      1,      "GL_CON_28_ATI"),       # 0x895D
-    ("",       X,      1,      "GL_CON_29_ATI"),       # 0x895E
-    ("",       X,      1,      "GL_CON_30_ATI"),       # 0x895F
-    ("",       X,      1,      "GL_CON_31_ATI"),       # 0x8960
-    ("",       X,      1,      "GL_MOV_ATI"),  # 0x8961
-    ("",       X,      1,      "GL_ADD_ATI"),  # 0x8963
-    ("",       X,      1,      "GL_MUL_ATI"),  # 0x8964
-    ("",       X,      1,      "GL_SUB_ATI"),  # 0x8965
-    ("",       X,      1,      "GL_DOT3_ATI"), # 0x8966
-    ("",       X,      1,      "GL_DOT4_ATI"), # 0x8967
-    ("",       X,      1,      "GL_MAD_ATI"),  # 0x8968
-    ("",       X,      1,      "GL_LERP_ATI"), # 0x8969
-    ("",       X,      1,      "GL_CND_ATI"),  # 0x896A
-    ("",       X,      1,      "GL_CND0_ATI"), # 0x896B
-    ("",       X,      1,      "GL_DOT2_ADD_ATI"),     # 0x896C
-    ("",       X,      1,      "GL_SECONDARY_INTERPOLATOR_ATI"),       # 0x896D
-    ("",       X,      1,      "GL_NUM_FRAGMENT_REGISTERS_ATI"),       # 0x896E
-    ("",       X,      1,      "GL_NUM_FRAGMENT_CONSTANTS_ATI"),       # 0x896F
-    ("",       X,      1,      "GL_NUM_PASSES_ATI"),   # 0x8970
-    ("",       X,      1,      "GL_NUM_INSTRUCTIONS_PER_PASS_ATI"),    # 0x8971
-    ("",       X,      1,      "GL_NUM_INSTRUCTIONS_TOTAL_ATI"),       # 0x8972
-    ("",       X,      1,      "GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI"),    # 0x8973
-    ("",       X,      1,      "GL_NUM_LOOPBACK_COMPONENTS_ATI"),      # 0x8974
-    ("",       X,      1,      "GL_COLOR_ALPHA_PAIRING_ATI"),  # 0x8975
-    ("",       X,      1,      "GL_SWIZZLE_STR_ATI"),  # 0x8976
-    ("",       X,      1,      "GL_SWIZZLE_STQ_ATI"),  # 0x8977
-    ("",       X,      1,      "GL_SWIZZLE_STR_DR_ATI"),       # 0x8978
-    ("",       X,      1,      "GL_SWIZZLE_STQ_DQ_ATI"),       # 0x8979
-    ("",       X,      1,      "GL_SWIZZLE_STRQ_ATI"), # 0x897A
-    ("",       X,      1,      "GL_SWIZZLE_STRQ_DQ_ATI"),      # 0x897B
-    ("",       X,      1,      "GL_INTERLACE_OML"),    # 0x8980
-    ("",       X,      1,      "GL_INTERLACE_READ_OML"),       # 0x8981
-    ("",       X,      1,      "GL_FORMAT_SUBSAMPLE_24_24_OML"),       # 0x8982
-    ("",       X,      1,      "GL_FORMAT_SUBSAMPLE_244_244_OML"),     # 0x8983
-    ("",       X,      1,      "GL_PACK_RESAMPLE_OML"),        # 0x8984
-    ("",       X,      1,      "GL_UNPACK_RESAMPLE_OML"),      # 0x8985
-    ("",       X,      1,      "GL_RESAMPLE_REPLICATE_OML"),   # 0x8986
-    ("",       X,      1,      "GL_RESAMPLE_ZERO_FILL_OML"),   # 0x8987
-    ("",       X,      1,      "GL_RESAMPLE_AVERAGE_OML"),     # 0x8988
-    ("",       X,      1,      "GL_RESAMPLE_DECIMATE_OML"),    # 0x8989
-    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_TYPE_OES"),        # 0x898A
-    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_STRIDE_OES"),      # 0x898B
-    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_POINTER_OES"),     # 0x898C
-    #("",      X,      1,      "GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"),   # 0x898D
-    #("",      X,      1,      "GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"),  # 0x898E
-    #("",      X,      1,      "GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"),     # 0x898F
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_APPLE"), # 0x8A00
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_APPLE"), # 0x8A01
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE"),    # 0x8A02
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE"),   # 0x8A03
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE"),   # 0x8A04
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE"),  # 0x8A05
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE"),    # 0x8A06
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE"),   # 0x8A07
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE"),   # 0x8A08
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE"),  # 0x8A09
-    ("",       X,      1,      "GL_DRAW_PIXELS_APPLE"),        # 0x8A0A
-    ("",       X,      1,      "GL_FENCE_APPLE"),      # 0x8A0B
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_APPLE"),      # 0x8A0C
-    ("glGet",  E,      1,      "GL_ELEMENT_ARRAY_TYPE_APPLE"), # 0x8A0D
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_POINTER_APPLE"),      # 0x8A0E
-    ("",       X,      1,      "GL_COLOR_FLOAT_APPLE"),        # 0x8A0F
-    ("",       X,      1,      "GL_UNIFORM_BUFFER"),   # 0x8A11
-    ("",       X,      1,      "GL_BUFFER_SERIALIZED_MODIFY_APPLE"),   # 0x8A12
-    ("",       X,      1,      "GL_BUFFER_FLUSHING_UNMAP_APPLE"),      # 0x8A13
-    ("",       X,      1,      "GL_AUX_DEPTH_STENCIL_APPLE"),  # 0x8A14
-    ("",       X,      1,      "GL_PACK_ROW_BYTES_APPLE"),     # 0x8A15
-    ("",       X,      1,      "GL_UNPACK_ROW_BYTES_APPLE"),   # 0x8A16
-    ("",       X,      1,      "GL_RELEASED_APPLE"),   # 0x8A19
-    ("",       X,      1,      "GL_VOLATILE_APPLE"),   # 0x8A1A
-    ("",       X,      1,      "GL_RETAINED_APPLE"),   # 0x8A1B
-    ("",       X,      1,      "GL_UNDEFINED_APPLE"),  # 0x8A1C
-    ("",       X,      1,      "GL_PURGEABLE_APPLE"),  # 0x8A1D
-    ("",       X,      1,      "GL_RGB_422_APPLE"),    # 0x8A1F
-    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_BINDING"),   # 0x8A28
-    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_START"),     # 0x8A29
-    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_SIZE"),      # 0x8A2A
-    ("glGet",  I,      1,      "GL_MAX_VERTEX_UNIFORM_BLOCKS"),        # 0x8A2B
-    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_UNIFORM_BLOCKS"),      # 0x8A2C
-    ("glGet",  I,      1,      "GL_MAX_FRAGMENT_UNIFORM_BLOCKS"),      # 0x8A2D
-    ("glGet",  I,      1,      "GL_MAX_COMBINED_UNIFORM_BLOCKS"),      # 0x8A2E
-    ("glGet",  I,      1,      "GL_MAX_UNIFORM_BUFFER_BINDINGS"),      # 0x8A2F
-    ("glGet",  I,      1,      "GL_MAX_UNIFORM_BLOCK_SIZE"),   # 0x8A30
-    ("glGet",  I,      1,      "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"),   # 0x8A31
-    ("glGet",  I,      1,      "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS"), # 0x8A32
-    ("glGet",  I,      1,      "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS"), # 0x8A33
-    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT"),  # 0x8A34
-    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH"),     # 0x8A35
-    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORM_BLOCKS"),    # 0x8A36
-    ("glGetActiveUniforms",    E,      1,      "GL_UNIFORM_TYPE"),     # 0x8A37
-    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_SIZE"),     # 0x8A38
-    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_NAME_LENGTH"),      # 0x8A39
-    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_BLOCK_INDEX"),      # 0x8A3A
-    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_OFFSET"),   # 0x8A3B
-    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_ARRAY_STRIDE"),     # 0x8A3C
-    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_MATRIX_STRIDE"),    # 0x8A3D
-    ("glGetActiveUniforms",    B,      1,      "GL_UNIFORM_IS_ROW_MAJOR"),     # 0x8A3E
-    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_BINDING"),    # 0x8A3F
-    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_DATA_SIZE"),  # 0x8A40
-    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_NAME_LENGTH"),        # 0x8A41
-    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS"),    # 0x8A42
-    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES"),     # 0x8A43
-    ("glGetActiveUniformBlock",        B,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER"),        # 0x8A44
-    ("glGetActiveUniformBlock",        B,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER"),      # 0x8A45
-    ("glGetActiveUniformBlock",        B,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"),      # 0x8A46
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SRGB_DECODE_EXT"),  # 0x8A48
-    ("",       X,      1,      "GL_DECODE_EXT"),       # 0x8A49
-    ("",       X,      1,      "GL_SKIP_DECODE_EXT"),  # 0x8A4A
-    ("",       X,      1,      "GL_FRAGMENT_SHADER"),  # 0x8B30
-    ("",       X,      1,      "GL_VERTEX_SHADER"),    # 0x8B31
-    ("",       H,      1,      "GL_PROGRAM_OBJECT_ARB"),       # 0x8B40
-    ("",       X,      1,      "GL_SHADER_OBJECT_ARB"),        # 0x8B48
-    ("glGet",  I,      1,      "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS"),  # 0x8B49
-    ("glGet",  I,      1,      "GL_MAX_VERTEX_UNIFORM_COMPONENTS"),    # 0x8B4A
-    ("glGet",  I,      1,      "GL_MAX_VARYING_COMPONENTS"),   # 0x8B4B
-    ("glGet",  I,      1,      "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS"),   # 0x8B4C
-    ("glGet",  I,      1,      "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS"), # 0x8B4D
-    ("glGet",  E,      1,      "GL_OBJECT_TYPE_ARB"),  # 0x8B4E
-    ("glGetShader",    E,      1,      "GL_SHADER_TYPE"),      # 0x8B4F
-    ("",       X,      1,      "GL_FLOAT_VEC2"),       # 0x8B50
-    ("",       X,      1,      "GL_FLOAT_VEC3"),       # 0x8B51
-    ("",       X,      1,      "GL_FLOAT_VEC4"),       # 0x8B52
-    ("",       X,      1,      "GL_INT_VEC2"), # 0x8B53
-    ("",       X,      1,      "GL_INT_VEC3"), # 0x8B54
-    ("",       X,      1,      "GL_INT_VEC4"), # 0x8B55
-    ("",       X,      1,      "GL_BOOL"),     # 0x8B56
-    ("",       X,      1,      "GL_BOOL_VEC2"),        # 0x8B57
-    ("",       X,      1,      "GL_BOOL_VEC3"),        # 0x8B58
-    ("",       X,      1,      "GL_BOOL_VEC4"),        # 0x8B59
-    ("",       X,      1,      "GL_FLOAT_MAT2"),       # 0x8B5A
-    ("",       X,      1,      "GL_FLOAT_MAT3"),       # 0x8B5B
-    ("",       X,      1,      "GL_FLOAT_MAT4"),       # 0x8B5C
-    ("",       X,      1,      "GL_SAMPLER_1D"),       # 0x8B5D
-    ("",       X,      1,      "GL_SAMPLER_2D"),       # 0x8B5E
-    ("",       X,      1,      "GL_SAMPLER_3D"),       # 0x8B5F
-    ("",       X,      1,      "GL_SAMPLER_CUBE"),     # 0x8B60
-    ("",       X,      1,      "GL_SAMPLER_1D_SHADOW"),        # 0x8B61
-    ("",       X,      1,      "GL_SAMPLER_2D_SHADOW"),        # 0x8B62
-    ("",       X,      1,      "GL_SAMPLER_2D_RECT"),  # 0x8B63
-    ("",       X,      1,      "GL_SAMPLER_2D_RECT_SHADOW"),   # 0x8B64
-    ("",       X,      1,      "GL_FLOAT_MAT2x3"),     # 0x8B65
-    ("",       X,      1,      "GL_FLOAT_MAT2x4"),     # 0x8B66
-    ("",       X,      1,      "GL_FLOAT_MAT3x2"),     # 0x8B67
-    ("",       X,      1,      "GL_FLOAT_MAT3x4"),     # 0x8B68
-    ("",       X,      1,      "GL_FLOAT_MAT4x2"),     # 0x8B69
-    ("",       X,      1,      "GL_FLOAT_MAT4x3"),     # 0x8B6A
-    ("glGetShader,glGetProgram",       B,      1,      "GL_DELETE_STATUS"),    # 0x8B80
-    ("glGetShader,glGetProgram",       B,      1,      "GL_COMPILE_STATUS"),   # 0x8B81
-    ("glGetShader,glGetProgram",       B,      1,      "GL_LINK_STATUS"),      # 0x8B82
-    ("glGetShader,glGetProgram",       B,      1,      "GL_VALIDATE_STATUS"),  # 0x8B83
-    ("glGetShader,glGetProgram",       I,      1,      "GL_INFO_LOG_LENGTH"),  # 0x8B84
-    ("glGetProgram",   I,      1,      "GL_ATTACHED_SHADERS"), # 0x8B85
-    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORMS"),  # 0x8B86
-    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORM_MAX_LENGTH"),        # 0x8B87
-    ("glGetShader",    I,      1,      "GL_SHADER_SOURCE_LENGTH"),     # 0x8B88
-    ("glGetProgram",   I,      1,      "GL_ACTIVE_ATTRIBUTES"),        # 0x8B89
-    ("glGetProgram",   I,      1,      "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"),      # 0x8B8A
-    ("",       X,      1,      "GL_FRAGMENT_SHADER_DERIVATIVE_HINT"),  # 0x8B8B
-    ("",       X,      1,      "GL_SHADING_LANGUAGE_VERSION"), # 0x8B8C
-    ("glGet",  I,      1,      "GL_CURRENT_PROGRAM"),  # 0x8B8D
-    #("",      X,      1,      "GL_PALETTE4_RGB8_OES"),        # 0x8B90
-    #("",      X,      1,      "GL_PALETTE4_RGBA8_OES"),       # 0x8B91
-    #("",      X,      1,      "GL_PALETTE4_R5_G6_B5_OES"),    # 0x8B92
-    #("",      X,      1,      "GL_PALETTE4_RGBA4_OES"),       # 0x8B93
-    #("",      X,      1,      "GL_PALETTE4_RGB5_A1_OES"),     # 0x8B94
-    #("",      X,      1,      "GL_PALETTE8_RGB8_OES"),        # 0x8B95
-    #("",      X,      1,      "GL_PALETTE8_RGBA8_OES"),       # 0x8B96
-    #("",      X,      1,      "GL_PALETTE8_R5_G6_B5_OES"),    # 0x8B97
-    #("",      X,      1,      "GL_PALETTE8_RGBA4_OES"),       # 0x8B98
-    #("",      X,      1,      "GL_PALETTE8_RGB5_A1_OES"),     # 0x8B99
-    ("",       X,      1,      "GL_IMPLEMENTATION_COLOR_READ_TYPE"),   # 0x8B9A
-    ("",       X,      1,      "GL_IMPLEMENTATION_COLOR_READ_FORMAT"), # 0x8B9B
-    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_OES"),     # 0x8B9C
-    #("",      X,      1,      "GL_TEXTURE_CROP_RECT_OES"),    # 0x8B9D
-    #("",      X,      1,      "GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"),    # 0x8B9E
-    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES"),      # 0x8B9F
-    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_POSITION_MESA"),   # 0x8BB0
-    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_CALLBACK_MESA"),   # 0x8BB1
-    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA"),      # 0x8BB2
-    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA"),      # 0x8BB3
-    #("",      X,      1,      "GL_VERTEX_PROGRAM_CALLBACK_MESA"),     # 0x8BB4
-    #("",      X,      1,      "GL_VERTEX_PROGRAM_POSITION_MESA"),     # 0x8BB4
-    #("",      X,      1,      "GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA"),        # 0x8BB6
-    #("",      X,      1,      "GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA"),        # 0x8BB7
-    ("",       X,      1,      "GL_COUNTER_TYPE_AMD"), # 0x8BC0
-    ("",       X,      1,      "GL_COUNTER_RANGE_AMD"),        # 0x8BC1
-    ("",       X,      1,      "GL_UNSIGNED_INT64_AMD"),       # 0x8BC2
-    ("",       X,      1,      "GL_PERCENTAGE_AMD"),   # 0x8BC3
-    ("",       X,      1,      "GL_PERFMON_RESULT_AVAILABLE_AMD"),     # 0x8BC4
-    ("",       X,      1,      "GL_PERFMON_RESULT_SIZE_AMD"),  # 0x8BC5
-    ("",       X,      1,      "GL_PERFMON_RESULT_AMD"),       # 0x8BC6
-    #("",      X,      1,      "GL_TEXTURE_WIDTH_QCOM"),       # 0x8BD2
-    #("",      X,      1,      "GL_TEXTURE_HEIGHT_QCOM"),      # 0x8BD3
-    #("",      X,      1,      "GL_TEXTURE_DEPTH_QCOM"),       # 0x8BD4
-    #("",      X,      1,      "GL_TEXTURE_INTERNAL_FORMAT_QCOM"),     # 0x8BD5
-    #("",      X,      1,      "GL_TEXTURE_FORMAT_QCOM"),      # 0x8BD6
-    #("",      X,      1,      "GL_TEXTURE_TYPE_QCOM"),        # 0x8BD7
-    #("",      X,      1,      "GL_TEXTURE_IMAGE_VALID_QCOM"), # 0x8BD8
-    #("",      X,      1,      "GL_TEXTURE_NUM_LEVELS_QCOM"),  # 0x8BD9
-    #("",      X,      1,      "GL_TEXTURE_TARGET_QCOM"),      # 0x8BDA
-    #("",      X,      1,      "GL_TEXTURE_OBJECT_VALID_QCOM"),        # 0x8BDB
-    #("",      X,      1,      "GL_STATE_RESTORE"),    # 0x8BDC
-    #("",      X,      1,      "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG"),  # 0x8C00
-    #("",      X,      1,      "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG"),  # 0x8C01
-    #("",      X,      1,      "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"), # 0x8C02
-    #("",      X,      1,      "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"), # 0x8C03
-    #("",      X,      1,      "GL_MODULATE_COLOR_IMG"),       # 0x8C04
-    #("",      X,      1,      "GL_RECIP_ADD_SIGNED_ALPHA_IMG"),       # 0x8C05
-    #("",      X,      1,      "GL_TEXTURE_ALPHA_MODULATE_IMG"),       # 0x8C06
-    #("",      X,      1,      "GL_FACTOR_ALPHA_MODULATE_IMG"),        # 0x8C07
-    #("",      X,      1,      "GL_FRAGMENT_ALPHA_MODULATE_IMG"),      # 0x8C08
-    #("",      X,      1,      "GL_ADD_BLEND_IMG"),    # 0x8C09
-    #("",      X,      1,      "GL_SGX_BINARY_IMG"),   # 0x8C0A
-    ("",       X,      1,      "GL_TEXTURE_RED_TYPE"), # 0x8C10
-    ("",       X,      1,      "GL_TEXTURE_GREEN_TYPE"),       # 0x8C11
-    ("",       X,      1,      "GL_TEXTURE_BLUE_TYPE"),        # 0x8C12
-    ("",       X,      1,      "GL_TEXTURE_ALPHA_TYPE"),       # 0x8C13
-    ("",       X,      1,      "GL_TEXTURE_LUMINANCE_TYPE"),   # 0x8C14
-    ("",       X,      1,      "GL_TEXTURE_INTENSITY_TYPE"),   # 0x8C15
-    ("",       X,      1,      "GL_TEXTURE_DEPTH_TYPE"),       # 0x8C16
-    ("",       X,      1,      "GL_UNSIGNED_NORMALIZED"),      # 0x8C17
-    ("",       X,      1,      "GL_TEXTURE_1D_ARRAY"), # 0x8C18
-    ("",       X,      1,      "GL_PROXY_TEXTURE_1D_ARRAY"),   # 0x8C19
-    ("",       X,      1,      "GL_TEXTURE_2D_ARRAY"), # 0x8C1A
-    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_ARRAY"),   # 0x8C1B
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_1D_ARRAY"), # 0x8C1C
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_2D_ARRAY"), # 0x8C1D
-    ("",       X,      1,      "GL_GEOMETRY_PROGRAM_NV"),      # 0x8C26
-    ("",       X,      1,      "GL_MAX_PROGRAM_OUTPUT_VERTICES_NV"),   # 0x8C27
-    ("",       X,      1,      "GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV"),   # 0x8C28
-    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS"), # 0x8C29
-    ("",       X,      1,      "GL_TEXTURE_BUFFER"),   # 0x8C2A
-    ("",       X,      1,      "GL_MAX_TEXTURE_BUFFER_SIZE"),  # 0x8C2B
-    ("",       X,      1,      "GL_TEXTURE_BINDING_BUFFER"),   # 0x8C2C
-    ("glGet",  I,      1,      "GL_TEXTURE_BUFFER_DATA_STORE_BINDING"),        # 0x8C2D
-    ("",       X,      1,      "GL_TEXTURE_BUFFER_FORMAT"),    # 0x8C2E
-    ("",       X,      1,      "GL_ANY_SAMPLES_PASSED"),       # 0x8C2F
-    ("",       X,      1,      "GL_SAMPLE_SHADING"),   # 0x8C36
-    ("",       X,      1,      "GL_MIN_SAMPLE_SHADING_VALUE"), # 0x8C37
-    ("",       X,      1,      "GL_R11F_G11F_B10F"),   # 0x8C3A
-    ("",       X,      1,      "GL_UNSIGNED_INT_10F_11F_11F_REV"),     # 0x8C3B
-    ("",       X,      1,      "GL_RGBA_SIGNED_COMPONENTS_EXT"),       # 0x8C3C
-    ("",       X,      1,      "GL_RGB9_E5"),  # 0x8C3D
-    ("",       X,      1,      "GL_UNSIGNED_INT_5_9_9_9_REV"), # 0x8C3E
-    ("",       X,      1,      "GL_TEXTURE_SHARED_SIZE"),      # 0x8C3F
-    ("",       X,      1,      "GL_SRGB"),     # 0x8C40
-    ("",       X,      1,      "GL_SRGB8"),    # 0x8C41
-    ("",       X,      1,      "GL_SRGB_ALPHA"),       # 0x8C42
-    ("",       X,      1,      "GL_SRGB8_ALPHA8"),     # 0x8C43
-    ("",       X,      1,      "GL_SLUMINANCE_ALPHA"), # 0x8C44
-    ("",       X,      1,      "GL_SLUMINANCE8_ALPHA8"),       # 0x8C45
-    ("",       X,      1,      "GL_SLUMINANCE"),       # 0x8C46
-    ("",       X,      1,      "GL_SLUMINANCE8"),      # 0x8C47
-    ("",       X,      1,      "GL_COMPRESSED_SRGB"),  # 0x8C48
-    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA"),    # 0x8C49
-    ("",       X,      1,      "GL_COMPRESSED_SLUMINANCE"),    # 0x8C4A
-    ("",       X,      1,      "GL_COMPRESSED_SLUMINANCE_ALPHA"),      # 0x8C4B
-    ("",       X,      1,      "GL_COMPRESSED_SRGB_S3TC_DXT1_EXT"),    # 0x8C4C
-    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"),      # 0x8C4D
-    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"),      # 0x8C4E
-    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"),      # 0x8C4F
-    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE_LATC1_EXT"),   # 0x8C70
-    ("",       X,      1,      "GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT"),    # 0x8C71
-    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT"),     # 0x8C72
-    ("",       X,      1,      "GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT"),      # 0x8C73
-    ("",       X,      1,      "GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV"), # 0x8C74
-    ("",       X,      1,      "GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV"),      # 0x8C75
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH"),    # 0x8C76
-    ("",       X,      1,      "GL_BACK_PRIMARY_COLOR_NV"),    # 0x8C77
-    ("",       X,      1,      "GL_BACK_SECONDARY_COLOR_NV"),  # 0x8C78
-    ("",       X,      1,      "GL_TEXTURE_COORD_NV"), # 0x8C79
-    ("",       X,      1,      "GL_CLIP_DISTANCE_NV"), # 0x8C7A
-    ("",       X,      1,      "GL_VERTEX_ID_NV"),     # 0x8C7B
-    ("",       X,      1,      "GL_PRIMITIVE_ID_NV"),  # 0x8C7C
-    ("",       X,      1,      "GL_GENERIC_ATTRIB_NV"),        # 0x8C7D
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_ATTRIBS_NV"),    # 0x8C7F
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_MODE"),   # 0x8C7F
-    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"),       # 0x8C80
-    ("",       X,      1,      "GL_ACTIVE_VARYINGS_NV"),       # 0x8C81
-    ("",       X,      1,      "GL_ACTIVE_VARYING_MAX_LENGTH_NV"),     # 0x8C82
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_VARYINGS"),      # 0x8C83
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_START"),  # 0x8C84
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE"),   # 0x8C85
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_RECORD_NV"),     # 0x8C86
-    ("",       X,      1,      "GL_PRIMITIVES_GENERATED"),     # 0x8C87
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"),    # 0x8C88
-    ("",       X,      1,      "GL_RASTERIZER_DISCARD"),       # 0x8C89
-    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"),    # 0x8C8A
-    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"),  # 0x8C8B
-    ("",       X,      1,      "GL_INTERLEAVED_ATTRIBS"),      # 0x8C8C
-    ("",       X,      1,      "GL_SEPARATE_ATTRIBS"), # 0x8C8D
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER"),        # 0x8C8E
-    ("glGet",  I,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING"),        # 0x8C8F
-    #("",      X,      1,      "GL_ATC_RGB_AMD"),      # 0x8C92
-    #("",      X,      1,      "GL_ATC_RGBA_EXPLICIT_ALPHA_AMD"),      # 0x8C93
-    ("glGet",  E,      1,      "GL_POINT_SPRITE_COORD_ORIGIN"),        # 0x8CA0
-    ("",       X,      1,      "GL_LOWER_LEFT"),       # 0x8CA1
-    ("",       X,      1,      "GL_UPPER_LEFT"),       # 0x8CA2
-    ("",       X,      1,      "GL_STENCIL_BACK_REF"), # 0x8CA3
-    ("",       X,      1,      "GL_STENCIL_BACK_VALUE_MASK"),  # 0x8CA4
-    ("",       X,      1,      "GL_STENCIL_BACK_WRITEMASK"),   # 0x8CA5
-    ("glGet",  I,      1,      "GL_DRAW_FRAMEBUFFER_BINDING"), # 0x8CA6
-    ("glGet",  I,      1,      "GL_RENDERBUFFER_BINDING"),     # 0x8CA7
-    ("",       I,      1,      "GL_READ_FRAMEBUFFER"), # 0x8CA8
-    ("",       I,      1,      "GL_DRAW_FRAMEBUFFER"), # 0x8CA9
-    ("glGet",  I,      1,      "GL_READ_FRAMEBUFFER_BINDING"), # 0x8CAA
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_SAMPLES"),     # 0x8CAB
-    ("",       X,      1,      "GL_DEPTH_COMPONENT32F"),       # 0x8CAC
-    ("",       X,      1,      "GL_DEPTH32F_STENCIL8"),        # 0x8CAD
-    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"),       # 0x8CD0
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"),       # 0x8CD1
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"),     # 0x8CD2
-    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"),     # 0x8CD3
-    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"),     # 0x8CD4
-    ("",       X,      1,      "GL_FRAMEBUFFER_COMPLETE"),     # 0x8CD5
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"),        # 0x8CD6
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"),        # 0x8CD7
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT"),    # 0x8CD9
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT"),       # 0x8CDA
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"),       # 0x8CDB
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"),       # 0x8CDC
-    ("",       X,      1,      "GL_FRAMEBUFFER_UNSUPPORTED"),  # 0x8CDD
-    ("glGet",  I,      1,      "GL_MAX_COLOR_ATTACHMENTS"),    # 0x8CDF
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT0"),        # 0x8CE0
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT1"),        # 0x8CE1
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT2"),        # 0x8CE2
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT3"),        # 0x8CE3
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT4"),        # 0x8CE4
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT5"),        # 0x8CE5
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT6"),        # 0x8CE6
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT7"),        # 0x8CE7
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT8"),        # 0x8CE8
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT9"),        # 0x8CE9
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT10"),       # 0x8CEA
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT11"),       # 0x8CEB
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT12"),       # 0x8CEC
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT13"),       # 0x8CED
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT14"),       # 0x8CEE
-    ("",       X,      1,      "GL_COLOR_ATTACHMENT15"),       # 0x8CEF
-    ("",       X,      1,      "GL_DEPTH_ATTACHMENT"), # 0x8D00
-    ("",       X,      1,      "GL_STENCIL_ATTACHMENT"),       # 0x8D20
-    ("",       X,      1,      "GL_FRAMEBUFFER"),      # 0x8D40
-    ("",       X,      1,      "GL_RENDERBUFFER"),     # 0x8D41
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_WIDTH"),       # 0x8D42
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_HEIGHT"),      # 0x8D43
-    ("glGetRenderbufferParameter",     E,      1,      "GL_RENDERBUFFER_INTERNAL_FORMAT"),     # 0x8D44
-    ("",       X,      1,      "GL_STENCIL_INDEX1"),   # 0x8D46
-    ("",       X,      1,      "GL_STENCIL_INDEX4"),   # 0x8D47
-    ("",       X,      1,      "GL_STENCIL_INDEX8"),   # 0x8D48
-    ("",       X,      1,      "GL_STENCIL_INDEX16"),  # 0x8D49
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_RED_SIZE"),    # 0x8D50
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_GREEN_SIZE"),  # 0x8D51
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_BLUE_SIZE"),   # 0x8D52
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_ALPHA_SIZE"),  # 0x8D53
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_DEPTH_SIZE"),  # 0x8D54
-    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_STENCIL_SIZE"),        # 0x8D55
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"),       # 0x8D56
-    ("glGet",  I,      1,      "GL_MAX_SAMPLES"),      # 0x8D57
-    #("",      X,      1,      "GL_TEXTURE_GEN_STR_OES"),      # 0x8D60
-    #("",      X,      1,      "GL_HALF_FLOAT_OES"),   # 0x8D61
-    #("",      X,      1,      "GL_RGB565_OES"),       # 0x8D62
-    #("",      X,      1,      "GL_ETC1_RGB8_OES"),    # 0x8D64
-    #("",      X,      1,      "GL_TEXTURE_EXTERNAL_OES"),     # 0x8D65
-    #("",      X,      1,      "GL_SAMPLER_EXTERNAL_OES"),     # 0x8D66
-    #("",      X,      1,      "GL_TEXTURE_BINDING_EXTERNAL_OES"),     # 0x8D67
-    #("",      X,      1,      "GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES"), # 0x8D68
-    ("",       X,      1,      "GL_RGBA32UI"), # 0x8D70
-    ("",       X,      1,      "GL_RGB32UI"),  # 0x8D71
-    ("",       X,      1,      "GL_ALPHA32UI_EXT"),    # 0x8D72
-    ("",       X,      1,      "GL_INTENSITY32UI_EXT"),        # 0x8D73
-    ("",       X,      1,      "GL_LUMINANCE32UI_EXT"),        # 0x8D74
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA32UI_EXT"),  # 0x8D75
-    ("",       X,      1,      "GL_RGBA16UI"), # 0x8D76
-    ("",       X,      1,      "GL_RGB16UI"),  # 0x8D77
-    ("",       X,      1,      "GL_ALPHA16UI_EXT"),    # 0x8D78
-    ("",       X,      1,      "GL_INTENSITY16UI_EXT"),        # 0x8D79
-    ("",       X,      1,      "GL_LUMINANCE16UI_EXT"),        # 0x8D7A
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA16UI_EXT"),  # 0x8D7B
-    ("",       X,      1,      "GL_RGBA8UI"),  # 0x8D7C
-    ("",       X,      1,      "GL_RGB8UI"),   # 0x8D7D
-    ("",       X,      1,      "GL_ALPHA8UI_EXT"),     # 0x8D7E
-    ("",       X,      1,      "GL_INTENSITY8UI_EXT"), # 0x8D7F
-    ("",       X,      1,      "GL_LUMINANCE8UI_EXT"), # 0x8D80
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA8UI_EXT"),   # 0x8D81
-    ("",       X,      1,      "GL_RGBA32I"),  # 0x8D82
-    ("",       X,      1,      "GL_RGB32I"),   # 0x8D83
-    ("",       X,      1,      "GL_ALPHA32I_EXT"),     # 0x8D84
-    ("",       X,      1,      "GL_INTENSITY32I_EXT"), # 0x8D85
-    ("",       X,      1,      "GL_LUMINANCE32I_EXT"), # 0x8D86
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA32I_EXT"),   # 0x8D87
-    ("",       X,      1,      "GL_RGBA16I"),  # 0x8D88
-    ("",       X,      1,      "GL_RGB16I"),   # 0x8D89
-    ("",       X,      1,      "GL_ALPHA16I_EXT"),     # 0x8D8A
-    ("",       X,      1,      "GL_INTENSITY16I_EXT"), # 0x8D8B
-    ("",       X,      1,      "GL_LUMINANCE16I_EXT"), # 0x8D8C
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA16I_EXT"),   # 0x8D8D
-    ("",       X,      1,      "GL_RGBA8I"),   # 0x8D8E
-    ("",       X,      1,      "GL_RGB8I"),    # 0x8D8F
-    ("",       X,      1,      "GL_ALPHA8I_EXT"),      # 0x8D90
-    ("",       X,      1,      "GL_INTENSITY8I_EXT"),  # 0x8D91
-    ("",       X,      1,      "GL_LUMINANCE8I_EXT"),  # 0x8D92
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA8I_EXT"),    # 0x8D93
-    ("",       X,      1,      "GL_RED_INTEGER"),      # 0x8D94
-    ("",       X,      1,      "GL_GREEN_INTEGER"),    # 0x8D95
-    ("",       X,      1,      "GL_BLUE_INTEGER"),     # 0x8D96
-    ("",       X,      1,      "GL_ALPHA_INTEGER"),    # 0x8D97
-    ("",       X,      1,      "GL_RGB_INTEGER"),      # 0x8D98
-    ("",       X,      1,      "GL_RGBA_INTEGER"),     # 0x8D99
-    ("",       X,      1,      "GL_BGR_INTEGER"),      # 0x8D9A
-    ("",       X,      1,      "GL_BGRA_INTEGER"),     # 0x8D9B
-    ("",       X,      1,      "GL_LUMINANCE_INTEGER_EXT"),    # 0x8D9C
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA_INTEGER_EXT"),      # 0x8D9D
-    ("glGet",  B,      1,      "GL_RGBA_INTEGER_MODE_EXT"),    # 0x8D9E
-    ("",       X,      1,      "GL_INT_2_10_10_10_REV"),       # 0x8D9F
-    ("",       X,      1,      "GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV"), # 0x8DA0
-    ("",       X,      1,      "GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV"),     # 0x8DA1
-    ("",       X,      1,      "GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV"),       # 0x8DA2
-    ("",       X,      1,      "GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV"),     # 0x8DA3
-    ("",       X,      1,      "GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV"),     # 0x8DA4
-    ("",       X,      1,      "GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV"),   # 0x8DA5
-    ("",       X,      1,      "GL_MAX_PROGRAM_GENERIC_RESULTS_NV"),   # 0x8DA6
-    ("glGetFramebufferAttachmentParameter",    B,      1,      "GL_FRAMEBUFFER_ATTACHMENT_LAYERED"),   # 0x8DA7
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"),     # 0x8DA8
-    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB"),   # 0x8DA9
-    ("",       X,      1,      "GL_LAYER_NV"), # 0x8DAA
-    ("",       X,      1,      "GL_DEPTH_COMPONENT32F_NV"),    # 0x8DAB
-    ("",       X,      1,      "GL_DEPTH32F_STENCIL8_NV"),     # 0x8DAC
-    ("",       X,      1,      "GL_FLOAT_32_UNSIGNED_INT_24_8_REV"),   # 0x8DAD
-    ("",       X,      1,      "GL_SHADER_INCLUDE_ARB"),       # 0x8DAE
-    ("",       X,      1,      "GL_DEPTH_BUFFER_FLOAT_MODE_NV"),       # 0x8DAF
-    ("glGet",  B,      1,      "GL_FRAMEBUFFER_SRGB"), # 0x8DB9
-    ("glGet",  B,      1,      "GL_FRAMEBUFFER_SRGB_CAPABLE_EXT"),     # 0x8DBA
-    ("",       X,      1,      "GL_COMPRESSED_RED_RGTC1"),     # 0x8DBB
-    ("",       X,      1,      "GL_COMPRESSED_SIGNED_RED_RGTC1"),      # 0x8DBC
-    ("",       X,      1,      "GL_COMPRESSED_RG_RGTC2"),      # 0x8DBD
-    ("",       X,      1,      "GL_COMPRESSED_SIGNED_RG_RGTC2"),       # 0x8DBE
-    ("",       X,      1,      "GL_SAMPLER_1D_ARRAY"), # 0x8DC0
-    ("",       X,      1,      "GL_SAMPLER_2D_ARRAY"), # 0x8DC1
-    ("",       X,      1,      "GL_SAMPLER_BUFFER"),   # 0x8DC2
-    ("",       X,      1,      "GL_SAMPLER_1D_ARRAY_SHADOW"),  # 0x8DC3
-    ("",       X,      1,      "GL_SAMPLER_2D_ARRAY_SHADOW"),  # 0x8DC4
-    ("",       X,      1,      "GL_SAMPLER_CUBE_SHADOW"),      # 0x8DC5
-    ("",       X,      1,      "GL_UNSIGNED_INT_VEC2"),        # 0x8DC6
-    ("",       X,      1,      "GL_UNSIGNED_INT_VEC3"),        # 0x8DC7
-    ("",       X,      1,      "GL_UNSIGNED_INT_VEC4"),        # 0x8DC8
-    ("",       X,      1,      "GL_INT_SAMPLER_1D"),   # 0x8DC9
-    ("",       X,      1,      "GL_INT_SAMPLER_2D"),   # 0x8DCA
-    ("",       X,      1,      "GL_INT_SAMPLER_3D"),   # 0x8DCB
-    ("",       X,      1,      "GL_INT_SAMPLER_CUBE"), # 0x8DCC
-    ("",       X,      1,      "GL_INT_SAMPLER_2D_RECT"),      # 0x8DCD
-    ("",       X,      1,      "GL_INT_SAMPLER_1D_ARRAY"),     # 0x8DCE
-    ("",       X,      1,      "GL_INT_SAMPLER_2D_ARRAY"),     # 0x8DCF
-    ("",       X,      1,      "GL_INT_SAMPLER_BUFFER"),       # 0x8DD0
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_1D"),  # 0x8DD1
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D"),  # 0x8DD2
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_3D"),  # 0x8DD3
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_CUBE"),        # 0x8DD4
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_RECT"),     # 0x8DD5
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY"),    # 0x8DD6
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY"),    # 0x8DD7
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_BUFFER"),      # 0x8DD8
-    ("",       X,      1,      "GL_GEOMETRY_SHADER"),  # 0x8DD9
-    ("",       X,      1,      "GL_GEOMETRY_VERTICES_OUT_ARB"),        # 0x8DDA
-    ("",       X,      1,      "GL_GEOMETRY_INPUT_TYPE_ARB"),  # 0x8DDB
-    ("",       X,      1,      "GL_GEOMETRY_OUTPUT_TYPE_ARB"), # 0x8DDC
-    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB"),      # 0x8DDD
-    ("glGet",  I,      1,      "GL_MAX_VERTEX_VARYING_COMPONENTS_ARB"),        # 0x8DDE
-    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS"),  # 0x8DDF
-    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_OUTPUT_VERTICES"),     # 0x8DE0
-    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS"),     # 0x8DE1
-    ("",       X,      1,      "GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT"), # 0x8DE2
-    ("",       X,      1,      "GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT"),       # 0x8DE3
-    ("",       X,      1,      "GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT"),       # 0x8DE4
-    ("",       X,      1,      "GL_ACTIVE_SUBROUTINES"),       # 0x8DE5
-    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_UNIFORMS"),       # 0x8DE6
-    ("",       X,      1,      "GL_MAX_SUBROUTINES"),  # 0x8DE7
-    ("",       X,      1,      "GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS"), # 0x8DE8
-    ("",       X,      1,      "GL_NAMED_STRING_LENGTH_ARB"),  # 0x8DE9
-    ("",       X,      1,      "GL_NAMED_STRING_TYPE_ARB"),    # 0x8DEA
-    ("",       X,      1,      "GL_MAX_BINDABLE_UNIFORM_SIZE_EXT"),    # 0x8DED
-    ("",       X,      1,      "GL_UNIFORM_BUFFER_EXT"),       # 0x8DEE
-    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_BINDING_EXT"),       # 0x8DEF
-    ("",       X,      1,      "GL_LOW_FLOAT"),        # 0x8DF0
-    ("",       X,      1,      "GL_MEDIUM_FLOAT"),     # 0x8DF1
-    ("",       X,      1,      "GL_HIGH_FLOAT"),       # 0x8DF2
-    ("",       X,      1,      "GL_LOW_INT"),  # 0x8DF3
-    ("",       X,      1,      "GL_MEDIUM_INT"),       # 0x8DF4
-    ("",       X,      1,      "GL_HIGH_INT"), # 0x8DF5
-    ("",       X,      1,      "GL_NUM_SHADER_BINARY_FORMATS"),        # 0x8DF9
-    ("",       X,      1,      "GL_SHADER_COMPILER"),  # 0x8DFA
-    ("",       X,      1,      "GL_MAX_VERTEX_UNIFORM_VECTORS"),       # 0x8DFB
-    ("",       X,      1,      "GL_MAX_VARYING_VECTORS"),      # 0x8DFC
-    ("",       X,      1,      "GL_MAX_FRAGMENT_UNIFORM_VECTORS"),     # 0x8DFD
-    ("",       X,      1,      "GL_RENDERBUFFER_COLOR_SAMPLES_NV"),    # 0x8E10
-    ("",       X,      1,      "GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV"),        # 0x8E11
-    ("",       X,      1,      "GL_MULTISAMPLE_COVERAGE_MODES_NV"),    # 0x8E12
-    ("",       X,      1,      "GL_QUERY_WAIT"),       # 0x8E13
-    ("",       X,      1,      "GL_QUERY_NO_WAIT"),    # 0x8E14
-    ("",       X,      1,      "GL_QUERY_BY_REGION_WAIT"),     # 0x8E15
-    ("",       X,      1,      "GL_QUERY_BY_REGION_NO_WAIT"),  # 0x8E16
-    ("",       X,      1,      "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS"),     # 0x8E1E
-    ("",       X,      1,      "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS"),  # 0x8E1F
-    ("",       X,      1,      "GL_COLOR_SAMPLES_NV"), # 0x8E20
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK"),       # 0x8E22
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED"), # 0x8E23
-    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE"), # 0x8E24
-    ("glGet",  I,      1,      "GL_TRANSFORM_FEEDBACK_BINDING"),       # 0x8E25
-    ("",       X,      1,      "GL_FRAME_NV"), # 0x8E26
-    ("",       X,      1,      "GL_FIELDS_NV"),        # 0x8E27
-    ("",       X,      1,      "GL_TIMESTAMP"),        # 0x8E28
-    ("",       X,      1,      "GL_NUM_FILL_STREAMS_NV"),      # 0x8E29
-    ("",       X,      1,      "GL_PRESENT_TIME_NV"),  # 0x8E2A
-    ("",       X,      1,      "GL_PRESENT_DURATION_NV"),      # 0x8E2B
-    ("",       X,      1,      "GL_PROGRAM_MATRIX_EXT"),       # 0x8E2D
-    ("",       X,      1,      "GL_TRANSPOSE_PROGRAM_MATRIX_EXT"),     # 0x8E2E
-    ("",       X,      1,      "GL_PROGRAM_MATRIX_STACK_DEPTH_EXT"),   # 0x8E2F
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_R"),        # 0x8E42
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_G"),        # 0x8E43
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_B"),        # 0x8E44
-    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_A"),        # 0x8E45
-    ("glGetTexParameter",      E,      4,      "GL_TEXTURE_SWIZZLE_RGBA"),     # 0x8E46
-    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS"),      # 0x8E47
-    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_MAX_LENGTH"),     # 0x8E48
-    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH"),     # 0x8E49
-    ("",       X,      1,      "GL_NUM_COMPATIBLE_SUBROUTINES"),       # 0x8E4A
-    ("",       X,      1,      "GL_COMPATIBLE_SUBROUTINES"),   # 0x8E4B
-    ("glGet",  B,      1,      "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION"), # 0x8E4C
-    ("",       X,      1,      "GL_FIRST_VERTEX_CONVENTION"),  # 0x8E4D
-    ("",       X,      1,      "GL_LAST_VERTEX_CONVENTION"),   # 0x8E4E
-    ("glGet",  E,      1,      "GL_PROVOKING_VERTEX"), # 0x8E4F
-    ("",       X,      1,      "GL_SAMPLE_POSITION"),  # 0x8E50
-    ("",       X,      1,      "GL_SAMPLE_MASK"),      # 0x8E51
-    ("",       X,      1,      "GL_SAMPLE_MASK_VALUE"),        # 0x8E52
-    ("",       X,      1,      "GL_TEXTURE_BINDING_RENDERBUFFER_NV"),  # 0x8E53
-    ("glGet",  I,      1,      "GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV"),       # 0x8E54
-    ("",       X,      1,      "GL_TEXTURE_RENDERBUFFER_NV"),  # 0x8E55
-    ("",       X,      1,      "GL_SAMPLER_RENDERBUFFER_NV"),  # 0x8E56
-    ("",       X,      1,      "GL_INT_SAMPLER_RENDERBUFFER_NV"),      # 0x8E57
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV"),     # 0x8E58
-    ("",       X,      1,      "GL_MAX_SAMPLE_MASK_WORDS"),    # 0x8E59
-    ("",       X,      1,      "GL_MAX_GEOMETRY_SHADER_INVOCATIONS"),  # 0x8E5A
-    ("",       X,      1,      "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET"),        # 0x8E5B
-    ("",       X,      1,      "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET"),        # 0x8E5C
-    ("",       X,      1,      "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS"),       # 0x8E5D
-    ("",       X,      1,      "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET"),        # 0x8E5E
-    ("",       X,      1,      "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET"),        # 0x8E5F
-    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_BUFFERS"),   # 0x8E70
-    ("",       X,      1,      "GL_MAX_VERTEX_STREAMS"),       # 0x8E71
-    ("",       X,      1,      "GL_PATCH_VERTICES"),   # 0x8E72
-    ("",       F,      2,      "GL_PATCH_DEFAULT_INNER_LEVEL"),        # 0x8E73
-    ("glGetPatchParameter",    F,      4,      "GL_PATCH_DEFAULT_OUTER_LEVEL"),        # 0x8E74
-    ("glGetPatchParameter",    X,      1,      "GL_TESS_CONTROL_OUTPUT_VERTICES"),     # 0x8E75
-    ("",       X,      1,      "GL_TESS_GEN_MODE"),    # 0x8E76
-    ("",       X,      1,      "GL_TESS_GEN_SPACING"), # 0x8E77
-    ("",       X,      1,      "GL_TESS_GEN_VERTEX_ORDER"),    # 0x8E78
-    ("",       X,      1,      "GL_TESS_GEN_POINT_MODE"),      # 0x8E79
-    ("",       X,      1,      "GL_ISOLINES"), # 0x8E7A
-    ("",       X,      1,      "GL_FRACTIONAL_ODD"),   # 0x8E7B
-    ("",       X,      1,      "GL_FRACTIONAL_EVEN"),  # 0x8E7C
-    ("",       X,      1,      "GL_MAX_PATCH_VERTICES"),       # 0x8E7D
-    ("",       X,      1,      "GL_MAX_TESS_GEN_LEVEL"),       # 0x8E7E
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS"),      # 0x8E7F
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS"),   # 0x8E80
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS"),     # 0x8E81
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS"),  # 0x8E82
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS"),       # 0x8E83
-    ("",       X,      1,      "GL_MAX_TESS_PATCH_COMPONENTS"),        # 0x8E84
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS"), # 0x8E85
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS"),    # 0x8E86
-    ("",       X,      1,      "GL_TESS_EVALUATION_SHADER"),   # 0x8E87
-    ("",       X,      1,      "GL_TESS_CONTROL_SHADER"),      # 0x8E88
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS"),  # 0x8E89
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS"),       # 0x8E8A
-    ("",       X,      1,      "GL_COMPRESSED_RGBA_BPTC_UNORM_ARB"),   # 0x8E8C
-    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB"),     # 0x8E8D
-    ("",       X,      1,      "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB"),     # 0x8E8E
-    ("",       X,      1,      "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB"),   # 0x8E8F
-    #("",      X,      1,      "GL_COVERAGE_COMPONENT_NV"),    # 0x8ED0
-    #("",      X,      1,      "GL_COVERAGE_COMPONENT4_NV"),   # 0x8ED1
-    #("",      X,      1,      "GL_COVERAGE_ATTACHMENT_NV"),   # 0x8ED2
-    #("",      X,      1,      "GL_COVERAGE_BUFFERS_NV"),      # 0x8ED3
-    #("",      X,      1,      "GL_COVERAGE_SAMPLES_NV"),      # 0x8ED4
-    #("",      X,      1,      "GL_COVERAGE_ALL_FRAGMENTS_NV"),        # 0x8ED5
-    #("",      X,      1,      "GL_COVERAGE_EDGE_FRAGMENTS_NV"),       # 0x8ED6
-    #("",      X,      1,      "GL_COVERAGE_AUTOMATIC_NV"),    # 0x8ED7
-    ("",       X,      1,      "GL_BUFFER_GPU_ADDRESS_NV"),    # 0x8F1D
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV"),   # 0x8F1E
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_UNIFIED_NV"), # 0x8F1F
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV"),   # 0x8F20
-    ("",       X,      1,      "GL_VERTEX_ARRAY_ADDRESS_NV"),  # 0x8F21
-    ("",       X,      1,      "GL_NORMAL_ARRAY_ADDRESS_NV"),  # 0x8F22
-    ("",       X,      1,      "GL_COLOR_ARRAY_ADDRESS_NV"),   # 0x8F23
-    ("",       X,      1,      "GL_INDEX_ARRAY_ADDRESS_NV"),   # 0x8F24
-    ("",       X,      1,      "GL_TEXTURE_COORD_ARRAY_ADDRESS_NV"),   # 0x8F25
-    ("",       X,      1,      "GL_EDGE_FLAG_ARRAY_ADDRESS_NV"),       # 0x8F26
-    ("",       X,      1,      "GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV"), # 0x8F27
-    ("",       X,      1,      "GL_FOG_COORD_ARRAY_ADDRESS_NV"),       # 0x8F28
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_ADDRESS_NV"), # 0x8F29
-    ("",       X,      1,      "GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV"),    # 0x8F2A
-    ("",       X,      1,      "GL_VERTEX_ARRAY_LENGTH_NV"),   # 0x8F2B
-    ("",       X,      1,      "GL_NORMAL_ARRAY_LENGTH_NV"),   # 0x8F2C
-    ("",       X,      1,      "GL_COLOR_ARRAY_LENGTH_NV"),    # 0x8F2D
-    ("",       X,      1,      "GL_INDEX_ARRAY_LENGTH_NV"),    # 0x8F2E
-    ("",       X,      1,      "GL_TEXTURE_COORD_ARRAY_LENGTH_NV"),    # 0x8F2F
-    ("",       X,      1,      "GL_EDGE_FLAG_ARRAY_LENGTH_NV"),        # 0x8F30
-    ("",       X,      1,      "GL_SECONDARY_COLOR_ARRAY_LENGTH_NV"),  # 0x8F31
-    ("",       X,      1,      "GL_FOG_COORD_ARRAY_LENGTH_NV"),        # 0x8F32
-    ("",       X,      1,      "GL_ELEMENT_ARRAY_LENGTH_NV"),  # 0x8F33
-    ("",       X,      1,      "GL_GPU_ADDRESS_NV"),   # 0x8F34
-    ("",       X,      1,      "GL_MAX_SHADER_BUFFER_ADDRESS_NV"),     # 0x8F35
-    ("",       X,      1,      "GL_COPY_READ_BUFFER"), # 0x8F36
-    ("",       X,      1,      "GL_COPY_WRITE_BUFFER"),        # 0x8F37
-    ("",       X,      1,      "GL_MAX_IMAGE_UNITS"),  # 0x8F38
-    ("",       X,      1,      "GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS"),    # 0x8F39
-    ("",       X,      1,      "GL_IMAGE_BINDING_NAME"),       # 0x8F3A
-    ("",       X,      1,      "GL_IMAGE_BINDING_LEVEL"),      # 0x8F3B
-    ("",       X,      1,      "GL_IMAGE_BINDING_LAYERED"),    # 0x8F3C
-    ("",       X,      1,      "GL_IMAGE_BINDING_LAYER"),      # 0x8F3D
-    ("",       X,      1,      "GL_IMAGE_BINDING_ACCESS"),     # 0x8F3E
-    ("",       X,      1,      "GL_DRAW_INDIRECT_BUFFER"),     # 0x8F3F
-    ("",       X,      1,      "GL_DRAW_INDIRECT_UNIFIED_NV"), # 0x8F40
-    ("",       X,      1,      "GL_DRAW_INDIRECT_ADDRESS_NV"), # 0x8F41
-    ("",       X,      1,      "GL_DRAW_INDIRECT_LENGTH_NV"),  # 0x8F42
-    ("glGet",  I,      1,      "GL_DRAW_INDIRECT_BUFFER_BINDING"),     # 0x8F43
-    ("",       X,      1,      "GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV"),     # 0x8F44
-    ("",       X,      1,      "GL_MAX_PROGRAM_SUBROUTINE_NUM_NV"),    # 0x8F45
-    ("",       X,      1,      "GL_DOUBLE_MAT2"),      # 0x8F46
-    ("",       X,      1,      "GL_DOUBLE_MAT3"),      # 0x8F47
-    ("",       X,      1,      "GL_DOUBLE_MAT4"),      # 0x8F48
-    ("",       X,      1,      "GL_DOUBLE_MAT2x3"),    # 0x8F49
-    ("",       X,      1,      "GL_DOUBLE_MAT2x4"),    # 0x8F4A
-    ("",       X,      1,      "GL_DOUBLE_MAT3x2"),    # 0x8F4B
-    ("",       X,      1,      "GL_DOUBLE_MAT3x4"),    # 0x8F4C
-    ("",       X,      1,      "GL_DOUBLE_MAT4x2"),    # 0x8F4D
-    ("",       X,      1,      "GL_DOUBLE_MAT4x3"),    # 0x8F4E
-    #("",      X,      1,      "GL_MALI_SHADER_BINARY_ARM"),   # 0x8F60
-    ("",       X,      1,      "GL_RED_SNORM"),        # 0x8F90
-    ("",       X,      1,      "GL_RG_SNORM"), # 0x8F91
-    ("",       X,      1,      "GL_RGB_SNORM"),        # 0x8F92
-    ("",       X,      1,      "GL_RGBA_SNORM"),       # 0x8F93
-    ("",       X,      1,      "GL_R8_SNORM"), # 0x8F94
-    ("",       X,      1,      "GL_RG8_SNORM"),        # 0x8F95
-    ("",       X,      1,      "GL_RGB8_SNORM"),       # 0x8F96
-    ("",       X,      1,      "GL_RGBA8_SNORM"),      # 0x8F97
-    ("",       X,      1,      "GL_R16_SNORM"),        # 0x8F98
-    ("",       X,      1,      "GL_RG16_SNORM"),       # 0x8F99
-    ("",       X,      1,      "GL_RGB16_SNORM"),      # 0x8F9A
-    ("",       X,      1,      "GL_RGBA16_SNORM"),     # 0x8F9B
-    ("",       X,      1,      "GL_SIGNED_NORMALIZED"),        # 0x8F9C
-    ("glGet",  B,      1,      "GL_PRIMITIVE_RESTART"),        # 0x8F9D
-    ("glGet",  I,      1,      "GL_PRIMITIVE_RESTART_INDEX"),  # 0x8F9E
-    #("",      X,      1,      "GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS"),    # 0x8F9F
-    #("",      X,      1,      "GL_PERFMON_GLOBAL_MODE_QCOM"), # 0x8FA0
-    #("",      X,      1,      "GL_SHADER_BINARY_VIV"),        # 0x8FC4
-    ("",       X,      1,      "GL_INT8_NV"),  # 0x8FE0
-    ("",       X,      1,      "GL_INT8_VEC2_NV"),     # 0x8FE1
-    ("",       X,      1,      "GL_INT8_VEC3_NV"),     # 0x8FE2
-    ("",       X,      1,      "GL_INT8_VEC4_NV"),     # 0x8FE3
-    ("",       X,      1,      "GL_INT16_NV"), # 0x8FE4
-    ("",       X,      1,      "GL_INT16_VEC2_NV"),    # 0x8FE5
-    ("",       X,      1,      "GL_INT16_VEC3_NV"),    # 0x8FE6
-    ("",       X,      1,      "GL_INT16_VEC4_NV"),    # 0x8FE7
-    ("",       X,      1,      "GL_INT64_VEC2_NV"),    # 0x8FE9
-    ("",       X,      1,      "GL_INT64_VEC3_NV"),    # 0x8FEA
-    ("",       X,      1,      "GL_INT64_VEC4_NV"),    # 0x8FEB
-    ("",       X,      1,      "GL_UNSIGNED_INT8_NV"), # 0x8FEC
-    ("",       X,      1,      "GL_UNSIGNED_INT8_VEC2_NV"),    # 0x8FED
-    ("",       X,      1,      "GL_UNSIGNED_INT8_VEC3_NV"),    # 0x8FEE
-    ("",       X,      1,      "GL_UNSIGNED_INT8_VEC4_NV"),    # 0x8FEF
-    ("",       X,      1,      "GL_UNSIGNED_INT16_NV"),        # 0x8FF0
-    ("",       X,      1,      "GL_UNSIGNED_INT16_VEC2_NV"),   # 0x8FF1
-    ("",       X,      1,      "GL_UNSIGNED_INT16_VEC3_NV"),   # 0x8FF2
-    ("",       X,      1,      "GL_UNSIGNED_INT16_VEC4_NV"),   # 0x8FF3
-    ("",       X,      1,      "GL_UNSIGNED_INT64_VEC2_NV"),   # 0x8FF5
-    ("",       X,      1,      "GL_UNSIGNED_INT64_VEC3_NV"),   # 0x8FF6
-    ("",       X,      1,      "GL_UNSIGNED_INT64_VEC4_NV"),   # 0x8FF7
-    ("",       X,      1,      "GL_FLOAT16_NV"),       # 0x8FF8
-    ("",       X,      1,      "GL_FLOAT16_VEC2_NV"),  # 0x8FF9
-    ("",       X,      1,      "GL_FLOAT16_VEC3_NV"),  # 0x8FFA
-    ("",       X,      1,      "GL_FLOAT16_VEC4_NV"),  # 0x8FFB
-    ("",       X,      1,      "GL_DOUBLE_VEC2"),      # 0x8FFC
-    ("",       X,      1,      "GL_DOUBLE_VEC3"),      # 0x8FFD
-    ("",       X,      1,      "GL_DOUBLE_VEC4"),      # 0x8FFE
-    ("",       X,      1,      "GL_SAMPLER_BUFFER_AMD"),       # 0x9001
-    ("",       X,      1,      "GL_INT_SAMPLER_BUFFER_AMD"),   # 0x9002
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD"),  # 0x9003
-    ("",       X,      1,      "GL_TESSELLATION_MODE_AMD"),    # 0x9004
-    ("",       X,      1,      "GL_TESSELLATION_FACTOR_AMD"),  # 0x9005
-    ("",       X,      1,      "GL_DISCRETE_AMD"),     # 0x9006
-    ("",       X,      1,      "GL_CONTINUOUS_AMD"),   # 0x9007
-    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_ARRAY"),   # 0x9009
-    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY"),   # 0x900A
-    ("",       X,      1,      "GL_PROXY_TEXTURE_CUBE_MAP_ARRAY"),     # 0x900B
-    ("",       X,      1,      "GL_SAMPLER_CUBE_MAP_ARRAY"),   # 0x900C
-    ("",       X,      1,      "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW"),    # 0x900D
-    ("",       X,      1,      "GL_INT_SAMPLER_CUBE_MAP_ARRAY"),       # 0x900E
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY"),      # 0x900F
-    ("",       X,      1,      "GL_ALPHA_SNORM"),      # 0x9010
-    ("",       X,      1,      "GL_LUMINANCE_SNORM"),  # 0x9011
-    ("",       X,      1,      "GL_LUMINANCE_ALPHA_SNORM"),    # 0x9012
-    ("",       X,      1,      "GL_INTENSITY_SNORM"),  # 0x9013
-    ("",       X,      1,      "GL_ALPHA8_SNORM"),     # 0x9014
-    ("",       X,      1,      "GL_LUMINANCE8_SNORM"), # 0x9015
-    ("",       X,      1,      "GL_LUMINANCE8_ALPHA8_SNORM"),  # 0x9016
-    ("",       X,      1,      "GL_INTENSITY8_SNORM"), # 0x9017
-    ("",       X,      1,      "GL_ALPHA16_SNORM"),    # 0x9018
-    ("",       X,      1,      "GL_LUMINANCE16_SNORM"),        # 0x9019
-    ("",       X,      1,      "GL_LUMINANCE16_ALPHA16_SNORM"),        # 0x901A
-    ("",       X,      1,      "GL_INTENSITY16_SNORM"),        # 0x901B
-    ("",       X,      1,      "GL_FACTOR_MIN_AMD"),   # 0x901C
-    ("",       X,      1,      "GL_FACTOR_MAX_AMD"),   # 0x901D
-    ("",       B,      1,      "GL_DEPTH_CLAMP_NEAR_AMD"),     # 0x901E
-    ("",       B,      1,      "GL_DEPTH_CLAMP_FAR_AMD"),      # 0x901F
-    ("",       X,      1,      "GL_VIDEO_BUFFER_NV"),  # 0x9020
-    ("glGet",  I,      1,      "GL_VIDEO_BUFFER_BINDING_NV"),  # 0x9021
-    ("",       X,      1,      "GL_FIELD_UPPER_NV"),   # 0x9022
-    ("",       X,      1,      "GL_FIELD_LOWER_NV"),   # 0x9023
-    ("",       X,      1,      "GL_NUM_VIDEO_CAPTURE_STREAMS_NV"),     # 0x9024
-    ("",       X,      1,      "GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV"),      # 0x9025
-    ("",       X,      1,      "GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV"),        # 0x9026
-    ("",       X,      1,      "GL_LAST_VIDEO_CAPTURE_STATUS_NV"),     # 0x9027
-    ("",       X,      1,      "GL_VIDEO_BUFFER_PITCH_NV"),    # 0x9028
-    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_MATRIX_NV"), # 0x9029
-    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_MAX_NV"),    # 0x902A
-    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_MIN_NV"),    # 0x902B
-    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_OFFSET_NV"), # 0x902C
-    ("",       X,      1,      "GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV"),  # 0x902D
-    ("",       X,      1,      "GL_PARTIAL_SUCCESS_NV"),       # 0x902E
-    ("",       X,      1,      "GL_SUCCESS_NV"),       # 0x902F
-    ("",       X,      1,      "GL_FAILURE_NV"),       # 0x9030
-    ("",       X,      1,      "GL_YCBYCR8_422_NV"),   # 0x9031
-    ("",       X,      1,      "GL_YCBAYCR8A_4224_NV"),        # 0x9032
-    ("",       X,      1,      "GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV"),    # 0x9033
-    ("",       X,      1,      "GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV"), # 0x9034
-    ("",       X,      1,      "GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV"),    # 0x9035
-    ("",       X,      1,      "GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV"), # 0x9036
-    ("",       X,      1,      "GL_Z4Y12Z4CB12Z4CR12_444_NV"), # 0x9037
-    ("",       X,      1,      "GL_VIDEO_CAPTURE_FRAME_WIDTH_NV"),     # 0x9038
-    ("",       X,      1,      "GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV"),    # 0x9039
-    ("",       X,      1,      "GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV"),      # 0x903A
-    ("",       X,      1,      "GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV"),      # 0x903B
-    ("",       X,      1,      "GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV"),  # 0x903C
-    ("",       X,      1,      "GL_TEXTURE_COVERAGE_SAMPLES_NV"),      # 0x9045
-    ("",       X,      1,      "GL_TEXTURE_COLOR_SAMPLES_NV"), # 0x9046
-    ("",       X,      1,      "GL_IMAGE_1D"), # 0x904C
-    ("",       X,      1,      "GL_IMAGE_2D"), # 0x904D
-    ("",       X,      1,      "GL_IMAGE_3D"), # 0x904E
-    ("",       X,      1,      "GL_IMAGE_2D_RECT"),    # 0x904F
-    ("",       X,      1,      "GL_IMAGE_CUBE"),       # 0x9050
-    ("",       X,      1,      "GL_IMAGE_BUFFER"),     # 0x9051
-    ("",       X,      1,      "GL_IMAGE_1D_ARRAY"),   # 0x9052
-    ("",       X,      1,      "GL_IMAGE_2D_ARRAY"),   # 0x9053
-    ("",       X,      1,      "GL_IMAGE_CUBE_MAP_ARRAY"),     # 0x9054
-    ("",       X,      1,      "GL_IMAGE_2D_MULTISAMPLE"),     # 0x9055
-    ("",       X,      1,      "GL_IMAGE_2D_MULTISAMPLE_ARRAY"),       # 0x9056
-    ("",       X,      1,      "GL_INT_IMAGE_1D"),     # 0x9057
-    ("",       X,      1,      "GL_INT_IMAGE_2D"),     # 0x9058
-    ("",       X,      1,      "GL_INT_IMAGE_3D"),     # 0x9059
-    ("",       X,      1,      "GL_INT_IMAGE_2D_RECT"),        # 0x905A
-    ("",       X,      1,      "GL_INT_IMAGE_CUBE"),   # 0x905B
-    ("",       X,      1,      "GL_INT_IMAGE_BUFFER"), # 0x905C
-    ("",       X,      1,      "GL_INT_IMAGE_1D_ARRAY"),       # 0x905D
-    ("",       X,      1,      "GL_INT_IMAGE_2D_ARRAY"),       # 0x905E
-    ("",       X,      1,      "GL_INT_IMAGE_CUBE_MAP_ARRAY"), # 0x905F
-    ("",       X,      1,      "GL_INT_IMAGE_2D_MULTISAMPLE"), # 0x9060
-    ("",       X,      1,      "GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY"),   # 0x9061
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_1D"),    # 0x9062
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D"),    # 0x9063
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_3D"),    # 0x9064
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_RECT"),       # 0x9065
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_CUBE"),  # 0x9066
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_BUFFER"),        # 0x9067
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_1D_ARRAY"),      # 0x9068
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_ARRAY"),      # 0x9069
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY"),        # 0x906A
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE"),        # 0x906B
-    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY"),  # 0x906C
-    ("",       X,      1,      "GL_MAX_IMAGE_SAMPLES"),        # 0x906D
-    ("",       X,      1,      "GL_IMAGE_BINDING_FORMAT"),     # 0x906E
-    ("",       X,      1,      "GL_RGB10_A2UI"),       # 0x906F
-    ("",       X,      1,      "GL_SCALED_RESOLVE_FASTEST_EXT"),       # 0x90BA
-    ("",       X,      1,      "GL_SCALED_RESOLVE_NICEST_EXT"),        # 0x90BB
-    ("",       X,      1,      "GL_MIN_MAP_BUFFER_ALIGNMENT"), # 0x90BC
-    ("",       X,      1,      "GL_IMAGE_FORMAT_COMPATIBILITY_TYPE"),  # 0x90C7
-    ("",       X,      1,      "GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE"),       # 0x90C8
-    ("",       X,      1,      "GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS"),      # 0x90C9
-    ("",       X,      1,      "GL_MAX_VERTEX_IMAGE_UNIFORMS"),        # 0x90CA
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS"),  # 0x90CB
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS"),       # 0x90CC
-    ("",       X,      1,      "GL_MAX_GEOMETRY_IMAGE_UNIFORMS"),      # 0x90CD
-    ("",       X,      1,      "GL_MAX_FRAGMENT_IMAGE_UNIFORMS"),      # 0x90CE
-    ("",       X,      1,      "GL_MAX_COMBINED_IMAGE_UNIFORMS"),      # 0x90CF
-    ("",       X,      1,      "GL_SYNC_X11_FENCE_EXT"),       # 0x90E1
-    ("",       X,      1,      "GL_TEXTURE_2D_MULTISAMPLE"),   # 0x9100
-    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_MULTISAMPLE"),     # 0x9101
-    ("",       X,      1,      "GL_TEXTURE_2D_MULTISAMPLE_ARRAY"),     # 0x9102
-    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY"),       # 0x9103
-    ("",       X,      1,      "GL_TEXTURE_BINDING_2D_MULTISAMPLE"),   # 0x9104
-    ("",       X,      1,      "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY"),     # 0x9105
-    ("",       X,      1,      "GL_TEXTURE_SAMPLES"),  # 0x9106
-    ("",       X,      1,      "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS"),   # 0x9107
-    ("",       X,      1,      "GL_SAMPLER_2D_MULTISAMPLE"),   # 0x9108
-    ("",       X,      1,      "GL_INT_SAMPLER_2D_MULTISAMPLE"),       # 0x9109
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE"),      # 0x910A
-    ("",       X,      1,      "GL_SAMPLER_2D_MULTISAMPLE_ARRAY"),     # 0x910B
-    ("",       X,      1,      "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"), # 0x910C
-    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"),        # 0x910D
-    ("",       X,      1,      "GL_MAX_COLOR_TEXTURE_SAMPLES"),        # 0x910E
-    ("",       X,      1,      "GL_MAX_DEPTH_TEXTURE_SAMPLES"),        # 0x910F
-    ("",       X,      1,      "GL_MAX_INTEGER_SAMPLES"),      # 0x9110
-    ("_glGet", I64,    1,      "GL_MAX_SERVER_WAIT_TIMEOUT"),  # 0x9111
-    ("",       X,      1,      "GL_OBJECT_TYPE"),      # 0x9112
-    ("",       X,      1,      "GL_SYNC_CONDITION"),   # 0x9113
-    ("",       X,      1,      "GL_SYNC_STATUS"),      # 0x9114
-    ("",       X,      1,      "GL_SYNC_FLAGS"),       # 0x9115
-    ("",       X,      1,      "GL_SYNC_FENCE"),       # 0x9116
-    ("",       X,      1,      "GL_SYNC_GPU_COMMANDS_COMPLETE"),       # 0x9117
-    ("",       X,      1,      "GL_UNSIGNALED"),       # 0x9118
-    ("",       X,      1,      "GL_SIGNALED"), # 0x9119
-    ("",       X,      1,      "GL_ALREADY_SIGNALED"), # 0x911A
-    ("",       X,      1,      "GL_TIMEOUT_EXPIRED"),  # 0x911B
-    ("",       X,      1,      "GL_CONDITION_SATISFIED"),      # 0x911C
-    ("",       X,      1,      "GL_WAIT_FAILED"),      # 0x911D
-    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_ACCESS_FLAGS"),      # 0x911F
-    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_MAP_LENGTH"),        # 0x9120
-    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_MAP_OFFSET"),        # 0x9121
-    ("",       X,      1,      "GL_MAX_VERTEX_OUTPUT_COMPONENTS"),     # 0x9122
-    ("",       X,      1,      "GL_MAX_GEOMETRY_INPUT_COMPONENTS"),    # 0x9123
-    ("",       X,      1,      "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS"),   # 0x9124
-    ("",       X,      1,      "GL_MAX_FRAGMENT_INPUT_COMPONENTS"),    # 0x9125
-    ("glGet",  I,      1,      "GL_CONTEXT_PROFILE_MASK"),     # 0x9126
-    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_WIDTH"),    # 0x9127
-    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_HEIGHT"),   # 0x9128
-    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_DEPTH"),    # 0x9129
-    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_SIZE"),     # 0x912A
-    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_WIDTH"),      # 0x912B
-    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_HEIGHT"),     # 0x912C
-    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_DEPTH"),      # 0x912D
-    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_SIZE"),       # 0x912E
-    ("",       X,      1,      "GL_TEXTURE_IMMUTABLE_FORMAT"), # 0x912F
-    #("",      X,      1,      "GL_SGX_PROGRAM_BINARY_IMG"),   # 0x9130
-    #("",      X,      1,      "GL_RENDERBUFFER_SAMPLES_IMG"), # 0x9133
-    #("",      X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG"),   # 0x9134
-    #("",      X,      1,      "GL_MAX_SAMPLES_IMG"),  # 0x9135
-    #("",      X,      1,      "GL_TEXTURE_SAMPLES_IMG"),      # 0x9136
-    ("",       X,      1,      "GL_MAX_DEBUG_MESSAGE_LENGTH_ARB"),     # 0x9143
-    ("",       X,      1,      "GL_MAX_DEBUG_LOGGED_MESSAGES_ARB"),    # 0x9144
-    ("",       X,      1,      "GL_DEBUG_LOGGED_MESSAGES_ARB"),        # 0x9145
-    ("",       X,      1,      "GL_DEBUG_SEVERITY_HIGH_ARB"),  # 0x9146
-    ("",       X,      1,      "GL_DEBUG_SEVERITY_MEDIUM_ARB"),        # 0x9147
-    ("",       X,      1,      "GL_DEBUG_SEVERITY_LOW_ARB"),   # 0x9148
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_API_ERROR_AMD"),     # 0x9149
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD"), # 0x914A
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_DEPRECATION_AMD"),   # 0x914B
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD"),    # 0x914C
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_PERFORMANCE_AMD"),   # 0x914D
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD"),       # 0x914E
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_APPLICATION_AMD"),   # 0x914F
-    ("",       X,      1,      "GL_DEBUG_CATEGORY_OTHER_AMD"), # 0x9150
-    ("",       X,      1,      "GL_DATA_BUFFER_AMD"),  # 0x9151
-    ("",       X,      1,      "GL_PERFORMANCE_MONITOR_AMD"),  # 0x9152
-    ("",       X,      1,      "GL_QUERY_OBJECT_AMD"), # 0x9153
-    ("",       X,      1,      "GL_VERTEX_ARRAY_OBJECT_AMD"),  # 0x9154
-    ("",       X,      1,      "GL_SAMPLER_OBJECT_AMD"),       # 0x9155
-    #("",      X,      1,      "GL_SHADER_BINARY_DMP"),        # 0x9250
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER"),    # 0x92C0
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_BINDING"),    # 0x92C1
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_START"),      # 0x92C2
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_SIZE"),       # 0x92C3
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE"),  # 0x92C4
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS"),     # 0x92C5
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES"),      # 0x92C6
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER"),        # 0x92C7
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER"),  # 0x92C8
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER"),       # 0x92C9
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER"),      # 0x92CA
-    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER"),      # 0x92CB
-    ("",       X,      1,      "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS"),        # 0x92CC
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS"),  # 0x92CD
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS"),       # 0x92CE
-    ("",       X,      1,      "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS"),      # 0x92CF
-    ("",       X,      1,      "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS"),      # 0x92D0
-    ("",       X,      1,      "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS"),      # 0x92D1
-    ("",       X,      1,      "GL_MAX_VERTEX_ATOMIC_COUNTERS"),       # 0x92D2
-    ("",       X,      1,      "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS"), # 0x92D3
-    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS"),      # 0x92D4
-    ("",       X,      1,      "GL_MAX_GEOMETRY_ATOMIC_COUNTERS"),     # 0x92D5
-    ("",       X,      1,      "GL_MAX_FRAGMENT_ATOMIC_COUNTERS"),     # 0x92D6
-    ("",       X,      1,      "GL_MAX_COMBINED_ATOMIC_COUNTERS"),     # 0x92D7
-    ("",       X,      1,      "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE"),   # 0x92D8
-    ("",       X,      1,      "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS"),    # 0x92D9
-    ("",       X,      1,      "GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX"),      # 0x92DA
-    ("",       X,      1,      "GL_UNSIGNED_INT_ATOMIC_COUNTER"),      # 0x92DB
-    ("",       X,      1,      "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS"),       # 0x92DC
-    ("",       X,      1,      "GL_NUM_SAMPLE_COUNTS"),        # 0x9380
-    ("",       X,      1,      "GL_INVALID_INDEX"),    # 0xFFFFFFFFu
-]
-
-
-# Add all enums to GLenum type descriptor
-for _function, _type, _count, _name in parameters:
-    GLenum.values.append(_name)
-
index 7c7beb90e072fba7cfc845cd8237139819d442ef..05a3201c2ce31d5b30862527f361ad4375cecba7 100644 (file)
--- a/glproc.py
+++ b/glproc.py
@@ -29,12 +29,12 @@ covers all the functions we support.
 """ 
 
 
-import stdapi
+import specs.stdapi as stdapi
 from dispatch import Dispatcher
-from glapi import glapi
-from glxapi import glxapi
-from wglapi import wglapi
-from cglapi import cglapi
+from specs.glapi import glapi
+from specs.glxapi import glxapi
+from specs.wglapi import wglapi
+from specs.cglapi import cglapi
 
 
 # See http://www.opengl.org/registry/ABI/
index 356659abbea11c4c6f365e293c2f807126a13151..4edd93ace4a222df5f2bb8f7495fa2b1bbee6885 100644 (file)
@@ -27,8 +27,8 @@
 """GL retracer generator."""
 
 
-import stdapi
-import glapi
+import specs.stdapi as stdapi
+import specs.glapi as glapi
 from retrace import Retracer
 
 
index c348d2b99b69dd2273ca30067f6a5c1fe237f7c6..acd43d07ff32d37f4efaff3dc6c17cc7f6c6a3ea 100644 (file)
 '''Generate code to dump most GL state into JSON.'''
 
 
-from stdapi import *
+from specs.stdapi import *
 
-from gltypes import *
-from glparams import *
+from specs.gltypes import *
+from specs.glparams import *
 
 
 texture_targets = [
index f935e29913b6b1b8a64ea516dfec267011cff96c..bb9d9e0ee3ab70fbe1e21aac926672cc5a9c8c20 100644 (file)
 """GL tracing generator."""
 
 
-import stdapi
-import glapi
-import glparams
-from glxapi import glxapi
+import specs.stdapi as stdapi
+import specs.glapi as glapi
+import specs.glparams as glparams
+from specs.glxapi import glxapi
 from trace import Tracer, dump_instance
 
 
diff --git a/gltypes.py b/gltypes.py
deleted file mode 100644 (file)
index e25cd7e..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-'''Describe GL types.'''
-
-
-import platform
-
-from stdapi import *
-
-
-GLboolean = Alias("GLboolean", Bool)
-GLvoid = Alias("GLvoid", Void)
-GLbyte = Alias("GLbyte", SChar)
-GLshort = Alias("GLshort", Short)
-GLint = Alias("GLint", Int)
-GLint64 = Alias("GLint64", Int64)
-GLubyte = Alias("GLubyte", UChar)
-GLushort = Alias("GLushort", UShort)
-GLuint = Alias("GLuint", UInt)
-GLuint64 = Alias("GLuint64", UInt64)
-GLsizei = Alias("GLsizei", Int)
-GLintptr = Alias("GLintptr", Int)
-GLsizeiptr = Alias("GLsizeiptr", Int)
-GLfloat = Alias("GLfloat", Float)
-GLclampf = Alias("GLclampf", Float)
-GLdouble = Alias("GLdouble", Double)
-GLclampd = Alias("GLclampd", Double)
-GLchar = Alias("GLchar", SChar)
-GLstring = String("GLchar *")
-
-GLcharARB = Alias("GLcharARB", SChar)
-GLstringARB = String("GLcharARB *")
-GLintptrARB = Alias("GLintptrARB", Int)
-GLsizeiptrARB = Alias("GLsizeiptrARB", Int)
-GLhandleARB = Handle("handleARB", Alias("GLhandleARB", UInt))
-GLhalfARB = Alias("GLhalfARB", UShort)
-GLhalfNV = Alias("GLhalfNV", UShort)
-GLint64EXT = Alias("GLint64EXT", Int64)
-GLuint64EXT = Alias("GLuint64EXT", UInt64)
-GLDEBUGPROCARB = Opaque("GLDEBUGPROCARB")
-GLDEBUGPROCAMD = Opaque("GLDEBUGPROCAMD")
-
-GLlist = Handle("list", GLuint)
-GLtexture = Handle("texture", GLuint)
-GLbuffer = Handle("buffer", GLuint)
-GLquery = Handle("query", GLuint)
-GLfenceNV = Handle("fenceNV", GLuint)
-GLprogram = Handle("program", GLuint)
-GLshader = Handle("shader", GLuint)
-GLlocation = Handle("location", GLint, key=('program', GLuint))
-GLlocationARB = Handle("locationARB", GLint, key=('programObj', GLhandleARB))
-GLprogramARB = Handle("programARB", GLuint)
-GLframebuffer = Handle("framebuffer", GLuint)
-GLrenderbuffer = Handle("renderbuffer", GLuint)
-GLfragmentShaderATI = Handle("fragmentShaderATI", GLuint)
-GLarray = Handle("array", GLuint)
-GLregion = Handle("region", GLuint)
-GLmap = Handle("map", OpaquePointer(GLvoid))
-GLpipeline = Handle("pipeline", GLuint)
-GLsampler = Handle("sampler", GLuint)
-GLfeedback = Handle("feedback", GLuint)
-
-GLsync_ = Opaque("GLsync")
-GLsync = Handle("sync", GLsync_)
-
-GLenum = Enum("GLenum", [
-    # Parameters are added later from glparams.py's parameter table
-])
-
-# Some functions take GLenum disguised as GLint.  Apple noticed and fixed it in
-# the gl.h header.  Regardless, C++ typechecking rules force the wrappers to
-# match the prototype precisely.
-if platform.system() == 'Darwin':
-    GLenum_int = GLenum
-else:
-    GLenum_int = Alias("GLint", GLenum)
-
-GLenum_mode = FakeEnum(GLenum, [
-    "GL_POINTS",                         # 0x0000
-    "GL_LINES",                          # 0x0001
-    "GL_LINE_LOOP",                      # 0x0002
-    "GL_LINE_STRIP",                     # 0x0003
-    "GL_TRIANGLES",                      # 0x0004
-    "GL_TRIANGLE_STRIP",                 # 0x0005
-    "GL_TRIANGLE_FAN",                   # 0x0006
-    "GL_QUADS",                          # 0x0007
-    "GL_QUAD_STRIP",                     # 0x0008
-    "GL_POLYGON",                        # 0x0009
-    "GL_LINES_ADJACENCY",                # 0x000A
-    "GL_LINE_STRIP_ADJACENCY",           # 0x000B
-    "GL_TRIANGLES_ADJACENCY",            # 0x000C
-    "GL_TRIANGLE_STRIP_ADJACENCY",       # 0x000D
-    "GL_PATCHES",                        # 0x000E
-])
-
-GLenum_error = FakeEnum(GLenum, [
-    "GL_NO_ERROR",                       # 0x0
-    "GL_INVALID_ENUM",                   # 0x0500
-    "GL_INVALID_VALUE",                  # 0x0501
-    "GL_INVALID_OPERATION",              # 0x0502
-    "GL_STACK_OVERFLOW",                 # 0x0503
-    "GL_STACK_UNDERFLOW",                # 0x0504
-    "GL_OUT_OF_MEMORY",                  # 0x0505
-    "GL_INVALID_FRAMEBUFFER_OPERATION",  # 0x0506
-    "GL_TABLE_TOO_LARGE",                # 0x8031
-])
-
-GLbitfield = Alias("GLbitfield", UInt)
-
-GLbitfield_attrib = Flags(GLbitfield, [
-    "GL_ALL_ATTRIB_BITS",     # 0x000FFFFF
-    "GL_CURRENT_BIT",         # 0x00000001
-    "GL_POINT_BIT",           # 0x00000002
-    "GL_LINE_BIT",            # 0x00000004
-    "GL_POLYGON_BIT",         # 0x00000008
-    "GL_POLYGON_STIPPLE_BIT", # 0x00000010
-    "GL_PIXEL_MODE_BIT",      # 0x00000020
-    "GL_LIGHTING_BIT",        # 0x00000040
-    "GL_FOG_BIT",             # 0x00000080
-    "GL_DEPTH_BUFFER_BIT",    # 0x00000100
-    "GL_ACCUM_BUFFER_BIT",    # 0x00000200
-    "GL_STENCIL_BUFFER_BIT",  # 0x00000400
-    "GL_VIEWPORT_BIT",        # 0x00000800
-    "GL_TRANSFORM_BIT",       # 0x00001000
-    "GL_ENABLE_BIT",          # 0x00002000
-    "GL_COLOR_BUFFER_BIT",    # 0x00004000
-    "GL_HINT_BIT",            # 0x00008000
-    "GL_EVAL_BIT",            # 0x00010000
-    "GL_LIST_BIT",            # 0x00020000
-    "GL_TEXTURE_BIT",         # 0x00040000
-    "GL_SCISSOR_BIT",         # 0x00080000
-    "GL_MULTISAMPLE_BIT",     # 0x20000000
-])
-
-GLbitfield_client_attrib = Flags(GLbitfield, [
-    "GL_CLIENT_ALL_ATTRIB_BITS",  # 0xFFFFFFFF
-    "GL_CLIENT_PIXEL_STORE_BIT",  # 0x00000001
-    "GL_CLIENT_VERTEX_ARRAY_BIT", # 0x00000002
-])
-
-GLbitfield_shader = Flags(GLbitfield, [
-    "GL_ALL_SHADER_BITS",                        # 0xFFFFFFFF
-    "GL_VERTEX_SHADER_BIT",                      # 0x00000001
-    "GL_FRAGMENT_SHADER_BIT",                    # 0x00000002
-    "GL_GEOMETRY_SHADER_BIT",                    # 0x00000004
-    "GL_TESS_CONTROL_SHADER_BIT",                # 0x00000008
-    "GL_TESS_EVALUATION_SHADER_BIT",             # 0x00000010
-])
-
-GLbitfield_access = Flags(GLbitfield, [
-    "GL_MAP_READ_BIT",                # 0x0001
-    "GL_MAP_WRITE_BIT",               # 0x0002
-    "GL_MAP_INVALIDATE_RANGE_BIT",    # 0x0004
-    "GL_MAP_INVALIDATE_BUFFER_BIT",   # 0x0008
-    "GL_MAP_FLUSH_EXPLICIT_BIT",      # 0x0010
-    "GL_MAP_UNSYNCHRONIZED_BIT",      # 0x0020
-])
-
-GLbitfield_sync_flush = Flags(GLbitfield, [
-    "GL_SYNC_FLUSH_COMMANDS_BIT",                              # 0x00000001
-])
-
-GLbitfield_barrier = Flags(GLbitfield, [
-    "GL_ALL_BARRIER_BITS",                      # 0xFFFFFFFF
-    "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT",       # 0x00000001
-    "GL_ELEMENT_ARRAY_BARRIER_BIT",             # 0x00000002
-    "GL_UNIFORM_BARRIER_BIT",                   # 0x00000004
-    "GL_TEXTURE_FETCH_BARRIER_BIT",             # 0x00000008
-    "GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV",   # 0x00000010
-    "GL_SHADER_IMAGE_ACCESS_BARRIER_BIT",       # 0x00000020
-    "GL_COMMAND_BARRIER_BIT",                   # 0x00000040
-    "GL_PIXEL_BUFFER_BARRIER_BIT",              # 0x00000080
-    "GL_TEXTURE_UPDATE_BARRIER_BIT",            # 0x00000100
-    "GL_BUFFER_UPDATE_BARRIER_BIT",             # 0x00000200
-    "GL_FRAMEBUFFER_BARRIER_BIT",               # 0x00000400
-    "GL_TRANSFORM_FEEDBACK_BARRIER_BIT",        # 0x00000800
-    "GL_ATOMIC_COUNTER_BARRIER_BIT",            # 0x00001000
-])
-
diff --git a/glxapi.py b/glxapi.py
deleted file mode 100644 (file)
index 361e89a..0000000
--- a/glxapi.py
+++ /dev/null
@@ -1,445 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""GLX API description."""
-
-
-from stdapi import *
-from glapi import *
-
-VisualID = Alias("VisualID", UInt32)
-Display = Opaque("Display *")
-Visual = Opaque("Visual *")
-Font = Alias("Font", UInt32)
-Pixmap = Alias("Pixmap", UInt32)
-Window = Alias("Window", UInt32)
-
-GLXContext = Opaque("GLXContext")
-GLXPixmap = Alias("GLXPixmap", UInt32)
-GLXDrawable = Alias("GLXDrawable", UInt32)
-GLXFBConfig = Opaque("GLXFBConfig")
-GLXFBConfigSGIX = Opaque("GLXFBConfigSGIX")
-GLXFBConfigID = Alias("GLXFBConfigID", UInt32)
-GLXContextID = Alias("GLXContextID", UInt32)
-GLXWindow = Alias("GLXWindow", UInt32)
-GLXPbuffer = Alias("GLXPbuffer", UInt32)
-GLXPbufferSGIX = Alias("GLXPbufferSGIX", UInt32)
-GLXVideoSourceSGIX = Alias("GLXVideoSourceSGIX", UInt32)
-
-XVisualInfo = Struct("XVisualInfo", [
-  (Visual, "visual"),
-  (VisualID, "visualid"),
-  (Int, "screen"),
-  (Int, "depth"),
-  (Int, "c_class"),
-  (ULong, "red_mask"),
-  (ULong, "green_mask"),
-  (ULong, "blue_mask"),
-  (Int, "colormap_size"),
-  (Int, "bits_per_rgb"),
-])
-
-Bool = FakeEnum(Int, [
-    "False",
-    "True",
-])
-
-GLXAttrib = FakeEnum(Int, [
-    "GLX_USE_GL",
-    "GLX_BUFFER_SIZE",
-    "GLX_LEVEL",
-    "GLX_RGBA",
-    "GLX_DOUBLEBUFFER",
-    "GLX_STEREO",
-    "GLX_AUX_BUFFERS",
-    "GLX_RED_SIZE",
-    "GLX_GREEN_SIZE",
-    "GLX_BLUE_SIZE",
-    "GLX_ALPHA_SIZE",
-    "GLX_DEPTH_SIZE",
-    "GLX_STENCIL_SIZE",
-    "GLX_ACCUM_RED_SIZE",
-    "GLX_ACCUM_GREEN_SIZE",
-    "GLX_ACCUM_BLUE_SIZE",
-    "GLX_ACCUM_ALPHA_SIZE",
-
-    "GLX_CONFIG_CAVEAT",               # 0x20
-    "GLX_X_VISUAL_TYPE",               # 0x22
-    "GLX_TRANSPARENT_TYPE",            # 0x23
-    "GLX_TRANSPARENT_INDEX_VALUE",     # 0x24
-    "GLX_TRANSPARENT_RED_VALUE",       # 0x25
-    "GLX_TRANSPARENT_GREEN_VALUE",     # 0x26
-    "GLX_TRANSPARENT_BLUE_VALUE",      # 0x27
-    "GLX_TRANSPARENT_ALPHA_VALUE",     # 0x28
-
-    "GLX_BIND_TO_TEXTURE_RGB_EXT",        # 0x20D0
-    "GLX_BIND_TO_TEXTURE_RGBA_EXT",       # 0x20D1
-    "GLX_BIND_TO_MIPMAP_TEXTURE_EXT",     # 0x20D2
-    "GLX_BIND_TO_TEXTURE_TARGETS_EXT",    # 0x20D3
-    "GLX_Y_INVERTED_EXT",                 # 0x20D4
-    "GLX_TEXTURE_FORMAT_EXT",             # 0x20D5
-    "GLX_TEXTURE_TARGET_EXT",             # 0x20D6
-    "GLX_MIPMAP_TEXTURE_EXT",             # 0x20D7
-    "GLX_TEXTURE_FORMAT_NONE_EXT",        # 0x20D8
-    "GLX_TEXTURE_FORMAT_RGB_EXT",         # 0x20D9
-    "GLX_TEXTURE_FORMAT_RGBA_EXT",        # 0x20DA
-    "GLX_TEXTURE_1D_EXT",                 # 0x20DB
-    "GLX_TEXTURE_2D_EXT",                 # 0x20DC
-    "GLX_TEXTURE_RECTANGLE_EXT",          # 0x20DD
-    "GLX_FRONT_LEFT_EXT",                 # 0x20DE
-    "GLX_FRONT_RIGHT_EXT",                # 0x20DF
-    "GLX_BACK_LEFT_EXT",                  # 0x20E0
-    "GLX_BACK_RIGHT_EXT",                 # 0x20E1
-    "GLX_AUX0_EXT",                       # 0x20E2
-    "GLX_AUX1_EXT",                       # 0x20E3
-    "GLX_AUX2_EXT",                       # 0x20E4
-    "GLX_AUX3_EXT",                       # 0x20E5
-    "GLX_AUX4_EXT",                       # 0x20E6
-    "GLX_AUX5_EXT",                       # 0x20E7
-    "GLX_AUX6_EXT",                       # 0x20E8
-    "GLX_AUX7_EXT",                       # 0x20E9
-    "GLX_AUX8_EXT",                       # 0x20EA
-    "GLX_AUX9_EXT",                       # 0x20EB
-
-    "GLX_NONE",                        # 0x8000
-    "GLX_SLOW_CONFIG",                 # 0x8001
-    "GLX_TRUE_COLOR",                  # 0x8002
-    "GLX_DIRECT_COLOR",                # 0x8003
-    "GLX_PSEUDO_COLOR",                # 0x8004
-    "GLX_STATIC_COLOR",                # 0x8005
-    "GLX_GRAY_SCALE",                  # 0x8006
-    "GLX_STATIC_GRAY",                 # 0x8007
-    "GLX_TRANSPARENT_RGB",             # 0x8008
-    "GLX_TRANSPARENT_INDEX",           # 0x8009
-    "GLX_VISUAL_ID",                   # 0x800B
-    "GLX_SCREEN",                      # 0x800C
-    "GLX_NON_CONFORMANT_CONFIG",       # 0x800D
-    "GLX_DRAWABLE_TYPE",               # 0x8010
-    "GLX_RENDER_TYPE",                 # 0x8011
-    "GLX_X_RENDERABLE",                # 0x8012
-    "GLX_FBCONFIG_ID",                 # 0x8013
-    "GLX_RGBA_TYPE",                   # 0x8014
-    "GLX_COLOR_INDEX_TYPE",            # 0x8015
-    "GLX_MAX_PBUFFER_WIDTH",           # 0x8016
-    "GLX_MAX_PBUFFER_HEIGHT",          # 0x8017
-    "GLX_MAX_PBUFFER_PIXELS",          # 0x8018
-    "GLX_PRESERVED_CONTENTS",          # 0x801B
-    "GLX_LARGEST_PBUFFER",             # 0x801C
-    "GLX_WIDTH",                       # 0x801D
-    "GLX_HEIGHT",                      # 0x801E
-    "GLX_EVENT_MASK",                  # 0x801F
-    "GLX_DAMAGED",                     # 0x8020
-    "GLX_SAVED",                       # 0x8021
-    "GLX_WINDOW",                      # 0x8022
-    "GLX_PBUFFER",                     # 0x8023
-    "GLX_PBUFFER_HEIGHT",              # 0x8040
-    "GLX_PBUFFER_WIDTH",               # 0x8041
-
-    "GLX_SAMPLE_BUFFERS",              # 100000
-    "GLX_SAMPLES",                     # 100001
-
-    "GLX_DONT_CARE", # 0xFFFFFFFF
-])
-
-GLXError = FakeEnum(Int, [
-    "GLX_BAD_SCREEN",
-    "GLX_BAD_ATTRIBUTE",
-    "GLX_NO_EXTENSION",
-    "GLX_BAD_VISUAL",
-    "GLX_BAD_CONTEXT",
-    "GLX_BAD_VALUE",
-    "GLX_BAD_ENUM",
-])
-
-GLXname = FakeEnum(Int, [
-    "GLX_VENDOR",
-    "GLX_VERSION",
-    "GLX_EXTENSIONS",
-])
-
-GLXbuffer = Flags(Int, [
-    "GLX_WINDOW_BIT",
-    "GLX_PIXMAP_BIT",
-    "GLX_PBUFFER_BIT",
-    "GLX_AUX_BUFFERS_BIT",
-    "GLX_FRONT_LEFT_BUFFER_BIT",
-    "GLX_FRONT_RIGHT_BUFFER_BIT",
-    "GLX_BACK_LEFT_BUFFER_BIT",
-    "GLX_BACK_RIGHT_BUFFER_BIT",
-    "GLX_DEPTH_BUFFER_BIT",
-    "GLX_STENCIL_BUFFER_BIT",
-    "GLX_ACCUM_BUFFER_BIT",
-])
-
-GLXEnum = FakeEnum(Int, [
-    "GLX_NONE",
-    "GLX_SLOW_CONFIG",
-    "GLX_TRUE_COLOR",
-    "GLX_DIRECT_COLOR",
-    "GLX_PSEUDO_COLOR",
-    "GLX_STATIC_COLOR",
-    "GLX_GRAY_SCALE",
-    "GLX_STATIC_GRAY",
-    "GLX_TRANSPARENT_RGB",
-    "GLX_TRANSPARENT_INDEX",
-    "GLX_VISUAL_ID",
-    "GLX_SCREEN",
-    "GLX_NON_CONFORMANT_CONFIG",
-    "GLX_DRAWABLE_TYPE",
-    "GLX_RENDER_TYPE",
-    "GLX_X_RENDERABLE",
-    "GLX_FBCONFIG_ID",
-    "GLX_RGBA_TYPE",
-    "GLX_COLOR_INDEX_TYPE",
-    "GLX_MAX_PBUFFER_WIDTH",
-    "GLX_MAX_PBUFFER_HEIGHT",
-    "GLX_MAX_PBUFFER_PIXELS",
-    "GLX_PRESERVED_CONTENTS",
-    "GLX_LARGEST_PBUFFER",
-    "GLX_WIDTH",
-    "GLX_HEIGHT",
-    "GLX_EVENT_MASK",
-    "GLX_DAMAGED",
-    "GLX_SAVED",
-    "GLX_WINDOW",
-    "GLX_PBUFFER",
-    "GLX_PBUFFER_HEIGHT",
-    "GLX_PBUFFER_WIDTH",
-])
-
-GLXbuffer = Flags(Int, [
-    "GLX_RGBA_BIT",
-    "GLX_COLOR_INDEX_BIT",
-    "GLX_PBUFFER_CLOBBER_MASK",
-])
-
-glxapi = API("GLX")
-
-PROC = Opaque("__GLXextFuncPtr")
-
-glxapi.add_functions([
-    # GLX
-    Function(Pointer(XVisualInfo), "glXChooseVisual", [(Display, "dpy"), (Int, "screen"), (Array(GLXAttrib, "__AttribList_size(attribList)"), "attribList")]),
-    Function(GLXContext, "glXCreateContext", [(Display, "dpy"), (Pointer(XVisualInfo), "vis"), (GLXContext, "shareList"), (Bool, "direct")]),
-    Function(Void, "glXDestroyContext",  [(Display, "dpy"), (GLXContext, "ctx")]),
-    Function(Bool, "glXMakeCurrent", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLXContext, "ctx")]),
-    Function(Void, "glXCopyContext", [(Display, "dpy"), (GLXContext, "src"), (GLXContext, "dst"),
-                                      (ULong, "mask")]),
-    Function(Void, "glXSwapBuffers", [(Display, "dpy"), (GLXDrawable, "drawable")]),
-    Function(GLXPixmap, "glXCreateGLXPixmap", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"),
-                                               (Pixmap, "pixmap")]),
-    Function(Void, "glXDestroyGLXPixmap", [(Display, "dpy"), (GLXPixmap, "pixmap")]),
-    Function(Bool, "glXQueryExtension", [(Display, "dpy"), Out(Pointer(Int), "errorb"), Out(Pointer(Int), "event")]),
-    Function(Bool, "glXQueryVersion", [(Display, "dpy"), Out(Pointer(Int), "maj"), Out(Pointer(Int), "min")]),
-    Function(Bool, "glXIsDirect", [(Display, "dpy"), (GLXContext, "ctx")]),
-    Function(GLXError, "glXGetConfig", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"),
-                                    (GLXAttrib, "attrib"), Out(Pointer(Int), "value")]),
-    Function(GLXContext, "glXGetCurrentContext", [], sideeffects=False),
-    Function(GLXDrawable, "glXGetCurrentDrawable", [], sideeffects=False),
-    Function(Void, "glXWaitGL", []),
-    Function(Void, "glXWaitX", []),
-    Function(Void, "glXUseXFont", [(Font, "font"), (Int, "first"), (Int, "count"), (Int, "list")]),
-
-    # GLX 1.1 and later
-    Function((Const(String("char *"))), "glXQueryExtensionsString", [(Display, "dpy"), (Int, "screen")]),
-    Function((Const(String("char *"))), "glXQueryServerString",  [(Display, "dpy"), (Int, "screen"), (GLXname, "name")]),
-    Function((Const(String("char *"))), "glXGetClientString", [(Display, "dpy"), (GLXname, "name")]),
-
-    # GLX 1.2 and later
-    Function(Display, "glXGetCurrentDisplay", [], sideeffects=False),
-
-    # GLX 1.3 and later
-    Function(Array(GLXFBConfig, "*nitems"), "glXChooseFBConfig", [(Display, "dpy"), (Int, "screen"), (Array(Const(GLXAttrib), "__AttribList_size(attribList)"), "attribList"), Out(Pointer(Int), "nitems")]),
-    Function(Int, "glXGetFBConfigAttrib", [(Display, "dpy"), (GLXFBConfig, "config"), (GLXAttrib, "attribute"), Out(Pointer(Int), "value")]),
-    Function(Array(GLXFBConfig, "*nelements"), "glXGetFBConfigs", [(Display, "dpy"), (Int, "screen"), 
-                                                                   Out(Pointer(Int), "nelements")]),
-    Function(Pointer(XVisualInfo), "glXGetVisualFromFBConfig", [(Display, "dpy"),
-                                                                (GLXFBConfig, "config")]),
-    Function(GLXWindow, "glXCreateWindow", [(Display, "dpy"), (GLXFBConfig, "config"),
-                                            (Window, "win"), (Array(Const(Int), "__AttribList_size(attribList)"), "attribList")]),
-    Function(Void, "glXDestroyWindow", [(Display, "dpy"), (GLXWindow, "window")]),
-    Function(GLXPixmap, "glXCreatePixmap", [(Display, "dpy"), (GLXFBConfig, "config"),
-                                            (Pixmap, "pixmap"), (Array(Const(Int), "__AttribList_size(attribList)"), "attribList")]),
-    Function(Void, "glXDestroyPixmap", [(Display, "dpy"), (GLXPixmap, "pixmap")]),
-    Function(GLXPbuffer, "glXCreatePbuffer", [(Display, "dpy"), (GLXFBConfig, "config"),
-                                              (Array(Const(GLXEnum), "__AttribList_size(attribList)"), "attribList")]),
-    Function(Void, "glXDestroyPbuffer", [(Display, "dpy"), (GLXPbuffer, "pbuf")]),
-    Function(Void, "glXQueryDrawable", [(Display, "dpy"), (GLXDrawable, "draw"), (GLXEnum, "attribute"),
-                                        Out(Pointer(UInt), "value")]),
-    Function(GLXContext, "glXCreateNewContext", [(Display, "dpy"), (GLXFBConfig, "config"),
-                                                 (GLXEnum, "renderType"), (GLXContext, "shareList"),
-                                                 (Bool, "direct")]),
-    Function(Bool, "glXMakeContextCurrent", [(Display, "dpy"), (GLXDrawable, "draw"),
-                                             (GLXDrawable, "read"), (GLXContext, "ctx")]),
-    Function(GLXDrawable, "glXGetCurrentReadDrawable", []),
-    Function(Int, "glXQueryContext", [(Display, "dpy"), (GLXContext, "ctx"), (GLXEnum, "attribute"),
-                                      Out(Pointer(Int), "value")]),
-    Function(Void, "glXSelectEvent", [(Display, "dpy"), (GLXDrawable, "drawable"),
-                                      (ULong, "mask")]),
-    Function(Void, "glXGetSelectedEvent", [(Display, "dpy"), (GLXDrawable, "drawable"),
-                                           Out(Pointer(ULong), "mask")]),
-
-    # GLX_ARB_create_context
-    Function(GLXContext, "glXCreateContextAttribsARB", [(Display, "dpy"), (GLXFBConfig, "config"), (GLXContext, "share_context"), (Bool, "direct"), (OpaquePointer(Const(Int)), "attrib_list")]),
-
-    # GLX_SGI_swap_control
-    Function(Int, "glXSwapIntervalSGI", [(Int, "interval")]),
-
-    # GLX_SGI_video_sync
-    Function(Int, "glXGetVideoSyncSGI", [(OpaquePointer(UInt), "count")]),
-    Function(Int, "glXWaitVideoSyncSGI", [(Int, "divisor"), (Int, "remainder"), (OpaquePointer(UInt), "count")]),
-
-    # GLX_SGI_make_current_read
-    Function(Bool, "glXMakeCurrentReadSGI", [(Display, "dpy"), (GLXDrawable, "draw"), (GLXDrawable, "read"), (GLXContext, "ctx")]),
-    Function(GLXDrawable, "glXGetCurrentReadDrawableSGI", []),
-
-    # GLX_SGIX_video_source
-    #Function(GLXVideoSourceSGIX, "glXCreateGLXVideoSourceSGIX", [(Display, "display"), (Int, "screen"), (VLServer, "server"), (VLPath, "path"), (Int, "nodeClass"), (VLNode, "drainNode")]),
-    #Function(Void, "glXDestroyGLXVideoSourceSGIX", [(Display, "dpy"), (GLXVideoSourceSGIX, "glxvideosource")]),
-
-    # GLX_EXT_import_context
-    Function(Display, "glXGetCurrentDisplayEXT", []),
-    Function(Int, "glXQueryContextInfoEXT", [(Display, "dpy"), (GLXContext, "context"), (Int, "attribute"), (OpaquePointer(Int), "value")]),
-    Function(GLXContextID, "glXGetContextIDEXT", [(Const(GLXContext), "context")]),
-    Function(GLXContext, "glXImportContextEXT", [(Display, "dpy"), (GLXContextID, "contextID")]),
-    Function(Void, "glXFreeContextEXT", [(Display, "dpy"), (GLXContext, "context")]),
-
-    # GLX_SGIX_fbconfig
-    Function(Int, "glXGetFBConfigAttribSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Int, "attribute"), (OpaquePointer(Int), "value")]),
-    Function(OpaquePointer(GLXFBConfigSGIX), "glXChooseFBConfigSGIX", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "attrib_list"), (OpaquePointer(Int), "nelements")]),
-    Function(GLXPixmap, "glXCreateGLXPixmapWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Pixmap, "pixmap")]),
-    Function(GLXContext, "glXCreateContextWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Int, "render_type"), (GLXContext, "share_list"), (Bool, "direct")]),
-    Function(OpaquePointer(XVisualInfo), "glXGetVisualFromFBConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config")]),
-    Function(GLXFBConfigSGIX, "glXGetFBConfigFromVisualSGIX", [(Display, "dpy"), (OpaquePointer(XVisualInfo), "vis")]),
-
-    # GLX_SGIX_pbuffer
-    Function(GLXPbufferSGIX, "glXCreateGLXPbufferSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (UInt, "width"), (UInt, "height"), (OpaquePointer(Int), "attrib_list")]),
-    Function(Void, "glXDestroyGLXPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuf")]),
-    Function(Int, "glXQueryGLXPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuf"), (Int, "attribute"), (OpaquePointer(UInt), "value")]),
-    Function(Void, "glXSelectEventSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (ULong, "mask")]),
-    Function(Void, "glXGetSelectedEventSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(ULong), "mask")]),
-
-    # GLX_SGI_cushion
-    Function(Void, "glXCushionSGI", [(Display, "dpy"), (Window, "window"), (Float, "cushion")]),
-
-    # GLX_SGIX_video_resize
-    Function(Int, "glXBindChannelToWindowSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (Window, "window")]),
-    Function(Int, "glXChannelRectSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (Int, "x"), (Int, "y"), (Int, "w"), (Int, "h")]),
-    Function(Int, "glXQueryChannelRectSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (OpaquePointer(Int), "dx"), (OpaquePointer(Int), "dy"), (OpaquePointer(Int), "dw"), (OpaquePointer(Int), "dh")]),
-    Function(Int, "glXQueryChannelDeltasSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (OpaquePointer(Int), "x"), (OpaquePointer(Int), "y"), (OpaquePointer(Int), "w"), (OpaquePointer(Int), "h")]),
-    Function(Int, "glXChannelRectSyncSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (GLenum, "synctype")]),
-
-    # GLX_SGIX_dmbuffer
-    #Function(Bool, "glXAssociateDMPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuffer"), (OpaquePointer(DMparams), "params"), (DMbuffer, "dmbuffer")]),
-
-    # GLX_SGIX_swap_group
-    Function(Void, "glXJoinSwapGroupSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLXDrawable, "member")]),
-
-    # GLX_SGIX_swap_barrier
-    Function(Void, "glXBindSwapBarrierSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int, "barrier")]),
-    Function(Bool, "glXQueryMaxSwapBarriersSGIX", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "max")]),
-
-    # GLX_SUN_get_transparent_index
-    #Function(Status, "glXGetTransparentIndexSUN", [(Display, "dpy"), (Window, "overlay"), (Window, "underlay"), (OpaquePointer(Long), "pTransparentIndex")]),
-
-    # GLX_MESA_copy_sub_buffer
-    Function(Void, "glXCopySubBufferMESA", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int, "x"), (Int, "y"), (Int, "width"), (Int, "height")]),
-
-    # GLX_MESA_pixmap_colormap
-    #Function(GLXPixmap, "glXCreateGLXPixmapMESA", [(Display, "dpy"), (OpaquePointer(XVisualInfo), "visual"), (Pixmap, "pixmap"), (Colormap, "cmap")]),
-
-    # GLX_MESA_release_buffers
-    Function(Bool, "glXReleaseBuffersMESA", [(Display, "dpy"), (GLXDrawable, "drawable")]),
-
-    # GLX_MESA_set_3dfx_mode
-    Function(Bool, "glXSet3DfxModeMESA", [(Int, "mode")]),
-
-    # GLX_OML_sync_control
-    Function(Bool, "glXGetSyncValuesOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(Int64), "ust"), (OpaquePointer(Int64), "msc"), (OpaquePointer(Int64), "sbc")]),
-    Function(Bool, "glXGetMscRateOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(Int32), "numerator"), (OpaquePointer(Int32), "denominator")]),
-    Function(Int64, "glXSwapBuffersMscOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int64, "target_msc"), (Int64, "divisor"), (Int64, "remainder")]),
-    Function(Bool, "glXWaitForMscOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int64, "target_msc"), (Int64, "divisor"), (Int64, "remainder"), (OpaquePointer(Int64), "ust"), (OpaquePointer(Int64), "msc"), (OpaquePointer(Int64), "sbc")]),
-    Function(Bool, "glXWaitForSbcOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int64, "target_sbc"), (OpaquePointer(Int64), "ust"), (OpaquePointer(Int64), "msc"), (OpaquePointer(Int64), "sbc")]),
-
-    # GLX_SGIX_hyperpipe
-    #Function(OpaquePointer(GLXHyperpipeNetworkSGIX), "glXQueryHyperpipeNetworkSGIX", [(Display, "dpy"), (OpaquePointer(Int), "npipes")]),
-    #Function(Int, "glXHyperpipeConfigSGIX", [(Display, "dpy"), (Int, "networkId"), (Int, "npipes"), (OpaquePointer(GLXHyperpipeConfigSGIX), "cfg"), (OpaquePointer(Int), "hpId")]),
-    #Function(OpaquePointer(GLXHyperpipeConfigSGIX), "glXQueryHyperpipeConfigSGIX", [(Display, "dpy"), (Int, "hpId"), (OpaquePointer(Int), "npipes")]),
-    #Function(Int, "glXDestroyHyperpipeConfigSGIX", [(Display, "dpy"), (Int, "hpId")]),
-    #Function(Int, "glXBindHyperpipeSGIX", [(Display, "dpy"), (Int, "hpId")]),
-    #Function(Int, "glXQueryHyperpipeBestAttribSGIX", [(Display, "dpy"), (Int, "timeSlice"), (Int, "attrib"), (Int, "size"), (OpaquePointer(Void), "attribList"), (OpaquePointer(Void), "returnAttribList")]),
-    #Function(Int, "glXHyperpipeAttribSGIX", [(Display, "dpy"), (Int, "timeSlice"), (Int, "attrib"), (Int, "size"), (OpaquePointer(Void), "attribList")]),
-    #Function(Int, "glXQueryHyperpipeAttribSGIX", [(Display, "dpy"), (Int, "timeSlice"), (Int, "attrib"), (Int, "size"), (OpaquePointer(Void), "returnAttribList")]),
-
-    # GLX_MESA_agp_offset
-    Function(UInt, "glXGetAGPOffsetMESA", [(OpaquePointer(Const(Void)), "pointer")]),
-    
-    # EXT_texture_from_pixmap
-    Function(Void, "glXBindTexImageEXT", [(Display, "display"), (GLXDrawable, "drawable"), (Int, "buffer"), (Array(Const(Int), "__AttribList_size(attrib_list)"), "attrib_list")]),
-    Function(Void, "glXReleaseTexImageEXT", [(Display, "display"), (GLXDrawable, "drawable"), (Int, "buffer")]),
-
-    # GLX_NV_present_video
-    #Function(OpaquePointer(UInt), "glXEnumerateVideoDevicesNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "nelements")]),
-    #Function(Int, "glXBindVideoDeviceNV", [(Display, "dpy"), (UInt, "video_slot"), (UInt, "video_device"), (OpaquePointer(Const(Int)), "attrib_list")]),
-
-    # GLX_NV_video_output
-    #Function(Int, "glXGetVideoDeviceNV", [(Display, "dpy"), (Int, "screen"), (Int, "numVideoDevices"), (OpaquePointer(GLXVideoDeviceNV), "pVideoDevice")]),
-    #Function(Int, "glXReleaseVideoDeviceNV", [(Display, "dpy"), (Int, "screen"), (GLXVideoDeviceNV, "VideoDevice")]),
-    #Function(Int, "glXBindVideoImageNV", [(Display, "dpy"), (GLXVideoDeviceNV, "VideoDevice"), (GLXPbuffer, "pbuf"), (Int, "iVideoBuffer")]),
-    #Function(Int, "glXReleaseVideoImageNV", [(Display, "dpy"), (GLXPbuffer, "pbuf")]),
-    #Function(Int, "glXSendPbufferToVideoNV", [(Display, "dpy"), (GLXPbuffer, "pbuf"), (Int, "iBufferType"), (OpaquePointer(ULong), "pulCounterPbuffer"), (GLboolean, "bBlock")]),
-    #Function(Int, "glXGetVideoInfoNV", [(Display, "dpy"), (Int, "screen"), (GLXVideoDeviceNV, "VideoDevice"), (OpaquePointer(ULong), "pulCounterOutputPbuffer"), (OpaquePointer(ULong), "pulCounterOutputVideo")]),
-
-    # GLX_NV_swap_group
-    Function(Bool, "glXJoinSwapGroupNV", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLuint, "group")]),
-    Function(Bool, "glXBindSwapBarrierNV", [(Display, "dpy"), (GLuint, "group"), (GLuint, "barrier")]),
-    Function(Bool, "glXQuerySwapGroupNV", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(GLuint), "group"), (OpaquePointer(GLuint), "barrier")]),
-    Function(Bool, "glXQueryMaxSwapGroupsNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(GLuint), "maxGroups"), (OpaquePointer(GLuint), "maxBarriers")]),
-    Function(Bool, "glXQueryFrameCountNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(GLuint), "count")]),
-    Function(Bool, "glXResetFrameCountNV", [(Display, "dpy"), (Int, "screen")]),
-
-    # GLX_NV_video_capture
-    #Function(Int, "glXBindVideoCaptureDeviceNV", [(Display, "dpy"), (UInt, "video_capture_slot"), (GLXVideoCaptureDeviceNV, "device")]),
-    #Function(OpaquePointer(GLXVideoCaptureDeviceNV), "glXEnumerateVideoCaptureDevicesNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "nelements")]),
-    #Function(Void, "glXLockVideoCaptureDeviceNV", [(Display, "dpy"), (GLXVideoCaptureDeviceNV, "device")]),
-    #Function(Int, "glXQueryVideoCaptureDeviceNV", [(Display, "dpy"), (GLXVideoCaptureDeviceNV, "device"), (Int, "attribute"), (OpaquePointer(Int), "value")]),
-    #Function(Void, "glXReleaseVideoCaptureDeviceNV", [(Display, "dpy"), (GLXVideoCaptureDeviceNV, "device")]),
-
-    # GLX_EXT_swap_control
-    Function(Int, "glXSwapIntervalEXT", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int, "interval")]),
-
-    # GLX_NV_copy_image
-    Function(Void, "glXCopyImageSubDataNV", [(Display, "dpy"), (GLXContext, "srcCtx"), (GLuint, "srcName"), (GLenum, "srcTarget"), (GLint, "srcLevel"), (GLint, "srcX"), (GLint, "srcY"), (GLint, "srcZ"), (GLXContext, "dstCtx"), (GLuint, "dstName"), (GLenum, "dstTarget"), (GLint, "dstLevel"), (GLint, "dstX"), (GLint, "dstY"), (GLint, "dstZ"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
-
-    # GLX_NV_vertex_array_range
-    Function(OpaquePointer(Void), "glXAllocateMemoryNV", [(GLsizei, "size"), (GLfloat, "readfreq"), (GLfloat, "writefreq"), (GLfloat, "priority")]),
-    Function(Void, "glXFreeMemoryNV", [(OpaquePointer(Void), "pointer")]),
-
-    # Must be last
-    Function(PROC, "glXGetProcAddressARB", [(Alias("const GLubyte *", CString), "procName")]),
-    Function(PROC, "glXGetProcAddress", [(Alias("const GLubyte *", CString), "procName")]),
-])
-
-
index 6b5d786b6d91ff16f1562ceb9790f544481d51ed..70d9c1b9c818b839d59628e8f2aec89a19d5d04c 100644 (file)
@@ -28,9 +28,9 @@
 """GLX tracing generator."""
 
 
-from stdapi import API
-from glapi import glapi
-from glxapi import glxapi
+from specs.stdapi import API
+from specs.glapi import glapi
+from specs.glxapi import glxapi
 from gltrace import GlTracer
 from dispatch import function_pointer_type, function_pointer_value
 
index 392519b02739e6abcf1d6b3364e1940c2c3b032b..724f5220bee23dd65b8d8008ac886e92dda43fb4 100644 (file)
@@ -26,8 +26,8 @@
 
 """Generic retracing code generator."""
 
-import stdapi
-import glapi
+import specs.stdapi as stdapi
+import specs.glapi as glapi
 from codegen import *
 
 
diff --git a/specs/__init__.py b/specs/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/specs/cglapi.py b/specs/cglapi.py
new file mode 100644 (file)
index 0000000..1aac1b2
--- /dev/null
@@ -0,0 +1,254 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""CGL API description."""
+
+
+from stdapi import *
+from glapi import *
+from glapi import glapi
+
+IOSurfaceRef = Opaque("IOSurfaceRef")
+CGLContextObj = Opaque("CGLContextObj")
+CGLPixelFormatObj = Opaque("CGLPixelFormatObj")
+CGLRendererInfoObj = Opaque("CGLRendererInfoObj")
+CGLPBufferObj = Opaque("CGLPBufferObj")
+CGLShareGroup = Opaque("CGLShareGroup")
+CGLShareGroupObj = Opaque("CGLShareGroupObj")
+CGSConnectionID = Alias("CGSConnectionID", Int)
+CGSWindowID = Alias("CGSWindowID", Int)
+CGSSurfaceID = Alias("CGSSurfaceID", Int)
+
+CGLPixelFormatAttribute = Enum("CGLPixelFormatAttribute", [
+    "kCGLPFAAllRenderers",
+    "kCGLPFADoubleBuffer",
+    "kCGLPFAStereo",
+    "kCGLPFAAuxBuffers",
+    "kCGLPFAColorSize",
+    "kCGLPFAAlphaSize",
+    "kCGLPFADepthSize",
+    "kCGLPFAStencilSize",
+    "kCGLPFAAccumSize",
+    "kCGLPFAMinimumPolicy",
+    "kCGLPFAMaximumPolicy",
+    "kCGLPFAOffScreen",
+    "kCGLPFAFullScreen",
+    "kCGLPFASampleBuffers",
+    "kCGLPFASamples",
+    "kCGLPFAAuxDepthStencil",
+    "kCGLPFAColorFloat",
+    "kCGLPFAMultisample",
+    "kCGLPFASupersample",
+    "kCGLPFASampleAlpha",
+    "kCGLPFARendererID",
+    "kCGLPFASingleRenderer",
+    "kCGLPFANoRecovery",
+    "kCGLPFAAccelerated",
+    "kCGLPFAClosestPolicy",
+    "kCGLPFABackingStore",
+    "kCGLPFAWindow",
+    "kCGLPFACompliant",
+    "kCGLPFADisplayMask",
+    "kCGLPFAPBuffer",
+    "kCGLPFARemotePBuffer",
+    "kCGLPFAAllowOfflineRenderers",
+    "kCGLPFAAcceleratedCompute",
+    "kCGLPFAVirtualScreenCount",
+    "kCGLPFARobust",
+    "kCGLPFAMPSafe",
+    "kCGLPFAMultiScreen",
+])
+
+CGLRendererProperty = Enum("CGLRendererProperty", [
+    "kCGLRPOffScreen",
+    "kCGLRPFullScreen",
+    "kCGLRPRendererID",
+    "kCGLRPAccelerated",
+    "kCGLRPRobust",
+    "kCGLRPBackingStore",
+    "kCGLRPMPSafe",
+    "kCGLRPWindow",
+    "kCGLRPMultiScreen",
+    "kCGLRPCompliant",
+    "kCGLRPDisplayMask",
+    "kCGLRPBufferModes",
+    "kCGLRPColorModes",
+    "kCGLRPAccumModes",
+    "kCGLRPDepthModes",
+    "kCGLRPStencilModes",
+    "kCGLRPMaxAuxBuffers",
+    "kCGLRPMaxSampleBuffers",
+    "kCGLRPMaxSamples",
+    "kCGLRPSampleModes",
+    "kCGLRPSampleAlpha",
+    "kCGLRPVideoMemory",
+    "kCGLRPTextureMemory",
+    "kCGLRPGPUVertProcCapable",
+    "kCGLRPGPUFragProcCapable",
+    "kCGLRPRendererCount",
+    "kCGLRPOnline",
+    "kCGLRPAcceleratedCompute",
+])
+
+CGLContextEnable = Enum("CGLContextEnable", [
+    "kCGLCESwapRectangle",
+    "kCGLCESwapLimit",
+    "kCGLCERasterization",
+    "kCGLCEStateValidation",
+    "kCGLCESurfaceBackingSize",
+    "kCGLCEDisplayListOptimization",
+    "kCGLCEMPEngine",
+])
+
+CGLContextParameter = Enum("CGLContextParameter", [
+    "kCGLCPSwapRectangle",
+    "kCGLCPSwapInterval",
+    "kCGLCPDispatchTableSize",
+    "kCGLCPClientStorage",
+    "kCGLCPSurfaceTexture",
+    "kCGLCPSurfaceOrder",
+    "kCGLCPSurfaceOpacity",
+    "kCGLCPSurfaceBackingSize",
+    "kCGLCPSurfaceSurfaceVolatile",
+    "kCGLCPReclaimResources",
+    "kCGLCPCurrentRendererID",
+    "kCGLCPGPUVertexProcessing",
+    "kCGLCPGPUFragmentProcessing",
+    "kCGLCPHasDrawable",
+    "kCGLCPMPSwapsInFlight",
+])
+
+CGLGlobalOption = Enum("CGLGlobalOption", [
+    "kCGLGOFormatCacheSize",
+    "kCGLGOClearFormatCache",
+    "kCGLGORetainRenderers",
+    "kCGLGOResetLibrary",
+    "kCGLGOUseErrorHandler",
+    "kCGLGOUseBuildCache",
+])
+
+CGLError = Enum("CGLError", [
+    "kCGLNoError",
+    "kCGLBadAttribute",
+    "kCGLBadProperty",
+    "kCGLBadPixelFormat",
+    "kCGLBadRendererInfo",
+    "kCGLBadContext",
+    "kCGLBadDrawable",
+    "kCGLBadDisplay",
+    "kCGLBadState",
+    "kCGLBadValue",
+    "kCGLBadMatch",
+    "kCGLBadEnumeration",
+    "kCGLBadOffScreen",
+    "kCGLBadFullScreen",
+    "kCGLBadWindow",
+    "kCGLBadAddress",
+    "kCGLBadCodeModule",
+    "kCGLBadAlloc",
+    "kCGLBadConnection",
+])
+
+CGLContextObj = Opaque("CGLContextObj")
+
+cglapi = API("CGL")
+
+cglapi.add_functions([
+    # CGLCurrent.h, libGL.dylib
+    Function(CGLError, "CGLSetCurrentContext", [(CGLContextObj, "ctx")]),
+    Function(CGLContextObj, "CGLGetCurrentContext", []),
+
+    # OpenGL.h, OpenGL framework
+    Function(CGLError, "CGLChoosePixelFormat", [(OpaquePointer(Const(CGLPixelFormatAttribute)), "attribs"), (OpaquePointer(CGLPixelFormatObj), "pix"), (OpaquePointer(GLint), "npix")]),
+    Function(CGLError, "CGLDestroyPixelFormat", [(CGLPixelFormatObj, "pix")]),
+    Function(CGLError, "CGLDescribePixelFormat", [(CGLPixelFormatObj, "pix"), (GLint, "pix_num"), (CGLPixelFormatAttribute, "attrib"), (OpaquePointer(GLint), "value")]),
+    Function(Void, "CGLReleasePixelFormat", [(CGLPixelFormatObj, "pix")]),
+    Function(CGLPixelFormatObj, "CGLRetainPixelFormat", [(CGLPixelFormatObj, "pix")]),
+    Function(GLuint, "CGLGetPixelFormatRetainCount", [(CGLPixelFormatObj, "pix")]),
+    Function(CGLError, "CGLQueryRendererInfo", [(GLuint, "display_mask"), (OpaquePointer(CGLRendererInfoObj), "rend"), (OpaquePointer(GLint), "nrend")]),
+    Function(CGLError, "CGLDestroyRendererInfo", [(CGLRendererInfoObj, "rend")]),
+    Function(CGLError, "CGLDescribeRenderer", [(CGLRendererInfoObj, "rend"), (GLint, "rend_num"), (CGLRendererProperty, "prop"), (OpaquePointer(GLint), "value")]),
+    Function(CGLError, "CGLCreateContext", [(CGLPixelFormatObj, "pix"), (CGLContextObj, "share"), (OpaquePointer(CGLContextObj), "ctx")]),
+    Function(CGLError, "CGLDestroyContext", [(CGLContextObj, "ctx")]),
+    Function(CGLError, "CGLCopyContext", [(CGLContextObj, "src"), (CGLContextObj, "dst"), (GLbitfield, "mask")]),
+    Function(CGLContextObj, "CGLRetainContext", [(CGLContextObj, "ctx")]),
+    Function(Void, "CGLReleaseContext", [(CGLContextObj, "ctx")]),
+    Function(GLuint, "CGLGetContextRetainCount", [(CGLContextObj, "ctx")]),
+    Function(CGLPixelFormatObj, "CGLGetPixelFormat", [(CGLContextObj, "ctx")]),
+    Function(CGLError, "CGLCreatePBuffer", [(GLsizei, "width"), (GLsizei, "height"), (GLenum, "target"), (GLenum, "internalFormat"), (GLint, "max_level"), (OpaquePointer(CGLPBufferObj), "pbuffer")]),
+    Function(CGLError, "CGLDestroyPBuffer", [(CGLPBufferObj, "pbuffer")]),
+    Function(CGLError, "CGLDescribePBuffer", [(CGLPBufferObj, "obj"), (OpaquePointer(GLsizei), "width"), (OpaquePointer(GLsizei), "height"), (OpaquePointer(GLenum), "target"), (OpaquePointer(GLenum), "internalFormat"), (OpaquePointer(GLint), "mipmap")]),
+    Function(CGLError, "CGLTexImagePBuffer", [(CGLContextObj, "ctx"), (CGLPBufferObj, "pbuffer"), (GLenum, "source")]),
+    Function(CGLPBufferObj, "CGLRetainPBuffer", [(CGLPBufferObj, "pbuffer")]),
+    Function(Void, "CGLReleasePBuffer", [(CGLPBufferObj, "pbuffer")]),
+    Function(GLuint, "CGLGetPBufferRetainCount", [(CGLPBufferObj, "pbuffer")]),
+    Function(CGLError, "CGLSetOffScreen", [(CGLContextObj, "ctx"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "rowbytes"), (OpaquePointer(Void), "baseaddr")]),
+    Function(CGLError, "CGLGetOffScreen", [(CGLContextObj, "ctx"), (OpaquePointer(GLsizei), "width"), (OpaquePointer(GLsizei), "height"), (OpaquePointer(GLint), "rowbytes"), (OpaquePointer(OpaquePointer(Void)), "baseaddr")]),
+    Function(CGLError, "CGLSetFullScreen", [(CGLContextObj, "ctx")]),
+    Function(CGLError, "CGLSetFullScreenOnDisplay", [(CGLContextObj, "ctx"), (GLuint, "display_mask")]),
+    Function(CGLError, "CGLSetPBuffer", [(CGLContextObj, "ctx"), (CGLPBufferObj, "pbuffer"), (GLenum, "face"), (GLint, "level"), (GLint, "screen")]),
+    Function(CGLError, "CGLGetPBuffer", [(CGLContextObj, "ctx"), (OpaquePointer(CGLPBufferObj), "pbuffer"), (OpaquePointer(GLenum), "face"), (OpaquePointer(GLint), "level"), (OpaquePointer(GLint), "screen")]),
+    Function(CGLError, "CGLClearDrawable", [(CGLContextObj, "ctx")]),
+    Function(CGLError, "CGLFlushDrawable", [(CGLContextObj, "ctx")]),
+    Function(CGLError, "CGLEnable", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname")]),
+    Function(CGLError, "CGLDisable", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname")]),
+    Function(CGLError, "CGLIsEnabled", [(CGLContextObj, "ctx"), (CGLContextEnable, "pname"), (OpaquePointer(GLint), "enable")]),
+    Function(CGLError, "CGLSetParameter", [(CGLContextObj, "ctx"), (CGLContextParameter, "pname"), (OpaquePointer(Const(GLint)), "params")]),
+    Function(CGLError, "CGLGetParameter", [(CGLContextObj, "ctx"), (CGLContextParameter, "pname"), (OpaquePointer(GLint), "params")]),
+    Function(CGLError, "CGLSetVirtualScreen", [(CGLContextObj, "ctx"), (GLint, "screen")]),
+    Function(CGLError, "CGLGetVirtualScreen", [(CGLContextObj, "ctx"), (OpaquePointer(GLint), "screen")]),
+    Function(CGLError, "CGLSetGlobalOption", [(CGLGlobalOption, "pname"), (OpaquePointer(Const(GLint)), "params")]),
+    Function(CGLError, "CGLGetGlobalOption", [(CGLGlobalOption, "pname"), (OpaquePointer(GLint), "params")]),
+    Function(CGLError, "CGLSetOption", [(CGLGlobalOption, "pname"), (GLint, "param")]),
+    Function(CGLError, "CGLGetOption", [(CGLGlobalOption, "pname"), (OpaquePointer(GLint), "param")]),
+    Function(CGLError, "CGLLockContext", [(CGLContextObj, "ctx")]),
+    Function(CGLError, "CGLUnlockContext", [(CGLContextObj, "ctx")]),
+    Function(Void, "CGLGetVersion", [(OpaquePointer(GLint), "majorvers"), (OpaquePointer(GLint), "minorvers")]),
+    Function(Const(CString), "CGLErrorString", [(CGLError, "error")]),
+
+    # CGLIOSurface.h, OpenGL framework
+    Function(CGLError, "CGLTexImageIOSurface2D", [(CGLContextObj, "ctx"), (GLenum, "target"), (GLenum, "internal_format"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (IOSurfaceRef, "ioSurface"), (GLuint, "plane")]),
+
+    # CGLDevice.h, OpenGL framework
+    Function(CGLShareGroupObj, "CGLGetShareGroup", [(CGLContextObj, "ctx")]),
+
+    # Undocumented, OpenGL framework
+    Function(CGLError, "CGLSetSurface", [(CGLContextObj, "ctx"), (CGSConnectionID, "cid"), (CGSWindowID, "wid"), (CGSSurfaceID, "sid")]),
+    Function(CGLError, "CGLGetSurface", [(CGLContextObj, "ctx"), (OpaquePointer(CGSConnectionID), "cid"), (OpaquePointer(CGSWindowID), "wid"), (OpaquePointer(CGSSurfaceID), "sid")]),
+    Function(CGLError, "CGLUpdateContext", [(CGLContextObj, "ctx")]),
+    # XXX: Confirm CGLOpenCLMuxLockDown
+    Function(CGLError, "CGLOpenCLMuxLockDown", []),
+    # FIXME: CGLAreContextsShared
+    # FIXME: CGLBackDispatch
+    # FIXME: CGLFrontDispatch
+    # FIXME: CGLGetNextContext
+    # FIXME: CGLRestoreDispatch
+    # FIXME: CGLRestoreDispatchFunction
+    # FIXME: CGLSelectDispatch
+    # FIXME: CGLSelectDispatchBounded
+    # FIXME: CGLSelectDispatchFunction
+    # FIXME: CGLSetPBufferVolatileState
+])
+
diff --git a/specs/d3d.py b/specs/d3d.py
new file mode 100644 (file)
index 0000000..857e5b3
--- /dev/null
@@ -0,0 +1,475 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d.h"""
+
+from winapi import *
+from ddraw import *
+from d3dtypes import *
+from d3dcaps import *
+
+def OutPointer(type):
+    return Out(Pointer(type), "out")
+
+d3dnextFlags = Flags(DWORD, [
+    "D3DNEXT_NEXT",
+    "D3DNEXT_HEAD",
+    "D3DNEXT_TAIL",
+])
+
+direct3dFlags = Flags(DWORD, [
+    "DIRECT3D_VERSION",
+])
+
+d3ddpFlags = Flags(DWORD, [
+    "D3DDP_WAIT",
+    "D3DDP_OUTOFORDER",
+    "D3DDP_DONOTCLIP",
+    "D3DDP_DONOTUPDATEEXTENTS",
+    "D3DDP_DONOTLIGHT",
+])
+
+HRESULT = Enum("HRESULT", [
+    "D3D_OK",
+    "D3DERR_BADMAJORVERSION",
+    "D3DERR_BADMINORVERSION",
+    "D3DERR_INVALID_DEVICE",
+    "D3DERR_INITFAILED",
+    "D3DERR_DEVICEAGGREGATED",
+    "D3DERR_EXECUTE_CREATE_FAILED",
+    "D3DERR_EXECUTE_DESTROY_FAILED",
+    "D3DERR_EXECUTE_LOCK_FAILED",
+    "D3DERR_EXECUTE_UNLOCK_FAILED",
+    "D3DERR_EXECUTE_LOCKED",
+    "D3DERR_EXECUTE_NOT_LOCKED",
+    "D3DERR_EXECUTE_FAILED",
+    "D3DERR_EXECUTE_CLIPPED_FAILED",
+    "D3DERR_TEXTURE_NO_SUPPORT",
+    "D3DERR_TEXTURE_CREATE_FAILED",
+    "D3DERR_TEXTURE_DESTROY_FAILED",
+    "D3DERR_TEXTURE_LOCK_FAILED",
+    "D3DERR_TEXTURE_UNLOCK_FAILED",
+    "D3DERR_TEXTURE_LOAD_FAILED",
+    "D3DERR_TEXTURE_SWAP_FAILED",
+    "D3DERR_TEXTURE_LOCKED",
+    "D3DERR_TEXTURE_NOT_LOCKED",
+    "D3DERR_TEXTURE_GETSURF_FAILED",
+    "D3DERR_MATRIX_CREATE_FAILED",
+    "D3DERR_MATRIX_DESTROY_FAILED",
+    "D3DERR_MATRIX_SETDATA_FAILED",
+    "D3DERR_MATRIX_GETDATA_FAILED",
+    "D3DERR_SETVIEWPORTDATA_FAILED",
+    "D3DERR_INVALIDCURRENTVIEWPORT",
+    "D3DERR_INVALIDPRIMITIVETYPE",
+    "D3DERR_INVALIDVERTEXTYPE",
+    "D3DERR_TEXTURE_BADSIZE",
+    "D3DERR_INVALIDRAMPTEXTURE",
+    "D3DERR_MATERIAL_CREATE_FAILED",
+    "D3DERR_MATERIAL_DESTROY_FAILED",
+    "D3DERR_MATERIAL_SETDATA_FAILED",
+    "D3DERR_MATERIAL_GETDATA_FAILED",
+    "D3DERR_INVALIDPALETTE",
+    "D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY",
+    "D3DERR_ZBUFF_NEEDS_VIDEOMEMORY",
+    "D3DERR_SURFACENOTINVIDMEM",
+    "D3DERR_LIGHT_SET_FAILED",
+    "D3DERR_LIGHTHASVIEWPORT",
+    "D3DERR_LIGHTNOTINTHISVIEWPORT",
+    "D3DERR_SCENE_IN_SCENE",
+    "D3DERR_SCENE_NOT_IN_SCENE",
+    "D3DERR_SCENE_BEGIN_FAILED",
+    "D3DERR_SCENE_END_FAILED",
+    "D3DERR_INBEGIN",
+    "D3DERR_NOTINBEGIN",
+    "D3DERR_NOVIEWPORTS",
+    "D3DERR_VIEWPORTDATANOTSET",
+    "D3DERR_VIEWPORTHASNODEVICE",
+    "D3DERR_NOCURRENTVIEWPORT",
+    "D3DERR_INVALIDVERTEXFORMAT",
+    "D3DERR_COLORKEYATTACHED",
+    "D3DERR_VERTEXBUFFEROPTIMIZED",
+    "D3DERR_VBUF_CREATE_FAILED",
+    "D3DERR_VERTEXBUFFERLOCKED",
+    "D3DERR_VERTEXBUFFERUNLOCKFAILED",
+    "D3DERR_ZBUFFER_NOTPRESENT",
+    "D3DERR_STENCILBUFFER_NOTPRESENT",
+    "D3DERR_WRONGTEXTUREFORMAT",
+    "D3DERR_UNSUPPORTEDCOLOROPERATION",
+    "D3DERR_UNSUPPORTEDCOLORARG",
+    "D3DERR_UNSUPPORTEDALPHAOPERATION",
+    "D3DERR_UNSUPPORTEDALPHAARG",
+    "D3DERR_TOOMANYOPERATIONS",
+    "D3DERR_CONFLICTINGTEXTUREFILTER",
+    "D3DERR_UNSUPPORTEDFACTORVALUE",
+    "D3DERR_CONFLICTINGRENDERSTATE",
+    "D3DERR_UNSUPPORTEDTEXTUREFILTER",
+    "D3DERR_TOOMANYPRIMITIVES",
+    "D3DERR_INVALIDMATRIX",
+    "D3DERR_TOOMANYVERTICES",
+    "D3DERR_CONFLICTINGTEXTUREPALETTE",
+    "D3DERR_INVALIDSTATEBLOCK",
+    "D3DERR_INBEGINSTATEBLOCK",
+    "D3DERR_NOTINBEGINSTATEBLOCK",
+])
+
+IDirect3D = Interface("IDirect3D", IUnknown)
+IDirect3D2 = Interface("IDirect3D2", IUnknown)
+IDirect3D3 = Interface("IDirect3D3", IUnknown)
+IDirect3D7 = Interface("IDirect3D7", IUnknown)
+IDirect3DDevice = Interface("IDirect3DDevice", IUnknown)
+IDirect3DDevice2 = Interface("IDirect3DDevice2", IUnknown)
+IDirect3DDevice3 = Interface("IDirect3DDevice3", IUnknown)
+IDirect3DDevice7 = Interface("IDirect3DDevice7", IUnknown)
+IDirect3DExecuteBuffer = Interface("IDirect3DExecuteBuffer", IUnknown)
+IDirect3DLight = Interface("IDirect3DLight", IUnknown)
+IDirect3DMaterial = Interface("IDirect3DMaterial", IUnknown)
+IDirect3DMaterial2 = Interface("IDirect3DMaterial2", IUnknown)
+IDirect3DMaterial3 = Interface("IDirect3DMaterial3", IUnknown)
+IDirect3DTexture = Interface("IDirect3DTexture", IUnknown)
+IDirect3DTexture2 = Interface("IDirect3DTexture2", IUnknown)
+IDirect3DViewport = Interface("IDirect3DViewport", IUnknown)
+IDirect3DViewport2 = Interface("IDirect3DViewport2", IDirect3DViewport)
+IDirect3DViewport3 = Interface("IDirect3DViewport3", IDirect3DViewport2)
+IDirect3DVertexBuffer = Interface("IDirect3DVertexBuffer", IUnknown)
+IDirect3DVertexBuffer7 = Interface("IDirect3DVertexBuffer7", IUnknown)
+
+LPUNKNOWN = WrapPointer(IUnknown)
+
+LPDIRECT3D = WrapPointer(IDirect3D)
+LPDIRECT3DDEVICE = WrapPointer(IDirect3DDevice)
+LPDIRECT3DEXECUTEBUFFER = WrapPointer(IDirect3DExecuteBuffer)
+LPDIRECT3DLIGHT = WrapPointer(IDirect3DLight)
+LPDIRECT3DMATERIAL = WrapPointer(IDirect3DMaterial)
+LPDIRECT3DTEXTURE = WrapPointer(IDirect3DTexture)
+LPDIRECT3DVIEWPORT = WrapPointer(IDirect3DViewport)
+
+LPDIRECT3D2 = WrapPointer(IDirect3D2)
+LPDIRECT3DDEVICE2 = WrapPointer(IDirect3DDevice2)
+LPDIRECT3DMATERIAL2 = WrapPointer(IDirect3DMaterial2)
+LPDIRECT3DTEXTURE2 = WrapPointer(IDirect3DTexture2)
+LPDIRECT3DVIEWPORT2 = WrapPointer(IDirect3DViewport2)
+
+LPDIRECT3D3 = WrapPointer(IDirect3D3)
+LPDIRECT3DDEVICE3 = WrapPointer(IDirect3DDevice3)
+LPDIRECT3DMATERIAL3 = WrapPointer(IDirect3DMaterial3)
+LPDIRECT3DVIEWPORT3 = WrapPointer(IDirect3DViewport3)
+LPDIRECT3DVERTEXBUFFER = WrapPointer(IDirect3DVertexBuffer)
+
+LPDIRECT3D7 = WrapPointer(IDirect3D7)
+LPDIRECT3DDEVICE7 = WrapPointer(IDirect3DDevice7)
+LPDIRECT3DVERTEXBUFFER7 = WrapPointer(IDirect3DVertexBuffer7)
+
+IDirect3D.methods += [
+    Method(HRESULT, "Initialize", [(REFCLSID, "riid")]),
+    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
+    Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL), "lplpDirect3DMaterial"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT), "lplpD3DViewport"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "lpD3DDFS"), (LPD3DFINDDEVICERESULT, "lplpD3DDevice")]),
+]
+
+IDirect3D2.methods += [
+    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
+    Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL2), "lplpDirect3DMaterial2"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT2), "lplpD3DViewport2"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "lpD3DDFS"), (LPD3DFINDDEVICERESULT, "lpD3DFDR")]),
+    Method(HRESULT, "CreateDevice", [(REFCLSID, "rclsid"), (LPDIRECTDRAWSURFACE, "lpDDS"), Out(Pointer(LPDIRECT3DDEVICE2), "lplpD3DDevice2")]),
+]
+
+IDirect3D3.methods += [
+    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
+    Method(HRESULT, "CreateLight", [Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "CreateMaterial", [Out(Pointer(LPDIRECT3DMATERIAL3), "lplpDirect3DMaterial3"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "CreateViewport", [Out(Pointer(LPDIRECT3DVIEWPORT3), "lplpD3DViewport3"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "FindDevice", [(LPD3DFINDDEVICESEARCH, "lpD3DDFS"), Out(LPD3DFINDDEVICERESULT, "lpD3DFDR")]),
+    Method(HRESULT, "CreateDevice", [(REFCLSID, "rclsid"), (LPDIRECTDRAWSURFACE4, "lpDDS"), Out(Pointer(LPDIRECT3DDEVICE3), "lplpD3DDevice3"), (LPUNKNOWN, "lpUnk")]),
+    Method(HRESULT, "CreateVertexBuffer", [(LPD3DVERTEXBUFFERDESC, "lpD3DVertBufDesc"), Out(Pointer(LPDIRECT3DVERTEXBUFFER), "lplpD3DVertBuf"), (DWORD, "dwFlags"), (LPUNKNOWN, "lpUnk")]),
+    Method(HRESULT, "EnumZBufferFormats", [(REFCLSID, "riidDevice"), (LPD3DENUMPIXELFORMATSCALLBACK, "lpEnumCallback"), (LPVOID, "lpContext")]),
+    Method(HRESULT, "EvictManagedTextures", []),
+]
+
+IDirect3D7.methods += [
+    Method(HRESULT, "EnumDevices", [(LPD3DENUMDEVICESCALLBACK7, "lpEnumDevicesCallback"), (LPVOID, "lpUserArg")]),
+    Method(HRESULT, "CreateDevice", [(REFCLSID, "rclsid"), (LPDIRECTDRAWSURFACE7, "lpDDS"), Out(Pointer(LPDIRECT3DDEVICE7), "lplpD3DDevice")]),
+    Method(HRESULT, "CreateVertexBuffer", [(LPD3DVERTEXBUFFERDESC, "lpD3DVertBufDesc"), Out(Pointer(LPDIRECT3DVERTEXBUFFER7), "lplpD3DVertBuf"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "EnumZBufferFormats", [(REFCLSID, "riidDevice"), (LPD3DENUMPIXELFORMATSCALLBACK, "lpEnumCallback"), (LPVOID, "lpContext")]),
+    Method(HRESULT, "EvictManagedTextures", []),
+]
+
+IDirect3DDevice.methods += [
+    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D"), (LPGUID, "lpGUID"), (LPD3DDEVICEDESC, "lpD3DDVDesc")]),
+    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "lpD3DHWDevDesc"), Out(LPD3DDEVICEDESC, "lpD3DHELDevDesc")]),
+    Method(HRESULT, "SwapTextureHandles", [(LPDIRECT3DTEXTURE, "lpD3Dtex1"), (LPDIRECT3DTEXTURE, "lpD3DTex2")]),
+    Method(HRESULT, "CreateExecuteBuffer", [(LPD3DEXECUTEBUFFERDESC, "lpDesc"), Out(Pointer(LPDIRECT3DEXECUTEBUFFER), "lplpDirect3DExecuteBuffer"), (LPUNKNOWN, "pUnkOuter")]),
+    Method(HRESULT, "GetStats", [(LPD3DSTATS, "lpD3DStats")]),
+    Method(HRESULT, "Execute", [(LPDIRECT3DEXECUTEBUFFER, "lpDirect3DExecuteBuffer"), (LPDIRECT3DVIEWPORT, "lpDirect3DViewport"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT, "lpDirect3DViewport")]),
+    Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT, "lpDirect3DViewport")]),
+    Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT, "lpDirect3DViewport"), Out(Pointer(LPDIRECT3DVIEWPORT), "lplpDirect3DViewport"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "Pick", [(LPDIRECT3DEXECUTEBUFFER, "lpDirect3DExecuteBuffer"), (LPDIRECT3DVIEWPORT, "lpDirect3DViewport"), (DWORD, "dwFlags"), (LPD3DRECT, "lpRect")]),
+    Method(HRESULT, "GetPickRecords", [(LPDWORD, "lpCount"), (LPD3DPICKRECORD, "lpD3DPickRec")]),
+    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMTEXTUREFORMATSCALLBACK, "lpD3DEnumTextureProc"), (LPVOID, "lpArg")]),
+    Method(HRESULT, "CreateMatrix", [Out(LPD3DMATRIXHANDLE, "lpD3DMatHandle")]),
+    Method(HRESULT, "SetMatrix", [(D3DMATRIXHANDLE, "D3DMatHandle"), (Const(LPD3DMATRIX), "lpD3DMatrix")]),
+    Method(HRESULT, "GetMatrix", [(D3DMATRIXHANDLE, "D3DMatHandle"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "DeleteMatrix", [(D3DMATRIXHANDLE, "D3DMatHandle")]),
+    Method(HRESULT, "BeginScene", []),
+    Method(HRESULT, "EndScene", []),
+    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D), "lplpDirect3D")]),
+]
+
+IDirect3DDevice2.methods += [
+    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "lpD3DHWDevDesc"), Out(LPD3DDEVICEDESC, "lpD3DHELDevDesc")]),
+    Method(HRESULT, "SwapTextureHandles", [(LPDIRECT3DTEXTURE2, "lpD3DTex1"), (LPDIRECT3DTEXTURE2, "lpD3DTex2")]),
+    Method(HRESULT, "GetStats", [Out(LPD3DSTATS, "lpD3DStats")]),
+    Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2")]),
+    Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2")]),
+    Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2"), Out(Pointer(LPDIRECT3DVIEWPORT2), "lplpDirect3DViewport2"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMTEXTUREFORMATSCALLBACK, "lpD3DEnumTextureProc"), (LPVOID, "lpArg")]),
+    Method(HRESULT, "BeginScene", []),
+    Method(HRESULT, "EndScene", []),
+    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D2), "lplpDirect3D2")]),
+    Method(HRESULT, "SetCurrentViewport", [(LPDIRECT3DVIEWPORT2, "lpDirect3DViewport2")]),
+    Method(HRESULT, "GetCurrentViewport", [Out(Pointer(LPDIRECT3DVIEWPORT2), "lplpDirect3DViewport2")]),
+    Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE, "lpNewRenderTarget"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpRenderTarget")]),
+    Method(HRESULT, "Begin", [(D3DPRIMITIVETYPE, "d3dpt"), (D3DVERTEXTYPE, "dwVertexTypeDesc"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "BeginIndexed", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (D3DVERTEXTYPE, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "Vertex", [(LPVOID, "lpVertexType")]),
+    Method(HRESULT, "Index", [(WORD, "wVertexIndex")]),
+    Method(HRESULT, "End", [(DWORD, "dwFlags")]),
+    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), Out(LPDWORD, "lpdwRenderState")]),
+    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), (DWORD, "dwRenderState")]),
+    Method(HRESULT, "GetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), Out(LPDWORD, "lpdwLightState")]),
+    Method(HRESULT, "SetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), (DWORD, "dwLightState")]),
+    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (D3DVERTEXTYPE, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (D3DVERTEXTYPE, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (LPWORD, "dwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
+    Method(HRESULT, "GetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
+]
+
+IDirect3DDevice3.methods += [
+    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC, "lpD3DHWDevDesc"), Out(LPD3DDEVICEDESC, "lpD3DHELDevDesc")]),
+    Method(HRESULT, "GetStats", [Out(LPD3DSTATS, "lpD3DStats")]),
+    Method(HRESULT, "AddViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3")]),
+    Method(HRESULT, "DeleteViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3")]),
+    Method(HRESULT, "NextViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3"), Out(Pointer(LPDIRECT3DVIEWPORT3), "lplpDirect3DViewport3"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMPIXELFORMATSCALLBACK, "lpD3DEnumPixelProc"), (LPVOID, "lpArg")]),
+    Method(HRESULT, "BeginScene", []),
+    Method(HRESULT, "EndScene", []),
+    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D3), "lplpDirect3D3")]),
+    Method(HRESULT, "SetCurrentViewport", [(LPDIRECT3DVIEWPORT3, "lpDirect3DViewport3")]),
+    Method(HRESULT, "GetCurrentViewport", [Out(Pointer(LPDIRECT3DVIEWPORT3), "lplpDirect3DViewport3")]),
+    Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE4, "lpNewRenderTarget"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpRenderTarget")]),
+    Method(HRESULT, "Begin", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexTypeDesc"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "BeginIndexed", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "Vertex", [(LPVOID, "lpVertexType")]),
+    Method(HRESULT, "Index", [(WORD, "wVertexIndex")]),
+    Method(HRESULT, "End", [(DWORD, "dwFlags")]),
+    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), Out(LPDWORD, "lpdwRenderState")]),
+    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), (DWORD, "dwRenderState")]),
+    Method(HRESULT, "GetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), Out(LPDWORD, "lpdwLightState")]),
+    Method(HRESULT, "SetLightState", [(D3DLIGHTSTATETYPE, "dwLightStateType"), (DWORD, "dwLightState")]),
+    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (LPWORD, "dwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
+    Method(HRESULT, "GetClipStatus", [Out(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
+    Method(HRESULT, "DrawPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (LPWORD, "lpIndex"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER, "lpD3DVertexBuf"), (DWORD, "dwStartVertex"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER, "lpD3DVertexBuf"), (LPWORD, "lpwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "ComputeSphereVisibility", [(LPD3DVECTOR, "lpCenters"), (LPD3DVALUE, "lpRadii"), (DWORD, "dwNumSpheres"), (DWORD, "dwFlags"), (LPDWORD, "lpdwReturnValues")]),
+    Method(HRESULT, "GetTexture", [(DWORD, "dwStage"), Out(Pointer(LPDIRECT3DTEXTURE2), "lplpTexture2")]),
+    Method(HRESULT, "SetTexture", [(DWORD, "dwStage"), (LPDIRECT3DTEXTURE2, "lpTexture2")]),
+    Method(HRESULT, "GetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), Out(LPDWORD, "lpdwState")]),
+    Method(HRESULT, "SetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), (DWORD, "dwState")]),
+    Method(HRESULT, "ValidateDevice", [(LPDWORD, "lpdwPasses")]),
+]
+
+IDirect3DDevice7.methods += [
+    Method(HRESULT, "GetCaps", [Out(LPD3DDEVICEDESC7, "lpD3DHELDevDesc")]),
+    Method(HRESULT, "EnumTextureFormats", [(LPD3DENUMPIXELFORMATSCALLBACK, "lpD3DEnumPixelProc"), (LPVOID, "lpArg")]),
+    Method(HRESULT, "BeginScene", []),
+    Method(HRESULT, "EndScene", []),
+    Method(HRESULT, "GetDirect3D", [Out(Pointer(LPDIRECT3D7), "lplpDirect3D3")]),
+    Method(HRESULT, "SetRenderTarget", [(LPDIRECTDRAWSURFACE7, "lpNewRenderTarget"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "GetRenderTarget", [Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpRenderTarget")]),
+    Method(HRESULT, "Clear", [(DWORD, "dwCount"), (LPD3DRECT, "lpRects"), (DWORD, "dwFlags"), (D3DCOLOR, "dwColor"), (D3DVALUE, "dvZ"), (DWORD, "dwStencil")]),
+    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), Out(LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "SetViewport", [(LPD3DVIEWPORT7, "lpData")]),
+    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "dtstTransformStateType"), (LPD3DMATRIX, "lpD3DMatrix")]),
+    Method(HRESULT, "GetViewport", [Out(LPD3DVIEWPORT7, "lpData")]),
+    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL7, "lpMat")]),
+    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL7, "lpMat")]),
+    Method(HRESULT, "SetLight", [(DWORD, "dwLightIndex"), (LPD3DLIGHT7, "lpLight")]),
+    Method(HRESULT, "GetLight", [(DWORD, "dwLightIndex"), (LPD3DLIGHT7, "lpLight")]),
+    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), (DWORD, "dwRenderState")]),
+    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "dwRenderStateType"), Out(LPDWORD, "lpdwRenderState")]),
+    Method(HRESULT, "BeginStateBlock", []),
+    Method(HRESULT, "EndStateBlock", [Out(LPDWORD, "lpdwBlockHandle")]),
+    Method(HRESULT, "PreLoad", [(LPDIRECTDRAWSURFACE7, "lpddsTexture")]),
+    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "d3dvtVertexType"), (LPVOID, "lpvVertices"), (DWORD, "dwVertexCount"), (LPWORD, "dwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "SetClipStatus", [(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
+    Method(HRESULT, "GetClipStatus", [Out(LPD3DCLIPSTATUS, "lpD3DClipStatus")]),
+    Method(HRESULT, "DrawPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitiveStrided", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (DWORD, "dwVertexType"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpD3DDrawPrimStrideData"), (DWORD, "dwVertexCount"), (LPWORD, "lpIndex"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER7, "lpD3DVertexBuf"), (DWORD, "dwStartVertex"), (DWORD, "dwNumVertices"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "DrawIndexedPrimitiveVB", [(D3DPRIMITIVETYPE, "d3dptPrimitiveType"), (LPDIRECT3DVERTEXBUFFER7, "lpD3DVertexBuf"), (DWORD, "dwStartVertex"), (DWORD, "dwNumVertices"), (LPWORD, "lpwIndices"), (DWORD, "dwIndexCount"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "ComputeSphereVisibility", [(LPD3DVECTOR, "lpCenters"), (LPD3DVALUE, "lpRadii"), (DWORD, "dwNumSpheres"), (DWORD, "dwFlags"), (LPDWORD, "lpdwReturnValues")]),
+    Method(HRESULT, "GetTexture", [(DWORD, "dwStage"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lpTexture")]),
+    Method(HRESULT, "SetTexture", [(DWORD, "dwStage"), (LPDIRECTDRAWSURFACE7, "lpTexture")]),
+    Method(HRESULT, "GetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), Out(LPDWORD, "lpdwState")]),
+    Method(HRESULT, "SetTextureStageState", [(DWORD, "dwStage"), (D3DTEXTURESTAGESTATETYPE, "d3dTexStageStateType"), (DWORD, "dwState")]),
+    Method(HRESULT, "ValidateDevice", [Out(LPDWORD, "lpdwPasses")]),
+    Method(HRESULT, "ApplyStateBlock", [(DWORD, "dwBlockHandle")]),
+    Method(HRESULT, "CaptureStateBlock", [(DWORD, "dwBlockHandle")]),
+    Method(HRESULT, "DeleteStateBlock", [(DWORD, "dwBlockHandle")]),
+    Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "d3dsbType"), Out(LPDWORD, "lpdwBlockHandle")]),
+    Method(HRESULT, "Load", [(LPDIRECTDRAWSURFACE7, "lpDestTex"), (LPPOINT, "lpDestPoint"), (LPDIRECTDRAWSURFACE7, "lpSrcTex"), (LPRECT, "lprcSrcRect"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "LightEnable", [(DWORD, "dwLightIndex"), (BOOL, "bEnable")]),
+    Method(HRESULT, "GetLightEnable", [(DWORD, "dwLightIndex"), Out(Pointer(BOOL), "pbEnable")]),
+    Method(HRESULT, "SetClipPlane", [(DWORD, "dwIndex"), (Pointer(D3DVALUE), "pPlaneEquation")]),
+    Method(HRESULT, "GetClipPlane", [(DWORD, "dwIndex"), Out(Pointer(D3DVALUE), "pPlaneEquation")]),
+    Method(HRESULT, "GetInfo", [(DWORD, "dwDevInfoID"), Out(LPVOID, "pDevInfoStruct"), (DWORD, "dwSize")]),
+]
+
+IDirect3DExecuteBuffer.methods += [
+    Method(HRESULT, "Initialize", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), (LPD3DEXECUTEBUFFERDESC, "lpDesc")]),
+    Method(HRESULT, "Lock", [(LPD3DEXECUTEBUFFERDESC, "lpDesc")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "SetExecuteData", [(LPD3DEXECUTEDATA, "lpData")]),
+    Method(HRESULT, "GetExecuteData", [Out(LPD3DEXECUTEDATA, "lpData")]),
+    Method(HRESULT, "Validate", [(LPDWORD, "lpdwOffset"), (LPD3DVALIDATECALLBACK, "lpFunc"), (LPVOID, "lpUserArg"), (DWORD, "dwReserved")]),
+    Method(HRESULT, "Optimize", [(DWORD, "dwDummy")]),
+]
+
+IDirect3DLight.methods += [
+    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D")]),
+    Method(HRESULT, "SetLight", [(LPD3DLIGHT, "lpLight")]),
+    Method(HRESULT, "GetLight", [Out(LPD3DLIGHT, "lpLight")]),
+]
+
+IDirect3DMaterial.methods += [
+    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D")]),
+    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "lpMat")]),
+    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "lpMat")]),
+    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), Out(LPD3DMATERIALHANDLE, "lpHandle")]),
+    Method(HRESULT, "Reserve", []),
+    Method(HRESULT, "Unreserve", []),
+]
+
+IDirect3DMaterial2.methods += [
+    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "lpMat")]),
+    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "lpMat")]),
+    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE2, "lpDirect3DDevice2"), Out(LPD3DMATERIALHANDLE, "lpHandle")]),
+]
+
+IDirect3DMaterial3.methods += [
+    Method(HRESULT, "SetMaterial", [(LPD3DMATERIAL, "lpMat")]),
+    Method(HRESULT, "GetMaterial", [Out(LPD3DMATERIAL, "lpMat")]),
+    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE3, "lpDirect3DDevice3"), Out(LPD3DMATERIALHANDLE, "lpHandle")]),
+]
+
+IDirect3DTexture.methods += [
+    Method(HRESULT, "Initialize", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), (LPDIRECTDRAWSURFACE, "lpDDSurface")]),
+    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE, "lpDirect3DDevice"), Out(LPD3DTEXTUREHANDLE, "lpHandle")]),
+    Method(HRESULT, "PaletteChanged", [(DWORD, "dwStart"), (DWORD, "dwCount")]),
+    Method(HRESULT, "Load", [(LPDIRECT3DTEXTURE, "lpD3DTexture")]),
+    Method(HRESULT, "Unload", []),
+]
+
+IDirect3DTexture2.methods += [
+    Method(HRESULT, "GetHandle", [(LPDIRECT3DDEVICE2, "lpDirect3DDevice2"), Out(LPD3DTEXTUREHANDLE, "lpHandle")]),
+    Method(HRESULT, "PaletteChanged", [(DWORD, "dwStart"), (DWORD, "dwCount")]),
+    Method(HRESULT, "Load", [(LPDIRECT3DTEXTURE2, "lpD3DTexture2")]),
+]
+
+IDirect3DViewport.methods += [
+    Method(HRESULT, "Initialize", [(LPDIRECT3D, "lpDirect3D")]),
+    Method(HRESULT, "GetViewport", [Out(LPD3DVIEWPORT, "lpData")]),
+    Method(HRESULT, "SetViewport", [(LPD3DVIEWPORT, "lpData")]),
+    Method(HRESULT, "TransformVertices", [(DWORD, "dwVertexCount"), (LPD3DTRANSFORMDATA, "lpData"), (DWORD, "dwFlags"), (LPDWORD, "lpOffScreen")]),
+    Method(HRESULT, "LightElements", [(DWORD, "dwElementCount"), (LPD3DLIGHTDATA, "lpData")]),
+    Method(HRESULT, "SetBackground", [(D3DMATERIALHANDLE, "hMat")]),
+    Method(HRESULT, "GetBackground", [Out(LPD3DMATERIALHANDLE, "lphMat"), Out(LPBOOL, "lpValid")]),
+    Method(HRESULT, "SetBackgroundDepth", [(LPDIRECTDRAWSURFACE, "lpDDSurface")]),
+    Method(HRESULT, "GetBackgroundDepth", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), Out(LPBOOL, "lpValid")]),
+    Method(HRESULT, "Clear", [(DWORD, "dwCount"), (LPD3DRECT, "lpRects"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "AddLight", [(LPDIRECT3DLIGHT, "lpDirect3DLight")]),
+    Method(HRESULT, "DeleteLight", [(LPDIRECT3DLIGHT, "lpDirect3DLight")]),
+    Method(HRESULT, "NextLight", [(LPDIRECT3DLIGHT, "lpDirect3DLight"), Out(Pointer(LPDIRECT3DLIGHT), "lplpDirect3DLight"), (DWORD, "dwFlags")]),
+]
+
+IDirect3DViewport2.methods += [
+   Method(HRESULT, "GetViewport2", [Out(LPD3DVIEWPORT2, "lpData")]),
+    Method(HRESULT, "SetViewport2", [(LPD3DVIEWPORT2, "lpData")]),
+]
+
+IDirect3DViewport3.methods += [
+    Method(HRESULT, "SetBackgroundDepth2", [(LPDIRECTDRAWSURFACE4, "lpDDS")]),
+    Method(HRESULT, "GetBackgroundDepth2", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDS"), (LPBOOL, "lpValid")]),
+    Method(HRESULT, "Clear2", [(DWORD, "dwCount"), (LPD3DRECT, "lpRects"), (DWORD, "dwFlags"), (D3DCOLOR, "dwColor"), (D3DVALUE, "dvZ"), (DWORD, "dwStencil")]),
+]
+
+IDirect3DVertexBuffer.methods += [
+    Method(HRESULT, "Lock", [(DWORD, "dwFlags"), Out(Pointer(LPVOID), "lplpData"), (LPDWORD, "lpdwSize")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "ProcessVertices", [(DWORD, "dwVertexOp"), (DWORD, "dwDestIndex"), (DWORD, "dwCount"), (LPDIRECT3DVERTEXBUFFER, "lpSrcBuffer"), (DWORD, "dwSrcIndex"), (LPDIRECT3DDEVICE3, "lpD3DDevice"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "GetVertexBufferDesc", [Out(LPD3DVERTEXBUFFERDESC, "lpD3DVertexBufferDesc")]),
+    Method(HRESULT, "Optimize", [(LPDIRECT3DDEVICE3, "lpD3DDevice"), (DWORD, "dwFlags")]),
+]
+
+IDirect3DVertexBuffer7.methods += [
+    Method(HRESULT, "Lock", [(DWORD, "dwFlags"), Out(Pointer(LPVOID), "lplpData"), (LPDWORD, "lpdwSize")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "ProcessVertices", [(DWORD, "dwVertexOp"), (DWORD, "dwDestIndex"), (DWORD, "dwCount"), (LPDIRECT3DVERTEXBUFFER7, "lpSrcBuffer"), (DWORD, "dwSrcIndex"), (LPDIRECT3DDEVICE7, "lpD3DDevice"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "GetVertexBufferDesc", [Out(LPD3DVERTEXBUFFERDESC, "lpD3DVertexBufferDesc")]),
+    Method(HRESULT, "Optimize", [(LPDIRECT3DDEVICE7, "lpD3DDevice"), (DWORD, "dwFlags")]),
+    Method(HRESULT, "ProcessVerticesStrided", [(DWORD, "dwVertexOp"), (DWORD, "dwDestIndex"), (DWORD, "dwCount"), (LPD3DDRAWPRIMITIVESTRIDEDDATA, "lpStrideData"), (DWORD, "dwVertexTypeDesc"), (LPDIRECT3DDEVICE7, "lpD3DDevice"), (DWORD, "dwFlags")]),
+]
+
+interfaces = [
+    IDirectDraw,
+    IDirectDraw2,
+    IDirectDraw4,
+    IDirectDraw7,
+    IDirect3D,
+    IDirect3D2,
+    IDirect3D3,
+    IDirect3D7,
+]
+
+ddraw.add_interfaces(interfaces)
+
diff --git a/specs/d3d10.py b/specs/d3d10.py
new file mode 100644 (file)
index 0000000..8af7ee5
--- /dev/null
@@ -0,0 +1,903 @@
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+from dxgi import *
+
+D3D10_BLEND = Enum("D3D10_BLEND", [
+    "D3D10_BLEND_ZERO",
+    "D3D10_BLEND_ONE",
+    "D3D10_BLEND_SRC_COLOR",
+    "D3D10_BLEND_INV_SRC_COLOR",
+    "D3D10_BLEND_SRC_ALPHA",
+    "D3D10_BLEND_INV_SRC_ALPHA",
+    "D3D10_BLEND_DEST_ALPHA",
+    "D3D10_BLEND_INV_DEST_ALPHA",
+    "D3D10_BLEND_DEST_COLOR",
+    "D3D10_BLEND_INV_DEST_COLOR",
+    "D3D10_BLEND_SRC_ALPHA_SAT",
+    "D3D10_BLEND_BLEND_FACTOR",
+    "D3D10_BLEND_INV_BLEND_FACTOR",
+    "D3D10_BLEND_SRC1_COLOR",
+    "D3D10_BLEND_INV_SRC1_COLOR",
+    "D3D10_BLEND_SRC1_ALPHA",
+    "D3D10_BLEND_INV_SRC1_ALPHA",
+])
+
+D3D10_BLEND_OP = Enum("D3D10_BLEND_OP", [
+    "D3D10_BLEND_OP_ADD",
+    "D3D10_BLEND_OP_SUBTRACT",
+    "D3D10_BLEND_OP_REV_SUBTRACT",
+    "D3D10_BLEND_OP_MIN",
+    "D3D10_BLEND_OP_MAX",
+])
+
+D3D10_BLEND_DESC = Struct("D3D10_BLEND_DESC", [
+    (BOOL, "AlphaToCoverageEnable"),
+    (Array(BOOL, "8"), "BlendEnable"),
+    (D3D10_BLEND, "SrcBlend"),
+    (D3D10_BLEND, "DestBlend"),
+    (D3D10_BLEND_OP, "BlendOp"),
+    (D3D10_BLEND, "SrcBlendAlpha"),
+    (D3D10_BLEND, "DestBlendAlpha"),
+    (D3D10_BLEND_OP, "BlendOpAlpha"),
+    (Array(UINT8, "8"), "RenderTargetWriteMask"),
+])
+
+D3D10_DEPTH_WRITE_MASK = Enum("D3D10_DEPTH_WRITE_MASK", [
+    "D3D10_DEPTH_WRITE_MASK_ZERO",
+    "D3D10_DEPTH_WRITE_MASK_ALL",
+])
+
+D3D10_COMPARISON_FUNC = Enum("D3D10_COMPARISON_FUNC", [
+    "D3D10_COMPARISON_NEVER",
+    "D3D10_COMPARISON_LESS",
+    "D3D10_COMPARISON_EQUAL",
+    "D3D10_COMPARISON_LESS_EQUAL",
+    "D3D10_COMPARISON_GREATER",
+    "D3D10_COMPARISON_NOT_EQUAL",
+    "D3D10_COMPARISON_GREATER_EQUAL",
+    "D3D10_COMPARISON_ALWAYS",
+])
+
+D3D10_STENCIL_OP = Enum("D3D10_STENCIL_OP", [
+    "D3D10_STENCIL_OP_KEEP",
+    "D3D10_STENCIL_OP_ZERO",
+    "D3D10_STENCIL_OP_REPLACE",
+    "D3D10_STENCIL_OP_INCR_SAT",
+    "D3D10_STENCIL_OP_DECR_SAT",
+    "D3D10_STENCIL_OP_INVERT",
+    "D3D10_STENCIL_OP_INCR",
+    "D3D10_STENCIL_OP_DECR",
+])
+
+D3D10_DEPTH_STENCILOP_DESC = Struct("D3D10_DEPTH_STENCILOP_DESC", [
+    (D3D10_STENCIL_OP, "StencilFailOp"),
+    (D3D10_STENCIL_OP, "StencilDepthFailOp"),
+    (D3D10_STENCIL_OP, "StencilPassOp"),
+    (D3D10_COMPARISON_FUNC, "StencilFunc"),
+])
+
+D3D10_DEPTH_STENCIL_DESC = Struct("D3D10_DEPTH_STENCIL_DESC", [
+    (BOOL, "DepthEnable"),
+    (D3D10_DEPTH_WRITE_MASK, "DepthWriteMask"),
+    (D3D10_COMPARISON_FUNC, "DepthFunc"),
+    (BOOL, "StencilEnable"),
+    (UINT8, "StencilReadMask"),
+    (UINT8, "StencilWriteMask"),
+    (D3D10_DEPTH_STENCILOP_DESC, "FrontFace"),
+    (D3D10_DEPTH_STENCILOP_DESC, "BackFace"),
+])
+
+D3D10_FILL_MODE = Enum("D3D10_FILL_MODE", [
+    "D3D10_FILL_WIREFRAME",
+    "D3D10_FILL_SOLID",
+])
+
+D3D10_CULL_MODE = Enum("D3D10_CULL_MODE", [
+    "D3D10_CULL_NONE",
+    "D3D10_CULL_FRONT",
+    "D3D10_CULL_BACK",
+])
+
+D3D10_RASTERIZER_DESC = Struct("D3D10_RASTERIZER_DESC", [
+    (D3D10_FILL_MODE, "FillMode"),
+    (D3D10_CULL_MODE, "CullMode"),
+    (BOOL, "FrontCounterClockwise"),
+    (INT, "DepthBias"),
+    (FLOAT, "DepthBiasClamp"),
+    (FLOAT, "SlopeScaledDepthBias"),
+    (BOOL, "DepthClipEnable"),
+    (BOOL, "ScissorEnable"),
+    (BOOL, "MultisampleEnable"),
+    (BOOL, "AntialiasedLineEnable"),
+])
+
+D3D10_FILTER = Enum("D3D10_FILTER", [
+    "D3D10_FILTER_MIN_MAG_MIP_POINT",
+    "D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR",
+    "D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT",
+    "D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR",
+    "D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT",
+    "D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR",
+    "D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT",
+    "D3D10_FILTER_MIN_MAG_MIP_LINEAR",
+    "D3D10_FILTER_ANISOTROPIC",
+    "D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT",
+    "D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR",
+    "D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT",
+    "D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR",
+    "D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT",
+    "D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR",
+    "D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT",
+    "D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR",
+    "D3D10_FILTER_COMPARISON_ANISOTROPIC",
+    "D3D10_FILTER_TEXT_1BIT",
+])
+
+D3D10_TEXTURE_ADDRESS_MODE = Enum("D3D10_TEXTURE_ADDRESS_MODE", [
+    "D3D10_TEXTURE_ADDRESS_WRAP",
+    "D3D10_TEXTURE_ADDRESS_MIRROR",
+    "D3D10_TEXTURE_ADDRESS_CLAMP",
+    "D3D10_TEXTURE_ADDRESS_BORDER",
+    "D3D10_TEXTURE_ADDRESS_MIRROR_ONCE",
+])
+
+D3D10_SAMPLER_DESC = Struct("D3D10_SAMPLER_DESC", [
+    (D3D10_FILTER, "Filter"),
+    (D3D10_TEXTURE_ADDRESS_MODE, "AddressU"),
+    (D3D10_TEXTURE_ADDRESS_MODE, "AddressV"),
+    (D3D10_TEXTURE_ADDRESS_MODE, "AddressW"),
+    (FLOAT, "MipLODBias"),
+    (UINT, "MaxAnisotropy"),
+    (D3D10_COMPARISON_FUNC, "ComparisonFunc"),
+    (Array(FLOAT, "4"), "BorderColor"),
+    (FLOAT, "MinLOD"),
+    (FLOAT, "MaxLOD"),
+])
+
+D3D10_COUNTER = Enum("D3D10_COUNTER", [
+    "D3D10_COUNTER_GPU_IDLE",
+    "D3D10_COUNTER_VERTEX_PROCESSING",
+    "D3D10_COUNTER_GEOMETRY_PROCESSING",
+    "D3D10_COUNTER_PIXEL_PROCESSING",
+    "D3D10_COUNTER_OTHER_GPU_PROCESSING",
+    "D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION",
+    "D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION",
+    "D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION",
+    "D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION",
+    "D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION",
+    "D3D10_COUNTER_VS_MEMORY_LIMITED",
+    "D3D10_COUNTER_VS_COMPUTATION_LIMITED",
+    "D3D10_COUNTER_GS_MEMORY_LIMITED",
+    "D3D10_COUNTER_GS_COMPUTATION_LIMITED",
+    "D3D10_COUNTER_PS_MEMORY_LIMITED",
+    "D3D10_COUNTER_PS_COMPUTATION_LIMITED",
+    "D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE",
+    "D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE",
+    "D3D10_COUNTER_DEVICE_DEPENDENT_0",
+])
+
+D3D10_COUNTER_DESC = Struct("D3D10_COUNTER_DESC", [
+    (D3D10_COUNTER, "Counter"),
+    (UINT, "MiscFlags"),
+])
+
+D3D10_COUNTER_TYPE = Enum("D3D10_COUNTER_TYPE", [
+    "D3D10_COUNTER_TYPE_FLOAT32",
+    "D3D10_COUNTER_TYPE_UINT16",
+    "D3D10_COUNTER_TYPE_UINT32",
+    "D3D10_COUNTER_TYPE_UINT64",
+])
+
+D3D10_COUNTER_INFO = Struct("D3D10_COUNTER_INFO", [
+    (D3D10_COUNTER, "LastDeviceDependentCounter"),
+    (UINT, "NumSimultaneousCounters"),
+    (UINT8, "NumDetectableParallelUnits"),
+])
+
+D3D10_RESOURCE_DIMENSION = Enum("D3D10_RESOURCE_DIMENSION", [
+    "D3D10_RESOURCE_DIMENSION_UNKNOWN",
+    "D3D10_RESOURCE_DIMENSION_BUFFER",
+    "D3D10_RESOURCE_DIMENSION_TEXTURE1D",
+    "D3D10_RESOURCE_DIMENSION_TEXTURE2D",
+    "D3D10_RESOURCE_DIMENSION_TEXTURE3D",
+])
+
+D3D10_USAGE = Enum("D3D10_USAGE", [
+    "D3D10_USAGE_DEFAULT",
+    "D3D10_USAGE_IMMUTABLE",
+    "D3D10_USAGE_DYNAMIC",
+    "D3D10_USAGE_STAGING",
+])
+
+D3D10_BIND_FLAG = Enum("D3D10_BIND_FLAG", [
+    "D3D10_BIND_VERTEX_BUFFER",
+    "D3D10_BIND_INDEX_BUFFER",
+    "D3D10_BIND_CONSTANT_BUFFER",
+    "D3D10_BIND_SHADER_RESOURCE",
+    "D3D10_BIND_STREAM_OUTPUT",
+    "D3D10_BIND_RENDER_TARGET",
+    "D3D10_BIND_DEPTH_STENCIL",
+])
+
+D3D10_BUFFER_DESC = Struct("D3D10_BUFFER_DESC", [
+    (UINT, "ByteWidth"),
+    (D3D10_USAGE, "Usage"),
+    (UINT, "BindFlags"),
+    (UINT, "CPUAccessFlags"),
+    (UINT, "MiscFlags"),
+])
+
+D3D10_MAP = Enum("D3D10_MAP", [
+    "D3D10_MAP_READ",
+    "D3D10_MAP_WRITE",
+    "D3D10_MAP_READ_WRITE",
+    "D3D10_MAP_WRITE_DISCARD",
+    "D3D10_MAP_WRITE_NO_OVERWRITE",
+])
+
+D3D10_TEXTURE1D_DESC = Struct("D3D10_TEXTURE1D_DESC", [
+    (UINT, "Width"),
+    (UINT, "MipLevels"),
+    (UINT, "ArraySize"),
+    (DXGI_FORMAT, "Format"),
+    (D3D10_USAGE, "Usage"),
+    (UINT, "BindFlags"),
+    (UINT, "CPUAccessFlags"),
+    (UINT, "MiscFlags"),
+])
+
+D3D10_TEXTURE2D_DESC = Struct("D3D10_TEXTURE2D_DESC", [
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "MipLevels"),
+    (UINT, "ArraySize"),
+    (DXGI_FORMAT, "Format"),
+    (DXGI_SAMPLE_DESC, "SampleDesc"),
+    (D3D10_USAGE, "Usage"),
+    (UINT, "BindFlags"),
+    (UINT, "CPUAccessFlags"),
+    (UINT, "MiscFlags"),
+])
+
+D3D10_TEXTURE3D_DESC = Struct("D3D10_TEXTURE3D_DESC", [
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "Depth"),
+    (UINT, "MipLevels"),
+    (DXGI_FORMAT, "Format"),
+    (D3D10_USAGE, "Usage"),
+    (UINT, "BindFlags"),
+    (UINT, "CPUAccessFlags"),
+    (UINT, "MiscFlags"),
+])
+
+D3D10_DSV_DIMENSION = Enum("D3D10_DSV_DIMENSION", [
+    "D3D10_DSV_DIMENSION_UNKNOWN",
+    "D3D10_DSV_DIMENSION_TEXTURE1D",
+    "D3D10_DSV_DIMENSION_TEXTURE1DARRAY",
+    "D3D10_DSV_DIMENSION_TEXTURE2D",
+    "D3D10_DSV_DIMENSION_TEXTURE2DARRAY",
+    "D3D10_DSV_DIMENSION_TEXTURE2DMS",
+    "D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY",
+])
+
+D3D10_TEX1D_DSV = Struct("D3D10_TEX1D_DSV", [
+    (UINT, "MipSlice"),
+])
+
+D3D10_TEX1D_ARRAY_DSV = Struct("D3D10_TEX1D_ARRAY_DSV", [
+    (UINT, "MipSlice"),
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX2D_DSV = Struct("D3D10_TEX2D_DSV", [
+    (UINT, "MipSlice"),
+])
+
+D3D10_TEX2D_ARRAY_DSV = Struct("D3D10_TEX2D_ARRAY_DSV", [
+    (UINT, "MipSlice"),
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX2DMS_DSV = Struct("D3D10_TEX2DMS_DSV", [
+    (UINT, "UnusedField_NothingToDefine"),
+])
+
+D3D10_TEX2DMS_ARRAY_DSV = Struct("D3D10_TEX2DMS_ARRAY_DSV", [
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_DEPTH_STENCIL_VIEW_DESC = Struct("D3D10_DEPTH_STENCIL_VIEW_DESC", [
+    (DXGI_FORMAT, "Format"),
+    (D3D10_DSV_DIMENSION, "ViewDimension"),
+    (D3D10_TEX1D_DSV, "Texture1D"),
+    (D3D10_TEX1D_ARRAY_DSV, "Texture1DArray"),
+    (D3D10_TEX2D_DSV, "Texture2D"),
+    (D3D10_TEX2D_ARRAY_DSV, "Texture2DArray"),
+    (D3D10_TEX2DMS_DSV, "Texture2DMS"),
+    (D3D10_TEX2DMS_ARRAY_DSV, "Texture2DMSArray"),
+])
+
+D3D10_RTV_DIMENSION = Enum("D3D10_RTV_DIMENSION", [
+    "D3D10_RTV_DIMENSION_UNKNOWN",
+    "D3D10_RTV_DIMENSION_BUFFER",
+    "D3D10_RTV_DIMENSION_TEXTURE1D",
+    "D3D10_RTV_DIMENSION_TEXTURE1DARRAY",
+    "D3D10_RTV_DIMENSION_TEXTURE2D",
+    "D3D10_RTV_DIMENSION_TEXTURE2DARRAY",
+    "D3D10_RTV_DIMENSION_TEXTURE2DMS",
+    "D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY",
+    "D3D10_RTV_DIMENSION_TEXTURE3D",
+])
+
+D3D10_BUFFER_RTV = Struct("D3D10_BUFFER_RTV", [
+    (UINT, "ElementOffset"),
+    (UINT, "ElementWidth"),
+])
+
+D3D10_TEX1D_RTV = Struct("D3D10_TEX1D_RTV", [
+    (UINT, "MipSlice"),
+])
+
+D3D10_TEX1D_ARRAY_RTV = Struct("D3D10_TEX1D_ARRAY_RTV", [
+    (UINT, "MipSlice"),
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX2D_RTV = Struct("D3D10_TEX2D_RTV", [
+    (UINT, "MipSlice"),
+])
+
+D3D10_TEX2D_ARRAY_RTV = Struct("D3D10_TEX2D_ARRAY_RTV", [
+    (UINT, "MipSlice"),
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX2DMS_RTV = Struct("D3D10_TEX2DMS_RTV", [
+    (UINT, "UnusedField_NothingToDefine"),
+])
+
+D3D10_TEX2DMS_ARRAY_RTV = Struct("D3D10_TEX2DMS_ARRAY_RTV", [
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX3D_RTV = Struct("D3D10_TEX3D_RTV", [
+    (UINT, "MipSlice"),
+    (UINT, "FirstWSlice"),
+    (UINT, "WSize"),
+])
+
+D3D10_RENDER_TARGET_VIEW_DESC = Struct("D3D10_RENDER_TARGET_VIEW_DESC", [
+    (DXGI_FORMAT, "Format"),
+    (D3D10_RTV_DIMENSION, "ViewDimension"),
+    (D3D10_BUFFER_RTV, "Buffer"),
+    (D3D10_TEX1D_RTV, "Texture1D"),
+    (D3D10_TEX1D_ARRAY_RTV, "Texture1DArray"),
+    (D3D10_TEX2D_RTV, "Texture2D"),
+    (D3D10_TEX2D_ARRAY_RTV, "Texture2DArray"),
+    (D3D10_TEX2DMS_RTV, "Texture2DMS"),
+    (D3D10_TEX2DMS_ARRAY_RTV, "Texture2DMSArray"),
+    (D3D10_TEX3D_RTV, "Texture3D"),
+])
+
+D3D10_SRV_DIMENSION = Enum("D3D10_SRV_DIMENSION", [
+    "D3D10_SRV_DIMENSION_UNKNOWN",
+       "D3D10_SRV_DIMENSION_BUFFER",
+       "D3D10_SRV_DIMENSION_TEXTURE1D",
+       "D3D10_SRV_DIMENSION_TEXTURE1DARRAY",
+       "D3D10_SRV_DIMENSION_TEXTURE2D",
+       "D3D10_SRV_DIMENSION_TEXTURE2DARRAY",
+       "D3D10_SRV_DIMENSION_TEXTURE2DMS",
+       "D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY",
+       "D3D10_SRV_DIMENSION_TEXTURE3D",
+       "D3D10_SRV_DIMENSION_TEXTURECUBE",
+])
+
+D3D10_BUFFER_SRV = Struct("D3D10_BUFFER_SRV", [
+    (UINT, "ElementOffset"),
+    (UINT, "ElementWidth"),
+])
+
+D3D10_TEX1D_SRV = Struct("D3D10_TEX1D_SRV", [
+    (UINT, "MostDetailedMip"),
+    (UINT, "MipLevels"),
+])
+
+D3D10_TEX1D_ARRAY_SRV = Struct("D3D10_TEX1D_ARRAY_SRV", [
+    (UINT, "MostDetailedMip"),
+    (UINT, "MipLevels"),
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX2D_SRV = Struct("D3D10_TEX2D_SRV", [
+    (UINT, "MostDetailedMip"),
+    (UINT, "MipLevels"),
+])
+
+D3D10_TEX2D_ARRAY_SRV = Struct("D3D10_TEX2D_ARRAY_SRV", [
+    (UINT, "MostDetailedMip"),
+    (UINT, "MipLevels"),
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX2DMS_SRV = Struct("D3D10_TEX2DMS_SRV", [
+    (UINT, "UnusedField_NothingToDefine"),
+])
+
+D3D10_TEX2DMS_ARRAY_SRV = Struct("D3D10_TEX2DMS_ARRAY_SRV", [
+    (UINT, "FirstArraySlice"),
+    (UINT, "ArraySize"),
+])
+
+D3D10_TEX3D_SRV = Struct("D3D10_TEX3D_SRV", [
+    (UINT, "MostDetailedMip"),
+    (UINT, "MipLevels"),
+])
+
+D3D10_TEXCUBE_SRV = Struct("D3D10_TEXCUBE_SRV", [
+    (UINT, "MostDetailedMip"),
+    (UINT, "MipLevels"),
+])
+
+D3D10_SHADER_RESOURCE_VIEW_DESC = Struct("D3D10_SHADER_RESOURCE_VIEW_DESC", [
+    (DXGI_FORMAT, "Format"),
+    (D3D10_SRV_DIMENSION, "ViewDimension"),
+    (D3D10_BUFFER_SRV, "Buffer"),
+    (D3D10_TEX1D_SRV, "Texture1D"),
+    (D3D10_TEX1D_ARRAY_SRV, "Texture1DArray"),
+    (D3D10_TEX2D_SRV, "Texture2D"),
+    (D3D10_TEX2D_ARRAY_SRV, "Texture2DArray"),
+    (D3D10_TEX2DMS_SRV, "Texture2DMS"),
+    (D3D10_TEX2DMS_ARRAY_SRV, "Texture2DMSArray"),
+    (D3D10_TEX3D_SRV, "Texture3D"),
+    (D3D10_TEXCUBE_SRV, "TextureCube"),
+])
+
+D3D10_BOX = Struct("D3D10_BOX", [
+    (UINT, "left"),
+    (UINT, "top"),
+    (UINT, "front"),
+    (UINT, "right"),
+    (UINT, "bottom"),
+    (UINT, "back"),
+])
+
+D3D10_SUBRESOURCE_DATA = Struct("D3D10_SUBRESOURCE_DATA", [
+    (OpaquePointer(Const(Void)), "pSysMem"),
+    (UINT, "SysMemPitch"),
+    (UINT, "SysMemSlicePitch"),
+])
+
+D3D10_SO_DECLARATION_ENTRY = Struct("D3D10_SO_DECLARATION_ENTRY", [
+    (LPCSTR, "SemanticName"),
+    (UINT, "SemanticIndex"),
+    (BYTE, "StartComponent"),
+    (BYTE, "ComponentCount"),
+    (BYTE, "OutputSlot"),
+])
+
+D3D10_INPUT_CLASSIFICATION = Enum("D3D10_INPUT_CLASSIFICATION", [
+    "D3D10_INPUT_PER_VERTEX_DATA",
+    "D3D10_INPUT_PER_INSTANCE_DATA",
+])
+
+D3D10_INPUT_ELEMENT_DESC = Struct("D3D10_INPUT_ELEMENT_DESC", [
+    (LPCSTR, "SemanticName"),
+    (UINT, "SemanticIndex"),
+    (DXGI_FORMAT, "Format"),
+    (UINT, "InputSlot"),
+    (UINT, "AlignedByteOffset"),
+    (D3D10_INPUT_CLASSIFICATION, "InputSlotClass"),
+    (UINT, "InstanceDataStepRate"),
+])
+
+D3D10_QUERY = Enum("D3D10_QUERY", [
+    "D3D10_QUERY_EVENT",
+    "D3D10_QUERY_OCCLUSION",
+    "D3D10_QUERY_TIMESTAMP",
+    "D3D10_QUERY_TIMESTAMP_DISJOINT",
+    "D3D10_QUERY_PIPELINE_STATISTICS",
+    "D3D10_QUERY_OCCLUSION_PREDICATE",
+    "D3D10_QUERY_SO_STATISTICS",
+    "D3D10_QUERY_SO_OVERFLOW_PREDICATE",
+])
+
+D3D10_QUERY_DESC = Struct("D3D10_QUERY_DESC", [
+    (D3D10_QUERY, "Query"),
+    (UINT, "MiscFlags"),
+])
+
+D3D10_PRIMITIVE_TOPOLOGY = Enum("D3D10_PRIMITIVE_TOPOLOGY", [
+       "D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED",
+       "D3D10_PRIMITIVE_TOPOLOGY_POINTLIST",
+       "D3D10_PRIMITIVE_TOPOLOGY_LINELIST",
+       "D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP",
+       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST",
+       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP",
+       "D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ",
+       "D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ",
+       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ",
+       "D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ",
+])
+
+D3D10_PRIMITIVE = Enum("D3D10_PRIMITIVE", [
+       "D3D10_PRIMITIVE_UNDEFINED",
+       "D3D10_PRIMITIVE_POINT",
+       "D3D10_PRIMITIVE_LINE",
+       "D3D10_PRIMITIVE_TRIANGLE",
+       "D3D10_PRIMITIVE_LINE_ADJ",
+       "D3D10_PRIMITIVE_TRIANGLE_ADJ",
+])
+
+D3D10_RECT = Alias("D3D10_RECT", RECT)
+D3D10_VIEWPORT = Struct("D3D10_VIEWPORT", [
+    (INT, "TopLeftX"),
+    (INT, "TopLeftY"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (FLOAT, "MinDepth"),
+    (FLOAT, "MaxDepth"),
+])
+
+D3D10_MAPPED_TEXTURE2D = Struct("D3D10_MAPPED_TEXTURE2D", [
+    (OpaquePointer(Void), "pData"),
+    (UINT, "RowPitch"),
+])
+
+D3D10_MAPPED_TEXTURE3D = Struct("D3D10_MAPPED_TEXTURE3D", [
+    (OpaquePointer(Void), "pData"),
+    (UINT, "RowPitch"),
+    (UINT, "DepthPitch"),
+])
+
+D3D10_CPU_ACCESS_FLAG = Enum("D3D10_CPU_ACCESS_FLAG", [
+    "D3D10_CPU_ACCESS_WRITE",
+    "D3D10_CPU_ACCESS_READ",
+])
+
+D3D10_RESOURCE_MISC_FLAG = Enum("D3D10_RESOURCE_MISC_FLAG", [
+    "D3D10_RESOURCE_MISC_GENERATE_MIPS",
+    "D3D10_RESOURCE_MISC_SHARED",
+    "D3D10_RESOURCE_MISC_TEXTURECUBE",
+    "D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX",
+    "D3D10_RESOURCE_MISC_GDI_COMPATIBLE",
+])
+
+D3D10_MAP_FLAG = Enum("D3D10_MAP_FLAG", [
+    "D3D10_MAP_FLAG_DO_NOT_WAIT",
+])
+
+D3D10_CLEAR_FLAG = Enum("D3D10_CLEAR_FLAG", [
+    "D3D10_CLEAR_DEPTH",
+    "D3D10_CLEAR_STENCIL",
+])
+
+D3D10_COLOR_WRITE_ENABLE = Enum("D3D10_COLOR_WRITE_ENABLE", [
+    "D3D10_COLOR_WRITE_ENABLE_RED",
+    "D3D10_COLOR_WRITE_ENABLE_GREEN",
+    "D3D10_COLOR_WRITE_ENABLE_BLUE",
+    "D3D10_COLOR_WRITE_ENABLE_ALPHA",
+    "D3D10_COLOR_WRITE_ENABLE_ALL",
+    "D3D10_COLOR_WRITE_ENABLE_RED",
+    "|",
+    "D3D10_COLOR_WRITE_ENABLE_GREEN",
+    "|",
+    "D3D10_COLOR_WRITE_ENABLE_BLUE",
+    "|",
+    "D3D10_COLOR_WRITE_ENABLE_ALPHA",
+    ")",
+])
+
+D3D10_TEXTURECUBE_FACE = Enum("D3D10_TEXTURECUBE_FACE", [
+    "D3D10_TEXTURECUBE_FACE_POSITIVE_X",
+    "D3D10_TEXTURECUBE_FACE_NEGATIVE_X",
+    "D3D10_TEXTURECUBE_FACE_POSITIVE_Y",
+    "D3D10_TEXTURECUBE_FACE_NEGATIVE_Y",
+    "D3D10_TEXTURECUBE_FACE_POSITIVE_Z",
+    "D3D10_TEXTURECUBE_FACE_NEGATIVE_Z",
+])
+
+D3D10_ASYNC_GETDATA_FLAG = Enum("D3D10_ASYNC_GETDATA_FLAG", [
+    "D3D10_ASYNC_GETDATA_DONOTFLUSH",
+])
+
+D3D10_FILTER_TYPE = Enum("D3D10_FILTER_TYPE", [
+    "D3D10_FILTER_TYPE_POINT",
+    "D3D10_FILTER_TYPE_LINEAR",
+])
+
+D3D10_QUERY_MISC_FLAG = Enum("D3D10_QUERY_MISC_FLAG", [
+    "D3D10_QUERY_MISC_PREDICATEHINT",
+])
+
+D3D10_QUERY_DATA_TIMESTAMP_DISJOINT = Struct("D3D10_QUERY_DATA_TIMESTAMP_DISJOINT", [
+    (UINT64, "Frequency"),
+    (BOOL, "Disjoint"),
+])
+
+D3D10_QUERY_DATA_PIPELINE_STATISTICS = Struct("D3D10_QUERY_DATA_PIPELINE_STATISTICS", [
+    (UINT64, "IAVertices"),
+    (UINT64, "IAPrimitives"),
+    (UINT64, "VSInvocations"),
+    (UINT64, "GSInvocations"),
+    (UINT64, "GSPrimitives"),
+    (UINT64, "CInvocations"),
+    (UINT64, "CPrimitives"),
+    (UINT64, "PSInvocations"),
+])
+
+D3D10_QUERY_DATA_SO_STATISTICS = Struct("D3D10_QUERY_DATA_SO_STATISTICS", [
+    (UINT64, "NumPrimitivesWritten"),
+    (UINT64, "PrimitivesStorageNeeded"),
+])
+
+D3D10_CREATE_DEVICE_FLAG = Enum("D3D10_CREATE_DEVICE_FLAG", [
+    "D3D10_CREATE_DEVICE_SINGLETHREADED",
+    "D3D10_CREATE_DEVICE_DEBUG",
+    "D3D10_CREATE_DEVICE_SWITCH_TO_REF",
+    "D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS",
+    "D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP",
+    "D3D10_CREATE_DEVICE_BGRA_SUPPORT",
+    "D3D10_CREATE_DEVICE_STRICT_VALIDATION",
+])
+
+ID3D10DeviceChild = Interface("ID3D10DeviceChild", IUnknown)
+ID3D10Resource = Interface("ID3D10Resource", ID3D10DeviceChild)
+ID3D10Buffer = Interface("ID3D10Buffer", ID3D10Resource)
+ID3D10Texture1D = Interface("ID3D10Texture1D", ID3D10Resource)
+ID3D10Texture2D = Interface("ID3D10Texture2D", ID3D10Resource)
+ID3D10Texture3D = Interface("ID3D10Texture3D", ID3D10Resource)
+ID3D10View = Interface("ID3D10View", ID3D10DeviceChild)
+ID3D10DepthStencilView = Interface("ID3D10DepthStencilView", ID3D10View)
+ID3D10RenderTargetView = Interface("ID3D10RenderTargetView", ID3D10View)
+ID3D10ShaderResourceView = Interface("ID3D10ShaderResourceView", ID3D10View)
+ID3D10BlendState = Interface("ID3D10BlendState", ID3D10DeviceChild)
+ID3D10DepthStencilState = Interface("ID3D10DepthStencilState", ID3D10DeviceChild)
+ID3D10GeometryShader = Interface("ID3D10GeometryShader", ID3D10DeviceChild)
+ID3D10InputLayout = Interface("ID3D10InputLayout", ID3D10DeviceChild)
+ID3D10PixelShader = Interface("ID3D10PixelShader", ID3D10DeviceChild)
+ID3D10RasterizerState = Interface("ID3D10RasterizerState", ID3D10DeviceChild)
+ID3D10SamplerState = Interface("ID3D10SamplerState", ID3D10DeviceChild)
+ID3D10VertexShader = Interface("ID3D10VertexShader", ID3D10DeviceChild)
+ID3D10Asynchronous = Interface("ID3D10Asynchronous", ID3D10DeviceChild)
+ID3D10Counter = Interface("ID3D10Counter", ID3D10Asynchronous)
+ID3D10Query = Interface("ID3D10Query", ID3D10Asynchronous)
+ID3D10Predicate = Interface("ID3D10Predicate", ID3D10Query)
+ID3D10Device = Interface("ID3D10Device", IUnknown)
+ID3D10Multithread = Interface("ID3D10Multithread", IUnknown)
+
+ID3D10DeviceChild.methods += [
+    Method(Void, "GetDevice", [Out(OpaquePointer(OpaquePointer(ID3D10Device)), "ppDevice")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(OpaquePointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "DataSize"), (OpaquePointer(Const(Void)), "pData")]),
+    Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "pData")]),
+]
+
+ID3D10Resource.methods += [
+    Method(Void, "GetType", [Out(OpaquePointer(D3D10_RESOURCE_DIMENSION), "rType")]),
+    Method(Void, "SetEvictionPriority", [(UINT, "EvictionPriority")]),
+    Method(UINT, "GetEvictionPriority", []),
+]
+
+ID3D10Buffer.methods += [
+    Method(HRESULT, "Map", [(D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(OpaquePointer(Void)), "ppData")]),
+    Method(Void, "Unmap", []),
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_BUFFER_DESC), "pDesc")]),
+]
+
+ID3D10Texture1D.methods += [
+    Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(OpaquePointer(Void)), "ppData")]),
+    Method(Void, "Unmap", [(UINT, "Subresource")]),
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_TEXTURE1D_DESC), "pDesc")]),
+]
+
+ID3D10Texture2D.methods += [
+    Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(D3D10_MAPPED_TEXTURE2D), "pMappedTex2D")]),
+    Method(Void, "Unmap", [(UINT, "Subresource")]),
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_TEXTURE2D_DESC), "pDesc")]),
+]
+
+ID3D10Texture3D.methods += [
+    Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (UINT, "MapFlags"), Out(OpaquePointer(D3D10_MAPPED_TEXTURE3D), "pMappedTex3D")]),
+    Method(Void, "Unmap", [(UINT, "Subresource")]),
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_TEXTURE3D_DESC), "pDesc")]),
+]
+
+ID3D10View.methods += [
+    Method(Void, "GetResource", [Out(OpaquePointer(OpaquePointer(ID3D10Resource)), "ppResource")]),
+]
+
+ID3D10DepthStencilView.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_DEPTH_STENCIL_VIEW_DESC), "pDesc")]),
+]
+
+ID3D10RenderTargetView.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_RENDER_TARGET_VIEW_DESC), "pDesc")]),
+]
+
+ID3D10ShaderResourceView.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_SHADER_RESOURCE_VIEW_DESC), "pDesc")]),
+]
+
+ID3D10BlendState.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_BLEND_DESC), "pDesc")]),
+]
+
+ID3D10DepthStencilState.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_DEPTH_STENCIL_DESC), "pDesc")]),
+]
+
+ID3D10GeometryShader.methods += [
+]
+
+ID3D10InputLayout.methods += [
+]
+
+ID3D10PixelShader.methods += [
+]
+
+ID3D10RasterizerState.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_RASTERIZER_DESC), "pDesc")]),
+]
+
+ID3D10SamplerState.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_SAMPLER_DESC), "pDesc")]),
+]
+
+ID3D10VertexShader.methods += [
+]
+
+ID3D10Asynchronous.methods += [
+    Method(Void, "Begin", []),
+    Method(Void, "End", []),
+    Method(HRESULT, "GetData", [Out(OpaquePointer(Void), "pData"), (UINT, "DataSize"), (UINT, "GetDataFlags")]),
+    Method(UINT, "GetDataSize", []),
+]
+
+ID3D10Counter.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_COUNTER_DESC), "pDesc")]),
+]
+
+ID3D10Query.methods += [
+    Method(Void, "GetDesc", [Out(OpaquePointer(D3D10_QUERY_DESC), "pDesc")]),
+]
+
+ID3D10Predicate.methods += [
+]
+
+ID3D10Device.methods += [
+    Method(Void, "VSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppConstantBuffers")]),
+    Method(Void, "PSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10ShaderResourceView)), "NumViews"), "ppShaderResourceViews")]),
+    Method(Void, "PSSetShader", [(OpaquePointer(ID3D10PixelShader), "pPixelShader")]),
+    Method(Void, "PSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (Array(Const(OpaquePointer(ID3D10SamplerState)), "NumSamplers"), "ppSamplers")]),
+    Method(Void, "VSSetShader", [(OpaquePointer(ID3D10VertexShader), "pVertexShader")]),
+    Method(Void, "DrawIndexed", [(UINT, "IndexCount"), (UINT, "StartIndexLocation"), (INT, "BaseVertexLocation")]),
+    Method(Void, "Draw", [(UINT, "VertexCount"), (UINT, "StartVertexLocation")]),
+    Method(Void, "PSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppConstantBuffers")]),
+    Method(Void, "IASetInputLayout", [(OpaquePointer(ID3D10InputLayout), "pInputLayout")]),
+    Method(Void, "IASetVertexBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppVertexBuffers"), (OpaquePointer(Const(UINT)), "pStrides"), (OpaquePointer(Const(UINT)), "pOffsets")]),
+    Method(Void, "IASetIndexBuffer", [(OpaquePointer(ID3D10Buffer), "pIndexBuffer"), (DXGI_FORMAT, "Format"), (UINT, "Offset")]),
+    Method(Void, "DrawIndexedInstanced", [(UINT, "IndexCountPerInstance"), (UINT, "InstanceCount"), (UINT, "StartIndexLocation"), (INT, "BaseVertexLocation"), (UINT, "StartInstanceLocation")]),
+    Method(Void, "DrawInstanced", [(UINT, "VertexCountPerInstance"), (UINT, "InstanceCount"), (UINT, "StartVertexLocation"), (UINT, "StartInstanceLocation")]),
+    Method(Void, "GSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppConstantBuffers")]),
+    Method(Void, "GSSetShader", [(OpaquePointer(ID3D10GeometryShader), "pShader")]),
+    Method(Void, "IASetPrimitiveTopology", [(D3D10_PRIMITIVE_TOPOLOGY, "Topology")]),
+    Method(Void, "VSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (OpaquePointer(Const(OpaquePointer(ID3D10ShaderResourceView))), "ppShaderResourceViews")]),
+    Method(Void, "VSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (OpaquePointer(Const(OpaquePointer(ID3D10SamplerState))), "ppSamplers")]),
+    Method(Void, "SetPredication", [(OpaquePointer(ID3D10Predicate), "pPredicate"), (BOOL, "PredicateValue")]),
+    Method(Void, "GSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (OpaquePointer(Const(OpaquePointer(ID3D10ShaderResourceView))), "ppShaderResourceViews")]),
+    Method(Void, "GSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (OpaquePointer(Const(OpaquePointer(ID3D10SamplerState))), "ppSamplers")]),
+    Method(Void, "OMSetRenderTargets", [(UINT, "NumViews"), (OpaquePointer(Const(OpaquePointer(ID3D10RenderTargetView))), "ppRenderTargetViews"), (OpaquePointer(ID3D10DepthStencilView), "pDepthStencilView")]),
+    Method(Void, "OMSetBlendState", [(OpaquePointer(ID3D10BlendState), "pBlendState"), (Array(Const(FLOAT), "4"), "BlendFactor"), (UINT, "SampleMask")]),
+    Method(Void, "OMSetDepthStencilState", [(OpaquePointer(ID3D10DepthStencilState), "pDepthStencilState"), (UINT, "StencilRef")]),
+    Method(Void, "SOSetTargets", [(UINT, "NumBuffers"), (OpaquePointer(Const(OpaquePointer(ID3D10Buffer))), "ppSOTargets"), (OpaquePointer(Const(UINT)), "pOffsets")]),
+    Method(Void, "DrawAuto", []),
+    Method(Void, "RSSetState", [(OpaquePointer(ID3D10RasterizerState), "pRasterizerState")]),
+    Method(Void, "RSSetViewports", [(UINT, "NumViewports"), (OpaquePointer(Const(D3D10_VIEWPORT)), "pViewports")]),
+    Method(Void, "RSSetScissorRects", [(UINT, "NumRects"), (OpaquePointer(Const(D3D10_RECT)), "pRects")]),
+    Method(Void, "CopySubresourceRegion", [(OpaquePointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (UINT, "DstX"), (UINT, "DstY"), (UINT, "DstZ"), (OpaquePointer(ID3D10Resource), "pSrcResource"), (UINT, "SrcSubresource"), (OpaquePointer(Const(D3D10_BOX)), "pSrcBox")]),
+    Method(Void, "CopyResource", [(OpaquePointer(ID3D10Resource), "pDstResource"), (OpaquePointer(ID3D10Resource), "pSrcResource")]),
+    Method(Void, "UpdateSubresource", [(OpaquePointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (OpaquePointer(Const(D3D10_BOX)), "pDstBox"), (OpaquePointer(Const(Void)), "pSrcData"), (UINT, "SrcRowPitch"), (UINT, "SrcDepthPitch")]),
+    Method(Void, "ClearRenderTargetView", [(OpaquePointer(ID3D10RenderTargetView), "pRenderTargetView"), (Array(Const(FLOAT), "4"), "ColorRGBA")]),
+    Method(Void, "ClearDepthStencilView", [(OpaquePointer(ID3D10DepthStencilView), "pDepthStencilView"), (UINT, "ClearFlags"), (FLOAT, "Depth"), (UINT8, "Stencil")]),
+    Method(Void, "GenerateMips", [(OpaquePointer(ID3D10ShaderResourceView), "pShaderResourceView")]),
+    Method(Void, "ResolveSubresource", [(OpaquePointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (OpaquePointer(ID3D10Resource), "pSrcResource"), (UINT, "SrcSubresource"), (DXGI_FORMAT, "Format")]),
+    Method(Void, "VSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppConstantBuffers")]),
+    Method(Void, "PSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppShaderResourceViews")]),
+    Method(Void, "PSGetShader", [Out(OpaquePointer(OpaquePointer(ID3D10PixelShader)), "ppPixelShader")]),
+    Method(Void, "PSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplers")]),
+    Method(Void, "VSGetShader", [Out(OpaquePointer(OpaquePointer(ID3D10VertexShader)), "ppVertexShader")]),
+    Method(Void, "PSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppConstantBuffers")]),
+    Method(Void, "IAGetInputLayout", [Out(OpaquePointer(OpaquePointer(ID3D10InputLayout)), "ppInputLayout")]),
+    Method(Void, "IAGetVertexBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppVertexBuffers"), Out(OpaquePointer(UINT), "pStrides"), Out(OpaquePointer(UINT), "pOffsets")]),
+    Method(Void, "IAGetIndexBuffer", [Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "pIndexBuffer"), Out(OpaquePointer(DXGI_FORMAT), "Format"), Out(OpaquePointer(UINT), "Offset")]),
+    Method(Void, "GSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppConstantBuffers")]),
+    Method(Void, "GSGetShader", [Out(OpaquePointer(OpaquePointer(ID3D10GeometryShader)), "ppGeometryShader")]),
+    Method(Void, "IAGetPrimitiveTopology", [Out(OpaquePointer(D3D10_PRIMITIVE_TOPOLOGY), "pTopology")]),
+    Method(Void, "VSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppShaderResourceViews")]),
+    Method(Void, "VSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplers")]),
+    Method(Void, "GetPredication", [Out(OpaquePointer(OpaquePointer(ID3D10Predicate)), "ppPredicate"), Out(OpaquePointer(BOOL), "pPredicateValue")]),
+    Method(Void, "GSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppShaderResourceViews")]),
+    Method(Void, "GSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplers")]),
+    Method(Void, "OMGetRenderTargets", [(UINT, "NumViews"), Out(OpaquePointer(OpaquePointer(ID3D10RenderTargetView)), "ppRenderTargetViews"), Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilView)), "ppDepthStencilView")]),
+    Method(Void, "OMGetBlendState", [Out(OpaquePointer(OpaquePointer(ID3D10BlendState)), "ppBlendState"), Out(Array(FLOAT, "4"), "BlendFactor"), Out(OpaquePointer(UINT), "pSampleMask")]),
+    Method(Void, "OMGetDepthStencilState", [Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilState)), "ppDepthStencilState"), Out(OpaquePointer(UINT), "pStencilRef")]),
+    Method(Void, "SOGetTargets", [(UINT, "NumBuffers"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppSOTargets"), Out(OpaquePointer(UINT), "pOffsets")]),
+    Method(Void, "RSGetState", [Out(OpaquePointer(OpaquePointer(ID3D10RasterizerState)), "ppRasterizerState")]),
+    Method(Void, "RSGetViewports", [Out(OpaquePointer(UINT), "NumViewports"), Out(OpaquePointer(D3D10_VIEWPORT), "pViewports")]),
+    Method(Void, "RSGetScissorRects", [Out(OpaquePointer(UINT), "NumRects"), Out(OpaquePointer(D3D10_RECT), "pRects")]),
+    Method(HRESULT, "GetDeviceRemovedReason", []),
+    Method(HRESULT, "SetExceptionMode", [(UINT, "RaiseFlags")]),
+    Method(UINT, "GetExceptionMode", []),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(OpaquePointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "DataSize"), (OpaquePointer(Const(Void)), "pData")]),
+    Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "pData")]),
+    Method(Void, "ClearState", []),
+    Method(Void, "Flush", []),
+    Method(HRESULT, "CreateBuffer", [(OpaquePointer(Const(D3D10_BUFFER_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Buffer)), "ppBuffer")]),
+    Method(HRESULT, "CreateTexture1D", [(OpaquePointer(Const(D3D10_TEXTURE1D_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Texture1D)), "ppTexture1D")]),
+    Method(HRESULT, "CreateTexture2D", [(OpaquePointer(Const(D3D10_TEXTURE2D_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Texture2D)), "ppTexture2D")]),
+    Method(HRESULT, "CreateTexture3D", [(OpaquePointer(Const(D3D10_TEXTURE3D_DESC)), "pDesc"), (OpaquePointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(OpaquePointer(OpaquePointer(ID3D10Texture3D)), "ppTexture3D")]),
+    Method(HRESULT, "CreateShaderResourceView", [(OpaquePointer(ID3D10Resource), "pResource"), (OpaquePointer(Const(D3D10_SHADER_RESOURCE_VIEW_DESC)), "pDesc"), Out(OpaquePointer(OpaquePointer(ID3D10ShaderResourceView)), "ppSRView")]),
+    Method(HRESULT, "CreateRenderTargetView", [(OpaquePointer(ID3D10Resource), "pResource"), (OpaquePointer(Const(D3D10_RENDER_TARGET_VIEW_DESC)), "pDesc"), Out(OpaquePointer(OpaquePointer(ID3D10RenderTargetView)), "ppRTView")]),
+    Method(HRESULT, "CreateDepthStencilView", [(OpaquePointer(ID3D10Resource), "pResource"), (OpaquePointer(Const(D3D10_DEPTH_STENCIL_VIEW_DESC)), "pDesc"), Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilView)), "ppDepthStencilView")]),
+    Method(HRESULT, "CreateInputLayout", [(OpaquePointer(Const(D3D10_INPUT_ELEMENT_DESC)), "pInputElementDescs"), (UINT, "NumElements"), (OpaquePointer(Const(Void)), "pShaderBytecodeWithInputSignature"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10InputLayout)), "ppInputLayout")]),
+    Method(HRESULT, "CreateVertexShader", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10VertexShader)), "ppVertexShader")]),
+    Method(HRESULT, "CreateGeometryShader", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10GeometryShader)), "ppGeometryShader")]),
+    Method(HRESULT, "CreateGeometryShaderWithStreamOutput", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), (OpaquePointer(Const(D3D10_SO_DECLARATION_ENTRY)), "pSODeclaration"), (UINT, "NumEntries"), (UINT, "OutputStreamStride"), Out(OpaquePointer(OpaquePointer(ID3D10GeometryShader)), "ppGeometryShader")]),
+    Method(HRESULT, "CreatePixelShader", [(OpaquePointer(Const(Void)), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(OpaquePointer(OpaquePointer(ID3D10PixelShader)), "ppPixelShader")]),
+    Method(HRESULT, "CreateBlendState", [(OpaquePointer(Const(D3D10_BLEND_DESC)), "pBlendStateDesc"), Out(OpaquePointer(OpaquePointer(ID3D10BlendState)), "ppBlendState")]),
+    Method(HRESULT, "CreateDepthStencilState", [(OpaquePointer(Const(D3D10_DEPTH_STENCIL_DESC)), "pDepthStencilDesc"), Out(OpaquePointer(OpaquePointer(ID3D10DepthStencilState)), "ppDepthStencilState")]),
+    Method(HRESULT, "CreateRasterizerState", [(OpaquePointer(Const(D3D10_RASTERIZER_DESC)), "pRasterizerDesc"), Out(OpaquePointer(OpaquePointer(ID3D10RasterizerState)), "ppRasterizerState")]),
+    Method(HRESULT, "CreateSamplerState", [(OpaquePointer(Const(D3D10_SAMPLER_DESC)), "pSamplerDesc"), Out(OpaquePointer(OpaquePointer(ID3D10SamplerState)), "ppSamplerState")]),
+    Method(HRESULT, "CreateQuery", [(OpaquePointer(Const(D3D10_QUERY_DESC)), "pQueryDesc"), Out(OpaquePointer(OpaquePointer(ID3D10Query)), "ppQuery")]),
+    Method(HRESULT, "CreatePredicate", [(OpaquePointer(Const(D3D10_QUERY_DESC)), "pPredicateDesc"), Out(OpaquePointer(OpaquePointer(ID3D10Predicate)), "ppPredicate")]),
+    Method(HRESULT, "CreateCounter", [(OpaquePointer(Const(D3D10_COUNTER_DESC)), "pCounterDesc"), Out(OpaquePointer(OpaquePointer(ID3D10Counter)), "ppCounter")]),
+    Method(HRESULT, "CheckFormatSupport", [(DXGI_FORMAT, "Format"), Out(OpaquePointer(UINT), "pFormatSupport")]),
+    Method(HRESULT, "CheckMultisampleQualityLevels", [(DXGI_FORMAT, "Format"), (UINT, "SampleCount"), Out(OpaquePointer(UINT), "pNumQualityLevels")]),
+    Method(Void, "CheckCounterInfo", [Out(OpaquePointer(D3D10_COUNTER_INFO), "pCounterInfo")]),
+    Method(HRESULT, "CheckCounter", [(OpaquePointer(Const(D3D10_COUNTER_DESC)), "pDesc"), Out(OpaquePointer(D3D10_COUNTER_TYPE), "pType"), Out(OpaquePointer(UINT), "pActiveCounters"), Out(LPSTR, "szName"), Out(OpaquePointer(UINT), "pNameLength"), Out(LPSTR, "szUnits"), Out(OpaquePointer(UINT), "pUnitsLength"), Out(LPSTR, "szDescription"), Out(OpaquePointer(UINT), "pDescriptionLength")]),
+    Method(UINT, "GetCreationFlags", []),
+    Method(HRESULT, "OpenSharedResource", [(HANDLE, "hResource"), (REFIID, "ReturnedInterface"), Out(OpaquePointer(OpaquePointer(Void)), "ppResource")]),
+    Method(Void, "SetTextFilterSize", [(UINT, "Width"), (UINT, "Height")]),
+    Method(Void, "GetTextFilterSize", [Out(OpaquePointer(UINT), "pWidth"), Out(OpaquePointer(UINT), "pHeight")]),
+]
+
+ID3D10Multithread.methods += [
+    Method(Void, "Enter", []),
+    Method(Void, "Leave", []),
+    Method(BOOL, "SetMultithreadProtected", [(BOOL, "bMTProtect")]),
+    Method(BOOL, "GetMultithreadProtected", []),
+]
+
diff --git a/specs/d3d10_1.py b/specs/d3d10_1.py
new file mode 100644 (file)
index 0000000..ebf2896
--- /dev/null
@@ -0,0 +1,77 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d10_1.h"""
+
+from winapi import *
+
+ID3D10Blob = Interface("ID3D10Blob", IUnknown)
+LPD3D10BLOB = Pointer(ID3D10Blob)
+
+ID3D10Blob.methods += [
+    Method(LPVOID, "GetBufferPointer", []),
+    Method(SIZE_T, "GetBufferSize", []),
+]
+
+D3D10_DRIVER_TYPE = Enum("D3D10_DRIVER_TYPE", [
+    "D3D10_DRIVER_TYPE_HARDWARE",
+    "D3D10_DRIVER_TYPE_REFERENCE",
+    "D3D10_DRIVER_TYPE_NULL",
+    "D3D10_DRIVER_TYPE_SOFTWARE",
+    "D3D10_DRIVER_TYPE_WARP",
+])
+
+D3D10_FEATURE_LEVEL1 = Enum("D3D10_FEATURE_LEVEL1", [
+    "D3D10_FEATURE_LEVEL_10_0",
+    "D3D10_FEATURE_LEVEL_10_1",
+       "D3D10_FEATURE_LEVEL_9_1",
+       "D3D10_FEATURE_LEVEL_9_2",
+       "D3D10_FEATURE_LEVEL_9_3",
+])
+
+# TODO
+IDXGIAdapter = Alias("IDXGIAdapter", Void)
+ID3D10Device1 = Alias("ID3D10Device1", Void)
+IDXGISwapChain = Alias("IDXGISwapChain", Void)
+DXGI_SWAP_CHAIN_DESC = Alias("DXGI_SWAP_CHAIN_DESC", Void)
+
+d3d10_1 = Dll("d3d10")
+d3d10_1.functions += [
+    StdFunction(HRESULT, "D3D10CreateDevice1", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (D3D10_FEATURE_LEVEL1, "HardwareLevel"), (UINT, "SDKVersion"), (OutPointer(Pointer(ID3D10Device1)), "ppDevice")]),
+    StdFunction(HRESULT, "D3D10CreateDeviceAndSwapChain1", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (D3D10_FEATURE_LEVEL1, "HardwareLevel"), (UINT, "SDKVersion"), (Pointer(DXGI_SWAP_CHAIN_DESC), "pSwapChainDesc"), (OutPointer(Pointer(IDXGISwapChain)), "ppSwapChain"), (OutPointer(Pointer(ID3D10Device1)), "ppDevice")]),
+    StdFunction(HRESULT, "D3D10CreateBlob", [(SIZE_T, "NumBytes"), (OutPointer(LPD3D10BLOB), "ppBuffer")]),
+]
+
+if __name__ == '__main__':
+    print '#include <windows.h>'
+    print '#include <tchar.h>'
+    print
+    print '#include "compat.h"'
+    print
+    print '#include <d3d10_1.h>'
+    print
+    print '#include "trace_writer.hpp"'
+    print
+    wrap()
diff --git a/specs/d3d10misc.py b/specs/d3d10misc.py
new file mode 100644 (file)
index 0000000..1e1580f
--- /dev/null
@@ -0,0 +1,54 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d10misc.h"""
+
+from winapi import *
+from d3d10 import *
+
+
+ID3D10Blob = Interface("ID3D10Blob", IUnknown)
+LPD3D10BLOB = Pointer(ID3D10Blob)
+
+ID3D10Blob.methods += [
+    Method(LPVOID, "GetBufferPointer", []),
+    Method(SIZE_T, "GetBufferSize", []),
+]
+
+D3D10_DRIVER_TYPE = Enum("D3D10_DRIVER_TYPE", [
+    "D3D10_DRIVER_TYPE_HARDWARE",
+    "D3D10_DRIVER_TYPE_REFERENCE",
+    "D3D10_DRIVER_TYPE_NULL",
+    "D3D10_DRIVER_TYPE_SOFTWARE",
+    "D3D10_DRIVER_TYPE_WARP",
+])
+
+
+d3d10 = API("d3d10")
+d3d10.add_functions([
+    StdFunction(HRESULT, "D3D10CreateDevice", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (UINT, "SDKVersion"), Out(Pointer(Pointer(ID3D10Device)), "ppDevice")]),
+    StdFunction(HRESULT, "D3D10CreateDeviceAndSwapChain", [(Pointer(IDXGIAdapter), "pAdapter"), (D3D10_DRIVER_TYPE, "DriverType"), (HMODULE, "Software"), (UINT, "Flags"), (UINT, "SDKVersion"), (Pointer(DXGI_SWAP_CHAIN_DESC), "pSwapChainDesc"), Out(Pointer(Pointer(IDXGISwapChain)), "ppSwapChain"), Out(Pointer(Pointer(ID3D10Device)), "ppDevice")]),
+    StdFunction(HRESULT, "D3D10CreateBlob", [(SIZE_T, "NumBytes"), Out(Pointer(LPD3D10BLOB), "ppBuffer")]),
+])
diff --git a/specs/d3d8.py b/specs/d3d8.py
new file mode 100644 (file)
index 0000000..0713696
--- /dev/null
@@ -0,0 +1,282 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d8.h"""
+
+from winapi import *
+from d3d8types import *
+from d3d8caps import *
+
+HRESULT = Enum("HRESULT", [
+    "D3D_OK",
+    "D3DERR_WRONGTEXTUREFORMAT",
+    "D3DERR_UNSUPPORTEDCOLOROPERATION",
+    "D3DERR_UNSUPPORTEDCOLORARG",
+    "D3DERR_UNSUPPORTEDALPHAOPERATION",
+    "D3DERR_UNSUPPORTEDALPHAARG",
+    "D3DERR_TOOMANYOPERATIONS",
+    "D3DERR_CONFLICTINGTEXTUREFILTER",
+    "D3DERR_UNSUPPORTEDFACTORVALUE",
+    "D3DERR_CONFLICTINGRENDERSTATE",
+    "D3DERR_UNSUPPORTEDTEXTUREFILTER",
+    "D3DERR_CONFLICTINGTEXTUREPALETTE",
+    "D3DERR_DRIVERINTERNALERROR",
+    "D3DERR_NOTFOUND",
+    "D3DERR_MOREDATA",
+    "D3DERR_DEVICELOST",
+    "D3DERR_DEVICENOTRESET",
+    "D3DERR_NOTAVAILABLE",
+    "D3DERR_OUTOFVIDEOMEMORY",
+    "D3DERR_INVALIDDEVICE",
+    "D3DERR_INVALIDCALL",
+    "D3DERR_DRIVERINVALIDCALL",
+])
+
+IDirect3D8 = Interface("IDirect3D8", IUnknown)
+IDirect3DDevice8 = Interface("IDirect3DDevice8", IUnknown)
+IDirect3DSwapChain8 = Interface("IDirect3DSwapChain8", IUnknown)
+IDirect3DResource8 = Interface("IDirect3DResource8", IUnknown)
+IDirect3DBaseTexture8 = Interface("IDirect3DBaseTexture8", IDirect3DResource8)
+IDirect3DTexture8 = Interface("IDirect3DTexture8", IDirect3DBaseTexture8)
+IDirect3DVolumeTexture8 = Interface("IDirect3DVolumeTexture8", IDirect3DBaseTexture8)
+IDirect3DCubeTexture8 = Interface("IDirect3DCubeTexture8", IDirect3DBaseTexture8)
+IDirect3DVertexBuffer8 = Interface("IDirect3DVertexBuffer8", IDirect3DResource8)
+IDirect3DIndexBuffer8 = Interface("IDirect3DIndexBuffer8", IDirect3DResource8)
+IDirect3DSurface8 = Interface("IDirect3DSurface8", IUnknown)
+IDirect3DVolume8 = Interface("IDirect3DVolume8", IUnknown)
+
+PDIRECT3D8 = WrapPointer(IDirect3D8)
+PDIRECT3DDEVICE8 = WrapPointer(IDirect3DDevice8)
+PDIRECT3DSWAPCHAIN8 = WrapPointer(IDirect3DSwapChain8)
+PDIRECT3DRESOURCE8 = WrapPointer(IDirect3DResource8)
+PDIRECT3DBASETEXTURE8 = WrapPointer(IDirect3DBaseTexture8)
+PDIRECT3DTEXTURE8 = WrapPointer(IDirect3DTexture8)
+PDIRECT3DVOLUMETEXTURE8 = WrapPointer(IDirect3DVolumeTexture8)
+PDIRECT3DCUBETEXTURE8 = WrapPointer(IDirect3DCubeTexture8)
+PDIRECT3DVERTEXBUFFER8 = WrapPointer(IDirect3DVertexBuffer8)
+PDIRECT3DINDEXBUFFER8 = WrapPointer(IDirect3DIndexBuffer8)
+PDIRECT3DSURFACE8 = WrapPointer(IDirect3DSurface8)
+PDIRECT3DVOLUME8 = WrapPointer(IDirect3DVolume8)
+
+IDirect3D8.methods += [
+    Method(HRESULT, "RegisterSoftwareDevice", [(OpaquePointer(Void), "pInitializeFunction")]),
+    Method(UINT, "GetAdapterCount", []),
+    Method(HRESULT, "GetAdapterIdentifier", [(UINT, "Adapter"), (DWORD, "Flags"), Out(Pointer(D3DADAPTER_IDENTIFIER8), "pIdentifier")]),
+    Method(UINT, "GetAdapterModeCount", [(UINT, "Adapter")]),
+    Method(HRESULT, "EnumAdapterModes", [(UINT, "Adapter"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "GetAdapterDisplayMode", [(UINT, "Adapter"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "CheckDeviceType", [(UINT, "Adapter"), (D3DDEVTYPE, "CheckType"), (D3DFORMAT, "DisplayFormat"), (D3DFORMAT, "BackBufferFormat"), (BOOL, "Windowed")]),
+    Method(HRESULT, "CheckDeviceFormat", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (DWORD, "Usage"), (D3DRESOURCETYPE, "RType"), (D3DFORMAT, "CheckFormat")]),
+    Method(HRESULT, "CheckDeviceMultiSampleType", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SurfaceFormat"), (BOOL, "Windowed"), (D3DMULTISAMPLE_TYPE, "MultiSampleType")]),
+    Method(HRESULT, "CheckDepthStencilMatch", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "RenderTargetFormat"), (D3DFORMAT, "DepthStencilFormat")]),
+    Method(HRESULT, "GetDeviceCaps", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), Out(Pointer(D3DCAPS8), "pCaps")]),
+    Method(HMONITOR, "GetAdapterMonitor", [(UINT, "Adapter")]),
+    Method(HRESULT, "CreateDevice", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (DWORD, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DDEVICE8), "ppReturnedDeviceInterface")]),
+]
+
+IDirect3DDevice8.methods += [
+    Method(HRESULT, "TestCooperativeLevel", []),
+    Method(UINT, "GetAvailableTextureMem", []),
+    Method(HRESULT, "ResourceManagerDiscardBytes", [(DWORD, "Bytes")]),
+    Method(HRESULT, "GetDirect3D", [Out(Pointer(PDIRECT3D8), "ppD3D8")]),
+    Method(HRESULT, "GetDeviceCaps", [Out(Pointer(D3DCAPS8), "pCaps")]),
+    Method(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")]),
+    Method(HRESULT, "SetCursorProperties", [(UINT, "XHotSpot"), (UINT, "YHotSpot"), (PDIRECT3DSURFACE8, "pCursorBitmap")]),
+    # XXX: There are different signatures of
+    # IDirect3DDevice8::SetCursorPosition depending on the DXSDK version
+    Method(Void, "SetCursorPosition", [(UINT, "XScreenSpace"), (UINT, "YScreenSpace"), (DWORD, "Flags")]),
+    Method(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (DWORD, "Flags")]),
+    Method(BOOL, "ShowCursor", [(BOOL, "bShow")]),
+    Method(HRESULT, "CreateAdditionalSwapChain", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DSWAPCHAIN8), "pSwapChain")]),
+    Method(HRESULT, "Reset", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]),
+    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]),
+    Method(HRESULT, "GetBackBuffer", [(UINT, "BackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE8), "ppBackBuffer")]),
+    Method(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]),
+    Method(Void, "SetGammaRamp", [(DWORD, "Flags"), (ConstPointer(D3DGAMMARAMP), "pRamp")]),
+    Method(Void, "GetGammaRamp", [Out(Pointer(D3DGAMMARAMP), "pRamp")]),
+    Method(HRESULT, "CreateTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DTEXTURE8), "ppTexture")]),
+    Method(HRESULT, "CreateVolumeTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Depth"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVOLUMETEXTURE8), "ppVolumeTexture")]),
+    Method(HRESULT, "CreateCubeTexture", [(UINT, "EdgeLength"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DCUBETEXTURE8), "ppCubeTexture")]),
+    Method(HRESULT, "CreateVertexBuffer", [(UINT, "Length"), (DWORD, "Usage"), (DWORD, "FVF"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppVertexBuffer")]),
+    Method(HRESULT, "CreateIndexBuffer", [(UINT, "Length"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexBuffer")]),
+    Method(HRESULT, "CreateRenderTarget", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]),
+    Method(HRESULT, "CreateDepthStencilSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]),
+    Method(HRESULT, "CreateImageSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]),
+    Method(HRESULT, "CopyRects", [(PDIRECT3DSURFACE8, "pSourceSurface"), (ConstPointer(RECT), "pSourceRectsArray"), (UINT, "cRects"), (PDIRECT3DSURFACE8, "pDestinationSurface"), (ConstPointer(POINT), "pDestPointsArray")]),
+    Method(HRESULT, "UpdateTexture", [(PDIRECT3DBASETEXTURE8, "pSourceTexture"), (PDIRECT3DBASETEXTURE8, "pDestinationTexture")]),
+    Method(HRESULT, "GetFrontBuffer", [(PDIRECT3DSURFACE8, "pDestSurface")]),
+    Method(HRESULT, "SetRenderTarget", [(PDIRECT3DSURFACE8, "pRenderTarget"), (PDIRECT3DSURFACE8, "pNewZStencil")]),
+    Method(HRESULT, "GetRenderTarget", [Out(Pointer(PDIRECT3DSURFACE8), "ppRenderTarget")]),
+    Method(HRESULT, "GetDepthStencilSurface", [Out(Pointer(PDIRECT3DSURFACE8), "ppZStencilSurface")]),
+    Method(HRESULT, "BeginScene", []),
+    Method(HRESULT, "EndScene", []),
+    Method(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (D3DCLEAR, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]),
+    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
+    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")]),
+    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
+    Method(HRESULT, "SetViewport", [(ConstPointer(D3DVIEWPORT8), "pViewport")]),
+    Method(HRESULT, "GetViewport", [Out(Pointer(D3DVIEWPORT8), "pViewport")]),
+    Method(HRESULT, "SetMaterial", [(ConstPointer(D3DMATERIAL8), "pMaterial")]),
+    Method(HRESULT, "GetMaterial", [Out(Pointer(D3DMATERIAL8), "pMaterial")]),
+    Method(HRESULT, "SetLight", [(DWORD, "Index"), (ConstPointer(D3DLIGHT8), "pLight")]),
+    Method(HRESULT, "GetLight", [(DWORD, "Index"), Out(Pointer(D3DLIGHT8), "pLight")]),
+    Method(HRESULT, "LightEnable", [(DWORD, "Index"), (BOOL, "Enable")]),
+    Method(HRESULT, "GetLightEnable", [(DWORD, "Index"), Out(Pointer(BOOL), "pEnable")]),
+    Method(HRESULT, "SetClipPlane", [(DWORD, "Index"), (ConstPointer(Float), "pPlane")]),
+    Method(HRESULT, "GetClipPlane", [(DWORD, "Index"), Out(Pointer(Float), "pPlane")]),
+    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "State"), (DWORD, "Value")]),
+    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "State"), Out(Pointer(DWORD), "pValue")]),
+    Method(HRESULT, "BeginStateBlock", []),
+    Method(HRESULT, "EndStateBlock", [Out(Pointer(DWORD), "pToken")]),
+    Method(HRESULT, "ApplyStateBlock", [(DWORD, "Token")]),
+    Method(HRESULT, "CaptureStateBlock", [(DWORD, "Token")]),
+    Method(HRESULT, "DeleteStateBlock", [(DWORD, "Token")]),
+    Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "Type"), Out(Pointer(DWORD), "pToken")]),
+    Method(HRESULT, "SetClipStatus", [(ConstPointer(D3DCLIPSTATUS8), "pClipStatus")]),
+    Method(HRESULT, "GetClipStatus", [Out(Pointer(D3DCLIPSTATUS8), "pClipStatus")]),
+    Method(HRESULT, "GetTexture", [(DWORD, "Stage"), Out(Pointer(PDIRECT3DBASETEXTURE8), "ppTexture")]),
+    Method(HRESULT, "SetTexture", [(DWORD, "Stage"), (PDIRECT3DBASETEXTURE8, "pTexture")]),
+    Method(HRESULT, "GetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]),
+    Method(HRESULT, "SetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), (DWORD, "Value")]),
+    Method(HRESULT, "ValidateDevice", [Out(Pointer(DWORD), "pNumPasses")]),
+    Method(HRESULT, "GetInfo", [(DWORD, "DevInfoID"), Out(OpaquePointer(Void), "pDevInfoStruct"), (DWORD, "DevInfoStructSize")]),
+    Method(HRESULT, "SetPaletteEntries", [(UINT, "PaletteNumber"), (ConstPointer(PALETTEENTRY), "pEntries")]),
+    Method(HRESULT, "GetPaletteEntries", [(UINT, "PaletteNumber"), Out(Pointer(PALETTEENTRY), "pEntries")]),
+    Method(HRESULT, "SetCurrentTexturePalette", [(UINT, "PaletteNumber")]),
+    Method(HRESULT, "GetCurrentTexturePalette", [Out(Pointer(UINT), "PaletteNumber")]),
+    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "StartVertex"), (UINT, "PrimitiveCount")]),
+    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "minIndex"), (UINT, "NumVertices"), (UINT, "startIndex"), (UINT, "primCount")]),
+    Method(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
+    Method(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertexIndices"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
+    Method(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER8, "pDestBuffer"), (DWORD, "Flags")]),
+    Method(HRESULT, "CreateVertexShader", [(ConstPointer(DWORD), "pDeclaration"), (ConstPointer(DWORD), "pFunction"), Out(Pointer(DWORD), "pHandle"), (DWORD, "Usage")]),
+    Method(HRESULT, "SetVertexShader", [(DWORD, "Handle")]),
+    Method(HRESULT, "GetVertexShader", [Out(Pointer(DWORD), "pHandle")]),
+    Method(HRESULT, "DeleteVertexShader", [(DWORD, "Handle")]),
+    Method(HRESULT, "SetVertexShaderConstant", [(DWORD, "Register"), (OpaquePointer(Const(Void)), "pConstantData"), (DWORD, "ConstantCount")]),
+    Method(HRESULT, "GetVertexShaderConstant", [(DWORD, "Register"), Out(OpaquePointer(Void), "pConstantData"), (DWORD, "ConstantCount")]),
+    Method(HRESULT, "GetVertexShaderDeclaration", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "GetVertexShaderFunction", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "SetStreamSource", [(UINT, "StreamNumber"), (PDIRECT3DVERTEXBUFFER8, "pStreamData"), (UINT, "Stride")]),
+    Method(HRESULT, "GetStreamSource", [(UINT, "StreamNumber"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppStreamData"), Out(Pointer(UINT), "pStride")]),
+    Method(HRESULT, "SetIndices", [(PDIRECT3DINDEXBUFFER8, "pIndexData"), (UINT, "BaseVertexIndex")]),
+    Method(HRESULT, "GetIndices", [Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexData"), Out(Pointer(UINT), "pBaseVertexIndex")]),
+    Method(HRESULT, "CreatePixelShader", [(ConstPointer(DWORD), "pFunction"), Out(Pointer(DWORD), "pHandle")]),
+    Method(HRESULT, "SetPixelShader", [(DWORD, "Handle")]),
+    Method(HRESULT, "GetPixelShader", [Out(Pointer(DWORD), "pHandle")]),
+    Method(HRESULT, "DeletePixelShader", [(DWORD, "Handle")]),
+    Method(HRESULT, "SetPixelShaderConstant", [(DWORD, "Register"), (OpaquePointer(Const(Void)), "pConstantData"), (DWORD, "ConstantCount")]),
+    Method(HRESULT, "GetPixelShaderConstant", [(DWORD, "Register"), Out(OpaquePointer(Void), "pConstantData"), (DWORD, "ConstantCount")]),
+    Method(HRESULT, "GetPixelShaderFunction", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "DrawRectPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DRECTPATCH_INFO), "pRectPatchInfo")]),
+    Method(HRESULT, "DrawTriPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DTRIPATCH_INFO), "pTriPatchInfo")]),
+    Method(HRESULT, "DeletePatch", [(UINT, "Handle")]),
+]
+
+IDirect3DSwapChain8.methods += [
+    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]),
+    Method(HRESULT, "GetBackBuffer", [(UINT, "BackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE8), "ppBackBuffer")]),
+]
+
+IDirect3DResource8.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
+    Method(DWORD, "SetPriority", [(DWORD, "PriorityNew")]),
+    Method(DWORD, "GetPriority", []),
+    Method(Void, "PreLoad", []),
+    Method(D3DRESOURCETYPE, "GetType", []),
+]
+
+IDirect3DBaseTexture8.methods += [
+    Method(DWORD, "SetLOD", [(DWORD, "LODNew")]),
+    Method(DWORD, "GetLOD", []),
+    Method(DWORD, "GetLevelCount", []),
+]
+
+IDirect3DTexture8.methods += [
+    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
+    Method(HRESULT, "GetSurfaceLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurfaceLevel")]),
+    Method(HRESULT, "LockRect", [(UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]),
+    Method(HRESULT, "UnlockRect", [(UINT, "Level")]),
+    Method(HRESULT, "AddDirtyRect", [(ConstPointer(RECT), "pDirtyRect")]),
+]
+
+IDirect3DVolumeTexture8.methods += [
+    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
+    Method(HRESULT, "GetVolumeLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DVOLUME8), "ppVolumeLevel")]),
+    Method(HRESULT, "LockBox", [(UINT, "Level"), Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (DWORD, "Flags")]),
+    Method(HRESULT, "UnlockBox", [(UINT, "Level")]),
+    Method(HRESULT, "AddDirtyBox", [(ConstPointer(D3DBOX), "pDirtyBox")]),
+]
+
+IDirect3DCubeTexture8.methods += [
+    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
+    Method(HRESULT, "GetCubeMapSurface", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE8), "ppCubeMapSurface")]),
+    Method(HRESULT, "LockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]),
+    Method(HRESULT, "UnlockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level")]),
+    Method(HRESULT, "AddDirtyRect", [(D3DCUBEMAP_FACES, "FaceType"), (ConstPointer(RECT), "pDirtyRect")]),
+]
+
+IDirect3DVertexBuffer8.methods += [
+    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(Pointer(BYTE)), "ppbData"), (DWORD, "Flags")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVERTEXBUFFER_DESC), "pDesc")]),
+]
+
+IDirect3DIndexBuffer8.methods += [
+    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(Pointer(BYTE)), "ppbData"), (DWORD, "Flags")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DINDEXBUFFER_DESC), "pDesc")]),
+]
+
+IDirect3DSurface8.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
+    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
+    Method(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]),
+    Method(HRESULT, "UnlockRect", []),
+]
+
+IDirect3DVolume8.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
+    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
+    Method(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (DWORD, "Flags")]),
+    Method(HRESULT, "UnlockBox", []),
+]
+
+d3d8 = API("d3d8")
+d3d8.add_functions([
+    StdFunction(PDIRECT3D8, "Direct3DCreate8", [(UINT, "SDKVersion")]),
+])
diff --git a/specs/d3d8caps.py b/specs/d3d8caps.py
new file mode 100644 (file)
index 0000000..87e7625
--- /dev/null
@@ -0,0 +1,335 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d8caps.h"""
+
+from winapi import *
+from d3d8types import *
+
+D3DCAPS = Flags(DWORD, [
+    "D3DCAPS_READ_SCANLINE",
+])
+
+D3DCAPS2 = Flags(DWORD, [
+    "D3DCAPS2_NO2DDURING3DSCENE",
+    "D3DCAPS2_FULLSCREENGAMMA",
+    "D3DCAPS2_CANRENDERWINDOWED",
+    "D3DCAPS2_CANCALIBRATEGAMMA",
+    "D3DCAPS2_RESERVED",
+    "D3DCAPS2_CANMANAGERESOURCE",
+    "D3DCAPS2_DYNAMICTEXTURES",
+])
+
+D3DCAPS3 = Flags(DWORD, [
+    "D3DCAPS3_RESERVED",
+    "D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD",
+])
+
+D3DPRESENT_INTERVAL = Flags(DWORD, [
+    "D3DPRESENT_INTERVAL_DEFAULT",
+    "D3DPRESENT_INTERVAL_ONE",
+    "D3DPRESENT_INTERVAL_TWO",
+    "D3DPRESENT_INTERVAL_THREE",
+    "D3DPRESENT_INTERVAL_FOUR",
+    "D3DPRESENT_INTERVAL_IMMEDIATE",
+])
+
+D3DCURSORCAPS = Flags(DWORD, [
+    "D3DCURSORCAPS_COLOR",
+    "D3DCURSORCAPS_LOWRES",
+])
+
+D3DDEVCAPS = Flags(DWORD, [
+    "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
+    "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
+    "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
+    "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
+    "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
+    "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
+    "D3DDEVCAPS_DRAWPRIMTLVERTEX",
+    "D3DDEVCAPS_CANRENDERAFTERFLIP",
+    "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
+    "D3DDEVCAPS_DRAWPRIMITIVES2",
+    "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
+    "D3DDEVCAPS_DRAWPRIMITIVES2EX",
+    "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
+    "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
+    "D3DDEVCAPS_HWRASTERIZATION",
+    "D3DDEVCAPS_PUREDEVICE",
+    "D3DDEVCAPS_QUINTICRTPATCHES",
+    "D3DDEVCAPS_RTPATCHES",
+    "D3DDEVCAPS_RTPATCHHANDLEZERO",
+    "D3DDEVCAPS_NPATCHES",
+])
+
+D3DPMISCCAPS = Flags(DWORD, [
+    "D3DPMISCCAPS_MASKZ",
+    "D3DPMISCCAPS_LINEPATTERNREP",
+    "D3DPMISCCAPS_CULLNONE",
+    "D3DPMISCCAPS_CULLCW",
+    "D3DPMISCCAPS_CULLCCW",
+    "D3DPMISCCAPS_COLORWRITEENABLE",
+    "D3DPMISCCAPS_CLIPPLANESCALEDPOINTS",
+    "D3DPMISCCAPS_CLIPTLVERTS",
+    "D3DPMISCCAPS_TSSARGTEMP",
+    "D3DPMISCCAPS_BLENDOP",
+    "D3DPMISCCAPS_NULLREFERENCE",
+])
+
+D3DLINECAPS = Flags(DWORD, [
+    "D3DLINECAPS_TEXTURE",
+    "D3DLINECAPS_ZTEST",
+    "D3DLINECAPS_BLEND",
+    "D3DLINECAPS_ALPHACMP",
+    "D3DLINECAPS_FOG",
+])
+
+D3DPRASTERCAPS = Flags(DWORD, [
+    "D3DPRASTERCAPS_DITHER",
+    "D3DPRASTERCAPS_PAT",
+    "D3DPRASTERCAPS_ZTEST",
+    "D3DPRASTERCAPS_FOGVERTEX",
+    "D3DPRASTERCAPS_FOGTABLE",
+    "D3DPRASTERCAPS_ANTIALIASEDGES",
+    "D3DPRASTERCAPS_MIPMAPLODBIAS",
+    "D3DPRASTERCAPS_ZBIAS",
+    "D3DPRASTERCAPS_ZBUFFERLESSHSR",
+    "D3DPRASTERCAPS_FOGRANGE",
+    "D3DPRASTERCAPS_ANISOTROPY",
+    "D3DPRASTERCAPS_WBUFFER",
+    "D3DPRASTERCAPS_WFOG",
+    "D3DPRASTERCAPS_ZFOG",
+    "D3DPRASTERCAPS_COLORPERSPECTIVE",
+    "D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE",
+])
+
+D3DPCMPCAPS = Flags(DWORD, [
+    "D3DPCMPCAPS_NEVER",
+    "D3DPCMPCAPS_LESS",
+    "D3DPCMPCAPS_EQUAL",
+    "D3DPCMPCAPS_LESSEQUAL",
+    "D3DPCMPCAPS_GREATER",
+    "D3DPCMPCAPS_NOTEQUAL",
+    "D3DPCMPCAPS_GREATEREQUAL",
+    "D3DPCMPCAPS_ALWAYS",
+])
+
+D3DPBLENDCAPS = Flags(DWORD, [
+    "D3DPBLENDCAPS_ZERO",
+    "D3DPBLENDCAPS_ONE",
+    "D3DPBLENDCAPS_SRCCOLOR",
+    "D3DPBLENDCAPS_INVSRCCOLOR",
+    "D3DPBLENDCAPS_SRCALPHA",
+    "D3DPBLENDCAPS_INVSRCALPHA",
+    "D3DPBLENDCAPS_DESTALPHA",
+    "D3DPBLENDCAPS_INVDESTALPHA",
+    "D3DPBLENDCAPS_DESTCOLOR",
+    "D3DPBLENDCAPS_INVDESTCOLOR",
+    "D3DPBLENDCAPS_SRCALPHASAT",
+    "D3DPBLENDCAPS_BOTHSRCALPHA",
+    "D3DPBLENDCAPS_BOTHINVSRCALPHA",
+])
+
+D3DPSHADECAPS = Flags(DWORD, [
+    "D3DPSHADECAPS_COLORGOURAUDRGB",
+    "D3DPSHADECAPS_SPECULARGOURAUDRGB",
+    "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
+    "D3DPSHADECAPS_FOGGOURAUD",
+])
+
+D3DPTEXTURECAPS = Flags(DWORD, [
+    "D3DPTEXTURECAPS_PERSPECTIVE",
+    "D3DPTEXTURECAPS_POW2",
+    "D3DPTEXTURECAPS_ALPHA",
+    "D3DPTEXTURECAPS_SQUAREONLY",
+    "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
+    "D3DPTEXTURECAPS_ALPHAPALETTE",
+    "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
+    "D3DPTEXTURECAPS_PROJECTED",
+    "D3DPTEXTURECAPS_CUBEMAP",
+    "D3DPTEXTURECAPS_VOLUMEMAP",
+    "D3DPTEXTURECAPS_MIPMAP",
+    "D3DPTEXTURECAPS_MIPVOLUMEMAP",
+    "D3DPTEXTURECAPS_MIPCUBEMAP",
+    "D3DPTEXTURECAPS_CUBEMAP_POW2",
+    "D3DPTEXTURECAPS_VOLUMEMAP_POW2",
+])
+
+D3DPTFILTERCAPS = Flags(DWORD, [
+    "D3DPTFILTERCAPS_MINFPOINT",
+    "D3DPTFILTERCAPS_MINFLINEAR",
+    "D3DPTFILTERCAPS_MINFANISOTROPIC",
+    "D3DPTFILTERCAPS_MIPFPOINT",
+    "D3DPTFILTERCAPS_MIPFLINEAR",
+    "D3DPTFILTERCAPS_MAGFPOINT",
+    "D3DPTFILTERCAPS_MAGFLINEAR",
+    "D3DPTFILTERCAPS_MAGFANISOTROPIC",
+    "D3DPTFILTERCAPS_MAGFAFLATCUBIC",
+    "D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC",
+])
+
+D3DPTADDRESSCAPS = Flags(DWORD, [
+    "D3DPTADDRESSCAPS_WRAP",
+    "D3DPTADDRESSCAPS_MIRROR",
+    "D3DPTADDRESSCAPS_CLAMP",
+    "D3DPTADDRESSCAPS_BORDER",
+    "D3DPTADDRESSCAPS_INDEPENDENTUV",
+    "D3DPTADDRESSCAPS_MIRRORONCE",
+])
+
+D3DSTENCILCAPS = Flags(DWORD, [
+    "D3DSTENCILCAPS_KEEP",
+    "D3DSTENCILCAPS_ZERO",
+    "D3DSTENCILCAPS_REPLACE",
+    "D3DSTENCILCAPS_INCRSAT",
+    "D3DSTENCILCAPS_DECRSAT",
+    "D3DSTENCILCAPS_INVERT",
+    "D3DSTENCILCAPS_INCR",
+    "D3DSTENCILCAPS_DECR",
+])
+
+D3DTEXOPCAPS = Flags(DWORD, [
+    "D3DTEXOPCAPS_DISABLE",
+    "D3DTEXOPCAPS_SELECTARG1",
+    "D3DTEXOPCAPS_SELECTARG2",
+    "D3DTEXOPCAPS_MODULATE",
+    "D3DTEXOPCAPS_MODULATE2X",
+    "D3DTEXOPCAPS_MODULATE4X",
+    "D3DTEXOPCAPS_ADD",
+    "D3DTEXOPCAPS_ADDSIGNED",
+    "D3DTEXOPCAPS_ADDSIGNED2X",
+    "D3DTEXOPCAPS_SUBTRACT",
+    "D3DTEXOPCAPS_ADDSMOOTH",
+    "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
+    "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
+    "D3DTEXOPCAPS_BLENDFACTORALPHA",
+    "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
+    "D3DTEXOPCAPS_BLENDCURRENTALPHA",
+    "D3DTEXOPCAPS_PREMODULATE",
+    "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
+    "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
+    "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
+    "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
+    "D3DTEXOPCAPS_BUMPENVMAP",
+    "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
+    "D3DTEXOPCAPS_DOTPRODUCT3",
+    "D3DTEXOPCAPS_MULTIPLYADD",
+    "D3DTEXOPCAPS_LERP",
+])
+
+D3DFVFCAPS = Flags(DWORD, [
+    "D3DFVFCAPS_TEXCOORDCOUNTMASK",
+    "D3DFVFCAPS_DONOTSTRIPELEMENTS",
+    "D3DFVFCAPS_PSIZE",
+])
+
+D3DVTXPCAPS = Flags(DWORD, [
+    "D3DVTXPCAPS_TEXGEN",
+    "D3DVTXPCAPS_MATERIALSOURCE7",
+    "D3DVTXPCAPS_DIRECTIONALLIGHTS",
+    "D3DVTXPCAPS_POSITIONALLIGHTS",
+    "D3DVTXPCAPS_LOCALVIEWER",
+    "D3DVTXPCAPS_TWEENING",
+    "D3DVTXPCAPS_NO_VSDT_UBYTE4",
+])
+
+#D3DPS_VERSION = Enum("DWORD", [
+#    "D3DPS_VERSION(0,0)",
+#    "D3DPS_VERSION(1,0)",
+#    "D3DPS_VERSION(1,1)",
+#    "D3DPS_VERSION(1,2)",
+#    "D3DPS_VERSION(1,3)",
+#    "D3DPS_VERSION(1,4)",
+#    "D3DPS_VERSION(2,0)",
+#    "D3DPS_VERSION(3,0)",
+#])
+D3DPS_VERSION = DWORD
+
+#D3DVS_VERSION = Enum("DWORD", [
+#    "D3DVS_VERSION(0,0)",
+#    "D3DVS_VERSION(1,0)",
+#    "D3DVS_VERSION(1,1)",
+#    "D3DVS_VERSION(2,0)",
+#    "D3DVS_VERSION(3,0)",
+#])
+D3DVS_VERSION = DWORD
+
+
+D3DCAPS8 = Struct("D3DCAPS8", [
+    (D3DDEVTYPE, "DeviceType"),
+    (UINT, "AdapterOrdinal"),
+    (D3DCAPS, "Caps"),
+    (D3DCAPS2, "Caps2"),
+    (D3DCAPS3, "Caps3"),
+    (D3DPRESENT_INTERVAL, "PresentationIntervals"),
+    (D3DCURSORCAPS, "CursorCaps"),
+    (D3DDEVCAPS, "DevCaps"),
+    (D3DPMISCCAPS, "PrimitiveMiscCaps"),
+    (D3DPRASTERCAPS, "RasterCaps"),
+    (D3DPCMPCAPS, "ZCmpCaps"),
+    (D3DPBLENDCAPS, "SrcBlendCaps"),
+    (D3DPBLENDCAPS, "DestBlendCaps"),
+    (D3DPCMPCAPS, "AlphaCmpCaps"),
+    (D3DPSHADECAPS, "ShadeCaps"),
+    (D3DPTEXTURECAPS, "TextureCaps"),
+    (D3DPTFILTERCAPS, "TextureFilterCaps"),
+    (D3DPTFILTERCAPS, "CubeTextureFilterCaps"),
+    (D3DPTFILTERCAPS, "VolumeTextureFilterCaps"),
+    (D3DPTADDRESSCAPS, "TextureAddressCaps"),
+    (D3DPTADDRESSCAPS, "VolumeTextureAddressCaps"),
+    (D3DLINECAPS, "LineCaps"),
+    (DWORD, "MaxTextureWidth"),
+    (DWORD, "MaxTextureHeight"),
+    (DWORD, "MaxVolumeExtent"),
+    (DWORD, "MaxTextureRepeat"),
+    (DWORD, "MaxTextureAspectRatio"),
+    (DWORD, "MaxAnisotropy"),
+    (Float, "MaxVertexW"),
+    (Float, "GuardBandLeft"),
+    (Float, "GuardBandTop"),
+    (Float, "GuardBandRight"),
+    (Float, "GuardBandBottom"),
+    (Float, "ExtentsAdjust"),
+    (D3DSTENCILCAPS, "StencilCaps"),
+    (D3DFVFCAPS, "FVFCaps"),
+    (D3DTEXOPCAPS, "TextureOpCaps"),
+    (DWORD, "MaxTextureBlendStages"),
+    (DWORD, "MaxSimultaneousTextures"),
+    (D3DVTXPCAPS, "VertexProcessingCaps"),
+    (DWORD, "MaxActiveLights"),
+    (DWORD, "MaxUserClipPlanes"),
+    (DWORD, "MaxVertexBlendMatrices"),
+    (DWORD, "MaxVertexBlendMatrixIndex"),
+    (Float, "MaxPointSize"),
+    (DWORD, "MaxPrimitiveCount"),
+    (DWORD, "MaxVertexIndex"),
+    (DWORD, "MaxStreams"),
+    (DWORD, "MaxStreamStride"),
+    (D3DVS_VERSION, "VertexShaderVersion"),
+    (DWORD, "MaxVertexShaderConst"),
+    (D3DPS_VERSION, "PixelShaderVersion"),
+    (Float, "MaxPixelShaderValue"),
+])
+
diff --git a/specs/d3d8types.py b/specs/d3d8types.py
new file mode 100644 (file)
index 0000000..6136d98
--- /dev/null
@@ -0,0 +1,1011 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d8types.h"""
+
+from winapi import *
+
+D3DCOLOR = Alias("D3DCOLOR", DWORD)
+
+D3DVECTOR = Struct("D3DVECTOR", [
+    (Float, "x"),
+    (Float, "y"),
+    (Float, "z"),
+])
+
+D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
+    (Float, "r"),
+    (Float, "g"),
+    (Float, "b"),
+    (Float, "a"),
+])
+
+D3DRECT = Struct("D3DRECT", [
+    (LONG, "x1"),
+    (LONG, "y1"),
+    (LONG, "x2"),
+    (LONG, "y2"),
+])
+
+D3DMATRIX = Struct("D3DMATRIX", [
+    (Array(Array(Float, "4"), "4"), "m"),
+])
+
+D3DVIEWPORT8 = Struct("D3DVIEWPORT8", [
+    (DWORD, "X"),
+    (DWORD, "Y"),
+    (DWORD, "Width"),
+    (DWORD, "Height"),
+    (Float, "MinZ"),
+    (Float, "MaxZ"),
+])
+
+D3DCLIP = Flags(DWORD, [
+    "D3DCLIPPLANE0",
+    "D3DCLIPPLANE1",
+    "D3DCLIPPLANE2",
+    "D3DCLIPPLANE3",
+    "D3DCLIPPLANE4",
+    "D3DCLIPPLANE5",
+])
+
+D3DCS = Flags(DWORD, [
+    "D3DCS_ALL",
+    "D3DCS_LEFT",
+    "D3DCS_RIGHT",
+    "D3DCS_TOP",
+    "D3DCS_BOTTOM",
+    "D3DCS_FRONT",
+    "D3DCS_BACK",
+    "D3DCS_PLANE0",
+    "D3DCS_PLANE1",
+    "D3DCS_PLANE2",
+    "D3DCS_PLANE3",
+    "D3DCS_PLANE4",
+    "D3DCS_PLANE5",
+])
+
+D3DCLIPSTATUS8 = Struct("D3DCLIPSTATUS8", [
+    (DWORD, "ClipUnion"),
+    (DWORD, "ClipIntersection"),
+])
+
+D3DMATERIAL8 = Struct("D3DMATERIAL8", [
+    (D3DCOLORVALUE, "Diffuse"),
+    (D3DCOLORVALUE, "Ambient"),
+    (D3DCOLORVALUE, "Specular"),
+    (D3DCOLORVALUE, "Emissive"),
+    (Float, "Power"),
+])
+
+D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
+    "D3DLIGHT_POINT",
+    "D3DLIGHT_SPOT",
+    "D3DLIGHT_DIRECTIONAL",
+])
+
+D3DLIGHT8 = Struct("D3DLIGHT8", [
+    (D3DLIGHTTYPE, "Type"),
+    (D3DCOLORVALUE, "Diffuse"),
+    (D3DCOLORVALUE, "Specular"),
+    (D3DCOLORVALUE, "Ambient"),
+    (D3DVECTOR, "Position"),
+    (D3DVECTOR, "Direction"),
+    (Float, "Range"),
+    (Float, "Falloff"),
+    (Float, "Attenuation0"),
+    (Float, "Attenuation1"),
+    (Float, "Attenuation2"),
+    (Float, "Theta"),
+    (Float, "Phi"),
+])
+
+D3DCLEAR = Flags(DWORD, [
+    "D3DCLEAR_TARGET",
+    "D3DCLEAR_ZBUFFER",
+    "D3DCLEAR_STENCIL",
+])
+
+D3DSHADEMODE = Enum("D3DSHADEMODE", [
+    "D3DSHADE_FLAT",
+    "D3DSHADE_GOURAUD",
+    "D3DSHADE_PHONG",
+])
+
+D3DFILLMODE = Enum("D3DFILLMODE", [
+    "D3DFILL_POINT",
+    "D3DFILL_WIREFRAME",
+    "D3DFILL_SOLID",
+])
+
+D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
+    (WORD, "wRepeatFactor"),
+    (WORD, "wLinePattern"),
+])
+
+D3DBLEND = Enum("D3DBLEND", [
+    "D3DBLEND_ZERO",
+    "D3DBLEND_ONE",
+    "D3DBLEND_SRCCOLOR",
+    "D3DBLEND_INVSRCCOLOR",
+    "D3DBLEND_SRCALPHA",
+    "D3DBLEND_INVSRCALPHA",
+    "D3DBLEND_DESTALPHA",
+    "D3DBLEND_INVDESTALPHA",
+    "D3DBLEND_DESTCOLOR",
+    "D3DBLEND_INVDESTCOLOR",
+    "D3DBLEND_SRCALPHASAT",
+    "D3DBLEND_BOTHSRCALPHA",
+    "D3DBLEND_BOTHINVSRCALPHA",
+])
+
+D3DBLENDOP = Enum("D3DBLENDOP", [
+    "D3DBLENDOP_ADD",
+    "D3DBLENDOP_SUBTRACT",
+    "D3DBLENDOP_REVSUBTRACT",
+    "D3DBLENDOP_MIN",
+    "D3DBLENDOP_MAX",
+])
+
+D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
+    "D3DTADDRESS_WRAP",
+    "D3DTADDRESS_MIRROR",
+    "D3DTADDRESS_CLAMP",
+    "D3DTADDRESS_BORDER",
+    "D3DTADDRESS_MIRRORONCE",
+])
+
+D3DCULL = Enum("D3DCULL", [
+    "D3DCULL_NONE",
+    "D3DCULL_CW",
+    "D3DCULL_CCW",
+])
+
+D3DCMPFUNC = Enum("D3DCMPFUNC", [
+    "D3DCMP_NEVER",
+    "D3DCMP_LESS",
+    "D3DCMP_EQUAL",
+    "D3DCMP_LESSEQUAL",
+    "D3DCMP_GREATER",
+    "D3DCMP_NOTEQUAL",
+    "D3DCMP_GREATEREQUAL",
+    "D3DCMP_ALWAYS",
+])
+
+D3DSTENCILOP = Enum("D3DSTENCILOP", [
+    "D3DSTENCILOP_KEEP",
+    "D3DSTENCILOP_ZERO",
+    "D3DSTENCILOP_REPLACE",
+    "D3DSTENCILOP_INCRSAT",
+    "D3DSTENCILOP_DECRSAT",
+    "D3DSTENCILOP_INVERT",
+    "D3DSTENCILOP_INCR",
+    "D3DSTENCILOP_DECR",
+])
+
+D3DFOGMODE = Enum("D3DFOGMODE", [
+    "D3DFOG_NONE",
+    "D3DFOG_EXP",
+    "D3DFOG_EXP2",
+    "D3DFOG_LINEAR",
+])
+
+D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
+    "D3DZB_FALSE",
+    "D3DZB_TRUE",
+    "D3DZB_USEW",
+])
+
+D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
+    "D3DPT_POINTLIST",
+    "D3DPT_LINELIST",
+    "D3DPT_LINESTRIP",
+    "D3DPT_TRIANGLELIST",
+    "D3DPT_TRIANGLESTRIP",
+    "D3DPT_TRIANGLEFAN",
+])
+
+D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
+    "D3DTS_VIEW",
+    "D3DTS_PROJECTION",
+    "D3DTS_TEXTURE0",
+    "D3DTS_TEXTURE1",
+    "D3DTS_TEXTURE2",
+    "D3DTS_TEXTURE3",
+    "D3DTS_TEXTURE4",
+    "D3DTS_TEXTURE5",
+    "D3DTS_TEXTURE6",
+    "D3DTS_TEXTURE7",
+])
+
+D3DTS = Flags(DWORD, [
+    "D3DTS_WORLD",
+    "D3DTS_WORLD1",
+    "D3DTS_WORLD2",
+    "D3DTS_WORLD3",
+])
+
+D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
+    "D3DRS_ZENABLE",
+    "D3DRS_FILLMODE",
+    "D3DRS_SHADEMODE",
+    "D3DRS_LINEPATTERN",
+    "D3DRS_ZWRITEENABLE",
+    "D3DRS_ALPHATESTENABLE",
+    "D3DRS_LASTPIXEL",
+    "D3DRS_SRCBLEND",
+    "D3DRS_DESTBLEND",
+    "D3DRS_CULLMODE",
+    "D3DRS_ZFUNC",
+    "D3DRS_ALPHAREF",
+    "D3DRS_ALPHAFUNC",
+    "D3DRS_DITHERENABLE",
+    "D3DRS_ALPHABLENDENABLE",
+    "D3DRS_FOGENABLE",
+    "D3DRS_SPECULARENABLE",
+    "D3DRS_ZVISIBLE",
+    "D3DRS_FOGCOLOR",
+    "D3DRS_FOGTABLEMODE",
+    "D3DRS_FOGSTART",
+    "D3DRS_FOGEND",
+    "D3DRS_FOGDENSITY",
+    "D3DRS_EDGEANTIALIAS",
+    "D3DRS_ZBIAS",
+    "D3DRS_RANGEFOGENABLE",
+    "D3DRS_STENCILENABLE",
+    "D3DRS_STENCILFAIL",
+    "D3DRS_STENCILZFAIL",
+    "D3DRS_STENCILPASS",
+    "D3DRS_STENCILFUNC",
+    "D3DRS_STENCILREF",
+    "D3DRS_STENCILMASK",
+    "D3DRS_STENCILWRITEMASK",
+    "D3DRS_TEXTUREFACTOR",
+    "D3DRS_WRAP0",
+    "D3DRS_WRAP1",
+    "D3DRS_WRAP2",
+    "D3DRS_WRAP3",
+    "D3DRS_WRAP4",
+    "D3DRS_WRAP5",
+    "D3DRS_WRAP6",
+    "D3DRS_WRAP7",
+    "D3DRS_CLIPPING",
+    "D3DRS_LIGHTING",
+    "D3DRS_AMBIENT",
+    "D3DRS_FOGVERTEXMODE",
+    "D3DRS_COLORVERTEX",
+    "D3DRS_LOCALVIEWER",
+    "D3DRS_NORMALIZENORMALS",
+    "D3DRS_DIFFUSEMATERIALSOURCE",
+    "D3DRS_SPECULARMATERIALSOURCE",
+    "D3DRS_AMBIENTMATERIALSOURCE",
+    "D3DRS_EMISSIVEMATERIALSOURCE",
+    "D3DRS_VERTEXBLEND",
+    "D3DRS_CLIPPLANEENABLE",
+    "D3DRS_SOFTWAREVERTEXPROCESSING",
+    "D3DRS_POINTSIZE",
+    "D3DRS_POINTSIZE_MIN",
+    "D3DRS_POINTSPRITEENABLE",
+    "D3DRS_POINTSCALEENABLE",
+    "D3DRS_POINTSCALE_A",
+    "D3DRS_POINTSCALE_B",
+    "D3DRS_POINTSCALE_C",
+    "D3DRS_MULTISAMPLEANTIALIAS",
+    "D3DRS_MULTISAMPLEMASK",
+    "D3DRS_PATCHEDGESTYLE",
+    "D3DRS_PATCHSEGMENTS",
+    "D3DRS_DEBUGMONITORTOKEN",
+    "D3DRS_POINTSIZE_MAX",
+    "D3DRS_INDEXEDVERTEXBLENDENABLE",
+    "D3DRS_COLORWRITEENABLE",
+    "D3DRS_TWEENFACTOR",
+    "D3DRS_BLENDOP",
+    "D3DRS_POSITIONORDER",
+    "D3DRS_NORMALORDER",
+])
+
+D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
+    "D3DMCS_MATERIAL",
+    "D3DMCS_COLOR1",
+    "D3DMCS_COLOR2",
+])
+
+D3DWRAP = Flags(DWORD, [
+    "D3DWRAP_U",
+    "D3DWRAP_V",
+    "D3DWRAP_W",
+])
+
+D3DWRAPCOORD = Flags(DWORD, [
+    "D3DWRAPCOORD_0",
+    "D3DWRAPCOORD_1",
+    "D3DWRAPCOORD_2",
+    "D3DWRAPCOORD_3",
+])
+
+D3DCOLORWRITEENABLE = Flags(DWORD, [
+    "D3DCOLORWRITEENABLE_RED",
+    "D3DCOLORWRITEENABLE_GREEN",
+    "D3DCOLORWRITEENABLE_BLUE",
+    "D3DCOLORWRITEENABLE_ALPHA",
+])
+
+D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
+    "D3DTSS_COLOROP",
+    "D3DTSS_COLORARG1",
+    "D3DTSS_COLORARG2",
+    "D3DTSS_ALPHAOP",
+    "D3DTSS_ALPHAARG1",
+    "D3DTSS_ALPHAARG2",
+    "D3DTSS_BUMPENVMAT00",
+    "D3DTSS_BUMPENVMAT01",
+    "D3DTSS_BUMPENVMAT10",
+    "D3DTSS_BUMPENVMAT11",
+    "D3DTSS_TEXCOORDINDEX",
+    "D3DTSS_ADDRESSU",
+    "D3DTSS_ADDRESSV",
+    "D3DTSS_BORDERCOLOR",
+    "D3DTSS_MAGFILTER",
+    "D3DTSS_MINFILTER",
+    "D3DTSS_MIPFILTER",
+    "D3DTSS_MIPMAPLODBIAS",
+    "D3DTSS_MAXMIPLEVEL",
+    "D3DTSS_MAXANISOTROPY",
+    "D3DTSS_BUMPENVLSCALE",
+    "D3DTSS_BUMPENVLOFFSET",
+    "D3DTSS_TEXTURETRANSFORMFLAGS",
+    "D3DTSS_ADDRESSW",
+    "D3DTSS_COLORARG0",
+    "D3DTSS_ALPHAARG0",
+    "D3DTSS_RESULTARG",
+])
+
+D3DTSS = Flags(DWORD, [
+    "D3DTSS_TCI_PASSTHRU",
+    "D3DTSS_TCI_CAMERASPACENORMAL",
+    "D3DTSS_TCI_CAMERASPACEPOSITION",
+    "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
+])
+
+D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
+    "D3DTOP_DISABLE",
+    "D3DTOP_SELECTARG1",
+    "D3DTOP_SELECTARG2",
+    "D3DTOP_MODULATE",
+    "D3DTOP_MODULATE2X",
+    "D3DTOP_MODULATE4X",
+    "D3DTOP_ADD",
+    "D3DTOP_ADDSIGNED",
+    "D3DTOP_ADDSIGNED2X",
+    "D3DTOP_SUBTRACT",
+    "D3DTOP_ADDSMOOTH",
+    "D3DTOP_BLENDDIFFUSEALPHA",
+    "D3DTOP_BLENDTEXTUREALPHA",
+    "D3DTOP_BLENDFACTORALPHA",
+    "D3DTOP_BLENDTEXTUREALPHAPM",
+    "D3DTOP_BLENDCURRENTALPHA",
+    "D3DTOP_PREMODULATE",
+    "D3DTOP_MODULATEALPHA_ADDCOLOR",
+    "D3DTOP_MODULATECOLOR_ADDALPHA",
+    "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
+    "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
+    "D3DTOP_BUMPENVMAP",
+    "D3DTOP_BUMPENVMAPLUMINANCE",
+    "D3DTOP_DOTPRODUCT3",
+    "D3DTOP_MULTIPLYADD",
+    "D3DTOP_LERP",
+])
+
+D3DTA = Flags(DWORD, [
+    "D3DTA_SELECTMASK",
+    "D3DTA_DIFFUSE",
+    "D3DTA_CURRENT",
+    "D3DTA_TEXTURE",
+    "D3DTA_TFACTOR",
+    "D3DTA_SPECULAR",
+    "D3DTA_TEMP",
+    "D3DTA_COMPLEMENT",
+    "D3DTA_ALPHAREPLICATE",
+])
+
+D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
+    "D3DTEXF_NONE",
+    "D3DTEXF_POINT",
+    "D3DTEXF_LINEAR",
+    "D3DTEXF_ANISOTROPIC",
+    "D3DTEXF_FLATCUBIC",
+    "D3DTEXF_GAUSSIANCUBIC",
+])
+
+D3DPV = Flags(DWORD, [
+    "D3DPV_DONOTCOPYDATA",
+])
+
+D3DFVF = Flags(DWORD, [
+    "D3DFVF_RESERVED0",
+    "D3DFVF_POSITION_MASK",
+    "D3DFVF_XYZ",
+    "D3DFVF_XYZRHW",
+    "D3DFVF_XYZB1",
+    "D3DFVF_XYZB2",
+    "D3DFVF_XYZB3",
+    "D3DFVF_XYZB4",
+    "D3DFVF_XYZB5",
+    "D3DFVF_NORMAL",
+    "D3DFVF_PSIZE",
+    "D3DFVF_DIFFUSE",
+    "D3DFVF_SPECULAR",
+    "D3DFVF_TEXCOUNT_MASK",
+    "D3DFVF_TEXCOUNT_SHIFT",
+    "D3DFVF_TEX0",
+    "D3DFVF_TEX1",
+    "D3DFVF_TEX2",
+    "D3DFVF_TEX3",
+    "D3DFVF_TEX4",
+    "D3DFVF_TEX5",
+    "D3DFVF_TEX6",
+    "D3DFVF_TEX7",
+    "D3DFVF_TEX8",
+    "D3DFVF_LASTBETA_UBYTE4",
+    "D3DFVF_RESERVED2",
+    "D3DFVF_TEXCOORDSIZE3(0)",
+    "D3DFVF_TEXCOORDSIZE2(0)",
+    "D3DFVF_TEXCOORDSIZE4(0)",
+    "D3DFVF_TEXCOORDSIZE1(0)",
+    "D3DFVF_TEXCOORDSIZE3(1)",
+    "D3DFVF_TEXCOORDSIZE2(1)",
+    "D3DFVF_TEXCOORDSIZE4(1)",
+    "D3DFVF_TEXCOORDSIZE1(1)",
+    "D3DFVF_TEXCOORDSIZE3(2)",
+    "D3DFVF_TEXCOORDSIZE2(2)",
+    "D3DFVF_TEXCOORDSIZE4(2)",
+    "D3DFVF_TEXCOORDSIZE1(2)",
+    "D3DFVF_TEXCOORDSIZE3(3)",
+    "D3DFVF_TEXCOORDSIZE2(3)",
+    "D3DFVF_TEXCOORDSIZE4(3)",
+    "D3DFVF_TEXCOORDSIZE1(3)",
+])
+
+D3DVSD_TOKENTYPE = Enum("D3DVSD_TOKENTYPE", [
+    "D3DVSD_TOKEN_NOP",
+    "D3DVSD_TOKEN_STREAM",
+    "D3DVSD_TOKEN_STREAMDATA",
+    "D3DVSD_TOKEN_TESSELLATOR",
+    "D3DVSD_TOKEN_CONSTMEM",
+    "D3DVSD_TOKEN_EXT",
+    "D3DVSD_TOKEN_END",
+])
+
+D3DVSDT = Flags(DWORD, [
+    "D3DVSDT_FLOAT1",
+    "D3DVSDT_FLOAT2",
+    "D3DVSDT_FLOAT3",
+    "D3DVSDT_FLOAT4",
+    "D3DVSDT_D3DCOLOR",
+    "D3DVSDT_UBYTE4",
+    "D3DVSDT_SHORT2",
+    "D3DVSDT_SHORT4",
+    "D3DVSDE_POSITION",
+    "D3DVSDE_BLENDWEIGHT",
+    "D3DVSDE_BLENDINDICES",
+    "D3DVSDE_NORMAL",
+    "D3DVSDE_PSIZE",
+    "D3DVSDE_DIFFUSE",
+    "D3DVSDE_SPECULAR",
+    "D3DVSDE_TEXCOORD0",
+    "D3DVSDE_TEXCOORD1",
+    "D3DVSDE_TEXCOORD2",
+    "D3DVSDE_TEXCOORD3",
+    "D3DVSDE_TEXCOORD4",
+    "D3DVSDE_TEXCOORD5",
+    "D3DVSDE_TEXCOORD6",
+    "D3DVSDE_TEXCOORD7",
+    "D3DVSDE_POSITION2",
+    "D3DVSDE_NORMAL2",
+    "D3DDP_MAXTEXCOORD",
+    "D3DSI_OPCODE_MASK",
+])
+
+D3DSHADER_INSTRUCTION_OPCODE_TYPE = Enum("D3DSHADER_INSTRUCTION_OPCODE_TYPE", [
+    "D3DSIO_NOP",
+    "D3DSIO_MOV",
+    "D3DSIO_ADD",
+    "D3DSIO_SUB",
+    "D3DSIO_MAD",
+    "D3DSIO_MUL",
+    "D3DSIO_RCP",
+    "D3DSIO_RSQ",
+    "D3DSIO_DP3",
+    "D3DSIO_DP4",
+    "D3DSIO_MIN",
+    "D3DSIO_MAX",
+    "D3DSIO_SLT",
+    "D3DSIO_SGE",
+    "D3DSIO_EXP",
+    "D3DSIO_LOG",
+    "D3DSIO_LIT",
+    "D3DSIO_DST",
+    "D3DSIO_LRP",
+    "D3DSIO_FRC",
+    "D3DSIO_M4x4",
+    "D3DSIO_M4x3",
+    "D3DSIO_M3x4",
+    "D3DSIO_M3x3",
+    "D3DSIO_M3x2",
+    "D3DSIO_TEXCOORD",
+    "D3DSIO_TEXKILL",
+    "D3DSIO_TEX",
+    "D3DSIO_TEXBEM",
+    "D3DSIO_TEXBEML",
+    "D3DSIO_TEXREG2AR",
+    "D3DSIO_TEXREG2GB",
+    "D3DSIO_TEXM3x2PAD",
+    "D3DSIO_TEXM3x2TEX",
+    "D3DSIO_TEXM3x3PAD",
+    "D3DSIO_TEXM3x3TEX",
+    "D3DSIO_TEXM3x3DIFF",
+    "D3DSIO_TEXM3x3SPEC",
+    "D3DSIO_TEXM3x3VSPEC",
+    "D3DSIO_EXPP",
+    "D3DSIO_LOGP",
+    "D3DSIO_CND",
+    "D3DSIO_DEF",
+    "D3DSIO_TEXREG2RGB",
+    "D3DSIO_TEXDP3TEX",
+    "D3DSIO_TEXM3x2DEPTH",
+    "D3DSIO_TEXDP3",
+    "D3DSIO_TEXM3x3",
+    "D3DSIO_TEXDEPTH",
+    "D3DSIO_CMP",
+    "D3DSIO_BEM",
+    "D3DSIO_PHASE",
+    "D3DSIO_COMMENT",
+    "D3DSIO_END",
+])
+
+D3DSP = Flags(DWORD, [
+    "D3DSP_WRITEMASK_0",
+    "D3DSP_WRITEMASK_1",
+    "D3DSP_WRITEMASK_2",
+    "D3DSP_WRITEMASK_3",
+    "D3DSP_WRITEMASK_ALL",
+])
+
+D3DSHADER_PARAM_DSTMOD_TYPE = Enum("D3DSHADER_PARAM_DSTMOD_TYPE", [
+    "D3DSPDM_NONE",
+    "D3DSPDM_SATURATE",
+])
+
+D3DSHADER_PARAM_REGISTER_TYPE = Enum("D3DSHADER_PARAM_REGISTER_TYPE", [
+    "D3DSPR_TEMP",
+    "D3DSPR_INPUT",
+    "D3DSPR_CONST",
+    "D3DSPR_ADDR|D3DSPR_TEXTURE",
+    "D3DSPR_RASTOUT",
+    "D3DSPR_ATTROUT",
+    "D3DSPR_TEXCRDOUT",
+])
+
+D3DVS_RASTOUT_OFFSETS = Enum("D3DVS_RASTOUT_OFFSETS", [
+    "D3DSRO_POSITION",
+    "D3DSRO_FOG",
+    "D3DSRO_POINT_SIZE",
+])
+
+D3DVS_ADDRESSMODE_TYPE = Enum("D3DVS_ADDRESSMODE_TYPE", [
+    "D3DVS_ADDRMODE_ABSOLUTE",
+    "D3DVS_ADDRMODE_RELATIVE",
+])
+
+D3DVS = Flags(DWORD, [
+    "D3DVS_X_X",
+    "D3DVS_X_Y",
+    "D3DVS_X_Z",
+    "D3DVS_X_W",
+    "D3DVS_Y_X",
+    "D3DVS_Y_Y",
+    "D3DVS_Y_Z",
+    "D3DVS_Y_W",
+    "D3DVS_Z_X",
+    "D3DVS_Z_Y",
+    "D3DVS_Z_Z",
+    "D3DVS_Z_W",
+    "D3DVS_W_X",
+    "D3DVS_W_Y",
+    "D3DVS_W_Z",
+    "D3DVS_W_W",
+    "D3DVS_NOSWIZZLE",
+])
+
+D3DSP = Flags(DWORD, [
+    "D3DSP_NOSWIZZLE",
+    "D3DSP_REPLICATERED",
+    "D3DSP_REPLICATEGREEN",
+    "D3DSP_REPLICATEBLUE",
+    "D3DSP_REPLICATEALPHA",
+])
+
+D3DSHADER_PARAM_SRCMOD_TYPE = Enum("D3DSHADER_PARAM_SRCMOD_TYPE", [
+    "D3DSPSM_NONE",
+    "D3DSPSM_NEG",
+    "D3DSPSM_BIAS",
+    "D3DSPSM_BIASNEG",
+    "D3DSPSM_SIGN",
+    "D3DSPSM_SIGNNEG",
+    "D3DSPSM_COMP",
+    "D3DSPSM_X2",
+    "D3DSPSM_X2NEG",
+    "D3DSPSM_DZ",
+    "D3DSPSM_DW",
+])
+
+D3DBASISTYPE = Enum("D3DBASISTYPE", [
+    "D3DBASIS_BEZIER",
+    "D3DBASIS_BSPLINE",
+    "D3DBASIS_INTERPOLATE",
+])
+
+D3DORDERTYPE = Enum("D3DORDERTYPE", [
+    "D3DORDER_LINEAR",
+    "D3DORDER_QUADRATIC",
+    "D3DORDER_CUBIC",
+    "D3DORDER_QUINTIC",
+])
+
+D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
+    "D3DPATCHEDGE_DISCRETE",
+    "D3DPATCHEDGE_CONTINUOUS",
+])
+
+D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
+    "D3DSBT_ALL",
+    "D3DSBT_PIXELSTATE",
+    "D3DSBT_VERTEXSTATE",
+])
+
+D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
+    "D3DVBF_DISABLE",
+    "D3DVBF_1WEIGHTS",
+    "D3DVBF_2WEIGHTS",
+    "D3DVBF_3WEIGHTS",
+    "D3DVBF_TWEENING",
+    "D3DVBF_0WEIGHTS",
+])
+
+D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
+    "D3DTTFF_DISABLE",
+    "D3DTTFF_COUNT1",
+    "D3DTTFF_COUNT2",
+    "D3DTTFF_COUNT3",
+    "D3DTTFF_COUNT4",
+    "D3DTTFF_PROJECTED",
+])
+
+D3DDEVTYPE = Enum("D3DDEVTYPE", [
+    "D3DDEVTYPE_HAL",
+    "D3DDEVTYPE_REF",
+    "D3DDEVTYPE_SW",
+])
+
+D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
+    "D3DMULTISAMPLE_NONE",
+    "D3DMULTISAMPLE_2_SAMPLES",
+    "D3DMULTISAMPLE_3_SAMPLES",
+    "D3DMULTISAMPLE_4_SAMPLES",
+    "D3DMULTISAMPLE_5_SAMPLES",
+    "D3DMULTISAMPLE_6_SAMPLES",
+    "D3DMULTISAMPLE_7_SAMPLES",
+    "D3DMULTISAMPLE_8_SAMPLES",
+    "D3DMULTISAMPLE_9_SAMPLES",
+    "D3DMULTISAMPLE_10_SAMPLES",
+    "D3DMULTISAMPLE_11_SAMPLES",
+    "D3DMULTISAMPLE_12_SAMPLES",
+    "D3DMULTISAMPLE_13_SAMPLES",
+    "D3DMULTISAMPLE_14_SAMPLES",
+    "D3DMULTISAMPLE_15_SAMPLES",
+    "D3DMULTISAMPLE_16_SAMPLES",
+])
+
+D3DFORMAT = Enum("D3DFORMAT", [
+    "D3DFMT_UNKNOWN",
+    "D3DFMT_R8G8B8",
+    "D3DFMT_A8R8G8B8",
+    "D3DFMT_X8R8G8B8",
+    "D3DFMT_R5G6B5",
+    "D3DFMT_X1R5G5B5",
+    "D3DFMT_A1R5G5B5",
+    "D3DFMT_A4R4G4B4",
+    "D3DFMT_R3G3B2",
+    "D3DFMT_A8",
+    "D3DFMT_A8R3G3B2",
+    "D3DFMT_X4R4G4B4",
+    "D3DFMT_A2B10G10R10",
+    "D3DFMT_G16R16",
+    "D3DFMT_A8P8",
+    "D3DFMT_P8",
+    "D3DFMT_L8",
+    "D3DFMT_A8L8",
+    "D3DFMT_A4L4",
+    "D3DFMT_V8U8",
+    "D3DFMT_L6V5U5",
+    "D3DFMT_X8L8V8U8",
+    "D3DFMT_Q8W8V8U8",
+    "D3DFMT_V16U16",
+    "D3DFMT_W11V11U10",
+    "D3DFMT_A2W10V10U10",
+    "D3DFMT_UYVY",
+    "D3DFMT_YUY2",
+    "D3DFMT_DXT1",
+    "D3DFMT_DXT2",
+    "D3DFMT_DXT3",
+    "D3DFMT_DXT4",
+    "D3DFMT_DXT5",
+    "D3DFMT_D16_LOCKABLE",
+    "D3DFMT_D32",
+    "D3DFMT_D15S1",
+    "D3DFMT_D24S8",
+    "D3DFMT_D16",
+    "D3DFMT_D24X8",
+    "D3DFMT_D24X4S4",
+    "D3DFMT_VERTEXDATA",
+    "D3DFMT_INDEX16",
+    "D3DFMT_INDEX32",
+])
+
+D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "RefreshRate"),
+    (D3DFORMAT, "Format"),
+])
+
+D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
+    (UINT, "AdapterOrdinal"),
+    (D3DDEVTYPE, "DeviceType"),
+    (HWND, "hFocusWindow"),
+    (DWORD, "BehaviorFlags"),
+])
+
+D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
+    "D3DSWAPEFFECT_DISCARD",
+    "D3DSWAPEFFECT_FLIP",
+    "D3DSWAPEFFECT_COPY",
+    "D3DSWAPEFFECT_COPY_VSYNC",
+])
+
+D3DPOOL = Enum("D3DPOOL", [
+    "D3DPOOL_DEFAULT",
+    "D3DPOOL_MANAGED",
+    "D3DPOOL_SYSTEMMEM",
+    "D3DPOOL_SCRATCH",
+])
+
+D3DPRESENT = Flags(DWORD, [
+    "D3DPRESENT_RATE_DEFAULT",
+    "D3DPRESENT_RATE_UNLIMITED",
+])
+
+D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
+    (UINT, "BackBufferWidth"),
+    (UINT, "BackBufferHeight"),
+    (D3DFORMAT, "BackBufferFormat"),
+    (UINT, "BackBufferCount"),
+    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
+    (D3DSWAPEFFECT, "SwapEffect"),
+    (HWND, "hDeviceWindow"),
+    (BOOL, "Windowed"),
+    (BOOL, "EnableAutoDepthStencil"),
+    (D3DFORMAT, "AutoDepthStencilFormat"),
+    (DWORD, "Flags"),
+    (UINT, "FullScreen_RefreshRateInHz"),
+    (UINT, "FullScreen_PresentationInterval"),
+])
+
+D3DPRESENTFLAG = Flags(DWORD, [
+    "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
+])
+
+D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
+    (Array(WORD, "256"), "red"),
+    (Array(WORD, "256"), "green"),
+    (Array(WORD, "256"), "blue"),
+])
+
+D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
+    "D3DBACKBUFFER_TYPE_MONO",
+    "D3DBACKBUFFER_TYPE_LEFT",
+    "D3DBACKBUFFER_TYPE_RIGHT",
+])
+
+D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
+    "D3DRTYPE_SURFACE",
+    "D3DRTYPE_VOLUME",
+    "D3DRTYPE_TEXTURE",
+    "D3DRTYPE_VOLUMETEXTURE",
+    "D3DRTYPE_CUBETEXTURE",
+    "D3DRTYPE_VERTEXBUFFER",
+    "D3DRTYPE_INDEXBUFFER",
+])
+
+D3DUSAGE = Flags(DWORD, [
+    "D3DUSAGE_RENDERTARGET",
+    "D3DUSAGE_DEPTHSTENCIL",
+    "D3DUSAGE_WRITEONLY",
+    "D3DUSAGE_SOFTWAREPROCESSING",
+    "D3DUSAGE_DONOTCLIP",
+    "D3DUSAGE_POINTS",
+    "D3DUSAGE_RTPATCHES",
+    "D3DUSAGE_NPATCHES",
+    "D3DUSAGE_DYNAMIC",
+])
+
+D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
+    "D3DCUBEMAP_FACE_POSITIVE_X",
+    "D3DCUBEMAP_FACE_NEGATIVE_X",
+    "D3DCUBEMAP_FACE_POSITIVE_Y",
+    "D3DCUBEMAP_FACE_NEGATIVE_Y",
+    "D3DCUBEMAP_FACE_POSITIVE_Z",
+    "D3DCUBEMAP_FACE_NEGATIVE_Z",
+])
+
+D3DLOCK = Flags(DWORD, [
+    "D3DLOCK_READONLY",
+    "D3DLOCK_DISCARD",
+    "D3DLOCK_NOOVERWRITE",
+    "D3DLOCK_NOSYSLOCK",
+    "D3DLOCK_NO_DIRTY_UPDATE",
+])
+
+D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Size"),
+    (DWORD, "FVF"),
+])
+
+D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Size"),
+])
+
+D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Size"),
+    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+])
+
+D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Size"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "Depth"),
+])
+
+D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
+    (INT, "Pitch"),
+    (PVOID, "pBits"),
+])
+
+D3DBOX = Struct("D3DBOX", [
+    (UINT, "Left"),
+    (UINT, "Top"),
+    (UINT, "Right"),
+    (UINT, "Bottom"),
+    (UINT, "Front"),
+    (UINT, "Back"),
+])
+
+D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
+    (INT, "RowPitch"),
+    (INT, "SlicePitch"),
+    (PVOID, "pBits"),
+])
+
+D3DRANGE = Struct("D3DRANGE", [
+    (UINT, "Offset"),
+    (UINT, "Size"),
+])
+
+D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
+    (UINT, "StartVertexOffsetWidth"),
+    (UINT, "StartVertexOffsetHeight"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "Stride"),
+    (D3DBASISTYPE, "Basis"),
+    (D3DORDERTYPE, "Order"),
+])
+
+D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
+    (UINT, "StartVertexOffset"),
+    (UINT, "NumVertices"),
+    (D3DBASISTYPE, "Basis"),
+    (D3DORDERTYPE, "Order"),
+])
+
+D3DADAPTER_IDENTIFIER8 = Struct("D3DADAPTER_IDENTIFIER8", [
+    (CString, "Driver"),
+    (CString, "Description"),
+    (LARGE_INTEGER, "DriverVersion"),
+    (DWORD, "VendorId"),
+    (DWORD, "DeviceId"),
+    (DWORD, "SubSysId"),
+    (DWORD, "Revision"),
+    (GUID, "DeviceIdentifier"),
+    (DWORD, "WHQLLevel"),
+])
+
+D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
+    (BOOL, "InVBlank"),
+    (UINT, "ScanLine"),
+])
+
+D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
+    "D3DDMT_ENABLE",
+    "D3DDMT_DISABLE",
+])
+
+D3DDEVINFOID = Flags(DWORD, [
+    "D3DDEVINFOID_RESOURCEMANAGER",
+    "D3DDEVINFOID_VERTEXSTATS",
+])
+
+D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
+    (BOOL, "bThrashing"),
+    (DWORD, "ApproxBytesDownloaded"),
+    (DWORD, "NumEvicts"),
+    (DWORD, "NumVidCreates"),
+    (DWORD, "LastPri"),
+    (DWORD, "NumUsed"),
+    (DWORD, "NumUsedInVidMem"),
+    (DWORD, "WorkingSet"),
+    (DWORD, "WorkingSetBytes"),
+    (DWORD, "TotalManaged"),
+    (DWORD, "TotalBytes"),
+])
+
+D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
+    (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
+])
+
+D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
+    (DWORD, "NumRenderedTriangles"),
+    (DWORD, "NumExtraClippingTriangles"),
+])
+
diff --git a/specs/d3d9.py b/specs/d3d9.py
new file mode 100644 (file)
index 0000000..ffb643e
--- /dev/null
@@ -0,0 +1,450 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d9.h"""
+
+from winapi import *
+from d3d9types import *
+from d3d9caps import *
+
+
+D3DSHADER9 = Opaque("const DWORD *")
+
+D3DSPD = Flags(DWORD, [
+    "D3DSPD_IUNKNOWN",
+])
+
+D3DCREATE = Flags(DWORD, [
+    "D3DCREATE_FPU_PRESERVE",
+    "D3DCREATE_MULTITHREADED",
+    "D3DCREATE_PUREDEVICE",
+    "D3DCREATE_SOFTWARE_VERTEXPROCESSING",
+    "D3DCREATE_HARDWARE_VERTEXPROCESSING",
+    "D3DCREATE_MIXED_VERTEXPROCESSING",
+    "D3DCREATE_DISABLE_DRIVER_MANAGEMENT",
+    "D3DCREATE_ADAPTERGROUP_DEVICE",
+    "D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX",
+    "D3DCREATE_NOWINDOWCHANGES",
+    "D3DCREATE_DISABLE_PSGP_THREADING",
+    "D3DCREATE_ENABLE_PRESENTSTATS",
+    "D3DCREATE_DISABLE_PRINTSCREEN",
+    "D3DCREATE_SCREENSAVER",
+])
+
+D3DADAPTER = FakeEnum(DWORD, [
+    "D3DADAPTER_DEFAULT",
+])
+
+D3DENUM = FakeEnum(DWORD, [
+    "D3DENUM_WHQL_LEVEL",
+])
+
+D3DSGR = Flags(DWORD, [
+    "D3DSGR_NO_CALIBRATION",
+    "D3DSGR_CALIBRATE",
+])
+
+D3DCURSOR = Flags(DWORD, [
+    "D3DCURSOR_IMMEDIATE_UPDATE",
+])
+
+D3DPRESENT = Flags(DWORD, [
+    "D3DPRESENT_DONOTWAIT",
+    "D3DPRESENT_LINEAR_CONTENT",
+    "D3DPRESENT_DONOTFLIP",
+    "D3DPRESENT_FLIPRESTART",
+    "D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR",
+])
+
+HRESULT = Enum("HRESULT", [
+    "D3D_OK",
+    "D3DERR_WRONGTEXTUREFORMAT",
+    "D3DERR_UNSUPPORTEDCOLOROPERATION",
+    "D3DERR_UNSUPPORTEDCOLORARG",
+    "D3DERR_UNSUPPORTEDALPHAOPERATION",
+    "D3DERR_UNSUPPORTEDALPHAARG",
+    "D3DERR_TOOMANYOPERATIONS",
+    "D3DERR_CONFLICTINGTEXTUREFILTER",
+    "D3DERR_UNSUPPORTEDFACTORVALUE",
+    "D3DERR_CONFLICTINGRENDERSTATE",
+    "D3DERR_UNSUPPORTEDTEXTUREFILTER",
+    "D3DERR_CONFLICTINGTEXTUREPALETTE",
+    "D3DERR_DRIVERINTERNALERROR",
+    "D3DERR_NOTFOUND",
+    "D3DERR_MOREDATA",
+    "D3DERR_DEVICELOST",
+    "D3DERR_DEVICENOTRESET",
+    "D3DERR_NOTAVAILABLE",
+    "D3DERR_OUTOFVIDEOMEMORY",
+    "D3DERR_INVALIDDEVICE",
+    "D3DERR_INVALIDCALL",
+    "D3DERR_DRIVERINVALIDCALL",
+    "D3DERR_WASSTILLDRAWING",
+    "D3DOK_NOAUTOGEN",
+    "D3DERR_DEVICEREMOVED",
+    "S_NOT_RESIDENT",
+    "S_RESIDENT_IN_SHARED_MEMORY",
+    "S_PRESENT_MODE_CHANGED",
+    "S_PRESENT_OCCLUDED",
+    "D3DERR_DEVICEHUNG",
+])
+
+IDirect3D9 = Interface("IDirect3D9", IUnknown)
+IDirect3DDevice9 = Interface("IDirect3DDevice9", IUnknown)
+IDirect3DStateBlock9 = Interface("IDirect3DStateBlock9", IUnknown)
+IDirect3DSwapChain9 = Interface("IDirect3DSwapChain9", IUnknown)
+IDirect3DResource9 = Interface("IDirect3DResource9", IUnknown)
+IDirect3DVertexDeclaration9 = Interface("IDirect3DVertexDeclaration9", IUnknown)
+IDirect3DVertexShader9 = Interface("IDirect3DVertexShader9", IUnknown)
+IDirect3DPixelShader9 = Interface("IDirect3DPixelShader9", IUnknown)
+IDirect3DBaseTexture9 = Interface("IDirect3DBaseTexture9", IDirect3DResource9)
+IDirect3DTexture9 = Interface("IDirect3DTexture9", IDirect3DBaseTexture9)
+IDirect3DVolumeTexture9 = Interface("IDirect3DVolumeTexture9", IDirect3DBaseTexture9)
+IDirect3DCubeTexture9 = Interface("IDirect3DCubeTexture9", IDirect3DBaseTexture9)
+IDirect3DVertexBuffer9 = Interface("IDirect3DVertexBuffer9", IDirect3DResource9)
+IDirect3DIndexBuffer9 = Interface("IDirect3DIndexBuffer9", IDirect3DResource9)
+IDirect3DSurface9 = Interface("IDirect3DSurface9", IDirect3DResource9)
+IDirect3DVolume9 = Interface("IDirect3DVolume9", IUnknown)
+IDirect3DQuery9 = Interface("IDirect3DQuery9", IUnknown)
+IDirect3D9Ex = Interface("IDirect3D9Ex", IDirect3D9)
+IDirect3DDevice9Ex = Interface("IDirect3DDevice9Ex", IDirect3DDevice9)
+IDirect3DSwapChain9Ex = Interface("IDirect3DSwapChain9Ex", IDirect3DSwapChain9)
+
+PDIRECT3D9 = WrapPointer(IDirect3D9)
+PDIRECT3DDEVICE9 = WrapPointer(IDirect3DDevice9)
+PDIRECT3DSTATEBLOCK9 = WrapPointer(IDirect3DStateBlock9)
+PDIRECT3DSWAPCHAIN9 = WrapPointer(IDirect3DSwapChain9)
+PDIRECT3DRESOURCE9 = WrapPointer(IDirect3DResource9)
+PDIRECT3DVERTEXDECLARATION9 = WrapPointer(IDirect3DVertexDeclaration9)
+PDIRECT3DVERTEXSHADER9 = WrapPointer(IDirect3DVertexShader9)
+PDIRECT3DPIXELSHADER9 = WrapPointer(IDirect3DPixelShader9)
+PDIRECT3DBASETEXTURE9 = WrapPointer(IDirect3DBaseTexture9)
+PDIRECT3DTEXTURE9 = WrapPointer(IDirect3DTexture9)
+PDIRECT3DVOLUMETEXTURE9 = WrapPointer(IDirect3DVolumeTexture9)
+PDIRECT3DCUBETEXTURE9 = WrapPointer(IDirect3DCubeTexture9)
+PDIRECT3DVERTEXBUFFER9 = WrapPointer(IDirect3DVertexBuffer9)
+PDIRECT3DINDEXBUFFER9 = WrapPointer(IDirect3DIndexBuffer9)
+PDIRECT3DSURFACE9 = WrapPointer(IDirect3DSurface9)
+PDIRECT3DVOLUME9 = WrapPointer(IDirect3DVolume9)
+PDIRECT3DQUERY9 = WrapPointer(IDirect3DQuery9)
+PDIRECT3D9EX = WrapPointer(IDirect3D9Ex)
+PDIRECT3DDEVICE9EX = WrapPointer(IDirect3DDevice9Ex)
+PDIRECT3DSWAPCHAIN9EX = WrapPointer(IDirect3DSwapChain9Ex)
+
+IDirect3D9.methods += [
+    Method(HRESULT, "RegisterSoftwareDevice", [(OpaquePointer(Void), "pInitializeFunction")]),
+    Method(UINT, "GetAdapterCount", []),
+    Method(HRESULT, "GetAdapterIdentifier", [(UINT, "Adapter"), (D3DENUM, "Flags"), Out(Pointer(D3DADAPTER_IDENTIFIER9), "pIdentifier")]),
+    Method(UINT, "GetAdapterModeCount", [(UINT, "Adapter"), (D3DFORMAT, "Format")]),
+    Method(HRESULT, "EnumAdapterModes", [(UINT, "Adapter"), (D3DFORMAT, "Format"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "GetAdapterDisplayMode", [(UINT, "Adapter"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "CheckDeviceType", [(UINT, "Adapter"), (D3DDEVTYPE, "DevType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "BackBufferFormat"), (BOOL, "bWindowed")]),
+    Method(HRESULT, "CheckDeviceFormat", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DUSAGE, "Usage"), (D3DRESOURCETYPE, "RType"), (D3DFORMAT, "CheckFormat")]),
+    Method(HRESULT, "CheckDeviceMultiSampleType", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SurfaceFormat"), (BOOL, "Windowed"), (D3DMULTISAMPLE_TYPE, "MultiSampleType"), Out(Pointer(DWORD), "pQualityLevels")]),
+    Method(HRESULT, "CheckDepthStencilMatch", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "RenderTargetFormat"), (D3DFORMAT, "DepthStencilFormat")]),
+    Method(HRESULT, "CheckDeviceFormatConversion", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SourceFormat"), (D3DFORMAT, "TargetFormat")]),
+    Method(HRESULT, "GetDeviceCaps", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), Out(Pointer(D3DCAPS9), "pCaps")]),
+    Method(HMONITOR, "GetAdapterMonitor", [(UINT, "Adapter")]),
+    Method(HRESULT, "CreateDevice", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (D3DCREATE, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DDEVICE9), "ppReturnedDeviceInterface")]),
+]
+
+IDirect3DDevice9.methods += [
+    Method(HRESULT, "TestCooperativeLevel", []),
+    Method(UINT, "GetAvailableTextureMem", []),
+    Method(HRESULT, "EvictManagedResources", []),
+    Method(HRESULT, "GetDirect3D", [Out(Pointer(PDIRECT3D9), "ppD3D9")]),
+    Method(HRESULT, "GetDeviceCaps", [Out(Pointer(D3DCAPS9), "pCaps")]),
+    Method(HRESULT, "GetDisplayMode", [(UINT, "iSwapChain"), Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")]),
+    Method(HRESULT, "SetCursorProperties", [(UINT, "XHotSpot"), (UINT, "YHotSpot"), (PDIRECT3DSURFACE9, "pCursorBitmap")]),
+    Method(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (D3DCURSOR, "Flags")]),
+    Method(BOOL, "ShowCursor", [(BOOL, "bShow")]),
+    Method(HRESULT, "CreateAdditionalSwapChain", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DSWAPCHAIN9), "pSwapChain")]),
+    Method(HRESULT, "GetSwapChain", [(UINT, "iSwapChain"), Out(Pointer(PDIRECT3DSWAPCHAIN9), "pSwapChain")]),
+    Method(UINT, "GetNumberOfSwapChains", []),
+    Method(HRESULT, "Reset", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]),
+    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]),
+    Method(HRESULT, "GetBackBuffer", [(UINT, "iSwapChain"), (UINT, "iBackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE9), "ppBackBuffer")]),
+    Method(HRESULT, "GetRasterStatus", [(UINT, "iSwapChain"), Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]),
+    Method(HRESULT, "SetDialogBoxMode", [(BOOL, "bEnableDialogs")]),
+    Method(Void, "SetGammaRamp", [(UINT, "iSwapChain"), (D3DSGR, "Flags"), (ConstPointer(D3DGAMMARAMP), "pRamp")]),
+    Method(Void, "GetGammaRamp", [(UINT, "iSwapChain"), Out(Pointer(D3DGAMMARAMP), "pRamp")]),
+    Method(HRESULT, "CreateTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DTEXTURE9), "ppTexture"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "CreateVolumeTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Depth"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVOLUMETEXTURE9), "ppVolumeTexture"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "CreateCubeTexture", [(UINT, "EdgeLength"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DCUBETEXTURE9), "ppCubeTexture"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "CreateVertexBuffer", [(UINT, "Length"), (D3DUSAGE, "Usage"), (D3DFVF, "FVF"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVERTEXBUFFER9), "ppVertexBuffer"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "CreateIndexBuffer", [(UINT, "Length"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DINDEXBUFFER9), "ppIndexBuffer"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "CreateRenderTarget", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "CreateDepthStencilSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Discard"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "UpdateSurface", [(PDIRECT3DSURFACE9, "pSourceSurface"), (ConstPointer(RECT), "pSourceRect"), (PDIRECT3DSURFACE9, "pDestinationSurface"), (ConstPointer(POINT), "pDestPoint")]),
+    Method(HRESULT, "UpdateTexture", [(PDIRECT3DBASETEXTURE9, "pSourceTexture"), (PDIRECT3DBASETEXTURE9, "pDestinationTexture")]),
+    Method(HRESULT, "GetRenderTargetData", [(PDIRECT3DSURFACE9, "pRenderTarget"), (PDIRECT3DSURFACE9, "pDestSurface")]),
+    Method(HRESULT, "GetFrontBufferData", [(UINT, "iSwapChain"), (PDIRECT3DSURFACE9, "pDestSurface")]),
+    Method(HRESULT, "StretchRect", [(PDIRECT3DSURFACE9, "pSourceSurface"), (ConstPointer(RECT), "pSourceRect"), (PDIRECT3DSURFACE9, "pDestSurface"), (ConstPointer(RECT), "pDestRect"), (D3DTEXTUREFILTERTYPE, "Filter")]),
+    Method(HRESULT, "ColorFill", [(PDIRECT3DSURFACE9, "pSurface"), (ConstPointer(RECT), "pRect"), (D3DCOLOR, "color")]),
+    Method(HRESULT, "CreateOffscreenPlainSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle")]),
+    Method(HRESULT, "SetRenderTarget", [(DWORD, "RenderTargetIndex"), (PDIRECT3DSURFACE9, "pRenderTarget")]),
+    Method(HRESULT, "GetRenderTarget", [(DWORD, "RenderTargetIndex"), Out(Pointer(PDIRECT3DSURFACE9), "ppRenderTarget")]),
+    Method(HRESULT, "SetDepthStencilSurface", [(PDIRECT3DSURFACE9, "pNewZStencil")]),
+    Method(HRESULT, "GetDepthStencilSurface", [Out(Pointer(PDIRECT3DSURFACE9), "ppZStencilSurface")]),
+    Method(HRESULT, "BeginScene", []),
+    Method(HRESULT, "EndScene", []),
+    Method(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (D3DCLEAR, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]),
+    Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
+    Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")]),
+    Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]),
+    Method(HRESULT, "SetViewport", [(ConstPointer(D3DVIEWPORT9), "pViewport")]),
+    Method(HRESULT, "GetViewport", [Out(Pointer(D3DVIEWPORT9), "pViewport")]),
+    Method(HRESULT, "SetMaterial", [(ConstPointer(D3DMATERIAL9), "pMaterial")]),
+    Method(HRESULT, "GetMaterial", [Out(Pointer(D3DMATERIAL9), "pMaterial")]),
+    Method(HRESULT, "SetLight", [(DWORD, "Index"), (ConstPointer(D3DLIGHT9), "pLight")]),
+    Method(HRESULT, "GetLight", [(DWORD, "Index"), Out(Pointer(D3DLIGHT9), "pLight")]),
+    Method(HRESULT, "LightEnable", [(DWORD, "Index"), (BOOL, "Enable")]),
+    Method(HRESULT, "GetLightEnable", [(DWORD, "Index"), Out(Pointer(BOOL), "pEnable")]),
+    Method(HRESULT, "SetClipPlane", [(DWORD, "Index"), (ConstPointer(Float), "pPlane")]),
+    Method(HRESULT, "GetClipPlane", [(DWORD, "Index"), Out(Pointer(Float), "pPlane")]),
+    Method(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "State"), (DWORD, "Value")]),
+    Method(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "State"), Out(Pointer(DWORD), "pValue")]),
+    Method(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "Type"), Out(Pointer(PDIRECT3DSTATEBLOCK9), "ppSB")]),
+    Method(HRESULT, "BeginStateBlock", []),
+    Method(HRESULT, "EndStateBlock", [Out(Pointer(PDIRECT3DSTATEBLOCK9), "ppSB")]),
+    Method(HRESULT, "SetClipStatus", [(ConstPointer(D3DCLIPSTATUS9), "pClipStatus")]),
+    Method(HRESULT, "GetClipStatus", [Out(Pointer(D3DCLIPSTATUS9), "pClipStatus")]),
+    Method(HRESULT, "GetTexture", [(DWORD, "Stage"), Out(Pointer(PDIRECT3DBASETEXTURE9), "ppTexture")]),
+    Method(HRESULT, "SetTexture", [(DWORD, "Stage"), (PDIRECT3DBASETEXTURE9, "pTexture")]),
+    Method(HRESULT, "GetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]),
+    Method(HRESULT, "SetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), (DWORD, "Value")]),
+    Method(HRESULT, "GetSamplerState", [(DWORD, "Sampler"), (D3DSAMPLERSTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]),
+    Method(HRESULT, "SetSamplerState", [(DWORD, "Sampler"), (D3DSAMPLERSTATETYPE, "Type"), (DWORD, "Value")]),
+    Method(HRESULT, "ValidateDevice", [Out(Pointer(DWORD), "pNumPasses")]),
+    Method(HRESULT, "SetPaletteEntries", [(UINT, "PaletteNumber"), (ConstPointer(PALETTEENTRY), "pEntries")]),
+    Method(HRESULT, "GetPaletteEntries", [(UINT, "PaletteNumber"), Out(Pointer(PALETTEENTRY), "pEntries")]),
+    Method(HRESULT, "SetCurrentTexturePalette", [(UINT, "PaletteNumber")]),
+    Method(HRESULT, "GetCurrentTexturePalette", [Out(Pointer(UINT), "PaletteNumber")]),
+    Method(HRESULT, "SetScissorRect", [(ConstPointer(RECT), "pRect")]),
+    Method(HRESULT, "GetScissorRect", [Out(Pointer(RECT), "pRect")]),
+    Method(HRESULT, "SetSoftwareVertexProcessing", [(BOOL, "bSoftware")]),
+    Method(BOOL, "GetSoftwareVertexProcessing", []),
+    Method(HRESULT, "SetNPatchMode", [(Float, "nSegments")]),
+    Method(Float, "GetNPatchMode", []),
+    Method(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "StartVertex"), (UINT, "PrimitiveCount")]),
+    Method(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (INT, "BaseVertexIndex"), (UINT, "MinVertexIndex"), (UINT, "NumVertices"), (UINT, "startIndex"), (UINT, "primCount")]),
+    Method(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
+    Method(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertices"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]),
+    Method(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER9, "pDestBuffer"), (PDIRECT3DVERTEXDECLARATION9, "pVertexDecl"), (D3DPV, "Flags")]),
+    Method(HRESULT, "CreateVertexDeclaration", [(ConstPointer(D3DVERTEXELEMENT9), "pVertexElements"), Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]),
+    Method(HRESULT, "SetVertexDeclaration", [(PDIRECT3DVERTEXDECLARATION9, "pDecl")]),
+    Method(HRESULT, "GetVertexDeclaration", [Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]),
+    Method(HRESULT, "SetFVF", [(D3DFVF, "FVF")]),
+    Method(HRESULT, "GetFVF", [Out(Pointer(D3DFVF), "pFVF")]),
+    Method(HRESULT, "CreateVertexShader", [(D3DSHADER9, "pFunction"), Out(Pointer(PDIRECT3DVERTEXSHADER9), "ppShader")]),
+    Method(HRESULT, "SetVertexShader", [(PDIRECT3DVERTEXSHADER9, "pShader")]),
+    Method(HRESULT, "GetVertexShader", [Out(Pointer(PDIRECT3DVERTEXSHADER9), "ppShader")]),
+    Method(HRESULT, "SetVertexShaderConstantF", [(UINT, "StartRegister"), (Array(Const(Float), "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
+    Method(HRESULT, "GetVertexShaderConstantF", [(UINT, "StartRegister"), Out(Array(Float, "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
+    Method(HRESULT, "SetVertexShaderConstantI", [(UINT, "StartRegister"), (Array(Const(Int), "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
+    Method(HRESULT, "GetVertexShaderConstantI", [(UINT, "StartRegister"), Out(Array(Int, "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
+    Method(HRESULT, "SetVertexShaderConstantB", [(UINT, "StartRegister"), (Array(Const(BOOL), "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
+    Method(HRESULT, "GetVertexShaderConstantB", [(UINT, "StartRegister"), Out(Array(BOOL, "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
+    Method(HRESULT, "SetStreamSource", [(UINT, "StreamNumber"), (PDIRECT3DVERTEXBUFFER9, "pStreamData"), (UINT, "OffsetInBytes"), (UINT, "Stride")]),
+    Method(HRESULT, "GetStreamSource", [(UINT, "StreamNumber"), Out(Pointer(PDIRECT3DVERTEXBUFFER9), "ppStreamData"), Out(Pointer(UINT), "pOffsetInBytes"), Out(Pointer(UINT), "pStride")]),
+    Method(HRESULT, "SetStreamSourceFreq", [(UINT, "StreamNumber"), (UINT, "Setting")]),
+    Method(HRESULT, "GetStreamSourceFreq", [(UINT, "StreamNumber"), Out(Pointer(UINT), "pSetting")]),
+    Method(HRESULT, "SetIndices", [(PDIRECT3DINDEXBUFFER9, "pIndexData")]),
+    Method(HRESULT, "GetIndices", [Out(Pointer(PDIRECT3DINDEXBUFFER9), "ppIndexData")]),
+    Method(HRESULT, "CreatePixelShader", [(D3DSHADER9, "pFunction"), Out(Pointer(PDIRECT3DPIXELSHADER9), "ppShader")]),
+    Method(HRESULT, "SetPixelShader", [(PDIRECT3DPIXELSHADER9, "pShader")]),
+    Method(HRESULT, "GetPixelShader", [Out(Pointer(PDIRECT3DPIXELSHADER9), "ppShader")]),
+    Method(HRESULT, "SetPixelShaderConstantF", [(UINT, "StartRegister"), (Array(Const(Float), "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
+    Method(HRESULT, "GetPixelShaderConstantF", [(UINT, "StartRegister"), Out(Array(Float, "4*Vector4fCount"), "pConstantData"), (UINT, "Vector4fCount")]),
+    Method(HRESULT, "SetPixelShaderConstantI", [(UINT, "StartRegister"), (Array(Const(Int), "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
+    Method(HRESULT, "GetPixelShaderConstantI", [(UINT, "StartRegister"), Out(Array(Int, "4*Vector4iCount"), "pConstantData"), (UINT, "Vector4iCount")]),
+    Method(HRESULT, "SetPixelShaderConstantB", [(UINT, "StartRegister"), (Array(Const(BOOL), "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
+    Method(HRESULT, "GetPixelShaderConstantB", [(UINT, "StartRegister"), Out(Array(BOOL, "BoolCount"), "pConstantData"), (UINT, "BoolCount")]),
+    Method(HRESULT, "DrawRectPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DRECTPATCH_INFO), "pRectPatchInfo")]),
+    Method(HRESULT, "DrawTriPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DTRIPATCH_INFO), "pTriPatchInfo")]),
+    Method(HRESULT, "DeletePatch", [(UINT, "Handle")]),
+    Method(HRESULT, "CreateQuery", [(D3DQUERYTYPE, "Type"), Out(Pointer(PDIRECT3DQUERY9), "ppQuery")]),
+]
+
+IDirect3DStateBlock9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "Capture", []),
+    Method(HRESULT, "Apply", []),
+]
+
+IDirect3DSwapChain9.methods += [
+    Method(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion"), (D3DPRESENT, "dwFlags")]),
+    Method(HRESULT, "GetFrontBufferData", [(PDIRECT3DSURFACE9, "pDestSurface")]),
+    Method(HRESULT, "GetBackBuffer", [(UINT, "iBackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE9), "ppBackBuffer")]),
+    Method(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]),
+    Method(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")]),
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "GetPresentParameters", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]),
+]
+
+IDirect3DResource9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
+    Method(D3D9_RESOURCE_PRIORITY, "SetPriority", [(D3D9_RESOURCE_PRIORITY, "PriorityNew")]),
+    Method(D3D9_RESOURCE_PRIORITY, "GetPriority", []),
+    Method(Void, "PreLoad", []),
+    Method(D3DRESOURCETYPE, "GetType", []),
+]
+
+IDirect3DVertexDeclaration9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "GetDeclaration", [Out(Pointer(D3DVERTEXELEMENT9), "pElement"), Out(Pointer(UINT), "pNumElements")]),
+]
+
+IDirect3DVertexShader9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "GetFunction", [Out(OpaquePointer(Void), "pData"), Out(Pointer(UINT), "pSizeOfData")]),
+]
+
+IDirect3DPixelShader9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "GetFunction", [Out(OpaquePointer(Void), "pData"), Out(Pointer(UINT), "pSizeOfData")]),
+]
+
+IDirect3DBaseTexture9.methods += [
+    Method(DWORD, "SetLOD", [(DWORD, "LODNew")]),
+    Method(DWORD, "GetLOD", []),
+    Method(DWORD, "GetLevelCount", []),
+    Method(HRESULT, "SetAutoGenFilterType", [(D3DTEXTUREFILTERTYPE, "FilterType")]),
+    Method(D3DTEXTUREFILTERTYPE, "GetAutoGenFilterType", []),
+    Method(Void, "GenerateMipSubLevels", []),
+]
+
+IDirect3DTexture9.methods += [
+    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
+    Method(HRESULT, "GetSurfaceLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurfaceLevel")]),
+    Method(HRESULT, "LockRect", [(UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "UnlockRect", [(UINT, "Level")]),
+    Method(HRESULT, "AddDirtyRect", [(ConstPointer(RECT), "pDirtyRect")]),
+]
+
+IDirect3DVolumeTexture9.methods += [
+    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
+    Method(HRESULT, "GetVolumeLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DVOLUME9), "ppVolumeLevel")]),
+    Method(HRESULT, "LockBox", [(UINT, "Level"), Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "UnlockBox", [(UINT, "Level")]),
+    Method(HRESULT, "AddDirtyBox", [(ConstPointer(D3DBOX), "pDirtyBox")]),
+]
+
+IDirect3DCubeTexture9.methods += [
+    Method(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
+    Method(HRESULT, "GetCubeMapSurface", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE9), "ppCubeMapSurface")]),
+    Method(HRESULT, "LockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "UnlockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level")]),
+    Method(HRESULT, "AddDirtyRect", [(D3DCUBEMAP_FACES, "FaceType"), (ConstPointer(RECT), "pDirtyRect")]),
+]
+
+IDirect3DVertexBuffer9.methods += [
+    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(OpaquePointer(Void)), "ppbData"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVERTEXBUFFER_DESC), "pDesc")]),
+]
+
+IDirect3DIndexBuffer9.methods += [
+    Method(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(OpaquePointer(Void)), "ppbData"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "Unlock", []),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DINDEXBUFFER_DESC), "pDesc")]),
+]
+
+IDirect3DSurface9.methods += [
+    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")]),
+    Method(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "UnlockRect", []),
+    Method(HRESULT, "GetDC", [Out(Pointer(HDC), "phdc")]),
+    Method(HRESULT, "ReleaseDC", [(HDC, "hdc")]),
+]
+
+IDirect3DVolume9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]),
+    Method(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]),
+    Method(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppContainer")]),
+    Method(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")]),
+    Method(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]),
+    Method(HRESULT, "UnlockBox", []),
+]
+
+IDirect3DQuery9.methods += [
+    Method(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE9), "ppDevice")]),
+    Method(D3DQUERYTYPE, "GetType", []),
+    Method(DWORD, "GetDataSize", []),
+    Method(HRESULT, "Issue", [(D3DISSUE, "dwIssueFlags")]),
+    Method(HRESULT, "GetData", [Out(OpaquePointer(Void), "pData"), (DWORD, "dwSize"), (D3DGETDATA, "dwGetDataFlags")]),
+]
+
+IDirect3D9Ex.methods += [
+    Method(UINT, "GetAdapterModeCountEx", [(UINT, "Adapter"), (ConstPointer(D3DDISPLAYMODEFILTER), "pFilter") ]),
+    Method(HRESULT, "EnumAdapterModesEx", [(UINT, "Adapter"), (ConstPointer(D3DDISPLAYMODEFILTER), "pFilter"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODEEX), "pMode")]),
+    Method(HRESULT, "GetAdapterDisplayModeEx", [(UINT, "Adapter"), Out(Pointer(D3DDISPLAYMODEEX), "pMode"), Out(Pointer(D3DDISPLAYROTATION), "pRotation")]),
+    Method(HRESULT, "CreateDeviceEx", [(UINT, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (D3DCREATE, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(D3DDISPLAYMODEEX), "pFullscreenDisplayMode"), Out(Pointer(PDIRECT3DDEVICE9EX), "ppReturnedDeviceInterface")]),
+    Method(HRESULT, "GetAdapterLUID", [(UINT, "Adapter"), Out(Pointer(LUID), "pLUID")]),
+]
+
+IDirect3DDevice9Ex.methods += [
+    Method(HRESULT, "SetConvolutionMonoKernel", [(UINT, "width"), (UINT, "height"), (Array(Float, "width"), "rows"), (Array(Float, "height"), "columns")]),
+    Method(HRESULT, "ComposeRects", [(PDIRECT3DSURFACE9, "pSrc"), (PDIRECT3DSURFACE9, "pDst"), (PDIRECT3DVERTEXBUFFER9, "pSrcRectDescs"), (UINT, "NumRects"), (PDIRECT3DVERTEXBUFFER9, "pDstRectDescs"), (D3DCOMPOSERECTSOP, "Operation"), (Int, "Xoffset"), (Int, "Yoffset")]),
+    Method(HRESULT, "PresentEx", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion"), (D3DPRESENT, "dwFlags")]),
+    Method(HRESULT, "GetGPUThreadPriority", [Out(Pointer(INT), "pPriority")]),
+    Method(HRESULT, "SetGPUThreadPriority", [(INT, "Priority")]),
+    Method(HRESULT, "WaitForVBlank", [(UINT, "iSwapChain")]),
+    Method(HRESULT, "CheckResourceResidency", [(Array(PDIRECT3DRESOURCE9, "NumResources"), "pResourceArray"), (UINT32, "NumResources")]),
+    Method(HRESULT, "SetMaximumFrameLatency", [(UINT, "MaxLatency")]),
+    Method(HRESULT, "GetMaximumFrameLatency", [Out(Pointer(UINT), "pMaxLatency")]),
+    Method(HRESULT, "CheckDeviceState", [(HWND, "hDestinationWindow")]),
+    Method(HRESULT, "CreateRenderTargetEx", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle"), (D3DUSAGE, "Usage")]),
+    Method(HRESULT, "CreateOffscreenPlainSurfaceEx", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle"), (D3DUSAGE, "Usage")]),
+    Method(HRESULT, "CreateDepthStencilSurfaceEx", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (DWORD, "MultisampleQuality"), (BOOL, "Discard"), Out(Pointer(PDIRECT3DSURFACE9), "ppSurface"), Out(Pointer(HANDLE), "pSharedHandle"), (D3DUSAGE, "Usage")]),
+    Method(HRESULT, "ResetEx", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(D3DDISPLAYMODEEX), "pFullscreenDisplayMode")]),
+    Method(HRESULT, "GetDisplayModeEx", [(UINT, "iSwapChain"), Out(Pointer(D3DDISPLAYMODEEX), "pMode"), Out(Pointer(D3DDISPLAYROTATION), "pRotation")]),
+]
+
+IDirect3DSwapChain9Ex.methods += [
+    Method(HRESULT, "GetLastPresentCount", [Out(Pointer(UINT), "pLastPresentCount")]),
+    Method(HRESULT, "GetPresentStats", [Out(Pointer(D3DPRESENTSTATS), "pPresentationStatistics")]),
+    Method(HRESULT, "GetDisplayModeEx", [Out(Pointer(D3DDISPLAYMODEEX), "pMode"), Out(Pointer(D3DDISPLAYROTATION), "pRotation")]),
+]
+
+d3d9 = API("d3d9")
+d3d9.add_functions([
+    StdFunction(PDIRECT3D9, "Direct3DCreate9", [(UINT, "SDKVersion")], fail='NULL'),
+    StdFunction(HRESULT, "Direct3DCreate9Ex", [(UINT, "SDKVersion"), Out(Pointer(PDIRECT3D9EX), "ppD3D")], fail='D3DERR_NOTAVAILABLE'),
+    StdFunction(Int, "D3DPERF_BeginEvent", [(D3DCOLOR, "col"), (LPCWSTR, "wszName")], fail='-1'),
+    StdFunction(Int, "D3DPERF_EndEvent", [], fail='-1'),
+    StdFunction(Void, "D3DPERF_SetMarker", [(D3DCOLOR, "col"), (LPCWSTR, "wszName")]),
+    StdFunction(Void, "D3DPERF_SetRegion", [(D3DCOLOR, "col"), (LPCWSTR, "wszName")]),
+    StdFunction(BOOL, "D3DPERF_QueryRepeatFrame", [], fail='FALSE'),
+    StdFunction(Void, "D3DPERF_SetOptions", [(DWORD, "dwOptions")]),
+    StdFunction(DWORD, "D3DPERF_GetStatus", [], fail='0'),
+])
diff --git a/specs/d3d9caps.py b/specs/d3d9caps.py
new file mode 100644 (file)
index 0000000..1c0188f
--- /dev/null
@@ -0,0 +1,421 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d9caps.h"""
+
+from winapi import *
+from d3d9types import *
+
+D3DVS20CAPS = Flags(DWORD, [
+    "D3DVS20CAPS_PREDICATION",
+])
+
+D3DVSHADERCAPS2_0 = Struct("D3DVSHADERCAPS2_0", [
+    (D3DVS20CAPS, "Caps"),
+    (INT, "DynamicFlowControlDepth"),
+    (INT, "NumTemps"),
+    (INT, "StaticFlowControlDepth"),
+])
+
+D3DPS20CAPS = Flags(DWORD, [
+    "D3DPS20CAPS_ARBITRARYSWIZZLE",
+    "D3DPS20CAPS_GRADIENTINSTRUCTIONS",
+    "D3DPS20CAPS_PREDICATION",
+    "D3DPS20CAPS_NODEPENDENTREADLIMIT",
+    "D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT",
+])
+
+D3DPSHADERCAPS2_0 = Struct("D3DPSHADERCAPS2_0", [
+    (D3DPS20CAPS, "Caps"),
+    (INT, "DynamicFlowControlDepth"),
+    (INT, "NumTemps"),
+    (INT, "StaticFlowControlDepth"),
+    (INT, "NumInstructionSlots"),
+])
+
+D3DCAPS = Flags(DWORD, [
+    "D3DCAPS_READ_SCANLINE",
+])
+
+D3DCAPS2 = Flags(DWORD, [
+    "D3DCAPS2_FULLSCREENGAMMA",
+    "D3DCAPS2_CANCALIBRATEGAMMA",
+    "D3DCAPS2_RESERVED",
+    "D3DCAPS2_CANMANAGERESOURCE",
+    "D3DCAPS2_DYNAMICTEXTURES",
+    "D3DCAPS2_CANAUTOGENMIPMAP",
+    "D3DCAPS2_CANSHARERESOURCE",
+])
+
+D3DCAPS3 = Flags(DWORD, [
+    "D3DCAPS3_RESERVED",
+    "D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD",
+    "D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION",
+    "D3DCAPS3_COPY_TO_VIDMEM",
+    "D3DCAPS3_COPY_TO_SYSTEMMEM",
+])
+
+
+D3DPRESENT_INTERVAL = Flags(DWORD, [
+    #"D3DPRESENT_INTERVAL_DEFAULT", # 0
+    "D3DPRESENT_INTERVAL_ONE",
+    "D3DPRESENT_INTERVAL_TWO",
+    "D3DPRESENT_INTERVAL_THREE",
+    "D3DPRESENT_INTERVAL_FOUR",
+    "D3DPRESENT_INTERVAL_IMMEDIATE",
+])
+
+D3DCURSORCAPS = Flags(DWORD, [
+    "D3DCURSORCAPS_COLOR",
+    "D3DCURSORCAPS_LOWRES",
+])
+
+D3DDEVCAPS = Flags(DWORD, [
+    "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
+    "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
+    "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
+    "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
+    "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
+    "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
+    "D3DDEVCAPS_DRAWPRIMTLVERTEX",
+    "D3DDEVCAPS_CANRENDERAFTERFLIP",
+    "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
+    "D3DDEVCAPS_DRAWPRIMITIVES2",
+    "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
+    "D3DDEVCAPS_DRAWPRIMITIVES2EX",
+    "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
+    "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
+    "D3DDEVCAPS_HWRASTERIZATION",
+    "D3DDEVCAPS_PUREDEVICE",
+    "D3DDEVCAPS_QUINTICRTPATCHES",
+    "D3DDEVCAPS_RTPATCHES",
+    "D3DDEVCAPS_RTPATCHHANDLEZERO",
+    "D3DDEVCAPS_NPATCHES",
+])
+
+D3DPMISCCAPS = Flags(DWORD, [
+    "D3DPMISCCAPS_MASKZ",
+    "D3DPMISCCAPS_CULLNONE",
+    "D3DPMISCCAPS_CULLCW",
+    "D3DPMISCCAPS_CULLCCW",
+    "D3DPMISCCAPS_COLORWRITEENABLE",
+    "D3DPMISCCAPS_CLIPPLANESCALEDPOINTS",
+    "D3DPMISCCAPS_CLIPTLVERTS",
+    "D3DPMISCCAPS_TSSARGTEMP",
+    "D3DPMISCCAPS_BLENDOP",
+    "D3DPMISCCAPS_NULLREFERENCE",
+    "D3DPMISCCAPS_INDEPENDENTWRITEMASKS",
+    "D3DPMISCCAPS_PERSTAGECONSTANT",
+    "D3DPMISCCAPS_FOGANDSPECULARALPHA",
+    "D3DPMISCCAPS_SEPARATEALPHABLEND",
+    "D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS",
+    "D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING",
+    "D3DPMISCCAPS_FOGVERTEXCLAMPED",
+    "D3DPMISCCAPS_POSTBLENDSRGBCONVERT",
+])
+
+D3DLINECAPS = Flags(DWORD, [
+    "D3DLINECAPS_TEXTURE",
+    "D3DLINECAPS_ZTEST",
+    "D3DLINECAPS_BLEND",
+    "D3DLINECAPS_ALPHACMP",
+    "D3DLINECAPS_FOG",
+    "D3DLINECAPS_ANTIALIAS",
+])
+
+D3DPRASTERCAPS = Flags(DWORD, [
+    "D3DPRASTERCAPS_DITHER",
+    "D3DPRASTERCAPS_ZTEST",
+    "D3DPRASTERCAPS_FOGVERTEX",
+    "D3DPRASTERCAPS_FOGTABLE",
+    "D3DPRASTERCAPS_MIPMAPLODBIAS",
+    "D3DPRASTERCAPS_ZBUFFERLESSHSR",
+    "D3DPRASTERCAPS_FOGRANGE",
+    "D3DPRASTERCAPS_ANISOTROPY",
+    "D3DPRASTERCAPS_WBUFFER",
+    "D3DPRASTERCAPS_WFOG",
+    "D3DPRASTERCAPS_ZFOG",
+    "D3DPRASTERCAPS_COLORPERSPECTIVE",
+    "D3DPRASTERCAPS_SCISSORTEST",
+    "D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS",
+    "D3DPRASTERCAPS_DEPTHBIAS",
+    "D3DPRASTERCAPS_MULTISAMPLE_TOGGLE",
+])
+
+D3DPCMPCAPS = Flags(DWORD, [
+    "D3DPCMPCAPS_NEVER",
+    "D3DPCMPCAPS_LESS",
+    "D3DPCMPCAPS_EQUAL",
+    "D3DPCMPCAPS_LESSEQUAL",
+    "D3DPCMPCAPS_GREATER",
+    "D3DPCMPCAPS_NOTEQUAL",
+    "D3DPCMPCAPS_GREATEREQUAL",
+    "D3DPCMPCAPS_ALWAYS",
+])
+
+D3DPBLENDCAPS = Flags(DWORD, [
+    "D3DPBLENDCAPS_ZERO",
+    "D3DPBLENDCAPS_ONE",
+    "D3DPBLENDCAPS_SRCCOLOR",
+    "D3DPBLENDCAPS_INVSRCCOLOR",
+    "D3DPBLENDCAPS_SRCALPHA",
+    "D3DPBLENDCAPS_INVSRCALPHA",
+    "D3DPBLENDCAPS_DESTALPHA",
+    "D3DPBLENDCAPS_INVDESTALPHA",
+    "D3DPBLENDCAPS_DESTCOLOR",
+    "D3DPBLENDCAPS_INVDESTCOLOR",
+    "D3DPBLENDCAPS_SRCALPHASAT",
+    "D3DPBLENDCAPS_BOTHSRCALPHA",
+    "D3DPBLENDCAPS_BOTHINVSRCALPHA",
+    "D3DPBLENDCAPS_BLENDFACTOR",
+    "D3DPBLENDCAPS_SRCCOLOR2",
+    "D3DPBLENDCAPS_INVSRCCOLOR2",
+])
+
+D3DPSHADECAPS = Flags(DWORD, [
+    "D3DPSHADECAPS_COLORGOURAUDRGB",
+    "D3DPSHADECAPS_SPECULARGOURAUDRGB",
+    "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
+    "D3DPSHADECAPS_FOGGOURAUD",
+])
+
+D3DPTEXTURECAPS = Flags(DWORD, [
+    "D3DPTEXTURECAPS_PERSPECTIVE",
+    "D3DPTEXTURECAPS_POW2",
+    "D3DPTEXTURECAPS_ALPHA",
+    "D3DPTEXTURECAPS_SQUAREONLY",
+    "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
+    "D3DPTEXTURECAPS_ALPHAPALETTE",
+    "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
+    "D3DPTEXTURECAPS_PROJECTED",
+    "D3DPTEXTURECAPS_CUBEMAP",
+    "D3DPTEXTURECAPS_VOLUMEMAP",
+    "D3DPTEXTURECAPS_MIPMAP",
+    "D3DPTEXTURECAPS_MIPVOLUMEMAP",
+    "D3DPTEXTURECAPS_MIPCUBEMAP",
+    "D3DPTEXTURECAPS_CUBEMAP_POW2",
+    "D3DPTEXTURECAPS_VOLUMEMAP_POW2",
+    "D3DPTEXTURECAPS_NOPROJECTEDBUMPENV",
+])
+
+D3DPTFILTERCAPS = Flags(DWORD, [
+    "D3DPTFILTERCAPS_MINFPOINT",
+    "D3DPTFILTERCAPS_MINFLINEAR",
+    "D3DPTFILTERCAPS_MINFANISOTROPIC",
+    "D3DPTFILTERCAPS_MINFPYRAMIDALQUAD",
+    "D3DPTFILTERCAPS_MINFGAUSSIANQUAD",
+    "D3DPTFILTERCAPS_MIPFPOINT",
+    "D3DPTFILTERCAPS_MIPFLINEAR",
+    "D3DPTFILTERCAPS_CONVOLUTIONMONO",
+    "D3DPTFILTERCAPS_MAGFPOINT",
+    "D3DPTFILTERCAPS_MAGFLINEAR",
+    "D3DPTFILTERCAPS_MAGFANISOTROPIC",
+    "D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD",
+    "D3DPTFILTERCAPS_MAGFGAUSSIANQUAD",
+])
+
+D3DPTADDRESSCAPS = Flags(DWORD, [
+    "D3DPTADDRESSCAPS_WRAP",
+    "D3DPTADDRESSCAPS_MIRROR",
+    "D3DPTADDRESSCAPS_CLAMP",
+    "D3DPTADDRESSCAPS_BORDER",
+    "D3DPTADDRESSCAPS_INDEPENDENTUV",
+    "D3DPTADDRESSCAPS_MIRRORONCE",
+])
+
+D3DSTENCILCAPS = Flags(DWORD, [
+    "D3DSTENCILCAPS_KEEP",
+    "D3DSTENCILCAPS_ZERO",
+    "D3DSTENCILCAPS_REPLACE",
+    "D3DSTENCILCAPS_INCRSAT",
+    "D3DSTENCILCAPS_DECRSAT",
+    "D3DSTENCILCAPS_INVERT",
+    "D3DSTENCILCAPS_INCR",
+    "D3DSTENCILCAPS_DECR",
+    "D3DSTENCILCAPS_TWOSIDED",
+])
+
+D3DTEXOPCAPS = Flags(DWORD, [
+    "D3DTEXOPCAPS_DISABLE",
+    "D3DTEXOPCAPS_SELECTARG1",
+    "D3DTEXOPCAPS_SELECTARG2",
+    "D3DTEXOPCAPS_MODULATE",
+    "D3DTEXOPCAPS_MODULATE2X",
+    "D3DTEXOPCAPS_MODULATE4X",
+    "D3DTEXOPCAPS_ADD",
+    "D3DTEXOPCAPS_ADDSIGNED",
+    "D3DTEXOPCAPS_ADDSIGNED2X",
+    "D3DTEXOPCAPS_SUBTRACT",
+    "D3DTEXOPCAPS_ADDSMOOTH",
+    "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
+    "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
+    "D3DTEXOPCAPS_BLENDFACTORALPHA",
+    "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
+    "D3DTEXOPCAPS_BLENDCURRENTALPHA",
+    "D3DTEXOPCAPS_PREMODULATE",
+    "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
+    "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
+    "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
+    "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
+    "D3DTEXOPCAPS_BUMPENVMAP",
+    "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
+    "D3DTEXOPCAPS_DOTPRODUCT3",
+    "D3DTEXOPCAPS_MULTIPLYADD",
+    "D3DTEXOPCAPS_LERP",
+])
+
+D3DFVFCAPS = Flags(DWORD, [
+    "D3DFVFCAPS_TEXCOORDCOUNTMASK",
+    "D3DFVFCAPS_DONOTSTRIPELEMENTS",
+    "D3DFVFCAPS_PSIZE",
+])
+
+D3DVTXPCAPS = Flags(DWORD, [
+    "D3DVTXPCAPS_TEXGEN",
+    "D3DVTXPCAPS_MATERIALSOURCE7",
+    "D3DVTXPCAPS_DIRECTIONALLIGHTS",
+    "D3DVTXPCAPS_POSITIONALLIGHTS",
+    "D3DVTXPCAPS_LOCALVIEWER",
+    "D3DVTXPCAPS_TWEENING",
+    "D3DVTXPCAPS_TEXGEN_SPHEREMAP",
+    "D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER",
+])
+
+D3DDEVCAPS2 = Flags(DWORD, [
+    "D3DDEVCAPS2_STREAMOFFSET",
+    "D3DDEVCAPS2_DMAPNPATCH",
+    "D3DDEVCAPS2_ADAPTIVETESSRTPATCH",
+    "D3DDEVCAPS2_ADAPTIVETESSNPATCH",
+    "D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES",
+    "D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH",
+    "D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET",
+])
+
+D3DDTCAPS = Flags(DWORD, [
+    "D3DDTCAPS_UBYTE4",
+    "D3DDTCAPS_UBYTE4N",
+    "D3DDTCAPS_SHORT2N",
+    "D3DDTCAPS_SHORT4N",
+    "D3DDTCAPS_USHORT2N",
+    "D3DDTCAPS_USHORT4N",
+    "D3DDTCAPS_UDEC3",
+    "D3DDTCAPS_DEC3N",
+    "D3DDTCAPS_FLOAT16_2",
+    "D3DDTCAPS_FLOAT16_4",
+])
+
+#D3DPS_VERSION = Enum("DWORD", [
+#    "D3DPS_VERSION(0,0)",
+#    "D3DPS_VERSION(1,0)",
+#    "D3DPS_VERSION(1,1)",
+#    "D3DPS_VERSION(1,2)",
+#    "D3DPS_VERSION(1,3)",
+#    "D3DPS_VERSION(1,4)",
+#    "D3DPS_VERSION(2,0)",
+#    "D3DPS_VERSION(3,0)",
+#])
+D3DPS_VERSION = DWORD
+
+#D3DVS_VERSION = Enum("DWORD", [
+#    "D3DVS_VERSION(0,0)",
+#    "D3DVS_VERSION(1,0)",
+#    "D3DVS_VERSION(1,1)",
+#    "D3DVS_VERSION(2,0)",
+#    "D3DVS_VERSION(3,0)",
+#])
+D3DVS_VERSION = DWORD
+
+D3DCAPS9 = Struct("D3DCAPS9", [
+    (D3DDEVTYPE, "DeviceType"),
+    (UINT, "AdapterOrdinal"),
+    (D3DCAPS, "Caps"),
+    (D3DCAPS2, "Caps2"),
+    (D3DCAPS3, "Caps3"),
+    (D3DPRESENT_INTERVAL, "PresentationIntervals"),
+    (D3DCURSORCAPS, "CursorCaps"),
+    (D3DDEVCAPS, "DevCaps"),
+    (D3DPMISCCAPS, "PrimitiveMiscCaps"),
+    (D3DPRASTERCAPS, "RasterCaps"),
+    (D3DPCMPCAPS, "ZCmpCaps"),
+    (D3DPBLENDCAPS, "SrcBlendCaps"),
+    (D3DPBLENDCAPS, "DestBlendCaps"),
+    (D3DPCMPCAPS, "AlphaCmpCaps"),
+    (D3DPSHADECAPS, "ShadeCaps"),
+    (D3DPTEXTURECAPS, "TextureCaps"),
+    (D3DPTFILTERCAPS, "TextureFilterCaps"),
+    (D3DPTFILTERCAPS, "CubeTextureFilterCaps"),
+    (D3DPTFILTERCAPS, "VolumeTextureFilterCaps"),
+    (D3DPTADDRESSCAPS, "TextureAddressCaps"),
+    (D3DPTADDRESSCAPS, "VolumeTextureAddressCaps"),
+    (D3DLINECAPS, "LineCaps"),
+    (DWORD, "MaxTextureWidth"),
+    (DWORD, "MaxTextureHeight"),
+    (DWORD, "MaxVolumeExtent"),
+    (DWORD, "MaxTextureRepeat"),
+    (DWORD, "MaxTextureAspectRatio"),
+    (DWORD, "MaxAnisotropy"),
+    (Float, "MaxVertexW"),
+    (Float, "GuardBandLeft"),
+    (Float, "GuardBandTop"),
+    (Float, "GuardBandRight"),
+    (Float, "GuardBandBottom"),
+    (Float, "ExtentsAdjust"),
+    (D3DSTENCILCAPS, "StencilCaps"),
+    (D3DFVFCAPS, "FVFCaps"),
+    (D3DTEXOPCAPS, "TextureOpCaps"),
+    (DWORD, "MaxTextureBlendStages"),
+    (DWORD, "MaxSimultaneousTextures"),
+    (D3DVTXPCAPS, "VertexProcessingCaps"),
+    (DWORD, "MaxActiveLights"),
+    (DWORD, "MaxUserClipPlanes"),
+    (DWORD, "MaxVertexBlendMatrices"),
+    (DWORD, "MaxVertexBlendMatrixIndex"),
+    (Float, "MaxPointSize"),
+    (DWORD, "MaxPrimitiveCount"),
+    (DWORD, "MaxVertexIndex"),
+    (DWORD, "MaxStreams"),
+    (DWORD, "MaxStreamStride"),
+    (D3DVS_VERSION, "VertexShaderVersion"),
+    (DWORD, "MaxVertexShaderConst"),
+    (D3DPS_VERSION, "PixelShaderVersion"),
+    (Float, "PixelShader1xMaxValue"),
+    (D3DDEVCAPS2, "DevCaps2"),
+    (Float, "MaxNpatchTessellationLevel"),
+    (DWORD, "Reserved5"),
+    (UINT, "MasterAdapterOrdinal"),
+    (UINT, "AdapterOrdinalInGroup"),
+    (UINT, "NumberOfAdaptersInGroup"),
+    (D3DDTCAPS, "DeclTypes"),
+    (DWORD, "NumSimultaneousRTs"),
+    (D3DPTFILTERCAPS, "StretchRectFilterCaps"),
+    (D3DVSHADERCAPS2_0, "VS20Caps"),
+    (D3DPSHADERCAPS2_0, "PS20Caps"),
+    (D3DPTFILTERCAPS, "VertexTextureFilterCaps"),
+    (DWORD, "MaxVShaderInstructionsExecuted"),
+    (DWORD, "MaxPShaderInstructionsExecuted"),
+    (DWORD, "MaxVertexShader30InstructionSlots"),
+    (DWORD, "MaxPixelShader30InstructionSlots"),
+])
+
diff --git a/specs/d3d9types.py b/specs/d3d9types.py
new file mode 100644 (file)
index 0000000..73011ee
--- /dev/null
@@ -0,0 +1,1320 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3d9types.h"""
+
+from winapi import *
+
+D3DCOLOR = Alias("D3DCOLOR", DWORD)
+
+D3DVECTOR = Struct("D3DVECTOR", [
+    (Float, "x"),
+    (Float, "y"),
+    (Float, "z"),
+])
+
+D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
+    (Float, "r"),
+    (Float, "g"),
+    (Float, "b"),
+    (Float, "a"),
+])
+
+D3DRECT = Struct("D3DRECT", [
+    (LONG, "x1"),
+    (LONG, "y1"),
+    (LONG, "x2"),
+    (LONG, "y2"),
+])
+
+D3DMATRIX = Struct("D3DMATRIX", [
+    (Array(Array(Float, "4"), "4"), "m"),
+])
+
+D3DVIEWPORT9 = Struct("D3DVIEWPORT9", [
+    (DWORD, "X"),
+    (DWORD, "Y"),
+    (DWORD, "Width"),
+    (DWORD, "Height"),
+    (Float, "MinZ"),
+    (Float, "MaxZ"),
+])
+
+D3DCLIP = Flags(DWORD, [
+    "D3DCLIPPLANE0",
+    "D3DCLIPPLANE1",
+    "D3DCLIPPLANE2",
+    "D3DCLIPPLANE3",
+    "D3DCLIPPLANE4",
+    "D3DCLIPPLANE5",
+])
+
+D3DCS = Flags(DWORD, [
+    "D3DCS_ALL",
+    "D3DCS_LEFT",
+    "D3DCS_RIGHT",
+    "D3DCS_TOP",
+    "D3DCS_BOTTOM",
+    "D3DCS_FRONT",
+    "D3DCS_BACK",
+    "D3DCS_PLANE0",
+    "D3DCS_PLANE1",
+    "D3DCS_PLANE2",
+    "D3DCS_PLANE3",
+    "D3DCS_PLANE4",
+    "D3DCS_PLANE5",
+])
+
+D3DCLIPSTATUS9 = Struct("D3DCLIPSTATUS9", [
+    (DWORD, "ClipUnion"),
+    (DWORD, "ClipIntersection"),
+])
+
+D3DMATERIAL9 = Struct("D3DMATERIAL9", [
+    (D3DCOLORVALUE, "Diffuse"),
+    (D3DCOLORVALUE, "Ambient"),
+    (D3DCOLORVALUE, "Specular"),
+    (D3DCOLORVALUE, "Emissive"),
+    (Float, "Power"),
+])
+
+D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
+    "D3DLIGHT_POINT",
+    "D3DLIGHT_SPOT",
+    "D3DLIGHT_DIRECTIONAL",
+])
+
+D3DLIGHT9 = Struct("D3DLIGHT9", [
+    (D3DLIGHTTYPE, "Type"),
+    (D3DCOLORVALUE, "Diffuse"),
+    (D3DCOLORVALUE, "Specular"),
+    (D3DCOLORVALUE, "Ambient"),
+    (D3DVECTOR, "Position"),
+    (D3DVECTOR, "Direction"),
+    (Float, "Range"),
+    (Float, "Falloff"),
+    (Float, "Attenuation0"),
+    (Float, "Attenuation1"),
+    (Float, "Attenuation2"),
+    (Float, "Theta"),
+    (Float, "Phi"),
+])
+
+D3DCLEAR = Flags(DWORD, [
+    "D3DCLEAR_TARGET",
+    "D3DCLEAR_ZBUFFER",
+    "D3DCLEAR_STENCIL",
+])
+
+D3DSHADEMODE = Enum("D3DSHADEMODE", [
+    "D3DSHADE_FLAT",
+    "D3DSHADE_GOURAUD",
+    "D3DSHADE_PHONG",
+])
+
+D3DFILLMODE = Enum("D3DFILLMODE", [
+    "D3DFILL_POINT",
+    "D3DFILL_WIREFRAME",
+    "D3DFILL_SOLID",
+])
+
+D3DBLEND = Enum("D3DBLEND", [
+    "D3DBLEND_ZERO",
+    "D3DBLEND_ONE",
+    "D3DBLEND_SRCCOLOR",
+    "D3DBLEND_INVSRCCOLOR",
+    "D3DBLEND_SRCALPHA",
+    "D3DBLEND_INVSRCALPHA",
+    "D3DBLEND_DESTALPHA",
+    "D3DBLEND_INVDESTALPHA",
+    "D3DBLEND_DESTCOLOR",
+    "D3DBLEND_INVDESTCOLOR",
+    "D3DBLEND_SRCALPHASAT",
+    "D3DBLEND_BOTHSRCALPHA",
+    "D3DBLEND_BOTHINVSRCALPHA",
+    "D3DBLEND_BLENDFACTOR",
+    "D3DBLEND_INVBLENDFACTOR",
+    "D3DBLEND_SRCCOLOR2",
+    "D3DBLEND_INVSRCCOLOR2",
+])
+
+D3DBLENDOP = Enum("D3DBLENDOP", [
+    "D3DBLENDOP_ADD",
+    "D3DBLENDOP_SUBTRACT",
+    "D3DBLENDOP_REVSUBTRACT",
+    "D3DBLENDOP_MIN",
+    "D3DBLENDOP_MAX",
+])
+
+D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
+    "D3DTADDRESS_WRAP",
+    "D3DTADDRESS_MIRROR",
+    "D3DTADDRESS_CLAMP",
+    "D3DTADDRESS_BORDER",
+    "D3DTADDRESS_MIRRORONCE",
+])
+
+D3DCULL = Enum("D3DCULL", [
+    "D3DCULL_NONE",
+    "D3DCULL_CW",
+    "D3DCULL_CCW",
+])
+
+D3DCMPFUNC = Enum("D3DCMPFUNC", [
+    "D3DCMP_NEVER",
+    "D3DCMP_LESS",
+    "D3DCMP_EQUAL",
+    "D3DCMP_LESSEQUAL",
+    "D3DCMP_GREATER",
+    "D3DCMP_NOTEQUAL",
+    "D3DCMP_GREATEREQUAL",
+    "D3DCMP_ALWAYS",
+])
+
+D3DSTENCILOP = Enum("D3DSTENCILOP", [
+    "D3DSTENCILOP_KEEP",
+    "D3DSTENCILOP_ZERO",
+    "D3DSTENCILOP_REPLACE",
+    "D3DSTENCILOP_INCRSAT",
+    "D3DSTENCILOP_DECRSAT",
+    "D3DSTENCILOP_INVERT",
+    "D3DSTENCILOP_INCR",
+    "D3DSTENCILOP_DECR",
+])
+
+D3DFOGMODE = Enum("D3DFOGMODE", [
+    "D3DFOG_NONE",
+    "D3DFOG_EXP",
+    "D3DFOG_EXP2",
+    "D3DFOG_LINEAR",
+])
+
+D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
+    "D3DZB_FALSE",
+    "D3DZB_TRUE",
+    "D3DZB_USEW",
+])
+
+D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
+    "D3DPT_POINTLIST",
+    "D3DPT_LINELIST",
+    "D3DPT_LINESTRIP",
+    "D3DPT_TRIANGLELIST",
+    "D3DPT_TRIANGLESTRIP",
+    "D3DPT_TRIANGLEFAN",
+])
+
+D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
+    "D3DTS_VIEW",
+    "D3DTS_PROJECTION",
+    "D3DTS_TEXTURE0",
+    "D3DTS_TEXTURE1",
+    "D3DTS_TEXTURE2",
+    "D3DTS_TEXTURE3",
+    "D3DTS_TEXTURE4",
+    "D3DTS_TEXTURE5",
+    "D3DTS_TEXTURE6",
+    "D3DTS_TEXTURE7",
+])
+
+D3DTS = Flags(DWORD, [
+    "D3DTS_WORLD",
+    "D3DTS_WORLD1",
+    "D3DTS_WORLD2",
+    "D3DTS_WORLD3",
+])
+
+D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
+    "D3DRS_ZENABLE",
+    "D3DRS_FILLMODE",
+    "D3DRS_SHADEMODE",
+    "D3DRS_ZWRITEENABLE",
+    "D3DRS_ALPHATESTENABLE",
+    "D3DRS_LASTPIXEL",
+    "D3DRS_SRCBLEND",
+    "D3DRS_DESTBLEND",
+    "D3DRS_CULLMODE",
+    "D3DRS_ZFUNC",
+    "D3DRS_ALPHAREF",
+    "D3DRS_ALPHAFUNC",
+    "D3DRS_DITHERENABLE",
+    "D3DRS_ALPHABLENDENABLE",
+    "D3DRS_FOGENABLE",
+    "D3DRS_SPECULARENABLE",
+    "D3DRS_FOGCOLOR",
+    "D3DRS_FOGTABLEMODE",
+    "D3DRS_FOGSTART",
+    "D3DRS_FOGEND",
+    "D3DRS_FOGDENSITY",
+    "D3DRS_RANGEFOGENABLE",
+    "D3DRS_STENCILENABLE",
+    "D3DRS_STENCILFAIL",
+    "D3DRS_STENCILZFAIL",
+    "D3DRS_STENCILPASS",
+    "D3DRS_STENCILFUNC",
+    "D3DRS_STENCILREF",
+    "D3DRS_STENCILMASK",
+    "D3DRS_STENCILWRITEMASK",
+    "D3DRS_TEXTUREFACTOR",
+    "D3DRS_WRAP0",
+    "D3DRS_WRAP1",
+    "D3DRS_WRAP2",
+    "D3DRS_WRAP3",
+    "D3DRS_WRAP4",
+    "D3DRS_WRAP5",
+    "D3DRS_WRAP6",
+    "D3DRS_WRAP7",
+    "D3DRS_CLIPPING",
+    "D3DRS_LIGHTING",
+    "D3DRS_AMBIENT",
+    "D3DRS_FOGVERTEXMODE",
+    "D3DRS_COLORVERTEX",
+    "D3DRS_LOCALVIEWER",
+    "D3DRS_NORMALIZENORMALS",
+    "D3DRS_DIFFUSEMATERIALSOURCE",
+    "D3DRS_SPECULARMATERIALSOURCE",
+    "D3DRS_AMBIENTMATERIALSOURCE",
+    "D3DRS_EMISSIVEMATERIALSOURCE",
+    "D3DRS_VERTEXBLEND",
+    "D3DRS_CLIPPLANEENABLE",
+    "D3DRS_POINTSIZE",
+    "D3DRS_POINTSIZE_MIN",
+    "D3DRS_POINTSPRITEENABLE",
+    "D3DRS_POINTSCALEENABLE",
+    "D3DRS_POINTSCALE_A",
+    "D3DRS_POINTSCALE_B",
+    "D3DRS_POINTSCALE_C",
+    "D3DRS_MULTISAMPLEANTIALIAS",
+    "D3DRS_MULTISAMPLEMASK",
+    "D3DRS_PATCHEDGESTYLE",
+    "D3DRS_DEBUGMONITORTOKEN",
+    "D3DRS_POINTSIZE_MAX",
+    "D3DRS_INDEXEDVERTEXBLENDENABLE",
+    "D3DRS_COLORWRITEENABLE",
+    "D3DRS_TWEENFACTOR",
+    "D3DRS_BLENDOP",
+    "D3DRS_POSITIONDEGREE",
+    "D3DRS_NORMALDEGREE",
+    "D3DRS_SCISSORTESTENABLE",
+    "D3DRS_SLOPESCALEDEPTHBIAS",
+    "D3DRS_ANTIALIASEDLINEENABLE",
+    "D3DRS_MINTESSELLATIONLEVEL",
+    "D3DRS_MAXTESSELLATIONLEVEL",
+    "D3DRS_ADAPTIVETESS_X",
+    "D3DRS_ADAPTIVETESS_Y",
+    "D3DRS_ADAPTIVETESS_Z",
+    "D3DRS_ADAPTIVETESS_W",
+    "D3DRS_ENABLEADAPTIVETESSELLATION",
+    "D3DRS_TWOSIDEDSTENCILMODE",
+    "D3DRS_CCW_STENCILFAIL",
+    "D3DRS_CCW_STENCILZFAIL",
+    "D3DRS_CCW_STENCILPASS",
+    "D3DRS_CCW_STENCILFUNC",
+    "D3DRS_COLORWRITEENABLE1",
+    "D3DRS_COLORWRITEENABLE2",
+    "D3DRS_COLORWRITEENABLE3",
+    "D3DRS_BLENDFACTOR",
+    "D3DRS_SRGBWRITEENABLE",
+    "D3DRS_DEPTHBIAS",
+    "D3DRS_WRAP8",
+    "D3DRS_WRAP9",
+    "D3DRS_WRAP10",
+    "D3DRS_WRAP11",
+    "D3DRS_WRAP12",
+    "D3DRS_WRAP13",
+    "D3DRS_WRAP14",
+    "D3DRS_WRAP15",
+    "D3DRS_SEPARATEALPHABLENDENABLE",
+    "D3DRS_SRCBLENDALPHA",
+    "D3DRS_DESTBLENDALPHA",
+    "D3DRS_BLENDOPALPHA",
+])
+
+D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
+    "D3DMCS_MATERIAL",
+    "D3DMCS_COLOR1",
+    "D3DMCS_COLOR2",
+])
+
+D3DWRAP = Flags(DWORD, [
+    "D3DWRAP_U",
+    "D3DWRAP_V",
+    "D3DWRAP_W",
+])
+
+D3DWRAPCOORD = Flags(DWORD, [
+    "D3DWRAPCOORD_0",
+    "D3DWRAPCOORD_1",
+    "D3DWRAPCOORD_2",
+    "D3DWRAPCOORD_3",
+])
+
+D3DCOLORWRITEENABLE = Flags(DWORD, [
+    "D3DCOLORWRITEENABLE_RED",
+    "D3DCOLORWRITEENABLE_GREEN",
+    "D3DCOLORWRITEENABLE_BLUE",
+    "D3DCOLORWRITEENABLE_ALPHA",
+])
+
+D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
+    "D3DTSS_COLOROP",
+    "D3DTSS_COLORARG1",
+    "D3DTSS_COLORARG2",
+    "D3DTSS_ALPHAOP",
+    "D3DTSS_ALPHAARG1",
+    "D3DTSS_ALPHAARG2",
+    "D3DTSS_BUMPENVMAT00",
+    "D3DTSS_BUMPENVMAT01",
+    "D3DTSS_BUMPENVMAT10",
+    "D3DTSS_BUMPENVMAT11",
+    "D3DTSS_TEXCOORDINDEX",
+    "D3DTSS_BUMPENVLSCALE",
+    "D3DTSS_BUMPENVLOFFSET",
+    "D3DTSS_TEXTURETRANSFORMFLAGS",
+    "D3DTSS_COLORARG0",
+    "D3DTSS_ALPHAARG0",
+    "D3DTSS_RESULTARG",
+    "D3DTSS_CONSTANT",
+])
+
+D3DSAMPLERSTATETYPE = Enum("D3DSAMPLERSTATETYPE", [
+
+    "D3DSAMP_ADDRESSU",
+    "D3DSAMP_ADDRESSV",
+    "D3DSAMP_ADDRESSW",
+    "D3DSAMP_BORDERCOLOR",
+    "D3DSAMP_MAGFILTER",
+    "D3DSAMP_MINFILTER",
+    "D3DSAMP_MIPFILTER",
+    "D3DSAMP_MIPMAPLODBIAS",
+    "D3DSAMP_MAXMIPLEVEL",
+    "D3DSAMP_MAXANISOTROPY",
+    "D3DSAMP_SRGBTEXTURE",
+    "D3DSAMP_ELEMENTINDEX",
+    "D3DSAMP_DMAPOFFSET",
+])
+
+D3DTSS = Flags(DWORD, [
+    "D3DTSS_TCI_PASSTHRU",
+    "D3DTSS_TCI_CAMERASPACENORMAL",
+    "D3DTSS_TCI_CAMERASPACEPOSITION",
+    "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
+    "D3DTSS_TCI_SPHEREMAP",
+])
+
+D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
+    "D3DTOP_DISABLE",
+    "D3DTOP_SELECTARG1",
+    "D3DTOP_SELECTARG2",
+    "D3DTOP_MODULATE",
+    "D3DTOP_MODULATE2X",
+    "D3DTOP_MODULATE4X",
+    "D3DTOP_ADD",
+    "D3DTOP_ADDSIGNED",
+    "D3DTOP_ADDSIGNED2X",
+    "D3DTOP_SUBTRACT",
+    "D3DTOP_ADDSMOOTH",
+    "D3DTOP_BLENDDIFFUSEALPHA",
+    "D3DTOP_BLENDTEXTUREALPHA",
+    "D3DTOP_BLENDFACTORALPHA",
+    "D3DTOP_BLENDTEXTUREALPHAPM",
+    "D3DTOP_BLENDCURRENTALPHA",
+    "D3DTOP_PREMODULATE",
+    "D3DTOP_MODULATEALPHA_ADDCOLOR",
+    "D3DTOP_MODULATECOLOR_ADDALPHA",
+    "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
+    "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
+    "D3DTOP_BUMPENVMAP",
+    "D3DTOP_BUMPENVMAPLUMINANCE",
+    "D3DTOP_DOTPRODUCT3",
+    "D3DTOP_MULTIPLYADD",
+    "D3DTOP_LERP",
+])
+
+D3DTA = Flags(DWORD, [
+    "D3DTA_SELECTMASK",
+    "D3DTA_DIFFUSE",
+    "D3DTA_CURRENT",
+    "D3DTA_TEXTURE",
+    "D3DTA_TFACTOR",
+    "D3DTA_SPECULAR",
+    "D3DTA_TEMP",
+    "D3DTA_CONSTANT",
+    "D3DTA_COMPLEMENT",
+    "D3DTA_ALPHAREPLICATE",
+])
+
+D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
+    "D3DTEXF_NONE",
+    "D3DTEXF_POINT",
+    "D3DTEXF_LINEAR",
+    "D3DTEXF_ANISOTROPIC",
+    "D3DTEXF_PYRAMIDALQUAD",
+    "D3DTEXF_GAUSSIANQUAD",
+    "D3DTEXF_CONVOLUTIONMONO",
+])
+
+D3DPV = Flags(DWORD, [
+    "D3DPV_DONOTCOPYDATA",
+])
+
+D3DFVF = Flags(DWORD, [
+    "D3DFVF_RESERVED0",
+    "D3DFVF_POSITION_MASK",
+    "D3DFVF_XYZ",
+    "D3DFVF_XYZRHW",
+    "D3DFVF_XYZB1",
+    "D3DFVF_XYZB2",
+    "D3DFVF_XYZB3",
+    "D3DFVF_XYZB4",
+    "D3DFVF_XYZB5",
+    "D3DFVF_XYZW",
+    "D3DFVF_NORMAL",
+    "D3DFVF_PSIZE",
+    "D3DFVF_DIFFUSE",
+    "D3DFVF_SPECULAR",
+    #"D3DFVF_TEXCOUNT_MASK",
+    #"D3DFVF_TEXCOUNT_SHIFT",
+    #"D3DFVF_TEX0",
+    #"D3DFVF_TEX1",
+    #"D3DFVF_TEX2",
+    #"D3DFVF_TEX3",
+    #"D3DFVF_TEX4",
+    #"D3DFVF_TEX5",
+    #"D3DFVF_TEX6",
+    #"D3DFVF_TEX7",
+    #"D3DFVF_TEX8",
+    "D3DFVF_LASTBETA_UBYTE4",
+    "D3DFVF_LASTBETA_D3DCOLOR",
+    "D3DFVF_RESERVED2",
+    #"D3DFVF_TEXCOORDSIZE3(0)",
+    #"D3DFVF_TEXCOORDSIZE2(0)",
+    #"D3DFVF_TEXCOORDSIZE4(0)",
+    #"D3DFVF_TEXCOORDSIZE1(0)",
+    #"D3DFVF_TEXCOORDSIZE3(1)",
+    #"D3DFVF_TEXCOORDSIZE2(1)",
+    #"D3DFVF_TEXCOORDSIZE4(1)",
+    #"D3DFVF_TEXCOORDSIZE1(1)",
+    #"D3DFVF_TEXCOORDSIZE3(2)",
+    #"D3DFVF_TEXCOORDSIZE2(2)",
+    #"D3DFVF_TEXCOORDSIZE4(2)",
+    #"D3DFVF_TEXCOORDSIZE1(2)",
+    #"D3DFVF_TEXCOORDSIZE3(3)",
+    #"D3DFVF_TEXCOORDSIZE2(3)",
+    #"D3DFVF_TEXCOORDSIZE4(3)",
+    #"D3DFVF_TEXCOORDSIZE1(3)",
+])
+
+D3DDECLUSAGE = Enum("D3DDECLUSAGE", [
+    "D3DDECLUSAGE_POSITION",
+    "D3DDECLUSAGE_BLENDWEIGHT",
+    "D3DDECLUSAGE_BLENDINDICES",
+    "D3DDECLUSAGE_NORMAL",
+    "D3DDECLUSAGE_PSIZE",
+    "D3DDECLUSAGE_TEXCOORD",
+    "D3DDECLUSAGE_TANGENT",
+    "D3DDECLUSAGE_BINORMAL",
+    "D3DDECLUSAGE_TESSFACTOR",
+    "D3DDECLUSAGE_POSITIONT",
+    "D3DDECLUSAGE_COLOR",
+    "D3DDECLUSAGE_FOG",
+    "D3DDECLUSAGE_DEPTH",
+    "D3DDECLUSAGE_SAMPLE",
+])
+
+D3DDECLMETHOD = Enum("D3DDECLMETHOD", [
+    "D3DDECLMETHOD_DEFAULT",
+    "D3DDECLMETHOD_PARTIALU",
+    "D3DDECLMETHOD_PARTIALV",
+    "D3DDECLMETHOD_CROSSUV",
+    "D3DDECLMETHOD_UV",
+    "D3DDECLMETHOD_LOOKUP",
+    "D3DDECLMETHOD_LOOKUPPRESAMPLED",
+])
+
+D3DDECLTYPE = Enum("D3DDECLTYPE", [
+    "D3DDECLTYPE_FLOAT1",
+    "D3DDECLTYPE_FLOAT2",
+    "D3DDECLTYPE_FLOAT3",
+    "D3DDECLTYPE_FLOAT4",
+    "D3DDECLTYPE_D3DCOLOR",
+    "D3DDECLTYPE_UBYTE4",
+    "D3DDECLTYPE_SHORT2",
+    "D3DDECLTYPE_SHORT4",
+    "D3DDECLTYPE_UBYTE4N",
+    "D3DDECLTYPE_SHORT2N",
+    "D3DDECLTYPE_SHORT4N",
+    "D3DDECLTYPE_USHORT2N",
+    "D3DDECLTYPE_USHORT4N",
+    "D3DDECLTYPE_UDEC3",
+    "D3DDECLTYPE_DEC3N",
+    "D3DDECLTYPE_FLOAT16_2",
+    "D3DDECLTYPE_FLOAT16_4",
+    "D3DDECLTYPE_UNUSED",
+])
+
+D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [
+    (WORD, "Stream"),
+    (WORD, "Offset"),
+    (BYTE, "Type"),
+    (BYTE, "Method"),
+    (BYTE, "Usage"),
+    (BYTE, "UsageIndex"),
+])
+
+D3DSHADER_INSTRUCTION_OPCODE_TYPE = Enum("D3DSHADER_INSTRUCTION_OPCODE_TYPE", [
+    "D3DSIO_NOP",
+    "D3DSIO_MOV",
+    "D3DSIO_ADD",
+    "D3DSIO_SUB",
+    "D3DSIO_MAD",
+    "D3DSIO_MUL",
+    "D3DSIO_RCP",
+    "D3DSIO_RSQ",
+    "D3DSIO_DP3",
+    "D3DSIO_DP4",
+    "D3DSIO_MIN",
+    "D3DSIO_MAX",
+    "D3DSIO_SLT",
+    "D3DSIO_SGE",
+    "D3DSIO_EXP",
+    "D3DSIO_LOG",
+    "D3DSIO_LIT",
+    "D3DSIO_DST",
+    "D3DSIO_LRP",
+    "D3DSIO_FRC",
+    "D3DSIO_M4x4",
+    "D3DSIO_M4x3",
+    "D3DSIO_M3x4",
+    "D3DSIO_M3x3",
+    "D3DSIO_M3x2",
+    "D3DSIO_CALL",
+    "D3DSIO_CALLNZ",
+    "D3DSIO_LOOP",
+    "D3DSIO_RET",
+    "D3DSIO_ENDLOOP",
+    "D3DSIO_LABEL",
+    "D3DSIO_DCL",
+    "D3DSIO_POW",
+    "D3DSIO_CRS",
+    "D3DSIO_SGN",
+    "D3DSIO_ABS",
+    "D3DSIO_NRM",
+    "D3DSIO_SINCOS",
+    "D3DSIO_REP",
+    "D3DSIO_ENDREP",
+    "D3DSIO_IF",
+    "D3DSIO_IFC",
+    "D3DSIO_ELSE",
+    "D3DSIO_ENDIF",
+    "D3DSIO_BREAK",
+    "D3DSIO_BREAKC",
+    "D3DSIO_MOVA",
+    "D3DSIO_DEFB",
+    "D3DSIO_DEFI",
+    "D3DSIO_TEXCOORD",
+    "D3DSIO_TEXKILL",
+    "D3DSIO_TEX",
+    "D3DSIO_TEXBEM",
+    "D3DSIO_TEXBEML",
+    "D3DSIO_TEXREG2AR",
+    "D3DSIO_TEXREG2GB",
+    "D3DSIO_TEXM3x2PAD",
+    "D3DSIO_TEXM3x2TEX",
+    "D3DSIO_TEXM3x3PAD",
+    "D3DSIO_TEXM3x3TEX",
+    "D3DSIO_RESERVED0",
+    "D3DSIO_TEXM3x3SPEC",
+    "D3DSIO_TEXM3x3VSPEC",
+    "D3DSIO_EXPP",
+    "D3DSIO_LOGP",
+    "D3DSIO_CND",
+    "D3DSIO_DEF",
+    "D3DSIO_TEXREG2RGB",
+    "D3DSIO_TEXDP3TEX",
+    "D3DSIO_TEXM3x2DEPTH",
+    "D3DSIO_TEXDP3",
+    "D3DSIO_TEXM3x3",
+    "D3DSIO_TEXDEPTH",
+    "D3DSIO_CMP",
+    "D3DSIO_BEM",
+    "D3DSIO_DP2ADD",
+    "D3DSIO_DSX",
+    "D3DSIO_DSY",
+    "D3DSIO_TEXLDD",
+    "D3DSIO_SETP",
+    "D3DSIO_TEXLDL",
+    "D3DSIO_BREAKP",
+    "D3DSIO_PHASE",
+    "D3DSIO_COMMENT",
+    "D3DSIO_END",
+])
+
+D3DSHADER_COMPARISON = Enum("D3DSHADER_COMPARISON", [
+    "D3DSPC_RESERVED0",
+    "D3DSPC_GT",
+    "D3DSPC_EQ",
+    "D3DSPC_GE",
+    "D3DSPC_LT",
+    "D3DSPC_NE",
+    "D3DSPC_LE",
+    "D3DSPC_RESERVED1",
+])
+
+D3DSAMPLER_TEXTURE_TYPE = Enum("D3DSAMPLER_TEXTURE_TYPE", [
+    "D3DSTT_UNKNOWN",
+    "D3DSTT_2D",
+    "D3DSTT_CUBE",
+    "D3DSTT_VOLUME",
+])
+
+D3DSP = Flags(DWORD, [
+    "D3DSP_WRITEMASK_0",
+    "D3DSP_WRITEMASK_1",
+    "D3DSP_WRITEMASK_2",
+    "D3DSP_WRITEMASK_3",
+    "D3DSP_WRITEMASK_ALL",
+])
+
+D3DSHADER_PARAM_DSTMOD_TYPE = Flags(DWORD, [
+    "D3DSPDM_NONE",
+    "D3DSPDM_SATURATE",
+    "D3DSPDM_PARTIALPRECISION",
+    "D3DSPDM_MSAMPCENTROID",
+])
+
+D3DSHADER_PARAM_REGISTER_TYPE = Enum("D3DSHADER_PARAM_REGISTER_TYPE", [
+    "D3DSPR_TEMP",
+    "D3DSPR_INPUT",
+    "D3DSPR_CONST",
+    "D3DSPR_ADDR|D3DSPR_TEXTURE",
+    "D3DSPR_RASTOUT",
+    "D3DSPR_ATTROUT",
+    "D3DSPR_TEXCRDOUT|D3DSPR_OUTPUT",
+    "D3DSPR_CONSTINT",
+    "D3DSPR_COLOROUT",
+    "D3DSPR_DEPTHOUT",
+    "D3DSPR_SAMPLER",
+    "D3DSPR_CONST2",
+    "D3DSPR_CONST3",
+    "D3DSPR_CONST4",
+    "D3DSPR_CONSTBOOL",
+    "D3DSPR_LOOP",
+    "D3DSPR_TEMPFLOAT16",
+    "D3DSPR_MISCTYPE",
+    "D3DSPR_LABEL",
+    "D3DSPR_PREDICATE",
+])
+
+D3DSHADER_MISCTYPE_OFFSETS = Enum("D3DSHADER_MISCTYPE_OFFSETS", [
+    "D3DSMO_POSITION",
+    "D3DSMO_FACE",
+])
+
+D3DVS_RASTOUT_OFFSETS = Enum("D3DVS_RASTOUT_OFFSETS", [
+    "D3DSRO_POSITION",
+    "D3DSRO_FOG",
+    "D3DSRO_POINT_SIZE",
+])
+
+D3DVS_ADDRESSMODE_TYPE = Enum("D3DVS_ADDRESSMODE_TYPE", [
+    "D3DVS_ADDRMODE_ABSOLUTE",
+    "D3DVS_ADDRMODE_RELATIVE",
+])
+
+D3DSHADER_ADDRESSMODE_TYPE = Enum("D3DSHADER_ADDRESSMODE_TYPE", [
+    "D3DSHADER_ADDRMODE_ABSOLUTE",
+    "D3DSHADER_ADDRMODE_RELATIVE",
+])
+
+D3DVS = Flags(DWORD, [
+    "D3DVS_X_X",
+    "D3DVS_X_Y",
+    "D3DVS_X_Z",
+    "D3DVS_X_W",
+    "D3DVS_Y_X",
+    "D3DVS_Y_Y",
+    "D3DVS_Y_Z",
+    "D3DVS_Y_W",
+    "D3DVS_Z_X",
+    "D3DVS_Z_Y",
+    "D3DVS_Z_Z",
+    "D3DVS_Z_W",
+    "D3DVS_W_X",
+    "D3DVS_W_Y",
+    "D3DVS_W_Z",
+    "D3DVS_W_W",
+    "D3DVS_NOSWIZZLE",
+])
+
+D3DSP = Flags(DWORD, [
+    "D3DSP_NOSWIZZLE",
+    "D3DSP_REPLICATERED",
+    "D3DSP_REPLICATEGREEN",
+    "D3DSP_REPLICATEBLUE",
+    "D3DSP_REPLICATEALPHA",
+])
+
+D3DSHADER_PARAM_SRCMOD_TYPE = Enum("D3DSHADER_PARAM_SRCMOD_TYPE", [
+    "D3DSPSM_NONE",
+    "D3DSPSM_NEG",
+    "D3DSPSM_BIAS",
+    "D3DSPSM_BIASNEG",
+    "D3DSPSM_SIGN",
+    "D3DSPSM_SIGNNEG",
+    "D3DSPSM_COMP",
+    "D3DSPSM_X2",
+    "D3DSPSM_X2NEG",
+    "D3DSPSM_DZ",
+    "D3DSPSM_DW",
+    "D3DSPSM_ABS",
+    "D3DSPSM_ABSNEG",
+    "D3DSPSM_NOT",
+])
+
+D3DBASISTYPE = Enum("D3DBASISTYPE", [
+    "D3DBASIS_BEZIER",
+    "D3DBASIS_BSPLINE",
+    "D3DBASIS_CATMULL_ROM",
+])
+
+D3DDEGREETYPE = Enum("D3DDEGREETYPE", [
+    "D3DDEGREE_LINEAR",
+    "D3DDEGREE_QUADRATIC",
+    "D3DDEGREE_CUBIC",
+    "D3DDEGREE_QUINTIC",
+])
+
+D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
+    "D3DPATCHEDGE_DISCRETE",
+    "D3DPATCHEDGE_CONTINUOUS",
+])
+
+D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
+    "D3DSBT_ALL",
+    "D3DSBT_PIXELSTATE",
+    "D3DSBT_VERTEXSTATE",
+])
+
+D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
+    "D3DVBF_DISABLE",
+    "D3DVBF_1WEIGHTS",
+    "D3DVBF_2WEIGHTS",
+    "D3DVBF_3WEIGHTS",
+    "D3DVBF_TWEENING",
+    "D3DVBF_0WEIGHTS",
+])
+
+D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
+    "D3DTTFF_DISABLE",
+    "D3DTTFF_COUNT1",
+    "D3DTTFF_COUNT2",
+    "D3DTTFF_COUNT3",
+    "D3DTTFF_COUNT4",
+    "D3DTTFF_PROJECTED",
+])
+
+D3DDEVTYPE = Enum("D3DDEVTYPE", [
+    "D3DDEVTYPE_HAL",
+    "D3DDEVTYPE_REF",
+    "D3DDEVTYPE_SW",
+    "D3DDEVTYPE_NULLREF",
+])
+
+D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
+    "D3DMULTISAMPLE_NONE",
+    "D3DMULTISAMPLE_NONMASKABLE",
+    "D3DMULTISAMPLE_2_SAMPLES",
+    "D3DMULTISAMPLE_3_SAMPLES",
+    "D3DMULTISAMPLE_4_SAMPLES",
+    "D3DMULTISAMPLE_5_SAMPLES",
+    "D3DMULTISAMPLE_6_SAMPLES",
+    "D3DMULTISAMPLE_7_SAMPLES",
+    "D3DMULTISAMPLE_8_SAMPLES",
+    "D3DMULTISAMPLE_9_SAMPLES",
+    "D3DMULTISAMPLE_10_SAMPLES",
+    "D3DMULTISAMPLE_11_SAMPLES",
+    "D3DMULTISAMPLE_12_SAMPLES",
+    "D3DMULTISAMPLE_13_SAMPLES",
+    "D3DMULTISAMPLE_14_SAMPLES",
+    "D3DMULTISAMPLE_15_SAMPLES",
+    "D3DMULTISAMPLE_16_SAMPLES",
+])
+
+D3DFORMAT = Enum("D3DFORMAT", [
+    "D3DFMT_UNKNOWN",
+    "D3DFMT_R8G8B8",
+    "D3DFMT_A8R8G8B8",
+    "D3DFMT_X8R8G8B8",
+    "D3DFMT_R5G6B5",
+    "D3DFMT_X1R5G5B5",
+    "D3DFMT_A1R5G5B5",
+    "D3DFMT_A4R4G4B4",
+    "D3DFMT_R3G3B2",
+    "D3DFMT_A8",
+    "D3DFMT_A8R3G3B2",
+    "D3DFMT_X4R4G4B4",
+    "D3DFMT_A2B10G10R10",
+    "D3DFMT_A8B8G8R8",
+    "D3DFMT_X8B8G8R8",
+    "D3DFMT_G16R16",
+    "D3DFMT_A2R10G10B10",
+    "D3DFMT_A16B16G16R16",
+    "D3DFMT_A8P8",
+    "D3DFMT_P8",
+    "D3DFMT_L8",
+    "D3DFMT_A8L8",
+    "D3DFMT_A4L4",
+    "D3DFMT_V8U8",
+    "D3DFMT_L6V5U5",
+    "D3DFMT_X8L8V8U8",
+    "D3DFMT_Q8W8V8U8",
+    "D3DFMT_V16U16",
+    "D3DFMT_A2W10V10U10",
+    "D3DFMT_UYVY",
+    "D3DFMT_R8G8_B8G8",
+    "D3DFMT_YUY2",
+    "D3DFMT_G8R8_G8B8",
+    "D3DFMT_DXT1",
+    "D3DFMT_DXT2",
+    "D3DFMT_DXT3",
+    "D3DFMT_DXT4",
+    "D3DFMT_DXT5",
+    "D3DFMT_D16_LOCKABLE",
+    "D3DFMT_D32",
+    "D3DFMT_D15S1",
+    "D3DFMT_D24S8",
+    "D3DFMT_D24X8",
+    "D3DFMT_D24X4S4",
+    "D3DFMT_D16",
+    "D3DFMT_D32F_LOCKABLE",
+    "D3DFMT_D24FS8",
+    "D3DFMT_D32_LOCKABLE",
+    "D3DFMT_S8_LOCKABLE",
+    "D3DFMT_L16",
+    "D3DFMT_VERTEXDATA",
+    "D3DFMT_INDEX16",
+    "D3DFMT_INDEX32",
+    "D3DFMT_Q16W16V16U16",
+    "D3DFMT_MULTI2_ARGB8",
+    "D3DFMT_R16F",
+    "D3DFMT_G16R16F",
+    "D3DFMT_A16B16G16R16F",
+    "D3DFMT_R32F",
+    "D3DFMT_G32R32F",
+    "D3DFMT_A32B32G32R32F",
+    "D3DFMT_CxV8U8",
+    "D3DFMT_A1",
+    "D3DFMT_BINARYBUFFER",
+
+    # Unofficial formats
+    "D3DFMT_ATI1",
+    "D3DFMT_ATI2",
+    "D3DFMT_AYUV",
+    "D3DFMT_DF16",
+    "D3DFMT_DF24",
+    "D3DFMT_INTZ",
+    "D3DFMT_NULL",
+    "D3DFMT_NV12",
+    "D3DFMT_RAWZ",
+])
+
+D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "RefreshRate"),
+    (D3DFORMAT, "Format"),
+])
+
+D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
+    (UINT, "AdapterOrdinal"),
+    (D3DDEVTYPE, "DeviceType"),
+    (HWND, "hFocusWindow"),
+    (DWORD, "BehaviorFlags"),
+])
+
+D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
+    "D3DSWAPEFFECT_DISCARD",
+    "D3DSWAPEFFECT_FLIP",
+    "D3DSWAPEFFECT_COPY",
+])
+
+D3DPOOL = Enum("D3DPOOL", [
+    "D3DPOOL_DEFAULT",
+    "D3DPOOL_MANAGED",
+    "D3DPOOL_SYSTEMMEM",
+    "D3DPOOL_SCRATCH",
+])
+
+D3DPRESENT = FakeEnum(DWORD, [
+    "D3DPRESENT_RATE_DEFAULT",
+])
+
+D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
+    (UINT, "BackBufferWidth"),
+    (UINT, "BackBufferHeight"),
+    (D3DFORMAT, "BackBufferFormat"),
+    (UINT, "BackBufferCount"),
+    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
+    (DWORD, "MultiSampleQuality"),
+    (D3DSWAPEFFECT, "SwapEffect"),
+    (HWND, "hDeviceWindow"),
+    (BOOL, "Windowed"),
+    (BOOL, "EnableAutoDepthStencil"),
+    (D3DFORMAT, "AutoDepthStencilFormat"),
+    (DWORD, "Flags"),
+    (UINT, "FullScreen_RefreshRateInHz"),
+    (UINT, "PresentationInterval"),
+])
+
+D3DPRESENTFLAG = Flags(DWORD, [
+    "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
+    "D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL",
+    "D3DPRESENTFLAG_DEVICECLIP",
+    "D3DPRESENTFLAG_VIDEO",
+    "D3DPRESENTFLAG_NOAUTOROTATE",
+    "D3DPRESENTFLAG_UNPRUNEDMODE",
+])
+
+D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
+    (Array(WORD, "256"), "red"),
+    (Array(WORD, "256"), "green"),
+    (Array(WORD, "256"), "blue"),
+])
+
+D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
+    "D3DBACKBUFFER_TYPE_MONO",
+    "D3DBACKBUFFER_TYPE_LEFT",
+    "D3DBACKBUFFER_TYPE_RIGHT",
+])
+
+D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
+    "D3DRTYPE_SURFACE",
+    "D3DRTYPE_VOLUME",
+    "D3DRTYPE_TEXTURE",
+    "D3DRTYPE_VOLUMETEXTURE",
+    "D3DRTYPE_CUBETEXTURE",
+    "D3DRTYPE_VERTEXBUFFER",
+    "D3DRTYPE_INDEXBUFFER",
+])
+
+D3DUSAGE = Flags(DWORD, [
+    "D3DUSAGE_RENDERTARGET",
+    "D3DUSAGE_DEPTHSTENCIL",
+    "D3DUSAGE_DYNAMIC",
+    "D3DUSAGE_NONSECURE",
+    "D3DUSAGE_AUTOGENMIPMAP",
+    "D3DUSAGE_DMAP",
+    "D3DUSAGE_QUERY_LEGACYBUMPMAP",
+    "D3DUSAGE_QUERY_SRGBREAD",
+    "D3DUSAGE_QUERY_FILTER",
+    "D3DUSAGE_QUERY_SRGBWRITE",
+    "D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING",
+    "D3DUSAGE_QUERY_VERTEXTEXTURE",
+    "D3DUSAGE_QUERY_WRAPANDMIP",
+    "D3DUSAGE_WRITEONLY",
+    "D3DUSAGE_SOFTWAREPROCESSING",
+    "D3DUSAGE_DONOTCLIP",
+    "D3DUSAGE_POINTS",
+    "D3DUSAGE_RTPATCHES",
+    "D3DUSAGE_NPATCHES",
+    "D3DUSAGE_TEXTAPI",
+])
+
+D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
+    "D3DCUBEMAP_FACE_POSITIVE_X",
+    "D3DCUBEMAP_FACE_NEGATIVE_X",
+    "D3DCUBEMAP_FACE_POSITIVE_Y",
+    "D3DCUBEMAP_FACE_NEGATIVE_Y",
+    "D3DCUBEMAP_FACE_POSITIVE_Z",
+    "D3DCUBEMAP_FACE_NEGATIVE_Z",
+])
+
+D3DLOCK = Flags(DWORD, [
+    "D3DLOCK_READONLY",
+    "D3DLOCK_DISCARD",
+    "D3DLOCK_NOOVERWRITE",
+    "D3DLOCK_NOSYSLOCK",
+    "D3DLOCK_DONOTWAIT",
+    "D3DLOCK_NO_DIRTY_UPDATE",
+])
+
+D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Size"),
+    (DWORD, "FVF"),
+])
+
+D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Size"),
+])
+
+D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
+    (DWORD, "MultiSampleQuality"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+])
+
+D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
+    (D3DFORMAT, "Format"),
+    (D3DRESOURCETYPE, "Type"),
+    (DWORD, "Usage"),
+    (D3DPOOL, "Pool"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "Depth"),
+])
+
+D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
+    (INT, "Pitch"),
+    (OpaquePointer(Void), "pBits"),
+])
+
+D3DBOX = Struct("D3DBOX", [
+    (UINT, "Left"),
+    (UINT, "Top"),
+    (UINT, "Right"),
+    (UINT, "Bottom"),
+    (UINT, "Front"),
+    (UINT, "Back"),
+])
+
+D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
+    (INT, "RowPitch"),
+    (INT, "SlicePitch"),
+    (OpaquePointer(Void), "pBits"),
+])
+
+D3DRANGE = Struct("D3DRANGE", [
+    (UINT, "Offset"),
+    (UINT, "Size"),
+])
+
+D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
+    (UINT, "StartVertexOffsetWidth"),
+    (UINT, "StartVertexOffsetHeight"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "Stride"),
+    (D3DBASISTYPE, "Basis"),
+    (D3DDEGREETYPE, "Degree"),
+])
+
+D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
+    (UINT, "StartVertexOffset"),
+    (UINT, "NumVertices"),
+    (D3DBASISTYPE, "Basis"),
+    (D3DDEGREETYPE, "Degree"),
+])
+
+D3DADAPTER_IDENTIFIER9 = Struct("D3DADAPTER_IDENTIFIER9", [
+    (CString, "Driver"),
+    (CString, "Description"),
+    (CString, "DeviceName"),
+    (LARGE_INTEGER, "DriverVersion"),
+    (DWORD, "VendorId"),
+    (DWORD, "DeviceId"),
+    (DWORD, "SubSysId"),
+    (DWORD, "Revision"),
+    (GUID, "DeviceIdentifier"),
+    (DWORD, "WHQLLevel"),
+])
+
+D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
+    (BOOL, "InVBlank"),
+    (UINT, "ScanLine"),
+])
+
+D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
+    "D3DDMT_ENABLE",
+    "D3DDMT_DISABLE",
+])
+
+D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
+    "D3DQUERYTYPE_VCACHE",
+    "D3DQUERYTYPE_RESOURCEMANAGER",
+    "D3DQUERYTYPE_VERTEXSTATS",
+    "D3DQUERYTYPE_EVENT",
+    "D3DQUERYTYPE_OCCLUSION",
+    "D3DQUERYTYPE_TIMESTAMP",
+    "D3DQUERYTYPE_TIMESTAMPDISJOINT",
+    "D3DQUERYTYPE_TIMESTAMPFREQ",
+    "D3DQUERYTYPE_PIPELINETIMINGS",
+    "D3DQUERYTYPE_INTERFACETIMINGS",
+    "D3DQUERYTYPE_VERTEXTIMINGS",
+    "D3DQUERYTYPE_PIXELTIMINGS",
+    "D3DQUERYTYPE_BANDWIDTHTIMINGS",
+    "D3DQUERYTYPE_CACHEUTILIZATION",
+])
+
+D3DISSUE = Flags(DWORD, [
+    "D3DISSUE_END",
+    "D3DISSUE_BEGIN",
+])
+
+D3DGETDATA = Flags(DWORD, [
+    "D3DGETDATA_FLUSH",
+])
+
+D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
+    (BOOL, "bThrashing"),
+    (DWORD, "ApproxBytesDownloaded"),
+    (DWORD, "NumEvicts"),
+    (DWORD, "NumVidCreates"),
+    (DWORD, "LastPri"),
+    (DWORD, "NumUsed"),
+    (DWORD, "NumUsedInVidMem"),
+    (DWORD, "WorkingSet"),
+    (DWORD, "WorkingSetBytes"),
+    (DWORD, "TotalManaged"),
+    (DWORD, "TotalBytes"),
+])
+
+D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
+    (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
+])
+
+D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
+    (DWORD, "NumRenderedTriangles"),
+    (DWORD, "NumExtraClippingTriangles"),
+])
+
+D3DDEVINFO_VCACHE = Struct("D3DDEVINFO_VCACHE", [
+    (DWORD, "Pattern"),
+    (DWORD, "OptMethod"),
+    (DWORD, "CacheSize"),
+    (DWORD, "MagicNumber"),
+])
+
+D3DDEVINFO_D3D9PIPELINETIMINGS = Struct("D3DDEVINFO_D3D9PIPELINETIMINGS", [
+    (FLOAT, "VertexProcessingTimePercent"),
+    (FLOAT, "PixelProcessingTimePercent"),
+    (FLOAT, "OtherGPUProcessingTimePercent"),
+    (FLOAT, "GPUIdleTimePercent"),
+])
+
+D3DDEVINFO_D3D9INTERFACETIMINGS = Struct("D3DDEVINFO_D3D9INTERFACETIMINGS", [
+    (FLOAT, "WaitingForGPUToUseApplicationResourceTimePercent"),
+    (FLOAT, "WaitingForGPUToAcceptMoreCommandsTimePercent"),
+    (FLOAT, "WaitingForGPUToStayWithinLatencyTimePercent"),
+    (FLOAT, "WaitingForGPUExclusiveResourceTimePercent"),
+    (FLOAT, "WaitingForGPUOtherTimePercent"),
+])
+
+D3DDEVINFO_D3D9STAGETIMINGS = Struct("D3DDEVINFO_D3D9STAGETIMINGS", [
+    (FLOAT, "MemoryProcessingPercent"),
+    (FLOAT, "ComputationProcessingPercent"),
+])
+
+D3DDEVINFO_D3D9BANDWIDTHTIMINGS = Struct("D3DDEVINFO_D3D9BANDWIDTHTIMINGS", [
+    (FLOAT, "MaxBandwidthUtilized"),
+    (FLOAT, "FrontEndUploadMemoryUtilizedPercent"),
+    (FLOAT, "VertexRateUtilizedPercent"),
+    (FLOAT, "TriangleSetupRateUtilizedPercent"),
+    (FLOAT, "FillRateUtilizedPercent"),
+])
+
+D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
+    (FLOAT, "TextureCacheHitRate"),
+    (FLOAT, "PostTransformVertexCacheHitRate"),
+])
+
+D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
+    "D3DCOMPOSERECTS_COPY",
+    "D3DCOMPOSERECTS_OR",
+    "D3DCOMPOSERECTS_AND",
+    "D3DCOMPOSERECTS_NEG",
+])
+
+D3DCOMPOSERECTDESC = Struct("D3DCOMPOSERECTDESC", [
+    (USHORT, "X"),
+    (USHORT, "Y"),
+    (USHORT, "Width"),
+    (USHORT, "Height"),
+])
+
+D3DCOMPOSERECTDESTINATION = Struct("D3DCOMPOSERECTDESTINATION", [
+    (USHORT, "SrcRectIndex"),
+    (USHORT, "Reserved"),
+    (Short, "X"),
+    (Short, "Y"),
+])
+
+D3DPRESENTSTATS = Struct("D3DPRESENTSTATS", [
+    (UINT, "PresentCount"),
+    (UINT, "PresentRefreshCount"),
+    (UINT, "SyncRefreshCount"),
+    (LARGE_INTEGER, "SyncQPCTime"),
+    (LARGE_INTEGER, "SyncGPUTime"),
+])
+
+D3DSCANLINEORDERING = Enum("D3DSCANLINEORDERING", [
+    "D3DSCANLINEORDERING_UNKNOWN",
+    "D3DSCANLINEORDERING_PROGRESSIVE",
+    "D3DSCANLINEORDERING_INTERLACED",
+])
+
+D3DDISPLAYMODEEX = Struct("D3DDISPLAYMODEEX", [
+    (UINT, "Size"),
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (UINT, "RefreshRate"),
+    (D3DFORMAT, "Format"),
+    (D3DSCANLINEORDERING, "ScanLineOrdering"),
+])
+
+D3DDISPLAYMODEFILTER = Struct("D3DDISPLAYMODEFILTER", [
+    (UINT, "Size"),
+    (D3DFORMAT, "Format"),
+    (D3DSCANLINEORDERING, "ScanLineOrdering"),
+])
+
+D3DDISPLAYROTATION = Enum("D3DDISPLAYROTATION", [
+    "D3DDISPLAYROTATION_IDENTITY",
+    "D3DDISPLAYROTATION_90",
+    "D3DDISPLAYROTATION_180",
+    "D3DDISPLAYROTATION_270",
+])
+
+D3D9_RESOURCE_PRIORITY = FakeEnum(DWORD, [
+    "D3D9_RESOURCE_PRIORITY_MINIMUM",
+    "D3D9_RESOURCE_PRIORITY_LOW",
+    "D3D9_RESOURCE_PRIORITY_NORMAL",
+    "D3D9_RESOURCE_PRIORITY_HIGH",
+    "D3D9_RESOURCE_PRIORITY_MAXIMUM",
+])
+
diff --git a/specs/d3dcaps.py b/specs/d3dcaps.py
new file mode 100644 (file)
index 0000000..0fa9f1c
--- /dev/null
@@ -0,0 +1,466 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3dcaps.h"""
+
+from winapi import *
+from d3dtypes import *
+
+D3DTRANSFORMCAPS = Flags(DWORD, [
+    "D3DTRANSFORMCAPS_CLIP",
+])
+
+D3DTRANSFORMCAPS = Struct("D3DTRANSFORMCAPS", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+])
+
+D3DLIGHTINGCAPS = Struct("D3DLIGHTINGCAPS", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwLightingModel"),
+    (DWORD, "dwNumLights"),
+])
+
+D3DLIGHTINGMODEL = Flags(DWORD, [
+    "D3DLIGHTINGMODEL_RGB",
+    "D3DLIGHTINGMODEL_MONO",
+])
+
+D3DLIGHTCAPS = Flags(DWORD, [
+    "D3DLIGHTCAPS_POINT",
+    "D3DLIGHTCAPS_SPOT",
+    "D3DLIGHTCAPS_DIRECTIONAL",
+    "D3DLIGHTCAPS_PARALLELPOINT",
+    "D3DLIGHTCAPS_GLSPOT",
+])
+
+D3DPRIMCAPS = Struct("D3DPRIMCAPS", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwMiscCaps"),
+    (DWORD, "dwRasterCaps"),
+    (DWORD, "dwZCmpCaps"),
+    (DWORD, "dwSrcBlendCaps"),
+    (DWORD, "dwDestBlendCaps"),
+    (DWORD, "dwAlphaCmpCaps"),
+    (DWORD, "dwShadeCaps"),
+    (DWORD, "dwTextureCaps"),
+    (DWORD, "dwTextureFilterCaps"),
+    (DWORD, "dwTextureBlendCaps"),
+    (DWORD, "dwTextureAddressCaps"),
+    (DWORD, "dwStippleWidth"),
+    (DWORD, "dwStippleHeight"),
+])
+
+D3DPMISCCAPS = Flags(DWORD, [
+    "D3DPMISCCAPS_MASKPLANES",
+    "D3DPMISCCAPS_MASKZ",
+    "D3DPMISCCAPS_LINEPATTERNREP",
+    "D3DPMISCCAPS_CONFORMANT",
+    "D3DPMISCCAPS_CULLNONE",
+    "D3DPMISCCAPS_CULLCW",
+    "D3DPMISCCAPS_CULLCCW",
+])
+
+D3DXD3DPRASTERCAPSXX = Flags(DWORD, [
+    "D3DPRASTERCAPS_DITHER",
+    "D3DPRASTERCAPS_ROP2",
+    "D3DPRASTERCAPS_XOR",
+    "D3DPRASTERCAPS_PAT",
+    "D3DPRASTERCAPS_ZTEST",
+    "D3DPRASTERCAPS_SUBPIXEL",
+    "D3DPRASTERCAPS_SUBPIXELX",
+    "D3DPRASTERCAPS_FOGVERTEX",
+    "D3DPRASTERCAPS_FOGTABLE",
+    "D3DPRASTERCAPS_STIPPLE",
+    "D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT",
+    "D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT",
+    "D3DPRASTERCAPS_ANTIALIASEDGES",
+    "D3DPRASTERCAPS_MIPMAPLODBIAS",
+    "D3DPRASTERCAPS_ZBIAS",
+    "D3DPRASTERCAPS_ZBUFFERLESSHSR",
+    "D3DPRASTERCAPS_FOGRANGE",
+    "D3DPRASTERCAPS_ANISOTROPY",
+    "D3DPRASTERCAPS_WBUFFER",
+    "D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT",
+    "D3DPRASTERCAPS_WFOG",
+    "D3DPRASTERCAPS_ZFOG",
+])
+
+D3DPCMPCAPS = Flags(DWORD, [
+    "D3DPCMPCAPS_NEVER",
+    "D3DPCMPCAPS_LESS",
+    "D3DPCMPCAPS_EQUAL",
+    "D3DPCMPCAPS_LESSEQUAL",
+    "D3DPCMPCAPS_GREATER",
+    "D3DPCMPCAPS_NOTEQUAL",
+    "D3DPCMPCAPS_GREATEREQUAL",
+    "D3DPCMPCAPS_ALWAYS",
+])
+
+D3DPBLENDCAPS = Flags(DWORD, [
+    "D3DPBLENDCAPS_ZERO",
+    "D3DPBLENDCAPS_ONE",
+    "D3DPBLENDCAPS_SRCCOLOR",
+    "D3DPBLENDCAPS_INVSRCCOLOR",
+    "D3DPBLENDCAPS_SRCALPHA",
+    "D3DPBLENDCAPS_INVSRCALPHA",
+    "D3DPBLENDCAPS_DESTALPHA",
+    "D3DPBLENDCAPS_INVDESTALPHA",
+    "D3DPBLENDCAPS_DESTCOLOR",
+    "D3DPBLENDCAPS_INVDESTCOLOR",
+    "D3DPBLENDCAPS_SRCALPHASAT",
+    "D3DPBLENDCAPS_BOTHSRCALPHA",
+    "D3DPBLENDCAPS_BOTHINVSRCALPHA",
+])
+
+D3DPSHADECAPS = Flags(DWORD, [
+    "D3DPSHADECAPS_COLORFLATMONO",
+    "D3DPSHADECAPS_COLORFLATRGB",
+    "D3DPSHADECAPS_COLORGOURAUDMONO",
+    "D3DPSHADECAPS_COLORGOURAUDRGB",
+    "D3DPSHADECAPS_COLORPHONGMONO",
+    "D3DPSHADECAPS_COLORPHONGRGB",
+    "D3DPSHADECAPS_SPECULARFLATMONO",
+    "D3DPSHADECAPS_SPECULARFLATRGB",
+    "D3DPSHADECAPS_SPECULARGOURAUDMONO",
+    "D3DPSHADECAPS_SPECULARGOURAUDRGB",
+    "D3DPSHADECAPS_SPECULARPHONGMONO",
+    "D3DPSHADECAPS_SPECULARPHONGRGB",
+    "D3DPSHADECAPS_ALPHAFLATBLEND",
+    "D3DPSHADECAPS_ALPHAFLATSTIPPLED",
+    "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
+    "D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED",
+    "D3DPSHADECAPS_ALPHAPHONGBLEND",
+    "D3DPSHADECAPS_ALPHAPHONGSTIPPLED",
+    "D3DPSHADECAPS_FOGFLAT",
+    "D3DPSHADECAPS_FOGGOURAUD",
+    "D3DPSHADECAPS_FOGPHONG",
+])
+
+D3DPTEXTURECAPS = Flags(DWORD, [
+    "D3DPTEXTURECAPS_PERSPECTIVE",
+    "D3DPTEXTURECAPS_POW2",
+    "D3DPTEXTURECAPS_ALPHA",
+    "D3DPTEXTURECAPS_TRANSPARENCY",
+    "D3DPTEXTURECAPS_BORDER",
+    "D3DPTEXTURECAPS_SQUAREONLY",
+    "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
+    "D3DPTEXTURECAPS_ALPHAPALETTE",
+    "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
+    "D3DPTEXTURECAPS_PROJECTED",
+    "D3DPTEXTURECAPS_CUBEMAP",
+    "D3DPTEXTURECAPS_COLORKEYBLEND",
+])
+
+D3DPTFILTERCAPS = Flags(DWORD, [
+    "D3DPTFILTERCAPS_NEAREST",
+    "D3DPTFILTERCAPS_LINEAR",
+    "D3DPTFILTERCAPS_MIPNEAREST",
+    "D3DPTFILTERCAPS_MIPLINEAR",
+    "D3DPTFILTERCAPS_LINEARMIPNEAREST",
+    "D3DPTFILTERCAPS_LINEARMIPLINEAR",
+    "D3DPTFILTERCAPS_MINFPOINT",
+    "D3DPTFILTERCAPS_MINFLINEAR",
+    "D3DPTFILTERCAPS_MINFANISOTROPIC",
+    "D3DPTFILTERCAPS_MIPFPOINT",
+    "D3DPTFILTERCAPS_MIPFLINEAR",
+    "D3DPTFILTERCAPS_MAGFPOINT",
+    "D3DPTFILTERCAPS_MAGFLINEAR",
+    "D3DPTFILTERCAPS_MAGFANISOTROPIC",
+    "D3DPTFILTERCAPS_MAGFAFLATCUBIC",
+    "D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC",
+])
+
+D3DPTBLENDCAPS = Flags(DWORD, [
+    "D3DPTBLENDCAPS_DECAL",
+    "D3DPTBLENDCAPS_MODULATE",
+    "D3DPTBLENDCAPS_DECALALPHA",
+    "D3DPTBLENDCAPS_MODULATEALPHA",
+    "D3DPTBLENDCAPS_DECALMASK",
+    "D3DPTBLENDCAPS_MODULATEMASK",
+    "D3DPTBLENDCAPS_COPY",
+    "D3DPTBLENDCAPS_ADD",
+])
+
+D3DPTADDRESSCAPS = Flags(DWORD, [
+    "D3DPTADDRESSCAPS_WRAP",
+    "D3DPTADDRESSCAPS_MIRROR",
+    "D3DPTADDRESSCAPS_CLAMP",
+    "D3DPTADDRESSCAPS_BORDER",
+    "D3DPTADDRESSCAPS_INDEPENDENTUV",
+])
+
+D3DSTENCILCAPS = Flags(DWORD, [
+    "D3DSTENCILCAPS_KEEP",
+    "D3DSTENCILCAPS_ZERO",
+    "D3DSTENCILCAPS_REPLACE",
+    "D3DSTENCILCAPS_INCRSAT",
+    "D3DSTENCILCAPS_DECRSAT",
+    "D3DSTENCILCAPS_INVERT",
+    "D3DSTENCILCAPS_INCR",
+    "D3DSTENCILCAPS_DECR",
+])
+
+D3DTEXOPCAPS = Flags(DWORD, [
+    "D3DTEXOPCAPS_DISABLE",
+    "D3DTEXOPCAPS_SELECTARG1",
+    "D3DTEXOPCAPS_SELECTARG2",
+    "D3DTEXOPCAPS_MODULATE",
+    "D3DTEXOPCAPS_MODULATE2X",
+    "D3DTEXOPCAPS_MODULATE4X",
+    "D3DTEXOPCAPS_ADD",
+    "D3DTEXOPCAPS_ADDSIGNED",
+    "D3DTEXOPCAPS_ADDSIGNED2X",
+    "D3DTEXOPCAPS_SUBTRACT",
+    "D3DTEXOPCAPS_ADDSMOOTH",
+    "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
+    "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
+    "D3DTEXOPCAPS_BLENDFACTORALPHA",
+    "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
+    "D3DTEXOPCAPS_BLENDCURRENTALPHA",
+    "D3DTEXOPCAPS_PREMODULATE",
+    "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
+    "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
+    "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
+    "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
+    "D3DTEXOPCAPS_BUMPENVMAP",
+    "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
+    "D3DTEXOPCAPS_DOTPRODUCT3",
+])
+
+D3DFVFCAPS = Flags(DWORD, [
+    "D3DFVFCAPS_TEXCOORDCOUNTMASK",
+    "D3DFVFCAPS_DONOTSTRIPELEMENTS",
+])
+
+D3DDD = Flags(DWORD, [
+    "D3DDD_COLORMODEL",
+    "D3DDD_DEVCAPS",
+    "D3DDD_TRANSFORMCAPS",
+    "D3DDD_LIGHTINGCAPS",
+    "D3DDD_BCLIPPING",
+    "D3DDD_LINECAPS",
+    "D3DDD_TRICAPS",
+    "D3DDD_DEVICERENDERBITDEPTH",
+    "D3DDD_DEVICEZBUFFERBITDEPTH",
+    "D3DDD_MAXBUFFERSIZE",
+    "D3DDD_MAXVERTEXCOUNT",
+])
+
+D3DDEVCAPS = Flags(DWORD, [
+    "D3DDEVCAPS_FLOATTLVERTEX",
+    "D3DDEVCAPS_SORTINCREASINGZ",
+    "D3DDEVCAPS_SORTDECREASINGZ",
+    "D3DDEVCAPS_SORTEXACT",
+    "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
+    "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
+    "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
+    "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
+    "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
+    "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
+    "D3DDEVCAPS_DRAWPRIMTLVERTEX",
+    "D3DDEVCAPS_CANRENDERAFTERFLIP",
+    "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
+    "D3DDEVCAPS_DRAWPRIMITIVES2",
+    "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
+    "D3DDEVCAPS_DRAWPRIMITIVES2EX",
+    "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
+    "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
+    "D3DDEVCAPS_HWRASTERIZATION",
+])
+
+D3DVTXPCAPS = Flags(DWORD, [
+    "D3DVTXPCAPS_TEXGEN",
+    "D3DVTXPCAPS_MATERIALSOURCE7",
+    "D3DVTXPCAPS_VERTEXFOG",
+    "D3DVTXPCAPS_DIRECTIONALLIGHTS",
+    "D3DVTXPCAPS_POSITIONALLIGHTS",
+    "D3DVTXPCAPS_LOCALVIEWER",
+])
+
+D3DFDS = Flags(DWORD, [
+    "D3DFDS_COLORMODEL",
+    "D3DFDS_GUID",
+    "D3DFDS_HARDWARE",
+    "D3DFDS_TRIANGLES",
+    "D3DFDS_LINES",
+    "D3DFDS_MISCCAPS",
+    "D3DFDS_RASTERCAPS",
+    "D3DFDS_ZCMPCAPS",
+    "D3DFDS_ALPHACMPCAPS",
+    "D3DFDS_SRCBLENDCAPS",
+    "D3DFDS_DSTBLENDCAPS",
+    "D3DFDS_SHADECAPS",
+    "D3DFDS_TEXTURECAPS",
+    "D3DFDS_TEXTUREFILTERCAPS",
+    "D3DFDS_TEXTUREBLENDCAPS",
+    "D3DFDS_TEXTUREADDRESSCAPS",
+])
+
+D3DFINDDEVICESEARCH = Struct("D3DFINDDEVICESEARCH", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (BOOL, "bHardware"),
+    (D3DCOLORMODEL, "dcmColorModel"),
+    (GUID, "guid"),
+    (DWORD, "dwCaps"),
+    (D3DPRIMCAPS, "dpcPrimCaps"),
+])
+LPD3DFINDDEVICESEARCH = Pointer(D3DFINDDEVICESEARCH)
+
+D3DEXECUTEBUFFERDESC = Struct("D3DEXECUTEBUFFERDESC", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwBufferSize"),
+    (LPVOID, "lpData"),
+])
+LPD3DEXECUTEBUFFERDESC = Pointer(D3DEXECUTEBUFFERDESC)
+
+D3DDEB = Flags(DWORD, [
+    "D3DDEB_BUFSIZE",
+    "D3DDEB_CAPS",
+    "D3DDEB_LPDATA",
+])
+
+D3DDEBCAPS = Flags(DWORD, [
+    "D3DDEBCAPS_SYSTEMMEMORY",
+    "D3DDEBCAPS_VIDEOMEMORY",
+    "D3DDEBCAPS_MEM",
+])
+
+D3DDEVINFO_TEXTUREMANAGER = Struct("D3DDEVINFO_TEXTUREMANAGER", [
+    (BOOL, "bThrashing"),
+    (DWORD, "dwApproxBytesDownloaded"),
+    (DWORD, "dwNumEvicts"),
+    (DWORD, "dwNumVidCreates"),
+    (DWORD, "dwNumTexturesUsed"),
+    (DWORD, "dwNumUsedTexInVid"),
+    (DWORD, "dwWorkingSet"),
+    (DWORD, "dwWorkingSetBytes"),
+    (DWORD, "dwTotalManaged"),
+    (DWORD, "dwTotalBytes"),
+    (DWORD, "dwLastPri"),
+])
+
+D3DDEVINFO_TEXTURING = Struct("D3DDEVINFO_TEXTURING", [
+    (DWORD, "dwNumLoads"),
+    (DWORD, "dwApproxBytesLoaded"),
+    (DWORD, "dwNumPreLoads"),
+    (DWORD, "dwNumSet"),
+    (DWORD, "dwNumCreates"),
+    (DWORD, "dwNumDestroys"),
+    (DWORD, "dwNumSetPriorities"),
+    (DWORD, "dwNumSetLODs"),
+    (DWORD, "dwNumLocks"),
+    (DWORD, "dwNumGetDCs"),
+])
+
+D3DDEVICEDESC = Struct("D3DDEVICEDESC", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (D3DCOLORMODEL, "dcmColorModel"),
+    (DWORD, "dwDevCaps"),
+    (D3DTRANSFORMCAPS, "dtcTransformCaps"),
+    (BOOL, "bClipping"),
+    (D3DLIGHTINGCAPS, "dlcLightingCaps"),
+    (D3DPRIMCAPS, "dpcLineCaps"),
+    (D3DPRIMCAPS, "dpcTriCaps"),
+    (DWORD, "dwDeviceRenderBitDepth"),
+    (DWORD, "dwDeviceZBufferBitDepth"),
+    (DWORD, "dwMaxBufferSize"),
+    (DWORD, "dwMaxVertexCount"),
+    (DWORD, "dwMinTextureWidth"),
+    (DWORD, "dwMinTextureHeight"),
+    (DWORD, "dwMaxTextureWidth"),
+    (DWORD, "dwMaxTextureHeight"),
+    (DWORD, "dwMinStippleWidth"),
+    (DWORD, "dwMaxStippleWidth"),
+    (DWORD, "dwMinStippleHeight"),
+    (DWORD, "dwMaxStippleHeight"),
+    (DWORD, "dwMaxTextureRepeat"),
+    (DWORD, "dwMaxTextureAspectRatio"),
+    (DWORD, "dwMaxAnisotropy"),
+    (D3DVALUE, "dvGuardBandLeft"),
+    (D3DVALUE, "dvGuardBandTop"),
+    (D3DVALUE, "dvGuardBandRight"),
+    (D3DVALUE, "dvGuardBandBottom"),
+    (D3DVALUE, "dvExtentsAdjust"),
+    (DWORD, "dwStencilCaps"),
+    (DWORD, "dwFVFCaps"),
+    (DWORD, "dwTextureOpCaps"),
+    (WORD, "wMaxTextureBlendStages"),
+    (WORD, "wMaxSimultaneousTextures"),
+])
+LPD3DDEVICEDESC = Pointer(D3DDEVICEDESC)
+
+D3DDEVICEDESC7 = Struct("D3DDEVICEDESC7", [
+    (DWORD, "dwDevCaps"),
+    (D3DPRIMCAPS, "dpcLineCaps"),
+    (D3DPRIMCAPS, "dpcTriCaps"),
+    (DWORD, "dwDeviceRenderBitDepth"),
+    (DWORD, "dwDeviceZBufferBitDepth"),
+    (DWORD, "dwMinTextureWidth"),
+    (DWORD, "dwMinTextureHeight"),
+    (DWORD, "dwMaxTextureWidth"),
+    (DWORD, "dwMaxTextureHeight"),
+    (DWORD, "dwMaxTextureRepeat"),
+    (DWORD, "dwMaxTextureAspectRatio"),
+    (DWORD, "dwMaxAnisotropy"),
+    (D3DVALUE, "dvGuardBandLeft"),
+    (D3DVALUE, "dvGuardBandTop"),
+    (D3DVALUE, "dvGuardBandRight"),
+    (D3DVALUE, "dvGuardBandBottom"),
+    (D3DVALUE, "dvExtentsAdjust"),
+    (DWORD, "dwStencilCaps"),
+    (DWORD, "dwFVFCaps"),
+    (DWORD, "dwTextureOpCaps"),
+    (WORD, "wMaxTextureBlendStages"),
+    (WORD, "wMaxSimultaneousTextures"),
+    (DWORD, "dwMaxActiveLights"),
+    (D3DVALUE, "dvMaxVertexW"),
+    (GUID, "deviceGUID"),
+    (WORD, "wMaxUserClipPlanes"),
+    (WORD, "wMaxVertexBlendMatrices"),
+    (DWORD, "dwVertexProcessingCaps"),
+    (DWORD, "dwReserved1"),
+    (DWORD, "dwReserved2"),
+    (DWORD, "dwReserved3"),
+    (DWORD, "dwReserved4"),
+])
+LPD3DDEVICEDESC7 = Pointer(D3DDEVICEDESC7)
+
+D3DFINDDEVICERESULT = Struct("D3DFINDDEVICERESULT", [
+    (DWORD, "dwSize"),
+    (GUID, "guid"),
+    (D3DDEVICEDESC, "ddHwDesc"),
+    (D3DDEVICEDESC, "ddSwDesc"),
+])
+LPD3DFINDDEVICERESULT = Pointer(D3DFINDDEVICERESULT)
+
+LPD3DENUMDEVICESCALLBACK = FunctionPointer(HRESULT, "LPD3DENUMDEVICESCALLBACK", [(Pointer(GUID), "lpGuid"), (LPSTR, "lpDeviceDescription"), (LPSTR, "lpDeviceName"), LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID])
+LPD3DENUMDEVICESCALLBACK7 = FunctionPointer(HRESULT, "LPD3DENUMDEVICESCALLBACK7", [(LPSTR, "lpDeviceDescription"), (LPSTR, "lpDeviceName"), LPD3DDEVICEDESC7, LPVOID])
+
diff --git a/specs/d3dtypes.py b/specs/d3dtypes.py
new file mode 100644 (file)
index 0000000..c80da76
--- /dev/null
@@ -0,0 +1,1030 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""d3dtypes.h"""
+
+from winapi import *
+
+D3DVALUE = Float
+LPD3DVALUE = Pointer(Float)
+D3DFIXED = LONG
+
+LPD3DVALIDATECALLBACK = Opaque("LPD3DVALIDATECALLBACK")
+LPD3DENUMTEXTUREFORMATSCALLBACK = Opaque("LPD3DENUMTEXTUREFORMATSCALLBACK")
+LPD3DENUMPIXELFORMATSCALLBACK = Opaque("LPD3DENUMPIXELFORMATSCALLBACK")
+
+D3DCOLOR = DWORD
+LPD3DCOLOR = Pointer(D3DCOLOR)
+
+D3DMATERIALHANDLE = DWORD
+LPD3DMATERIALHANDLE = Pointer(D3DMATERIALHANDLE)
+
+D3DTEXTUREHANDLE = DWORD
+LPD3DTEXTUREHANDLE = Pointer(D3DTEXTUREHANDLE)
+
+D3DMATRIXHANDLE = DWORD
+LPD3DMATRIXHANDLE = Pointer(D3DMATRIXHANDLE)
+
+D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
+    (D3DVALUE, "r"),
+    (D3DVALUE, "g"),
+    (D3DVALUE, "b"),
+    (D3DVALUE, "a"),
+])
+LPD3DCOLORVALUE = Pointer(D3DCOLORVALUE)
+
+D3DRECT = Struct("D3DRECT", [
+    (LONG, "x1"),
+    (LONG, "y1"),
+    (LONG, "x2"),
+    (LONG, "y2"),
+])
+LPD3DRECT = Pointer(D3DRECT)
+
+D3DVECTOR = Struct("D3DVECTOR", [
+    (D3DVALUE, "x"),
+    (D3DVALUE, "y"),
+    (D3DVALUE, "z"),
+])
+LPD3DVECTOR = Pointer(D3DVECTOR)
+
+D3DHVERTEX = Struct("D3DHVERTEX", [
+    (DWORD, "dwFlags"),
+    (D3DVALUE, "hx"),
+    (D3DVALUE, "hy"),
+    (D3DVALUE, "hz"),
+])
+LPD3DHVERTEX = Pointer(D3DHVERTEX)
+
+D3DTLVERTEX = Struct("D3DTLVERTEX", [
+    (D3DVALUE, "sx"),
+    (D3DVALUE, "sy"),
+    (D3DVALUE, "sz"),
+    (D3DVALUE, "rhw"),
+    (D3DCOLOR, "color"),
+    (D3DCOLOR, "specular"),
+    (D3DVALUE, "tu"),
+    (D3DVALUE, "tv"),
+])
+LPD3DTLVERTEX = Pointer(D3DTLVERTEX)
+
+D3DLVERTEX = Struct("D3DLVERTEX", [
+    (D3DVALUE, "x"),
+    (D3DVALUE, "y"),
+    (D3DVALUE, "z"),
+    (DWORD, "dwReserved"),
+    (D3DCOLOR, "color"),
+    (D3DCOLOR, "specular"),
+    (D3DVALUE, "tu"),
+    (D3DVALUE, "tv"),
+])
+LPD3DLVERTEX = Pointer(D3DLVERTEX)
+
+D3DVERTEX = Struct("D3DVERTEX", [
+    (D3DVALUE, "x"),
+    (D3DVALUE, "y"),
+    (D3DVALUE, "z"),
+    (D3DVALUE, "nx"),
+    (D3DVALUE, "ny"),
+    (D3DVALUE, "nz"),
+    (D3DVALUE, "tu"),
+    (D3DVALUE, "tv"),
+])
+LPD3DVERTEX = Pointer(D3DVERTEX)
+
+D3DMATRIX = Struct("D3DMATRIX", [
+    (D3DVALUE, "_%u" % index) for index in [
+         11, 12, 13, 14,
+         21, 22, 23, 24,
+         31, 32, 33, 34,
+         41, 42, 43, 44
+    ]
+])
+LPD3DMATRIX = Alias("LPD3DMATRIX", Pointer(D3DMATRIX))
+
+D3DVIEWPORT = Struct("D3DVIEWPORT", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwX"),
+    (DWORD, "dwY"),
+    (DWORD, "dwWidth"),
+    (DWORD, "dwHeight"),
+    (D3DVALUE, "dvScaleX"),
+    (D3DVALUE, "dvScaleY"),
+    (D3DVALUE, "dvMaxX"),
+    (D3DVALUE, "dvMaxY"),
+    (D3DVALUE, "dvMinZ"),
+    (D3DVALUE, "dvMaxZ"),
+])
+LPD3DVIEWPORT = Pointer(D3DVIEWPORT)
+
+D3DVIEWPORT2 = Struct("D3DVIEWPORT2", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwX"),
+    (DWORD, "dwY"),
+    (DWORD, "dwWidth"),
+    (DWORD, "dwHeight"),
+    (D3DVALUE, "dvClipX"),
+    (D3DVALUE, "dvClipY"),
+    (D3DVALUE, "dvClipWidth"),
+    (D3DVALUE, "dvClipHeight"),
+    (D3DVALUE, "dvMinZ"),
+    (D3DVALUE, "dvMaxZ"),
+])
+LPD3DVIEWPORT2 = Pointer(D3DVIEWPORT2)
+
+D3DVIEWPORT7 = Struct("D3DVIEWPORT7", [
+    (DWORD, "dwX"),
+    (DWORD, "dwY"),
+    (DWORD, "dwWidth"),
+    (DWORD, "dwHeight"),
+    (D3DVALUE, "dvMinZ"),
+    (D3DVALUE, "dvMaxZ"),
+])
+LPD3DVIEWPORT7 = Pointer(D3DVIEWPORT7)
+
+D3DCLIP = Flags(DWORD, [
+    "D3DCLIP_LEFT",
+    "D3DCLIP_RIGHT",
+    "D3DCLIP_TOP",
+    "D3DCLIP_BOTTOM",
+    "D3DCLIP_FRONT",
+    "D3DCLIP_BACK",
+    "D3DCLIP_GEN0",
+    "D3DCLIP_GEN1",
+    "D3DCLIP_GEN2",
+    "D3DCLIP_GEN3",
+    "D3DCLIP_GEN4",
+    "D3DCLIP_GEN5",
+])
+
+D3DSTATUS = Flags(DWORD, [
+    "D3DSTATUS_DEFAULT",
+    "D3DSTATUS_CLIPUNIONALL",
+    "D3DSTATUS_CLIPUNIONLEFT",
+    "D3DSTATUS_CLIPUNIONRIGHT",
+    "D3DSTATUS_CLIPUNIONTOP",
+    "D3DSTATUS_CLIPUNIONBOTTOM",
+    "D3DSTATUS_CLIPUNIONFRONT",
+    "D3DSTATUS_CLIPUNIONBACK",
+    "D3DSTATUS_CLIPUNIONGEN0",
+    "D3DSTATUS_CLIPUNIONGEN1",
+    "D3DSTATUS_CLIPUNIONGEN2",
+    "D3DSTATUS_CLIPUNIONGEN3",
+    "D3DSTATUS_CLIPUNIONGEN4",
+    "D3DSTATUS_CLIPUNIONGEN5",
+    "D3DSTATUS_CLIPINTERSECTIONALL",
+    "D3DSTATUS_CLIPINTERSECTIONLEFT",
+    "D3DSTATUS_CLIPINTERSECTIONRIGHT",
+    "D3DSTATUS_CLIPINTERSECTIONTOP",
+    "D3DSTATUS_CLIPINTERSECTIONBOTTOM",
+    "D3DSTATUS_CLIPINTERSECTIONFRONT",
+    "D3DSTATUS_CLIPINTERSECTIONBACK",
+    "D3DSTATUS_CLIPINTERSECTIONGEN0",
+    "D3DSTATUS_CLIPINTERSECTIONGEN1",
+    "D3DSTATUS_CLIPINTERSECTIONGEN2",
+    "D3DSTATUS_CLIPINTERSECTIONGEN3",
+    "D3DSTATUS_CLIPINTERSECTIONGEN4",
+    "D3DSTATUS_CLIPINTERSECTIONGEN5",
+    "D3DSTATUS_ZNOTVISIBLE",
+])
+
+D3DTRANSFORM = Flags(DWORD, [
+    "D3DTRANSFORM_CLIPPED",
+    "D3DTRANSFORM_UNCLIPPED",
+])
+
+D3DTRANSFORMDATA = Struct("D3DTRANSFORMDATA", [
+    (DWORD, "dwSize"),
+    (LPVOID, "lpIn"),
+    (DWORD, "dwInSize"),
+    (LPVOID, "lpOut"),
+    (DWORD, "dwOutSize"),
+    (LPD3DHVERTEX, "lpHOut"),
+    (DWORD, "dwClip"),
+    (DWORD, "dwClipIntersection"),
+    (DWORD, "dwClipUnion"),
+    (D3DRECT, "drExtent"),
+])
+LPD3DTRANSFORMDATA = Pointer(D3DTRANSFORMDATA)
+
+D3DLIGHTINGELEMENT = Struct("D3DLIGHTINGELEMENT", [
+    (D3DVECTOR, "dvPosition"),
+    (D3DVECTOR, "dvNormal"),
+])
+LPD3DLIGHTINGELEMENT = Pointer(D3DLIGHTINGELEMENT)
+
+D3DMATERIAL = Struct("D3DMATERIAL", [
+    (DWORD, "dwSize"),
+    (D3DCOLORVALUE, "diffuse"),
+    (D3DCOLORVALUE, "ambient"),
+    (D3DCOLORVALUE, "specular"),
+    (D3DCOLORVALUE, "emissive"),
+    (D3DVALUE, "power"),
+    (D3DTEXTUREHANDLE, "hTexture"),
+    (DWORD, "dwRampSize"),
+])
+LPD3DMATERIAL = Pointer(D3DMATERIAL)
+
+D3DMATERIAL7 = Struct("D3DMATERIAL7", [
+    (D3DCOLORVALUE, "diffuse"),
+    (D3DCOLORVALUE, "ambient"),
+    (D3DCOLORVALUE, "specular"),
+    (D3DCOLORVALUE, "emissive"),
+    (D3DVALUE, "power"),
+])
+LPD3DMATERIAL7 = Pointer(D3DMATERIAL7)
+
+D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
+    "D3DLIGHT_POINT",
+    "D3DLIGHT_SPOT",
+    "D3DLIGHT_DIRECTIONAL",
+    "D3DLIGHT_PARALLELPOINT",
+    "D3DLIGHT_GLSPOT",
+])
+
+D3DLIGHT = Struct("D3DLIGHT", [
+    (DWORD, "dwSize"),
+    (D3DLIGHTTYPE, "dltType"),
+    (D3DCOLORVALUE, "dcvColor"),
+    (D3DVECTOR, "dvPosition"),
+    (D3DVECTOR, "dvDirection"),
+    (D3DVALUE, "dvRange"),
+    (D3DVALUE, "dvFalloff"),
+    (D3DVALUE, "dvAttenuation0"),
+    (D3DVALUE, "dvAttenuation1"),
+    (D3DVALUE, "dvAttenuation2"),
+    (D3DVALUE, "dvTheta"),
+    (D3DVALUE, "dvPhi"),
+])
+LPD3DLIGHT = Pointer(D3DLIGHT)
+
+D3DLIGHT7 = Struct("D3DLIGHT7", [
+    (D3DLIGHTTYPE, "dltType"),
+    (D3DCOLORVALUE, "dcvDiffuse"),
+    (D3DCOLORVALUE, "dcvSpecular"),
+    (D3DCOLORVALUE, "dcvAmbient"),
+    (D3DVECTOR, "dvPosition"),
+    (D3DVECTOR, "dvDirection"),
+    (D3DVALUE, "dvRange"),
+    (D3DVALUE, "dvFalloff"),
+    (D3DVALUE, "dvAttenuation0"),
+    (D3DVALUE, "dvAttenuation1"),
+    (D3DVALUE, "dvAttenuation2"),
+    (D3DVALUE, "dvTheta"),
+    (D3DVALUE, "dvPhi"),
+])
+LPD3DLIGHT7 = Pointer(D3DLIGHT7)
+
+D3DLIGHTFLAGS = Flags(DWORD, [
+    "D3DLIGHT_ACTIVE",
+    "D3DLIGHT_NO_SPECULAR",
+    "D3DLIGHT_ALL",
+])
+
+D3DLIGHT2 = Struct("D3DLIGHT2", [
+    (DWORD, "dwSize"),
+    (D3DLIGHTTYPE, "dltType"),
+    (D3DCOLORVALUE, "dcvColor"),
+    (D3DVECTOR, "dvPosition"),
+    (D3DVECTOR, "dvDirection"),
+    (D3DVALUE, "dvRange"),
+    (D3DVALUE, "dvFalloff"),
+    (D3DVALUE, "dvAttenuation0"),
+    (D3DVALUE, "dvAttenuation1"),
+    (D3DVALUE, "dvAttenuation2"),
+    (D3DVALUE, "dvTheta"),
+    (D3DVALUE, "dvPhi"),
+    (DWORD, "dwFlags"),
+])
+LPD3DLIGHT2 = Pointer(D3DLIGHT2)
+
+D3DLIGHTDATA = Struct("D3DLIGHTDATA", [
+    (DWORD, "dwSize"),
+    (LPD3DLIGHTINGELEMENT, "lpIn"),
+    (DWORD, "dwInSize"),
+    (LPD3DTLVERTEX, "lpOut"),
+    (DWORD, "dwOutSize"),
+])
+LPD3DLIGHTDATA = Pointer(D3DLIGHTDATA)
+
+D3DCOLOR = Flags(DWORD, [
+    "D3DCOLOR_MONO",
+    "D3DCOLOR_RGB",
+])
+
+D3DCOLORMODEL = DWORD
+
+D3DCLEAR = Flags(DWORD, [
+    "D3DCLEAR_TARGET",
+    "D3DCLEAR_ZBUFFER",
+    "D3DCLEAR_STENCIL",
+])
+
+D3DOPCODE = Enum("D3DOPCODE", [
+    "D3DOP_POINT",
+    "D3DOP_LINE",
+    "D3DOP_TRIANGLE",
+    "D3DOP_MATRIXLOAD",
+    "D3DOP_MATRIXMULTIPLY",
+    "D3DOP_STATETRANSFORM",
+    "D3DOP_STATELIGHT",
+    "D3DOP_STATERENDER",
+    "D3DOP_PROCESSVERTICES",
+    "D3DOP_TEXTURELOAD",
+    "D3DOP_EXIT",
+    "D3DOP_BRANCHFORWARD",
+    "D3DOP_SPAN",
+    "D3DOP_SETSTATUS",
+])
+
+D3DINSTRUCTION = Struct("D3DINSTRUCTION", [
+    (BYTE, "bOpcode"),
+    (BYTE, "bSize"),
+    (WORD, "wCount"),
+])
+
+D3DTEXTURELOAD = Struct("D3DTEXTURELOAD", [
+    (D3DTEXTUREHANDLE, "hDestTexture"),
+    (D3DTEXTUREHANDLE, "hSrcTexture"),
+])
+
+D3DPICKRECORD = Struct("D3DPICKRECORD", [
+    (BYTE, "bOpcode"),
+    (BYTE, "bPad"),
+    (DWORD, "dwOffset"),
+    (D3DVALUE, "dvZ"),
+])
+LPD3DPICKRECORD = Pointer(D3DPICKRECORD)
+
+D3DSHADEMODE = Enum("D3DSHADEMODE", [
+    "D3DSHADE_FLAT",
+    "D3DSHADE_GOURAUD",
+    "D3DSHADE_PHONG",
+])
+
+D3DFILLMODE = Enum("D3DFILLMODE", [
+    "D3DFILL_POINT",
+    "D3DFILL_WIREFRAME",
+    "D3DFILL_SOLID",
+])
+
+D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
+    (WORD, "wRepeatFactor"),
+    (WORD, "wLinePattern"),
+])
+
+D3DTEXTUREFILTER = Enum("D3DTEXTUREFILTER", [
+    "D3DFILTER_NEAREST",
+    "D3DFILTER_LINEAR",
+    "D3DFILTER_MIPNEAREST",
+    "D3DFILTER_MIPLINEAR",
+    "D3DFILTER_LINEARMIPNEAREST",
+    "D3DFILTER_LINEARMIPLINEAR",
+])
+
+D3DBLEND = Enum("D3DBLEND", [
+    "D3DBLEND_ZERO",
+    "D3DBLEND_ONE",
+    "D3DBLEND_SRCCOLOR",
+    "D3DBLEND_INVSRCCOLOR",
+    "D3DBLEND_SRCALPHA",
+    "D3DBLEND_INVSRCALPHA",
+    "D3DBLEND_DESTALPHA",
+    "D3DBLEND_INVDESTALPHA",
+    "D3DBLEND_DESTCOLOR",
+    "D3DBLEND_INVDESTCOLOR",
+    "D3DBLEND_SRCALPHASAT",
+    "D3DBLEND_BOTHSRCALPHA",
+    "D3DBLEND_BOTHINVSRCALPHA",
+])
+
+D3DTEXTUREBLEND = Enum("D3DTEXTUREBLEND", [
+    "D3DTBLEND_DECAL",
+    "D3DTBLEND_MODULATE",
+    "D3DTBLEND_DECALALPHA",
+    "D3DTBLEND_MODULATEALPHA",
+    "D3DTBLEND_DECALMASK",
+    "D3DTBLEND_MODULATEMASK",
+    "D3DTBLEND_COPY",
+    "D3DTBLEND_ADD",
+])
+
+D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
+    "D3DTADDRESS_WRAP",
+    "D3DTADDRESS_MIRROR",
+    "D3DTADDRESS_CLAMP",
+    "D3DTADDRESS_BORDER",
+])
+
+D3DCULL = Enum("D3DCULL", [
+    "D3DCULL_NONE",
+    "D3DCULL_CW",
+    "D3DCULL_CCW",
+])
+
+D3DCMPFUNC = Enum("D3DCMPFUNC", [
+    "D3DCMP_NEVER",
+    "D3DCMP_LESS",
+    "D3DCMP_EQUAL",
+    "D3DCMP_LESSEQUAL",
+    "D3DCMP_GREATER",
+    "D3DCMP_NOTEQUAL",
+    "D3DCMP_GREATEREQUAL",
+    "D3DCMP_ALWAYS",
+])
+
+D3DSTENCILOP = Enum("D3DSTENCILOP", [
+    "D3DSTENCILOP_KEEP",
+    "D3DSTENCILOP_ZERO",
+    "D3DSTENCILOP_REPLACE",
+    "D3DSTENCILOP_INCRSAT",
+    "D3DSTENCILOP_DECRSAT",
+    "D3DSTENCILOP_INVERT",
+    "D3DSTENCILOP_INCR",
+    "D3DSTENCILOP_DECR",
+])
+
+D3DFOGMODE = Enum("D3DFOGMODE", [
+    "D3DFOG_NONE",
+    "D3DFOG_EXP",
+    "D3DFOG_EXP2",
+    "D3DFOG_LINEAR",
+])
+
+D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
+    "D3DZB_FALSE",
+    "D3DZB_TRUE",
+    "D3DZB_USEW",
+])
+
+D3DANTIALIASMODE = Enum("D3DANTIALIASMODE", [
+    "D3DANTIALIAS_NONE",
+    "D3DANTIALIAS_SORTDEPENDENT",
+    "D3DANTIALIAS_SORTINDEPENDENT",
+])
+
+D3DVERTEXTYPE = Enum("D3DVERTEXTYPE", [
+    "D3DVT_VERTEX",
+    "D3DVT_LVERTEX",
+    "D3DVT_TLVERTEX",
+])
+
+D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
+    "D3DPT_POINTLIST",
+    "D3DPT_LINELIST",
+    "D3DPT_LINESTRIP",
+    "D3DPT_TRIANGLELIST",
+    "D3DPT_TRIANGLESTRIP",
+    "D3DPT_TRIANGLEFAN",
+])
+
+D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
+    "D3DTRANSFORMSTATE_WORLD",
+    "D3DTRANSFORMSTATE_VIEW",
+    "D3DTRANSFORMSTATE_PROJECTION",
+    "D3DTRANSFORMSTATE_WORLD1",
+    "D3DTRANSFORMSTATE_WORLD2",
+    "D3DTRANSFORMSTATE_WORLD3",
+    "D3DTRANSFORMSTATE_TEXTURE0",
+    "D3DTRANSFORMSTATE_TEXTURE1",
+    "D3DTRANSFORMSTATE_TEXTURE2",
+    "D3DTRANSFORMSTATE_TEXTURE3",
+    "D3DTRANSFORMSTATE_TEXTURE4",
+    "D3DTRANSFORMSTATE_TEXTURE5",
+    "D3DTRANSFORMSTATE_TEXTURE6",
+    "D3DTRANSFORMSTATE_TEXTURE7",
+])
+
+D3DLIGHTSTATETYPE = Enum("D3DLIGHTSTATETYPE", [
+    "D3DLIGHTSTATE_MATERIAL",
+    "D3DLIGHTSTATE_AMBIENT",
+    "D3DLIGHTSTATE_COLORMODEL",
+    "D3DLIGHTSTATE_FOGMODE",
+    "D3DLIGHTSTATE_FOGSTART",
+    "D3DLIGHTSTATE_FOGEND",
+    "D3DLIGHTSTATE_FOGDENSITY",
+    "D3DLIGHTSTATE_COLORVERTEX",
+])
+
+D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
+    "D3DRENDERSTATE_ANTIALIAS",
+    "D3DRENDERSTATE_TEXTUREPERSPECTIVE",
+    "D3DRENDERSTATE_ZENABLE",
+    "D3DRENDERSTATE_FILLMODE",
+    "D3DRENDERSTATE_SHADEMODE",
+    "D3DRENDERSTATE_LINEPATTERN",
+    "D3DRENDERSTATE_ZWRITEENABLE",
+    "D3DRENDERSTATE_ALPHATESTENABLE",
+    "D3DRENDERSTATE_LASTPIXEL",
+    "D3DRENDERSTATE_SRCBLEND",
+    "D3DRENDERSTATE_DESTBLEND",
+    "D3DRENDERSTATE_CULLMODE",
+    "D3DRENDERSTATE_ZFUNC",
+    "D3DRENDERSTATE_ALPHAREF",
+    "D3DRENDERSTATE_ALPHAFUNC",
+    "D3DRENDERSTATE_DITHERENABLE",
+    "D3DRENDERSTATE_ALPHABLENDENABLE",
+    "D3DRENDERSTATE_FOGENABLE",
+    "D3DRENDERSTATE_SPECULARENABLE",
+    "D3DRENDERSTATE_ZVISIBLE",
+    "D3DRENDERSTATE_STIPPLEDALPHA",
+    "D3DRENDERSTATE_FOGCOLOR",
+    "D3DRENDERSTATE_FOGTABLEMODE",
+    "D3DRENDERSTATE_FOGSTART",
+    "D3DRENDERSTATE_FOGEND",
+    "D3DRENDERSTATE_FOGDENSITY",
+    "D3DRENDERSTATE_EDGEANTIALIAS",
+    "D3DRENDERSTATE_COLORKEYENABLE",
+    "D3DRENDERSTATE_ZBIAS",
+    "D3DRENDERSTATE_RANGEFOGENABLE",
+    "D3DRENDERSTATE_STENCILENABLE",
+    "D3DRENDERSTATE_STENCILFAIL",
+    "D3DRENDERSTATE_STENCILZFAIL",
+    "D3DRENDERSTATE_STENCILPASS",
+    "D3DRENDERSTATE_STENCILFUNC",
+    "D3DRENDERSTATE_STENCILREF",
+    "D3DRENDERSTATE_STENCILMASK",
+    "D3DRENDERSTATE_STENCILWRITEMASK",
+    "D3DRENDERSTATE_TEXTUREFACTOR",
+    "D3DRENDERSTATE_WRAP0",
+    "D3DRENDERSTATE_WRAP1",
+    "D3DRENDERSTATE_WRAP2",
+    "D3DRENDERSTATE_WRAP3",
+    "D3DRENDERSTATE_WRAP4",
+    "D3DRENDERSTATE_WRAP5",
+    "D3DRENDERSTATE_WRAP6",
+    "D3DRENDERSTATE_WRAP7",
+    "D3DRENDERSTATE_CLIPPING",
+    "D3DRENDERSTATE_LIGHTING",
+    "D3DRENDERSTATE_EXTENTS",
+    "D3DRENDERSTATE_AMBIENT",
+    "D3DRENDERSTATE_FOGVERTEXMODE",
+    "D3DRENDERSTATE_COLORVERTEX",
+    "D3DRENDERSTATE_LOCALVIEWER",
+    "D3DRENDERSTATE_NORMALIZENORMALS",
+    "D3DRENDERSTATE_COLORKEYBLENDENABLE",
+    "D3DRENDERSTATE_DIFFUSEMATERIALSOURCE",
+    "D3DRENDERSTATE_SPECULARMATERIALSOURCE",
+    "D3DRENDERSTATE_AMBIENTMATERIALSOURCE",
+    "D3DRENDERSTATE_EMISSIVEMATERIALSOURCE",
+    "D3DRENDERSTATE_VERTEXBLEND",
+    "D3DRENDERSTATE_CLIPPLANEENABLE",
+    "D3DRENDERSTATE_TEXTUREHANDLE",
+    "D3DRENDERSTATE_TEXTUREADDRESS",
+    "D3DRENDERSTATE_WRAPU",
+    "D3DRENDERSTATE_WRAPV",
+    "D3DRENDERSTATE_MONOENABLE",
+    "D3DRENDERSTATE_ROP2",
+    "D3DRENDERSTATE_PLANEMASK",
+    "D3DRENDERSTATE_TEXTUREMAG",
+    "D3DRENDERSTATE_TEXTUREMIN",
+    "D3DRENDERSTATE_TEXTUREMAPBLEND",
+    "D3DRENDERSTATE_SUBPIXEL",
+    "D3DRENDERSTATE_SUBPIXELX",
+    "D3DRENDERSTATE_STIPPLEENABLE",
+    "D3DRENDERSTATE_BORDERCOLOR",
+    "D3DRENDERSTATE_TEXTUREADDRESSU",
+    "D3DRENDERSTATE_TEXTUREADDRESSV",
+    "D3DRENDERSTATE_MIPMAPLODBIAS",
+    "D3DRENDERSTATE_ANISOTROPY",
+    "D3DRENDERSTATE_FLUSHBATCH",
+    "D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT",
+    "D3DRENDERSTATE_STIPPLEPATTERN00",
+    "D3DRENDERSTATE_STIPPLEPATTERN01",
+    "D3DRENDERSTATE_STIPPLEPATTERN02",
+    "D3DRENDERSTATE_STIPPLEPATTERN03",
+    "D3DRENDERSTATE_STIPPLEPATTERN04",
+    "D3DRENDERSTATE_STIPPLEPATTERN05",
+    "D3DRENDERSTATE_STIPPLEPATTERN06",
+    "D3DRENDERSTATE_STIPPLEPATTERN07",
+    "D3DRENDERSTATE_STIPPLEPATTERN08",
+    "D3DRENDERSTATE_STIPPLEPATTERN09",
+    "D3DRENDERSTATE_STIPPLEPATTERN10",
+    "D3DRENDERSTATE_STIPPLEPATTERN11",
+    "D3DRENDERSTATE_STIPPLEPATTERN12",
+    "D3DRENDERSTATE_STIPPLEPATTERN13",
+    "D3DRENDERSTATE_STIPPLEPATTERN14",
+    "D3DRENDERSTATE_STIPPLEPATTERN15",
+    "D3DRENDERSTATE_STIPPLEPATTERN16",
+    "D3DRENDERSTATE_STIPPLEPATTERN17",
+    "D3DRENDERSTATE_STIPPLEPATTERN18",
+    "D3DRENDERSTATE_STIPPLEPATTERN19",
+    "D3DRENDERSTATE_STIPPLEPATTERN20",
+    "D3DRENDERSTATE_STIPPLEPATTERN21",
+    "D3DRENDERSTATE_STIPPLEPATTERN22",
+    "D3DRENDERSTATE_STIPPLEPATTERN23",
+    "D3DRENDERSTATE_STIPPLEPATTERN24",
+    "D3DRENDERSTATE_STIPPLEPATTERN25",
+    "D3DRENDERSTATE_STIPPLEPATTERN26",
+    "D3DRENDERSTATE_STIPPLEPATTERN27",
+    "D3DRENDERSTATE_STIPPLEPATTERN28",
+    "D3DRENDERSTATE_STIPPLEPATTERN29",
+    "D3DRENDERSTATE_STIPPLEPATTERN30",
+    "D3DRENDERSTATE_STIPPLEPATTERN31",
+])
+
+D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
+    "D3DMCS_MATERIAL",
+    "D3DMCS_COLOR1",
+    "D3DMCS_COLOR2",
+])
+
+D3DWRAP = Flags(DWORD, [
+    "D3DWRAP_U",
+    "D3DWRAP_V",
+    "D3DWRAPCOORD_0",
+    "D3DWRAPCOORD_1",
+    "D3DWRAPCOORD_2",
+    "D3DWRAPCOORD_3",
+])
+
+D3DSTATE = Struct("D3DSTATE", [
+    (D3DTRANSFORMSTATETYPE, "dtstTransformStateType"),
+    (D3DLIGHTSTATETYPE, "dlstLightStateType"),
+    (D3DRENDERSTATETYPE, "drstRenderStateType"),
+    (Array(DWORD, "1"), "dwArg"),
+    (Array(D3DVALUE, "1"), "dvArg"),
+])
+
+D3DMATRIXLOAD = Struct("D3DMATRIXLOAD", [
+    (D3DMATRIXHANDLE, "hDestMatrix"),
+    (D3DMATRIXHANDLE, "hSrcMatrix"),
+])
+
+D3DMATRIXMULTIPLY = Struct("D3DMATRIXMULTIPLY", [
+    (D3DMATRIXHANDLE, "hDestMatrix"),
+    (D3DMATRIXHANDLE, "hSrcMatrix1"),
+    (D3DMATRIXHANDLE, "hSrcMatrix2"),
+])
+
+D3DPROCESSVERTICES = Struct("D3DPROCESSVERTICES", [
+    (DWORD, "dwFlags"),
+    (WORD, "wStart"),
+    (WORD, "wDest"),
+    (DWORD, "dwCount"),
+    (DWORD, "dwReserved"),
+])
+
+D3DPROCESSVERTICES = Flags(DWORD, [
+    "D3DPROCESSVERTICES_TRANSFORMLIGHT",
+    "D3DPROCESSVERTICES_TRANSFORM",
+    "D3DPROCESSVERTICES_COPY",
+    "D3DPROCESSVERTICES_OPMASK",
+    "D3DPROCESSVERTICES_UPDATEEXTENTS",
+    "D3DPROCESSVERTICES_NOCOLOR",
+])
+
+D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
+    "D3DTSS_COLOROP",
+    "D3DTSS_COLORARG1",
+    "D3DTSS_COLORARG2",
+    "D3DTSS_ALPHAOP",
+    "D3DTSS_ALPHAARG1",
+    "D3DTSS_ALPHAARG2",
+    "D3DTSS_BUMPENVMAT00",
+    "D3DTSS_BUMPENVMAT01",
+    "D3DTSS_BUMPENVMAT10",
+    "D3DTSS_BUMPENVMAT11",
+    "D3DTSS_TEXCOORDINDEX",
+    "D3DTSS_ADDRESS",
+    "D3DTSS_ADDRESSU",
+    "D3DTSS_ADDRESSV",
+    "D3DTSS_BORDERCOLOR",
+    "D3DTSS_MAGFILTER",
+    "D3DTSS_MINFILTER",
+    "D3DTSS_MIPFILTER",
+    "D3DTSS_MIPMAPLODBIAS",
+    "D3DTSS_MAXMIPLEVEL",
+    "D3DTSS_MAXANISOTROPY",
+    "D3DTSS_BUMPENVLSCALE",
+    "D3DTSS_BUMPENVLOFFSET",
+    "D3DTSS_TEXTURETRANSFORMFLAGS",
+])
+
+D3DTSS_TCI = Flags(DWORD, [
+    "D3DTSS_TCI_PASSTHRU",
+    "D3DTSS_TCI_CAMERASPACENORMAL",
+    "D3DTSS_TCI_CAMERASPACEPOSITION",
+    "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
+])
+
+D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
+    "D3DTOP_DISABLE",
+    "D3DTOP_SELECTARG1",
+    "D3DTOP_SELECTARG2",
+    "D3DTOP_MODULATE",
+    "D3DTOP_MODULATE2X",
+    "D3DTOP_MODULATE4X",
+    "D3DTOP_ADD",
+    "D3DTOP_ADDSIGNED",
+    "D3DTOP_ADDSIGNED2X",
+    "D3DTOP_SUBTRACT",
+    "D3DTOP_ADDSMOOTH",
+    "D3DTOP_BLENDDIFFUSEALPHA",
+    "D3DTOP_BLENDTEXTUREALPHA",
+    "D3DTOP_BLENDFACTORALPHA",
+    "D3DTOP_BLENDTEXTUREALPHAPM",
+    "D3DTOP_BLENDCURRENTALPHA",
+    "D3DTOP_PREMODULATE",
+    "D3DTOP_MODULATEALPHA_ADDCOLOR",
+    "D3DTOP_MODULATECOLOR_ADDALPHA",
+    "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
+    "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
+    "D3DTOP_BUMPENVMAP",
+    "D3DTOP_BUMPENVMAPLUMINANCE",
+    "D3DTOP_DOTPRODUCT3",
+])
+
+D3DTA = Flags(DWORD, [
+    "D3DTA_SELECTMASK",
+    "D3DTA_DIFFUSE",
+    "D3DTA_CURRENT",
+    "D3DTA_TEXTURE",
+    "D3DTA_TFACTOR",
+    "D3DTA_SPECULAR",
+    "D3DTA_COMPLEMENT",
+    "D3DTA_ALPHAREPLICATE",
+])
+
+D3DTEXTUREMAGFILTER = Enum("D3DTEXTUREMAGFILTER", [
+    "D3DTFG_POINT",
+    "D3DTFG_LINEAR",
+    "D3DTFG_FLATCUBIC",
+    "D3DTFG_GAUSSIANCUBIC",
+    "D3DTFG_ANISOTROPIC",
+])
+
+D3DTEXTUREMINFILTER = Enum("D3DTEXTUREMINFILTER", [
+    "D3DTFN_POINT",
+    "D3DTFN_LINEAR",
+    "D3DTFN_ANISOTROPIC",
+])
+
+D3DTEXTUREMIPFILTER = Enum("D3DTEXTUREMIPFILTER", [
+    "D3DTFP_NONE",
+    "D3DTFP_POINT",
+    "D3DTFP_LINEAR",
+])
+
+D3DTRIFLAG = Flags(DWORD, [
+    "D3DTRIFLAG_START",
+    "D3DTRIFLAG_STARTFLAT(len)",
+    "D3DTRIFLAG_ODD",
+    "D3DTRIFLAG_EVEN",
+    "D3DTRIFLAG_EDGEENABLETRIANGLE",
+    "D3DTRIFLAG_EDGEENABLE1",
+    "D3DTRIFLAG_EDGEENABLE2",
+    "D3DTRIFLAG_EDGEENABLE3",
+])
+
+D3DTRIANGLE = Struct("D3DTRIANGLE", [
+    (WORD, "v1"),
+    (WORD, "v2"),
+    (WORD, "v3"),
+    (WORD, "wFlags"),
+])
+
+D3DLINE = Struct("D3DLINE", [
+    (WORD, "v1"),
+    (WORD, "v2"),
+])
+
+D3DSPAN = Struct("D3DSPAN", [
+    (WORD, "wCount"),
+    (WORD, "wFirst"),
+])
+
+D3DPOINT = Struct("D3DPOINT", [
+    (WORD, "wCount"),
+    (WORD, "wFirst"),
+])
+
+D3DBRANCH = Struct("D3DBRANCH", [
+    (DWORD, "dwMask"),
+    (DWORD, "dwValue"),
+    (BOOL, "bNegate"),
+    (DWORD, "dwOffset"),
+])
+
+D3DSTATUS = Struct("D3DSTATUS", [
+    (DWORD, "dwFlags"),
+    (DWORD, "dwStatus"),
+    (D3DRECT, "drExtent"),
+])
+
+D3DSETSTATUS = Flags(DWORD, [
+    "D3DSETSTATUS_STATUS",
+    "D3DSETSTATUS_EXTENTS",
+    "D3DSETSTATUS_ALL",
+])
+
+D3DCLIPSTATUS = Struct("D3DCLIPSTATUS", [
+    (DWORD, "dwFlags"),
+    (DWORD, "dwStatus"),
+    (Float, "minx"),
+    (Float, "maxx"),
+    (Float, "miny"),
+    (Float, "maxy"),
+    (Float, "minz"),
+    (Float, "maxz"),
+])
+LPD3DCLIPSTATUS = Pointer(D3DCLIPSTATUS)
+
+D3DCLIPSTATUS = Flags(DWORD, [
+    "D3DCLIPSTATUS_STATUS",
+    "D3DCLIPSTATUS_EXTENTS2",
+    "D3DCLIPSTATUS_EXTENTS3",
+])
+
+D3DSTATS = Struct("D3DSTATS", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwTrianglesDrawn"),
+    (DWORD, "dwLinesDrawn"),
+    (DWORD, "dwPointsDrawn"),
+    (DWORD, "dwSpansDrawn"),
+    (DWORD, "dwVerticesProcessed"),
+])
+LPD3DSTATS = Pointer(D3DSTATS)
+
+D3DEXECUTE = Flags(DWORD, [
+    "D3DEXECUTE_CLIPPED",
+    "D3DEXECUTE_UNCLIPPED",
+])
+
+D3DEXECUTEDATA = Struct("D3DEXECUTEDATA", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwVertexOffset"),
+    (DWORD, "dwVertexCount"),
+    (DWORD, "dwInstructionOffset"),
+    (DWORD, "dwInstructionLength"),
+    (DWORD, "dwHVertexOffset"),
+    (D3DSTATUS, "dsStatus"),
+])
+LPD3DEXECUTEDATA = Pointer(D3DEXECUTEDATA)
+
+D3DPAL = Flags(DWORD, [
+    "D3DPAL_FREE",
+    "D3DPAL_READONLY",
+    "D3DPAL_RESERVED",
+])
+
+D3DVERTEXBUFFERDESC = Struct("D3DVERTEXBUFFERDESC", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwFVF"),
+    (DWORD, "dwNumVertices"),
+])
+LPD3DVERTEXBUFFERDESC = Pointer(D3DVERTEXBUFFERDESC)
+
+D3DVBCAPS = Flags(DWORD, [
+    "D3DVBCAPS_SYSTEMMEMORY",
+    "D3DVBCAPS_WRITEONLY",
+    "D3DVBCAPS_OPTIMIZED",
+    "D3DVBCAPS_DONOTCLIP",
+])
+
+D3DVOP = Flags(DWORD, [
+    "D3DVOP_LIGHT",
+    "D3DVOP_TRANSFORM",
+    "D3DVOP_CLIP",
+    "D3DVOP_EXTENTS",
+])
+
+D3DPV = Flags(DWORD, [
+    "D3DPV_DONOTCOPYDATA",
+])
+
+D3DFVF = Flags(DWORD, [
+    "D3DFVF_RESERVED0",
+    "D3DFVF_POSITION_MASK",
+    "D3DFVF_XYZ",
+    "D3DFVF_XYZRHW",
+    "D3DFVF_XYZB1",
+    "D3DFVF_XYZB2",
+    "D3DFVF_XYZB3",
+    "D3DFVF_XYZB4",
+    "D3DFVF_XYZB5",
+    "D3DFVF_NORMAL",
+    "D3DFVF_RESERVED1",
+    "D3DFVF_DIFFUSE",
+    "D3DFVF_SPECULAR",
+    "D3DFVF_TEXCOUNT_MASK",
+    "D3DFVF_TEXCOUNT_SHIFT",
+    "D3DFVF_TEX0",
+    "D3DFVF_TEX1",
+    "D3DFVF_TEX2",
+    "D3DFVF_TEX3",
+    "D3DFVF_TEX4",
+    "D3DFVF_TEX5",
+    "D3DFVF_TEX6",
+    "D3DFVF_TEX7",
+    "D3DFVF_TEX8",
+    "D3DFVF_RESERVED2",
+    "D3DFVF_RESERVED1",
+    "D3DFVF_VERTEX",
+    "D3DFVF_LVERTEX",
+    "D3DFVF_TLVERTEX",
+    "D3DFVF_TEXCOORDSIZE1(0)",
+    "D3DFVF_TEXCOORDSIZE1(1)",
+    "D3DFVF_TEXCOORDSIZE2(0)",
+    "D3DFVF_TEXCOORDSIZE2(1)",
+    "D3DFVF_TEXCOORDSIZE3(0)",
+    "D3DFVF_TEXCOORDSIZE3(1)",
+    "D3DFVF_TEXCOORDSIZE4(0)",
+    "D3DFVF_TEXCOORDSIZE4(1)",
+])
+
+D3DDP_PTRSTRIDE = Struct("D3DDP_PTRSTRIDE", [
+    (LPVOID, "lpvData"),
+    (DWORD, "dwStride"),
+])
+
+D3DDRAWPRIMITIVESTRIDEDDATA = Struct("D3DDRAWPRIMITIVESTRIDEDDATA", [
+    (D3DDP_PTRSTRIDE, "position"),
+    (D3DDP_PTRSTRIDE, "normal"),
+    (D3DDP_PTRSTRIDE, "diffuse"),
+    (D3DDP_PTRSTRIDE, "specular"),
+    (Array(D3DDP_PTRSTRIDE, "D3DDP_MAXTEXCOORD"), "textureCoords"),
+])
+LPD3DDRAWPRIMITIVESTRIDEDDATA = Pointer(D3DDRAWPRIMITIVESTRIDEDDATA)
+
+D3DVIS = Flags(DWORD, [
+    "D3DVIS_INSIDE_FRUSTUM",
+    "D3DVIS_INTERSECT_FRUSTUM",
+    "D3DVIS_OUTSIDE_FRUSTUM",
+    "D3DVIS_INSIDE_LEFT",
+    "D3DVIS_INTERSECT_LEFT",
+    "D3DVIS_OUTSIDE_LEFT",
+    "D3DVIS_INSIDE_RIGHT",
+    "D3DVIS_INTERSECT_RIGHT",
+    "D3DVIS_OUTSIDE_RIGHT",
+    "D3DVIS_INSIDE_TOP",
+    "D3DVIS_INTERSECT_TOP",
+    "D3DVIS_OUTSIDE_TOP",
+    "D3DVIS_INSIDE_BOTTOM",
+    "D3DVIS_INTERSECT_BOTTOM",
+    "D3DVIS_OUTSIDE_BOTTOM",
+    "D3DVIS_INSIDE_NEAR",
+    "D3DVIS_INTERSECT_NEAR",
+    "D3DVIS_OUTSIDE_NEAR",
+    "D3DVIS_INSIDE_FAR",
+    "D3DVIS_INTERSECT_FAR",
+    "D3DVIS_OUTSIDE_FAR",
+    "D3DVIS_MASK_FRUSTUM",
+    "D3DVIS_MASK_LEFT",
+    "D3DVIS_MASK_RIGHT",
+    "D3DVIS_MASK_TOP",
+    "D3DVIS_MASK_BOTTOM",
+    "D3DVIS_MASK_NEAR",
+    "D3DVIS_MASK_FAR",
+])
+
+D3DDEVINFOID = Flags(DWORD, [
+    "D3DDEVINFOID_TEXTUREMANAGER",
+    "D3DDEVINFOID_D3DTEXTUREMANAGER",
+    "D3DDEVINFOID_TEXTURING",
+])
+
+D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
+    "D3DSBT_ALL",
+    "D3DSBT_PIXELSTATE",
+    "D3DSBT_VERTEXSTATE",
+])
+
+D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
+    "D3DVBLEND_DISABLE",
+    "D3DVBLEND_1WEIGHT",
+    "D3DVBLEND_2WEIGHTS",
+    "D3DVBLEND_3WEIGHTS",
+])
+
+D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
+    "D3DTTFF_DISABLE",
+    "D3DTTFF_COUNT1",
+    "D3DTTFF_COUNT2",
+    "D3DTTFF_COUNT3",
+    "D3DTTFF_COUNT4",
+    "D3DTTFF_PROJECTED",
+])
diff --git a/specs/ddraw.py b/specs/ddraw.py
new file mode 100644 (file)
index 0000000..eb5a072
--- /dev/null
@@ -0,0 +1,1664 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""ddraw.h"""
+
+from winapi import *
+
+DirectDrawOptSurfaceDescFlags = Flags(DWORD, [
+    "DDOSD_GUID",
+    "DDOSD_COMPRESSION_RATIO",
+    "DDOSD_SCAPS",
+    "DDOSD_OSCAPS",
+    "DDOSD_ALL",
+])
+
+DirectDrawOptSurfaceDescCapsFlags = Flags(DWORD, [
+    "DDOSDCAPS_OPTCOMPRESSED",
+    "DDOSDCAPS_OPTREORDERED",
+    "DDOSDCAPS_MONOLITHICMIPMAP",
+])
+
+DirectDrawGetDeviceIdentifierFlags = Flags(DWORD, [
+    "DDGDI_GETHOSTIDENTIFIER",
+])
+
+IDirectDraw = Interface("IDirectDraw", IUnknown)
+IDirectDraw2 = Interface("IDirectDraw2", IUnknown)
+IDirectDraw4 = Interface("IDirectDraw4", IUnknown)
+IDirectDraw7 = Interface("IDirectDraw7", IUnknown)
+IDirectDrawPalette = Interface("IDirectDrawPalette", IUnknown)
+IDirectDrawClipper = Interface("IDirectDrawClipper", IUnknown)
+IDirectDrawSurface = Interface("IDirectDrawSurface", IUnknown)
+IDirectDrawSurface2 = Interface("IDirectDrawSurface2", IUnknown)
+IDirectDrawSurface3 = Interface("IDirectDrawSurface3", IUnknown)
+IDirectDrawSurface4 = Interface("IDirectDrawSurface4", IUnknown)
+IDirectDrawSurface7 = Interface("IDirectDrawSurface7", IUnknown)
+IDirectDrawColorControl = Interface("IDirectDrawColorControl", IUnknown)
+IDirectDrawGammaControl = Interface("IDirectDrawGammaControl", IUnknown)
+
+LPDIRECTDRAW = Pointer(IDirectDraw)
+LPDIRECTDRAW2 = Pointer(IDirectDraw2)
+LPDIRECTDRAW4 = Pointer(IDirectDraw4)
+LPDIRECTDRAW7 = Pointer(IDirectDraw7)
+LPDIRECTDRAWSURFACE = Pointer(IDirectDrawSurface)
+LPDIRECTDRAWSURFACE2 = Pointer(IDirectDrawSurface2)
+LPDIRECTDRAWSURFACE3 = Pointer(IDirectDrawSurface3)
+LPDIRECTDRAWSURFACE4 = Pointer(IDirectDrawSurface4)
+LPDIRECTDRAWSURFACE7 = Pointer(IDirectDrawSurface7)
+LPDIRECTDRAWPALETTE = Pointer(IDirectDrawPalette)
+LPDIRECTDRAWCLIPPER = Pointer(IDirectDrawClipper)
+LPDIRECTDRAWCOLORCONTROL = Pointer(IDirectDrawColorControl)
+LPDIRECTDRAWGAMMACONTROL = Pointer(IDirectDrawGammaControl)
+
+DDARGB = Struct("DDARGB", [
+    (BYTE, "blue"),
+    (BYTE, "green"),
+    (BYTE, "red"),
+    (BYTE, "alpha"),
+])
+
+LPDDARGB = Pointer(DDARGB)
+
+DDRGBA = Struct("DDRGBA", [
+    (BYTE, "red"),
+    (BYTE, "green"),
+    (BYTE, "blue"),
+    (BYTE, "alpha"),
+])
+LPDDRGBA = Pointer(DDRGBA)
+
+DDCOLORKEY = Struct("DDCOLORKEY", [
+    (DWORD, "dwColorSpaceLowValue"),
+    (DWORD, "dwColorSpaceHighValue"),
+])
+LPDDCOLORKEY = Pointer(DDCOLORKEY)
+
+DDBLTFX = Struct("DDBLTFX", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwDDFX"),
+    (DWORD, "dwROP"),
+    (DWORD, "dwDDROP"),
+    (DWORD, "dwRotationAngle"),
+    (DWORD, "dwZBufferOpCode"),
+    (DWORD, "dwZBufferLow"),
+    (DWORD, "dwZBufferHigh"),
+    (DWORD, "dwZBufferBaseDest"),
+    (DWORD, "dwZDestConstBitDepth"),
+    (DWORD, "dwZDestConst"),
+    (LPDIRECTDRAWSURFACE, "lpDDSZBufferDest"),
+    (DWORD, "dwZSrcConstBitDepth"),
+    (DWORD, "dwZSrcConst"),
+    (LPDIRECTDRAWSURFACE, "lpDDSZBufferSrc"),
+    (DWORD, "dwAlphaEdgeBlendBitDepth"),
+    (DWORD, "dwAlphaEdgeBlend"),
+    (DWORD, "dwReserved"),
+    (DWORD, "dwAlphaDestConstBitDepth"),
+    (DWORD, "dwAlphaDestConst"),
+    (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
+    (DWORD, "dwAlphaSrcConstBitDepth"),
+    (DWORD, "dwAlphaSrcConst"),
+    (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
+    (DWORD, "dwFillColor"),
+    (DWORD, "dwFillDepth"),
+    (DWORD, "dwFillPixel"),
+    (LPDIRECTDRAWSURFACE, "lpDDSPattern"),
+    (DDCOLORKEY, "ddckDestColorkey"),
+    (DDCOLORKEY, "ddckSrcColorkey"),
+])
+LPDDBLTFX = Pointer(DDBLTFX)
+
+DDSCAPS = Struct("DDSCAPS", [
+    (DWORD, "dwCaps"),
+])
+LPDDSCAPS = Pointer(DDSCAPS)
+
+DDOSCAPS = Struct("DDOSCAPS", [
+    (DWORD, "dwCaps"),
+])
+LPDDOSCAPS = Pointer(DDOSCAPS)
+
+DDSCAPSEX = Struct("DDSCAPSEX", [
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCaps3"),
+    (DWORD, "dwCaps4"),
+])
+
+DDSCAPS2 = Struct("DDSCAPS2", [
+    (DWORD, "dwCaps"),
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCaps3"),
+    (DWORD, "dwCaps4"),
+])
+LPDDSCAPS2 = Pointer(DDSCAPS2)
+
+DDCAPS_DX1 = Struct("DDCAPS_DX1", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCKeyCaps"),
+    (DWORD, "dwFXCaps"),
+    (DWORD, "dwFXAlphaCaps"),
+    (DWORD, "dwPalCaps"),
+    (DWORD, "dwSVCaps"),
+    (DWORD, "dwAlphaBltConstBitDepths"),
+    (DWORD, "dwAlphaBltPixelBitDepths"),
+    (DWORD, "dwAlphaBltSurfaceBitDepths"),
+    (DWORD, "dwAlphaOverlayConstBitDepths"),
+    (DWORD, "dwAlphaOverlayPixelBitDepths"),
+    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
+    (DWORD, "dwZBufferBitDepths"),
+    (DWORD, "dwVidMemTotal"),
+    (DWORD, "dwVidMemFree"),
+    (DWORD, "dwMaxVisibleOverlays"),
+    (DWORD, "dwCurrVisibleOverlays"),
+    (DWORD, "dwNumFourCCCodes"),
+    (DWORD, "dwAlignBoundarySrc"),
+    (DWORD, "dwAlignSizeSrc"),
+    (DWORD, "dwAlignBoundaryDest"),
+    (DWORD, "dwAlignSizeDest"),
+    (DWORD, "dwAlignStrideAlign"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+    (DDSCAPS, "ddsCaps"),
+    (DWORD, "dwMinOverlayStretch"),
+    (DWORD, "dwMaxOverlayStretch"),
+    (DWORD, "dwMinLiveVideoStretch"),
+    (DWORD, "dwMaxLiveVideoStretch"),
+    (DWORD, "dwMinHwCodecStretch"),
+    (DWORD, "dwMaxHwCodecStretch"),
+    (DWORD, "dwReserved1"),
+    (DWORD, "dwReserved2"),
+    (DWORD, "dwReserved3"),
+])
+LPDDCAPS_DX1 = Pointer(DDCAPS_DX1)
+
+DDCAPS_DX3 = Struct("DDCAPS_DX3", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCKeyCaps"),
+    (DWORD, "dwFXCaps"),
+    (DWORD, "dwFXAlphaCaps"),
+    (DWORD, "dwPalCaps"),
+    (DWORD, "dwSVCaps"),
+    (DWORD, "dwAlphaBltConstBitDepths"),
+    (DWORD, "dwAlphaBltPixelBitDepths"),
+    (DWORD, "dwAlphaBltSurfaceBitDepths"),
+    (DWORD, "dwAlphaOverlayConstBitDepths"),
+    (DWORD, "dwAlphaOverlayPixelBitDepths"),
+    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
+    (DWORD, "dwZBufferBitDepths"),
+    (DWORD, "dwVidMemTotal"),
+    (DWORD, "dwVidMemFree"),
+    (DWORD, "dwMaxVisibleOverlays"),
+    (DWORD, "dwCurrVisibleOverlays"),
+    (DWORD, "dwNumFourCCCodes"),
+    (DWORD, "dwAlignBoundarySrc"),
+    (DWORD, "dwAlignSizeSrc"),
+    (DWORD, "dwAlignBoundaryDest"),
+    (DWORD, "dwAlignSizeDest"),
+    (DWORD, "dwAlignStrideAlign"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+    (DDSCAPS, "ddsCaps"),
+    (DWORD, "dwMinOverlayStretch"),
+    (DWORD, "dwMaxOverlayStretch"),
+    (DWORD, "dwMinLiveVideoStretch"),
+    (DWORD, "dwMaxLiveVideoStretch"),
+    (DWORD, "dwMinHwCodecStretch"),
+    (DWORD, "dwMaxHwCodecStretch"),
+    (DWORD, "dwReserved1"),
+    (DWORD, "dwReserved2"),
+    (DWORD, "dwReserved3"),
+    (DWORD, "dwSVBCaps"),
+    (DWORD, "dwSVBCKeyCaps"),
+    (DWORD, "dwSVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+    (DWORD, "dwVSBCaps"),
+    (DWORD, "dwVSBCKeyCaps"),
+    (DWORD, "dwVSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+    (DWORD, "dwSSBCaps"),
+    (DWORD, "dwSSBCKeyCaps"),
+    (DWORD, "dwSSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+    (DWORD, "dwReserved4"),
+    (DWORD, "dwReserved5"),
+    (DWORD, "dwReserved6"),
+])
+LPDDCAPS_DX3 = Pointer(DDCAPS_DX3)
+
+DDCAPS_DX5 = Struct("DDCAPS_DX5", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCKeyCaps"),
+    (DWORD, "dwFXCaps"),
+    (DWORD, "dwFXAlphaCaps"),
+    (DWORD, "dwPalCaps"),
+    (DWORD, "dwSVCaps"),
+    (DWORD, "dwAlphaBltConstBitDepths"),
+    (DWORD, "dwAlphaBltPixelBitDepths"),
+    (DWORD, "dwAlphaBltSurfaceBitDepths"),
+    (DWORD, "dwAlphaOverlayConstBitDepths"),
+    (DWORD, "dwAlphaOverlayPixelBitDepths"),
+    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
+    (DWORD, "dwZBufferBitDepths"),
+    (DWORD, "dwVidMemTotal"),
+    (DWORD, "dwVidMemFree"),
+    (DWORD, "dwMaxVisibleOverlays"),
+    (DWORD, "dwCurrVisibleOverlays"),
+    (DWORD, "dwNumFourCCCodes"),
+    (DWORD, "dwAlignBoundarySrc"),
+    (DWORD, "dwAlignSizeSrc"),
+    (DWORD, "dwAlignBoundaryDest"),
+    (DWORD, "dwAlignSizeDest"),
+    (DWORD, "dwAlignStrideAlign"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+    (DDSCAPS, "ddsCaps"),
+    (DWORD, "dwMinOverlayStretch"),
+    (DWORD, "dwMaxOverlayStretch"),
+    (DWORD, "dwMinLiveVideoStretch"),
+    (DWORD, "dwMaxLiveVideoStretch"),
+    (DWORD, "dwMinHwCodecStretch"),
+    (DWORD, "dwMaxHwCodecStretch"),
+    (DWORD, "dwReserved1"),
+    (DWORD, "dwReserved2"),
+    (DWORD, "dwReserved3"),
+    (DWORD, "dwSVBCaps"),
+    (DWORD, "dwSVBCKeyCaps"),
+    (DWORD, "dwSVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+    (DWORD, "dwVSBCaps"),
+    (DWORD, "dwVSBCKeyCaps"),
+    (DWORD, "dwVSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+    (DWORD, "dwSSBCaps"),
+    (DWORD, "dwSSBCKeyCaps"),
+    (DWORD, "dwSSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+    (DWORD, "dwMaxVideoPorts"),
+    (DWORD, "dwCurrVideoPorts"),
+    (DWORD, "dwSVBCaps2"),
+    (DWORD, "dwNLVBCaps"),
+    (DWORD, "dwNLVBCaps2"),
+    (DWORD, "dwNLVBCKeyCaps"),
+    (DWORD, "dwNLVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
+])
+LPDDCAPS_DX5 = Pointer(DDCAPS_DX5)
+
+DDCAPS_DX6 = Struct("DDCAPS_DX6", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCKeyCaps"),
+    (DWORD, "dwFXCaps"),
+    (DWORD, "dwFXAlphaCaps"),
+    (DWORD, "dwPalCaps"),
+    (DWORD, "dwSVCaps"),
+    (DWORD, "dwAlphaBltConstBitDepths"),
+    (DWORD, "dwAlphaBltPixelBitDepths"),
+    (DWORD, "dwAlphaBltSurfaceBitDepths"),
+    (DWORD, "dwAlphaOverlayConstBitDepths"),
+    (DWORD, "dwAlphaOverlayPixelBitDepths"),
+    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
+    (DWORD, "dwZBufferBitDepths"),
+    (DWORD, "dwVidMemTotal"),
+    (DWORD, "dwVidMemFree"),
+    (DWORD, "dwMaxVisibleOverlays"),
+    (DWORD, "dwCurrVisibleOverlays"),
+    (DWORD, "dwNumFourCCCodes"),
+    (DWORD, "dwAlignBoundarySrc"),
+    (DWORD, "dwAlignSizeSrc"),
+    (DWORD, "dwAlignBoundaryDest"),
+    (DWORD, "dwAlignSizeDest"),
+    (DWORD, "dwAlignStrideAlign"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+    (DDSCAPS, "ddsOldCaps"),
+    (DWORD, "dwMinOverlayStretch"),
+    (DWORD, "dwMaxOverlayStretch"),
+    (DWORD, "dwMinLiveVideoStretch"),
+    (DWORD, "dwMaxLiveVideoStretch"),
+    (DWORD, "dwMinHwCodecStretch"),
+    (DWORD, "dwMaxHwCodecStretch"),
+    (DWORD, "dwReserved1"),
+    (DWORD, "dwReserved2"),
+    (DWORD, "dwReserved3"),
+    (DWORD, "dwSVBCaps"),
+    (DWORD, "dwSVBCKeyCaps"),
+    (DWORD, "dwSVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+    (DWORD, "dwVSBCaps"),
+    (DWORD, "dwVSBCKeyCaps"),
+    (DWORD, "dwVSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+    (DWORD, "dwSSBCaps"),
+    (DWORD, "dwSSBCKeyCaps"),
+    (DWORD, "dwSSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+    (DWORD, "dwMaxVideoPorts"),
+    (DWORD, "dwCurrVideoPorts"),
+    (DWORD, "dwSVBCaps2"),
+    (DWORD, "dwNLVBCaps"),
+    (DWORD, "dwNLVBCaps2"),
+    (DWORD, "dwNLVBCKeyCaps"),
+    (DWORD, "dwNLVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
+    (DDSCAPS2, "ddsCaps"),
+])
+LPDDCAPS_DX6 = Pointer(DDCAPS_DX6)
+
+DDCAPS_DX7 = Struct("DDCAPS_DX7", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwCaps"),
+    (DWORD, "dwCaps2"),
+    (DWORD, "dwCKeyCaps"),
+    (DWORD, "dwFXCaps"),
+    (DWORD, "dwFXAlphaCaps"),
+    (DWORD, "dwPalCaps"),
+    (DWORD, "dwSVCaps"),
+    (DWORD, "dwAlphaBltConstBitDepths"),
+    (DWORD, "dwAlphaBltPixelBitDepths"),
+    (DWORD, "dwAlphaBltSurfaceBitDepths"),
+    (DWORD, "dwAlphaOverlayConstBitDepths"),
+    (DWORD, "dwAlphaOverlayPixelBitDepths"),
+    (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
+    (DWORD, "dwZBufferBitDepths"),
+    (DWORD, "dwVidMemTotal"),
+    (DWORD, "dwVidMemFree"),
+    (DWORD, "dwMaxVisibleOverlays"),
+    (DWORD, "dwCurrVisibleOverlays"),
+    (DWORD, "dwNumFourCCCodes"),
+    (DWORD, "dwAlignBoundarySrc"),
+    (DWORD, "dwAlignSizeSrc"),
+    (DWORD, "dwAlignBoundaryDest"),
+    (DWORD, "dwAlignSizeDest"),
+    (DWORD, "dwAlignStrideAlign"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwRops"),
+    (DDSCAPS, "ddsOldCaps"),
+    (DWORD, "dwMinOverlayStretch"),
+    (DWORD, "dwMaxOverlayStretch"),
+    (DWORD, "dwMinLiveVideoStretch"),
+    (DWORD, "dwMaxLiveVideoStretch"),
+    (DWORD, "dwMinHwCodecStretch"),
+    (DWORD, "dwMaxHwCodecStretch"),
+    (DWORD, "dwReserved1"),
+    (DWORD, "dwReserved2"),
+    (DWORD, "dwReserved3"),
+    (DWORD, "dwSVBCaps"),
+    (DWORD, "dwSVBCKeyCaps"),
+    (DWORD, "dwSVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSVBRops"),
+    (DWORD, "dwVSBCaps"),
+    (DWORD, "dwVSBCKeyCaps"),
+    (DWORD, "dwVSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwVSBRops"),
+    (DWORD, "dwSSBCaps"),
+    (DWORD, "dwSSBCKeyCaps"),
+    (DWORD, "dwSSBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwSSBRops"),
+    (DWORD, "dwMaxVideoPorts"),
+    (DWORD, "dwCurrVideoPorts"),
+    (DWORD, "dwSVBCaps2"),
+    (DWORD, "dwNLVBCaps"),
+    (DWORD, "dwNLVBCaps2"),
+    (DWORD, "dwNLVBCKeyCaps"),
+    (DWORD, "dwNLVBFXCaps"),
+    (Array(DWORD, "DD_ROP_SPACE"), "dwNLVBRops"),
+    (DDSCAPS2, "ddsCaps"),
+])
+LPDDCAPS_DX7 = Pointer(DDCAPS_DX7)
+DDCAPS = DDCAPS_DX7
+LPDDCAPS = Pointer(DDCAPS)
+
+DDPIXELFORMAT = Struct("DDPIXELFORMAT", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (DWORD, "dwFourCC"),
+    (DWORD, "dwRGBBitCount"),
+    (DWORD, "dwYUVBitCount"),
+    (DWORD, "dwZBufferBitDepth"),
+    (DWORD, "dwAlphaBitDepth"),
+    (DWORD, "dwLuminanceBitCount"),
+    (DWORD, "dwBumpBitCount"),
+    (DWORD, "dwPrivateFormatBitCount"),
+    (DWORD, "dwRBitMask"),
+    (DWORD, "dwYBitMask"),
+    (DWORD, "dwStencilBitDepth"),
+    (DWORD, "dwLuminanceBitMask"),
+    (DWORD, "dwBumpDuBitMask"),
+    (DWORD, "dwOperations"),
+    (DWORD, "dwGBitMask"),
+    (DWORD, "dwUBitMask"),
+    (DWORD, "dwZBitMask"),
+    (DWORD, "dwBumpDvBitMask"),
+    (WORD, "MultiSampleCaps.wFlipMSTypes"),
+    (WORD, "MultiSampleCaps.wBltMSTypes"),
+    (DWORD, "dwBBitMask"),
+    (DWORD, "dwVBitMask"),
+    (DWORD, "dwStencilBitMask"),
+    (DWORD, "dwBumpLuminanceBitMask"),
+    (DWORD, "dwRGBAlphaBitMask"),
+    (DWORD, "dwYUVAlphaBitMask"),
+    (DWORD, "dwLuminanceAlphaBitMask"),
+    (DWORD, "dwRGBZBitMask"),
+    (DWORD, "dwYUVZBitMask"),
+])
+LPDDPIXELFORMAT = Pointer(DDPIXELFORMAT)
+
+DDOVERLAYFX = Struct("DDOVERLAYFX", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwAlphaEdgeBlendBitDepth"),
+    (DWORD, "dwAlphaEdgeBlend"),
+    (DWORD, "dwReserved"),
+    (DWORD, "dwAlphaDestConstBitDepth"),
+    (DWORD, "dwAlphaDestConst"),
+    (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
+    (DWORD, "dwAlphaSrcConstBitDepth"),
+    (DWORD, "dwAlphaSrcConst"),
+    (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
+    (DDCOLORKEY, "dckDestColorkey"),
+    (DDCOLORKEY, "dckSrcColorkey"),
+    (DWORD, "dwDDFX"),
+    (DWORD, "dwFlags"),
+])
+LPDDOVERLAYFX = Pointer(DDOVERLAYFX)
+
+DDBLTBATCH = Struct("DDBLTBATCH", [
+    (LPRECT, "lprDest"),
+    (LPDIRECTDRAWSURFACE, "lpDDSSrc"),
+    (LPRECT, "lprSrc"),
+    (DWORD, "dwFlags"),
+    (LPDDBLTFX, "lpDDBltFx"),
+])
+LPDDBLTBATCH = Pointer(DDBLTBATCH)
+
+DDGAMMARAMP = Struct("DDGAMMARAMP", [
+    (Array(WORD, "256"), "red"),
+    (Array(WORD, "256"), "green"),
+    (Array(WORD, "256"), "blue"),
+])
+LPDDGAMMARAMP = Pointer(DDGAMMARAMP)
+
+DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
+    (CString, "szDriver"),
+    (CString, "szDescription"),
+    (LARGE_INTEGER, "liDriverVersion"),
+    (DWORD, "dwVendorId"),
+    (DWORD, "dwDeviceId"),
+    (DWORD, "dwSubSysId"),
+    (DWORD, "dwRevision"),
+    (GUID, "guidDeviceIdentifier"),
+])
+LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER)
+
+DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
+    (CString, "szDriver"),
+    (CString, "szDescription"),
+    (LARGE_INTEGER, "liDriverVersion"),
+    (DWORD, "dwVendorId"),
+    (DWORD, "dwDeviceId"),
+    (DWORD, "dwSubSysId"),
+    (DWORD, "dwRevision"),
+    (GUID, "guidDeviceIdentifier"),
+    (DWORD, "dwWHQLLevel"),
+])
+LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2)
+
+LPCLIPPERCALLBACK = FunctionPointer(DWORD, "LPCLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])
+LPSURFACESTREAMINGCALLBACK = FunctionPointer(DWORD, "LPSURFACESTREAMINGCALLBACK", [DWORD])
+
+DDSURFACEDESC = Struct("DDSURFACEDESC", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (DWORD, "dwHeight"),
+    (DWORD, "dwWidth"),
+    (LONG, "lPitch"),
+    (DWORD, "dwLinearSize"),
+    (DWORD, "dwBackBufferCount"),
+    (DWORD, "dwMipMapCount"),
+    (DWORD, "dwZBufferBitDepth"),
+    (DWORD, "dwRefreshRate"),
+    (DWORD, "dwAlphaBitDepth"),
+    (DWORD, "dwReserved"),
+    (LPVOID, "lpSurface"),
+    (DDCOLORKEY, "ddckCKDestOverlay"),
+    (DDCOLORKEY, "ddckCKDestBlt"),
+    (DDCOLORKEY, "ddckCKSrcOverlay"),
+    (DDCOLORKEY, "ddckCKSrcBlt"),
+    (DDPIXELFORMAT, "ddpfPixelFormat"),
+    (DDSCAPS, "ddsCaps"),
+])
+LPDDSURFACEDESC = Pointer(DDSURFACEDESC)
+
+DDSURFACEDESC2 = Struct("DDSURFACEDESC2", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (DWORD, "dwHeight"),
+    (DWORD, "dwWidth"),
+    (LONG, "lPitch"),
+    (DWORD, "dwLinearSize"),
+    (DWORD, "dwBackBufferCount"),
+    (DWORD, "dwDepth"),
+    (DWORD, "dwMipMapCount"),
+    (DWORD, "dwRefreshRate"),
+    (DWORD, "dwSrcVBHandle"),
+    (DWORD, "dwAlphaBitDepth"),
+    (DWORD, "dwReserved"),
+    (LPVOID, "lpSurface"),
+    (DDCOLORKEY, "ddckCKDestOverlay"),
+    (DWORD, "dwEmptyFaceColor"),
+    (DDCOLORKEY, "ddckCKDestBlt"),
+    (DDCOLORKEY, "ddckCKSrcOverlay"),
+    (DDCOLORKEY, "ddckCKSrcBlt"),
+    (DDPIXELFORMAT, "ddpfPixelFormat"),
+    (DWORD, "dwFVF"),
+    (DDSCAPS2, "ddsCaps"),
+    (DWORD, "dwTextureStage"),
+])
+LPDDSURFACEDESC2 = Pointer(DDSURFACEDESC2)
+
+DirectDrawSurfaceDescFlags = Flags(DWORD, [
+    "DDSD_CAPS",
+    "DDSD_HEIGHT",
+    "DDSD_WIDTH",
+    "DDSD_PITCH",
+    "DDSD_BACKBUFFERCOUNT",
+    "DDSD_ZBUFFERBITDEPTH",
+    "DDSD_ALPHABITDEPTH",
+    "DDSD_LPSURFACE",
+    "DDSD_PIXELFORMAT",
+    "DDSD_CKDESTOVERLAY",
+    "DDSD_CKDESTBLT",
+    "DDSD_CKSRCOVERLAY",
+    "DDSD_CKSRCBLT",
+    "DDSD_MIPMAPCOUNT",
+    "DDSD_REFRESHRATE",
+    "DDSD_LINEARSIZE",
+    "DDSD_TEXTURESTAGE",
+    "DDSD_FVF",
+    "DDSD_SRCVBHANDLE",
+    "DDSD_DEPTH",
+    "DDSD_ALL",
+])
+
+DDOPTSURFACEDESC = Struct("DDOPTSURFACEDESC", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (DDSCAPS2, "ddSCaps"),
+    (DDOSCAPS, "ddOSCaps"),
+    (GUID, "guid"),
+    (DWORD, "dwCompressionRatio"),
+])
+
+DDSD = Flags(DWORD, [
+    "DDOSD_GUID",
+    "DDOSD_COMPRESSION_RATIO",
+    "DDOSD_SCAPS",
+    "DDOSD_OSCAPS",
+    "DDOSD_ALL",
+])
+
+DDOSDCAPS = Flags(DWORD, [
+    "DDOSDCAPS_OPTCOMPRESSED",
+    "DDOSDCAPS_OPTREORDERED",
+    "DDOSDCAPS_MONOLITHICMIPMAP",
+    "DDOSDCAPS_VALIDSCAPS",
+    "DDOSDCAPS_VALIDOSCAPS",
+])
+
+DDCOLORCONTROL = Struct("DDCOLORCONTROL", [
+    (DWORD, "dwSize"),
+    (DWORD, "dwFlags"),
+    (LONG, "lBrightness"),
+    (LONG, "lContrast"),
+    (LONG, "lHue"),
+    (LONG, "lSaturation"),
+    (LONG, "lSharpness"),
+    (LONG, "lGamma"),
+    (LONG, "lColorEnable"),
+    (DWORD, "dwReserved1"),
+])
+LPDDCOLORCONTROL = Pointer(DDCOLORCONTROL)
+
+DirectDrawEnumerateExFlags = Flags(DWORD, [
+    "DDENUM_ATTACHEDSECONDARYDEVICES",
+    "DDENUM_DETACHEDSECONDARYDEVICES",
+    "DDENUM_NONDISPLAYDEVICES",
+])
+
+DirectDrawCreateFlags = FakeEnum(DWORD, [
+    "DDCREATE_HARDWAREONLY",
+    "DDCREATE_EMULATIONONLY",
+])
+
+DirectDrawColorControlFlags = Flags(DWORD, [
+    "DDCOLOR_BRIGHTNESS",
+    "DDCOLOR_CONTRAST",
+    "DDCOLOR_HUE",
+    "DDCOLOR_SATURATION",
+    "DDCOLOR_SHARPNESS",
+    "DDCOLOR_GAMMA",
+    "DDCOLOR_COLORENABLE",
+])
+
+DirectDrawCapsFlags = Flags(DWORD, [
+    "DDSCAPS_RESERVED1",
+    "DDSCAPS_ALPHA",
+    "DDSCAPS_BACKBUFFER",
+    "DDSCAPS_COMPLEX",
+    "DDSCAPS_FLIP",
+    "DDSCAPS_FRONTBUFFER",
+    "DDSCAPS_OFFSCREENPLAIN",
+    "DDSCAPS_OVERLAY",
+    "DDSCAPS_PALETTE",
+    "DDSCAPS_PRIMARYSURFACE",
+    "DDSCAPS_RESERVED3",
+    "DDSCAPS_PRIMARYSURFACELEFT",
+    "DDSCAPS_SYSTEMMEMORY",
+    "DDSCAPS_TEXTURE",
+    "DDSCAPS_3DDEVICE",
+    "DDSCAPS_VIDEOMEMORY",
+    "DDSCAPS_VISIBLE",
+    "DDSCAPS_WRITEONLY",
+    "DDSCAPS_ZBUFFER",
+    "DDSCAPS_OWNDC",
+    "DDSCAPS_LIVEVIDEO",
+    "DDSCAPS_HWCODEC",
+    "DDSCAPS_MODEX",
+    "DDSCAPS_MIPMAP",
+    "DDSCAPS_RESERVED2",
+    "DDSCAPS_ALLOCONLOAD",
+    "DDSCAPS_VIDEOPORT",
+    "DDSCAPS_LOCALVIDMEM",
+    "DDSCAPS_NONLOCALVIDMEM",
+    "DDSCAPS_STANDARDVGAMODE",
+    "DDSCAPS_OPTIMIZED",
+])
+
+DirectDrawCapabilityFlags2 = Flags(DWORD, [
+    "DDSCAPS2_RESERVED4",
+    "DDSCAPS2_HARDWAREDEINTERLACE",
+    "DDSCAPS2_HINTDYNAMIC",
+    "DDSCAPS2_HINTSTATIC",
+    "DDSCAPS2_TEXTUREMANAGE",
+    "DDSCAPS2_RESERVED1",
+    "DDSCAPS2_RESERVED2",
+    "DDSCAPS2_OPAQUE",
+    "DDSCAPS2_HINTANTIALIASING",
+    "DDSCAPS2_CUBEMAP",
+    "DDSCAPS2_CUBEMAP_ALLFACES",
+    "DDSCAPS2_CUBEMAP_POSITIVEX",
+    "DDSCAPS2_CUBEMAP_NEGATIVEX",
+    "DDSCAPS2_CUBEMAP_POSITIVEY",
+    "DDSCAPS2_CUBEMAP_NEGATIVEY",
+    "DDSCAPS2_CUBEMAP_POSITIVEZ",
+    "DDSCAPS2_CUBEMAP_NEGATIVEZ",
+    "DDSCAPS2_MIPMAPSUBLEVEL",
+    "DDSCAPS2_D3DTEXTUREMANAGE",
+    "DDSCAPS2_DONOTPERSIST",
+    "DDSCAPS2_STEREOSURFACELEFT",
+    "DDSCAPS2_VOLUME",
+    "DDSCAPS2_NOTUSERLOCKABLE",
+    "DDSCAPS2_POINTS",
+    "DDSCAPS2_RTPATCHES",
+    "DDSCAPS2_NPATCHES",
+    "DDSCAPS2_RESERVED3",
+    "DDSCAPS2_DISCARDBACKBUFFER",
+    "DDSCAPS2_ENABLEALPHACHANNEL",
+    "DDSCAPS2_EXTENDEDFORMATPRIMARY",
+    "DDSCAPS2_ADDITIONALPRIMARY",
+])
+DDSCAPS3 = Flags(DWORD, [
+    "DDSCAPS3_MULTISAMPLE_MASK",
+    "DDSCAPS3_MULTISAMPLE_QUALITY_MASK",
+    "DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT",
+    "DDSCAPS3_RESERVED1",
+    "DDSCAPS3_RESERVED2",
+    "DDSCAPS3_LIGHTWEIGHTMIPMAP",
+    "DDSCAPS3_AUTOGENMIPMAP",
+    "DDSCAPS3_DMAP",
+    "DDSCAPS3_CREATESHAREDRESOURCE",
+    "DDSCAPS3_READONLYRESOURCE",
+    "DDSCAPS3_OPENSHAREDRESOURCE",
+])
+
+DirectDrawDriverCapsFlags = Flags(DWORD, [
+    "DDCAPS_3D",
+    "DDCAPS_ALIGNBOUNDARYDEST",
+    "DDCAPS_ALIGNSIZEDEST",
+    "DDCAPS_ALIGNBOUNDARYSRC",
+    "DDCAPS_ALIGNSIZESRC",
+    "DDCAPS_ALIGNSTRIDE",
+    "DDCAPS_BLT",
+    "DDCAPS_BLTQUEUE",
+    "DDCAPS_BLTFOURCC",
+    "DDCAPS_BLTSTRETCH",
+    "DDCAPS_GDI",
+    "DDCAPS_OVERLAY",
+    "DDCAPS_OVERLAYCANTCLIP",
+    "DDCAPS_OVERLAYFOURCC",
+    "DDCAPS_OVERLAYSTRETCH",
+    "DDCAPS_PALETTE",
+    "DDCAPS_PALETTEVSYNC",
+    "DDCAPS_READSCANLINE",
+    "DDCAPS_RESERVED1",
+    "DDCAPS_VBI",
+    "DDCAPS_ZBLTS",
+    "DDCAPS_ZOVERLAYS",
+    "DDCAPS_COLORKEY",
+    "DDCAPS_ALPHA",
+    "DDCAPS_COLORKEYHWASSIST",
+    "DDCAPS_NOHARDWARE",
+    "DDCAPS_BLTCOLORFILL",
+    "DDCAPS_BANKSWITCHED",
+    "DDCAPS_BLTDEPTHFILL",
+    "DDCAPS_CANCLIP",
+    "DDCAPS_CANCLIPSTRETCHED",
+    "DDCAPS_CANBLTSYSMEM",
+])
+
+DirectDrawDriverCapsFlags2 = Flags(DWORD, [
+    "DDCAPS2_CERTIFIED",
+    "DDCAPS2_NO2DDURING3DSCENE",
+    "DDCAPS2_VIDEOPORT",
+    "DDCAPS2_AUTOFLIPOVERLAY",
+    "DDCAPS2_CANBOBINTERLEAVED",
+    "DDCAPS2_CANBOBNONINTERLEAVED",
+    "DDCAPS2_COLORCONTROLOVERLAY",
+    "DDCAPS2_COLORCONTROLPRIMARY",
+    "DDCAPS2_CANDROPZ16BIT",
+    "DDCAPS2_NONLOCALVIDMEM",
+    "DDCAPS2_NONLOCALVIDMEMCAPS",
+    "DDCAPS2_NOPAGELOCKREQUIRED",
+    "DDCAPS2_WIDESURFACES",
+    "DDCAPS2_CANFLIPODDEVEN",
+    "DDCAPS2_CANBOBHARDWARE",
+    "DDCAPS2_COPYFOURCC",
+    "DDCAPS2_PRIMARYGAMMA",
+    "DDCAPS2_CANRENDERWINDOWED",
+    "DDCAPS2_CANCALIBRATEGAMMA",
+    "DDCAPS2_FLIPINTERVAL",
+    "DDCAPS2_FLIPNOVSYNC",
+    "DDCAPS2_CANMANAGETEXTURE",
+    "DDCAPS2_TEXMANINNONLOCALVIDMEM",
+    "DDCAPS2_STEREO",
+    "DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL",
+    "DDCAPS2_RESERVED1",
+    "DDCAPS2_CANMANAGERESOURCE",
+    "DDCAPS2_DYNAMICTEXTURES",
+    "DDCAPS2_CANAUTOGENMIPMAP",
+    "DDCAPS2_CANSHARERESOURCE",
+])
+
+DirectDrawFxAlphaCapsFlags = Flags(DWORD, [
+    "DDFXALPHACAPS_BLTALPHAEDGEBLEND",
+    "DDFXALPHACAPS_BLTALPHAPIXELS",
+    "DDFXALPHACAPS_BLTALPHAPIXELSNEG",
+    "DDFXALPHACAPS_BLTALPHASURFACES",
+    "DDFXALPHACAPS_BLTALPHASURFACESNEG",
+    "DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND",
+    "DDFXALPHACAPS_OVERLAYALPHAPIXELS",
+    "DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG",
+    "DDFXALPHACAPS_OVERLAYALPHASURFACES",
+    "DDFXALPHACAPS_OVERLAYALPHASURFACESNEG",
+])
+
+DirectDrawFxCapsFlags = Flags(DWORD, [
+    "DDFXCAPS_BLTARITHSTRETCHY",
+    "DDFXCAPS_BLTARITHSTRETCHYN",
+    "DDFXCAPS_BLTMIRRORLEFTRIGHT",
+    "DDFXCAPS_BLTMIRRORUPDOWN",
+    "DDFXCAPS_BLTROTATION",
+    "DDFXCAPS_BLTROTATION90",
+    "DDFXCAPS_BLTSHRINKX",
+    "DDFXCAPS_BLTSHRINKXN",
+    "DDFXCAPS_BLTSHRINKY",
+    "DDFXCAPS_BLTSHRINKYN",
+    "DDFXCAPS_BLTSTRETCHX",
+    "DDFXCAPS_BLTSTRETCHXN",
+    "DDFXCAPS_BLTSTRETCHY",
+    "DDFXCAPS_BLTSTRETCHYN",
+    "DDFXCAPS_OVERLAYARITHSTRETCHY",
+    "DDFXCAPS_OVERLAYARITHSTRETCHYN",
+    "DDFXCAPS_OVERLAYSHRINKX",
+    "DDFXCAPS_OVERLAYSHRINKXN",
+    "DDFXCAPS_OVERLAYSHRINKY",
+    "DDFXCAPS_OVERLAYSHRINKYN",
+    "DDFXCAPS_OVERLAYSTRETCHX",
+    "DDFXCAPS_OVERLAYSTRETCHXN",
+    "DDFXCAPS_OVERLAYSTRETCHY",
+    "DDFXCAPS_OVERLAYSTRETCHYN",
+    "DDFXCAPS_OVERLAYMIRRORLEFTRIGHT",
+    "DDFXCAPS_OVERLAYMIRRORUPDOWN",
+    "DDFXCAPS_OVERLAYDEINTERLACE",
+    "DDFXCAPS_BLTALPHA",
+    "DDFXCAPS_BLTFILTER",
+    "DDFXCAPS_OVERLAYALPHA",
+    "DDFXCAPS_OVERLAYFILTER",
+])
+
+DirectDrawStereoViewCapsFlags = Flags(DWORD, [
+    "DDSVCAPS_RESERVED1",
+    "DDSVCAPS_RESERVED2",
+    "DDSVCAPS_RESERVED3",
+    "DDSVCAPS_RESERVED4",
+    "DDSVCAPS_STEREOSEQUENTIAL",
+])
+
+DirectDrawPaletteCapsFlags = Flags(DWORD, [
+    "DDPCAPS_4BIT",
+    "DDPCAPS_8BITENTRIES",
+    "DDPCAPS_8BIT",
+    "DDPCAPS_INITIALIZE",
+    "DDPCAPS_PRIMARYSURFACE",
+    "DDPCAPS_PRIMARYSURFACELEFT",
+    "DDPCAPS_ALLOW256",
+    "DDPCAPS_VSYNC",
+    "DDPCAPS_1BIT",
+    "DDPCAPS_2BIT",
+    "DDPCAPS_ALPHA",
+])
+
+DirectDrawSurfaceSetPrivateDataConstants = FakeEnum(DWORD, [
+    "DDSPD_IUNKNOWNPOINTER",
+    "DDSPD_VOLATILE",
+])
+
+DirectDrawSurfaceSetPaletteConstants = FakeEnum(DWORD, [
+    "DDBD_1",
+    "DDBD_2",
+    "DDBD_4",
+    "DDBD_8",
+    "DDBD_16",
+    "DDBD_24",
+    "DDBD_32",
+])
+
+DirectDrawSurfaceSetGetColorKeyFlags = Flags(DWORD, [
+    "DDCKEY_COLORSPACE",
+    "DDCKEY_DESTBLT",
+    "DDCKEY_DESTOVERLAY",
+    "DDCKEY_SRCBLT",
+    "DDCKEY_SRCOVERLAY",
+])
+
+DirectDrawColorKeyCapsFlags = Flags(DWORD, [
+    "DDCKEYCAPS_DESTBLT",
+    "DDCKEYCAPS_DESTBLTCLRSPACE",
+    "DDCKEYCAPS_DESTBLTCLRSPACEYUV",
+    "DDCKEYCAPS_DESTBLTYUV",
+    "DDCKEYCAPS_DESTOVERLAY",
+    "DDCKEYCAPS_DESTOVERLAYCLRSPACE",
+    "DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV",
+    "DDCKEYCAPS_DESTOVERLAYONEACTIVE",
+    "DDCKEYCAPS_DESTOVERLAYYUV",
+    "DDCKEYCAPS_SRCBLT",
+    "DDCKEYCAPS_SRCBLTCLRSPACE",
+    "DDCKEYCAPS_SRCBLTCLRSPACEYUV",
+    "DDCKEYCAPS_SRCBLTYUV",
+    "DDCKEYCAPS_SRCOVERLAY",
+    "DDCKEYCAPS_SRCOVERLAYCLRSPACE",
+    "DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV",
+    "DDCKEYCAPS_SRCOVERLAYONEACTIVE",
+    "DDCKEYCAPS_SRCOVERLAYYUV",
+    "DDCKEYCAPS_NOCOSTOVERLAY",
+])
+
+DirectDrawPixelFormatFlags = Flags(DWORD, [
+    "DDPF_ALPHAPIXELS",
+    "DDPF_ALPHA",
+    "DDPF_FOURCC",
+    "DDPF_PALETTEINDEXED4",
+    "DDPF_PALETTEINDEXEDTO8",
+    "DDPF_PALETTEINDEXED8",
+    "DDPF_RGB",
+    "DDPF_COMPRESSED",
+    "DDPF_RGBTOYUV",
+    "DDPF_YUV",
+    "DDPF_ZBUFFER",
+    "DDPF_PALETTEINDEXED1",
+    "DDPF_PALETTEINDEXED2",
+    "DDPF_ZPIXELS",
+    "DDPF_STENCILBUFFER",
+    "DDPF_ALPHAPREMULT",
+    "DDPF_LUMINANCE",
+    "DDPF_BUMPLUMINANCE",
+    "DDPF_BUMPDUDV",
+])
+
+DirectDrawEnumSurfacesFlags = Flags(DWORD, [
+    "DDENUMSURFACES_ALL",
+    "DDENUMSURFACES_MATCH",
+    "DDENUMSURFACES_NOMATCH",
+    "DDENUMSURFACES_CANBECREATED",
+    "DDENUMSURFACES_DOESEXIST",
+])
+
+DirectDrawSetDisplayModeFlags = Flags(DWORD, [
+    "DDSDM_STANDARDVGAMODE",
+])
+
+DirectDrawEnumDisplayModesFlags = Flags(DWORD, [
+    "DDEDM_REFRESHRATES",
+    "DDEDM_STANDARDVGAMODES",
+])
+
+DirectDrawSetCooperativeLevelFlags = Flags(DWORD, [
+    "DDSCL_FULLSCREEN",
+    "DDSCL_ALLOWREBOOT",
+    "DDSCL_NOWINDOWCHANGES",
+    "DDSCL_NORMAL",
+    "DDSCL_EXCLUSIVE",
+    "DDSCL_ALLOWMODEX",
+    "DDSCL_SETFOCUSWINDOW",
+    "DDSCL_SETDEVICEWINDOW",
+    "DDSCL_CREATEDEVICEWINDOW",
+    "DDSCL_MULTITHREADED",
+    "DDSCL_FPUSETUP",
+    "DDSCL_FPUPRESERVE",
+])
+
+DirectDrawBltFlags = Flags(DWORD, [
+    "DDBLT_ALPHADEST",
+    "DDBLT_ALPHADESTCONSTOVERRIDE",
+    "DDBLT_ALPHADESTNEG",
+    "DDBLT_ALPHADESTSURFACEOVERRIDE",
+    "DDBLT_ALPHAEDGEBLEND",
+    "DDBLT_ALPHASRC",
+    "DDBLT_ALPHASRCCONSTOVERRIDE",
+    "DDBLT_ALPHASRCNEG",
+    "DDBLT_ALPHASRCSURFACEOVERRIDE",
+    "DDBLT_ASYNC",
+    "DDBLT_COLORFILL",
+    "DDBLT_DDFX",
+    "DDBLT_DDROPS",
+    "DDBLT_KEYDEST",
+    "DDBLT_KEYDESTOVERRIDE",
+    "DDBLT_KEYSRC",
+    "DDBLT_KEYSRCOVERRIDE",
+    "DDBLT_ROP",
+    "DDBLT_ROTATIONANGLE",
+    "DDBLT_ZBUFFER",
+    "DDBLT_ZBUFFERDESTCONSTOVERRIDE",
+    "DDBLT_ZBUFFERDESTOVERRIDE",
+    "DDBLT_ZBUFFERSRCCONSTOVERRIDE",
+    "DDBLT_ZBUFFERSRCOVERRIDE",
+    "DDBLT_WAIT",
+    "DDBLT_DEPTHFILL",
+    "DDBLT_DONOTWAIT",
+    "DDBLT_PRESENTATION",
+    "DDBLT_LAST_PRESENTATION",
+    "DDBLT_EXTENDED_FLAGS",
+    "DDBLT_EXTENDED_LINEAR_CONTENT",
+])
+
+DirectDrawBltFastFlags = Flags(DWORD, [
+    "DDBLTFAST_NOCOLORKEY",
+    "DDBLTFAST_SRCCOLORKEY",
+    "DDBLTFAST_DESTCOLORKEY",
+    "DDBLTFAST_WAIT",
+    "DDBLTFAST_DONOTWAIT",
+])
+
+DirectDrawFlipFlags = Flags(DWORD, [
+    "DDFLIP_WAIT",
+    "DDFLIP_EVEN",
+    "DDFLIP_ODD",
+    "DDFLIP_NOVSYNC",
+    "DDFLIP_INTERVAL2",
+    "DDFLIP_INTERVAL3",
+    "DDFLIP_INTERVAL4",
+    "DDFLIP_STEREO",
+    "DDFLIP_DONOTWAIT",
+])
+
+DirectDrawSurfaceOverlayFlags = Flags(DWORD, [
+    "DDOVER_ALPHADEST",
+    "DDOVER_ALPHADESTCONSTOVERRIDE",
+    "DDOVER_ALPHADESTNEG",
+    "DDOVER_ALPHADESTSURFACEOVERRIDE",
+    "DDOVER_ALPHAEDGEBLEND",
+    "DDOVER_ALPHASRC",
+    "DDOVER_ALPHASRCCONSTOVERRIDE",
+    "DDOVER_ALPHASRCNEG",
+    "DDOVER_ALPHASRCSURFACEOVERRIDE",
+    "DDOVER_HIDE",
+    "DDOVER_KEYDEST",
+    "DDOVER_KEYDESTOVERRIDE",
+    "DDOVER_KEYSRC",
+    "DDOVER_KEYSRCOVERRIDE",
+    "DDOVER_SHOW",
+    "DDOVER_ADDDIRTYRECT",
+    "DDOVER_REFRESHDIRTYRECTS",
+    "DDOVER_REFRESHALL",
+    "DDOVER_DDFX",
+    "DDOVER_AUTOFLIP",
+    "DDOVER_BOB",
+    "DDOVER_OVERRIDEBOBWEAVE",
+    "DDOVER_INTERLEAVED",
+    "DDOVER_BOBHARDWARE",
+    "DDOVER_ARGBSCALEFACTORS",
+    "DDOVER_DEGRADEARGBSCALING",
+])
+
+DDSETSURFACEDESC = Flags(DWORD, [
+    #"DDSETSURFACEDESC_RECREATEDC",
+    #"DDSETSURFACEDESC_PRESERVEDC",
+])
+
+DirectDrawSurfaceLockFlags = Flags(DWORD, [
+    "DDLOCK_SURFACEMEMORYPTR",
+    "DDLOCK_WAIT",
+    "DDLOCK_EVENT",
+    "DDLOCK_READONLY",
+    "DDLOCK_WRITEONLY",
+    "DDLOCK_NOSYSLOCK",
+    "DDLOCK_NOOVERWRITE",
+    "DDLOCK_DISCARDCONTENTS",
+    "DDLOCK_OKTOSWAP",
+    "DDLOCK_DONOTWAIT",
+    "DDLOCK_HASVOLUMETEXTUREBOXRECT",
+    "DDLOCK_NODIRTYUPDATE",
+])
+
+DirectDrawSurfaceBltFxFlags = Flags(DWORD, [
+    "DDBLTFX_ARITHSTRETCHY",
+    "DDBLTFX_MIRRORLEFTRIGHT",
+    "DDBLTFX_MIRRORUPDOWN",
+    "DDBLTFX_NOTEARING",
+    "DDBLTFX_ROTATE180",
+    "DDBLTFX_ROTATE270",
+    "DDBLTFX_ROTATE90",
+    "DDBLTFX_ZBUFFERRANGE",
+    "DDBLTFX_ZBUFFERBASEDEST",
+])
+
+DirectDrawOverlayFxFlags = Flags(DWORD, [
+    "DDOVERFX_ARITHSTRETCHY",
+    "DDOVERFX_MIRRORLEFTRIGHT",
+    "DDOVERFX_MIRRORUPDOWN",
+    "DDOVERFX_DEINTERLACE",
+])
+
+DirectDrawWaitForVerticalBlankFlags = Flags(DWORD, [
+    "DDWAITVB_BLOCKBEGIN",
+    "DDWAITVB_BLOCKBEGINEVENT",
+    "DDWAITVB_BLOCKEND",
+])
+
+DirectDrawGetFlipStatusFlags = Flags(DWORD, [
+    "DDGFS_CANFLIP",
+    "DDGFS_ISFLIPDONE",
+])
+
+DirectDrawGetBltStatusFlags = Flags(DWORD, [
+    "DDGBS_CANBLT",
+    "DDGBS_ISBLTDONE",
+])
+
+DirectDrawEnumOverlayZOrderFlags = Flags(DWORD, [
+    "DDENUMOVERLAYZ_BACKTOFRONT",
+    "DDENUMOVERLAYZ_FRONTTOBACK",
+])
+
+DirectDrawUpdateOverlayZOrderFlags = Flags(DWORD, [
+    "DDOVERZ_SENDTOFRONT",
+    "DDOVERZ_SENDTOBACK",
+    "DDOVERZ_MOVEFORWARD",
+    "DDOVERZ_MOVEBACKWARD",
+    "DDOVERZ_INSERTINFRONTOF",
+    "DDOVERZ_INSERTINBACKOF",
+])
+
+DirectDrawSetGammaRampFlags = Flags(DWORD, [
+    "DDSGR_CALIBRATE",
+])
+
+DirectDrawStartModeTestFlags = Flags(DWORD, [
+    "DDSMT_ISTESTREQUIRED",
+])
+
+DirectDrawEvaluateModeFlags = Flags(DWORD, [
+    "DDEM_MODEPASSED",
+    "DDEM_MODEFAILED",
+])
+
+DDRESULT = FakeEnum(HRESULT, [
+    "DD_OK",
+    "DD_FALSE",
+    "DDERR_ALREADYINITIALIZED",
+    "DDERR_CANNOTATTACHSURFACE",
+    "DDERR_CANNOTDETACHSURFACE",
+    "DDERR_CURRENTLYNOTAVAIL",
+    "DDERR_EXCEPTION",
+    "DDERR_GENERIC",
+    "DDERR_HEIGHTALIGN",
+    "DDERR_INCOMPATIBLEPRIMARY",
+    "DDERR_INVALIDCAPS",
+    "DDERR_INVALIDCLIPLIST",
+    "DDERR_INVALIDMODE",
+    "DDERR_INVALIDOBJECT",
+    "DDERR_INVALIDPARAMS",
+    "DDERR_INVALIDPIXELFORMAT",
+    "DDERR_INVALIDRECT",
+    "DDERR_LOCKEDSURFACES",
+    "DDERR_NO3D",
+    "DDERR_NOALPHAHW",
+    "DDERR_NOSTEREOHARDWARE",
+    "DDERR_NOSURFACELEFT",
+    "DDERR_NOCLIPLIST",
+    "DDERR_NOCOLORCONVHW",
+    "DDERR_NOCOOPERATIVELEVELSET",
+    "DDERR_NOCOLORKEY",
+    "DDERR_NOCOLORKEYHW",
+    "DDERR_NODIRECTDRAWSUPPORT",
+    "DDERR_NOEXCLUSIVEMODE",
+    "DDERR_NOFLIPHW",
+    "DDERR_NOGDI",
+    "DDERR_NOMIRRORHW",
+    "DDERR_NOTFOUND",
+    "DDERR_NOOVERLAYHW",
+    "DDERR_OVERLAPPINGRECTS",
+    "DDERR_NORASTEROPHW",
+    "DDERR_NOROTATIONHW",
+    "DDERR_NOSTRETCHHW",
+    "DDERR_NOT4BITCOLOR",
+    "DDERR_NOT4BITCOLORINDEX",
+    "DDERR_NOT8BITCOLOR",
+    "DDERR_NOTEXTUREHW",
+    "DDERR_NOVSYNCHW",
+    "DDERR_NOZBUFFERHW",
+    "DDERR_NOZOVERLAYHW",
+    "DDERR_OUTOFCAPS",
+    "DDERR_OUTOFMEMORY",
+    "DDERR_OUTOFVIDEOMEMORY",
+    "DDERR_OVERLAYCANTCLIP",
+    "DDERR_OVERLAYCOLORKEYONLYONEACTIVE",
+    "DDERR_PALETTEBUSY",
+    "DDERR_COLORKEYNOTSET",
+    "DDERR_SURFACEALREADYATTACHED",
+    "DDERR_SURFACEALREADYDEPENDENT",
+    "DDERR_SURFACEBUSY",
+    "DDERR_CANTLOCKSURFACE",
+    "DDERR_SURFACEISOBSCURED",
+    "DDERR_SURFACELOST",
+    "DDERR_SURFACENOTATTACHED",
+    "DDERR_TOOBIGHEIGHT",
+    "DDERR_TOOBIGSIZE",
+    "DDERR_TOOBIGWIDTH",
+    "DDERR_UNSUPPORTED",
+    "DDERR_UNSUPPORTEDFORMAT",
+    "DDERR_UNSUPPORTEDMASK",
+    "DDERR_INVALIDSTREAM",
+    "DDERR_VERTICALBLANKINPROGRESS",
+    "DDERR_WASSTILLDRAWING",
+    "DDERR_DDSCAPSCOMPLEXREQUIRED",
+    "DDERR_XALIGN",
+    "DDERR_INVALIDDIRECTDRAWGUID",
+    "DDERR_DIRECTDRAWALREADYCREATED",
+    "DDERR_NODIRECTDRAWHW",
+    "DDERR_PRIMARYSURFACEALREADYEXISTS",
+    "DDERR_NOEMULATION",
+    "DDERR_REGIONTOOSMALL",
+    "DDERR_CLIPPERISUSINGHWND",
+    "DDERR_NOCLIPPERATTACHED",
+    "DDERR_NOHWND",
+    "DDERR_HWNDSUBCLASSED",
+    "DDERR_HWNDALREADYSET",
+    "DDERR_NOPALETTEATTACHED",
+    "DDERR_NOPALETTEHW",
+    "DDERR_BLTFASTCANTCLIP",
+    "DDERR_NOBLTHW",
+    "DDERR_NODDROPSHW",
+    "DDERR_OVERLAYNOTVISIBLE",
+    "DDERR_NOOVERLAYDEST",
+    "DDERR_INVALIDPOSITION",
+    "DDERR_NOTAOVERLAYSURFACE",
+    "DDERR_EXCLUSIVEMODEALREADYSET",
+    "DDERR_NOTFLIPPABLE",
+    "DDERR_CANTDUPLICATE",
+    "DDERR_NOTLOCKED",
+    "DDERR_CANTCREATEDC",
+    "DDERR_NODC",
+    "DDERR_WRONGMODE",
+    "DDERR_IMPLICITLYCREATED",
+    "DDERR_NOTPALETTIZED",
+    "DDERR_UNSUPPORTEDMODE",
+    "DDERR_NOMIPMAPHW",
+    "DDERR_INVALIDSURFACETYPE",
+    "DDERR_NOOPTIMIZEHW",
+    "DDERR_NOTLOADED",
+    "DDERR_NOFOCUSWINDOW",
+    "DDERR_NOTONMIPMAPSUBLEVEL",
+    "DDERR_DCALREADYCREATED",
+    "DDERR_NONONLOCALVIDMEM",
+    "DDERR_CANTPAGELOCK",
+    "DDERR_CANTPAGEUNLOCK",
+    "DDERR_NOTPAGELOCKED",
+    "DDERR_MOREDATA",
+    "DDERR_EXPIRED",
+    "DDERR_TESTFINISHED",
+    "DDERR_NEWMODE",
+    "DDERR_D3DNOTINITIALIZED",
+    "DDERR_VIDEONOTACTIVE",
+    "DDERR_NOMONITORINFORMATION",
+    "DDERR_NODRIVERSUPPORT",
+    "DDERR_DEVICEDOESNTOWNSURFACE",
+    "DDERR_NOTINITIALIZED",
+])
+
+LPDDENUMMODESCALLBACK     = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])
+LPDDENUMMODESCALLBACK2    = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])
+LPDDENUMSURFACESCALLBACK  = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])
+LPDDENUMSURFACESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])
+LPDDENUMSURFACESCALLBACK7 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])
+
+IDirectDraw.methods += [
+    Method(DDRESULT, "Compact", []),
+    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDupDDSurface")]),
+    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK, "lpEnumModesCallback")]),
+    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "FlipToGDISurface", []),
+    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpGDIDDSSurface")]),
+    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+    Method(DDRESULT, "RestoreDisplayMode", []),
+    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP")]),
+    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+]
+
+IDirectDraw2.methods += [
+    Method(DDRESULT, "Compact", []),
+    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDupDDSurface")]),
+    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK, "lpEnumModesCallback")]),
+    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "FlipToGDISurface", []),
+    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE), "lplpGDIDDSSurface")]),
+    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+    Method(DDRESULT, "RestoreDisplayMode", []),
+    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
+    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
+]
+
+IDirectDraw4.methods += [
+    Method(DDRESULT, "Compact", []),
+    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC2, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE4, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDupDDSurface")]),
+    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK2, "lpEnumModesCallback")]),
+    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "FlipToGDISurface", []),
+    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpGDIDDSSurface")]),
+    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+    Method(DDRESULT, "RestoreDisplayMode", []),
+    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
+    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS2, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
+    Method(DDRESULT, "GetSurfaceFromDC", [(HDC, "hdc"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lpDDSurface")]),
+    Method(DDRESULT, "RestoreAllSurfaces", []),
+    Method(DDRESULT, "TestCooperativeLevel", []),
+    Method(DDRESULT, "GetDeviceIdentifier", [Out(LPDDDEVICEIDENTIFIER, "lpDDDI"), (DirectDrawGetDeviceIdentifierFlags, "dwFlags")]),
+]
+
+IDirectDraw7.methods += [
+    Method(DDRESULT, "Compact", []),
+    Method(DDRESULT, "CreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreatePalette", [(DirectDrawPaletteCapsFlags, "dwFlags"), (LPPALETTEENTRY, "lpDDColorArray"), Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "CreateSurface", [(LPDDSURFACEDESC2, "lpDDSurfaceDesc"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDDSurface"), (Pointer(IUnknown), "pUnkOuter")]),
+    Method(DDRESULT, "DuplicateSurface", [(LPDIRECTDRAWSURFACE7, "lpDDSurface"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDupDDSurface")]),
+    Method(DDRESULT, "EnumDisplayModes", [(DirectDrawEnumDisplayModesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMMODESCALLBACK2, "lpEnumModesCallback")]),
+    Method(DDRESULT, "EnumSurfaces", [(DirectDrawEnumSurfacesFlags, "dwFlags"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "FlipToGDISurface", []),
+    Method(DDRESULT, "GetCaps", [Out(LPDDCAPS, "lpDDDriverCaps"), Out(LPDDCAPS, "lpDDHELCaps")]),
+    Method(DDRESULT, "GetDisplayMode", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "GetFourCCCodes", [Out(LPDWORD, "lpNumCodes"), Out(LPDWORD, "lpCodes")]),
+    Method(DDRESULT, "GetGDISurface", [Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpGDIDDSSurface")]),
+    Method(DDRESULT, "GetMonitorFrequency", [Out(LPDWORD, "lpdwFrequency")]),
+    Method(DDRESULT, "GetScanLine", [Out(LPDWORD, "lpdwScanLine")]),
+    Method(DDRESULT, "GetVerticalBlankStatus", [Out(LPBOOL, "lpbIsInVB")]),
+    Method(DDRESULT, "Initialize", [(Pointer(GUID), "lpGUID")]),
+    Method(DDRESULT, "RestoreDisplayMode", []),
+    Method(DDRESULT, "SetCooperativeLevel", [(HWND, "hWnd"), (DirectDrawSetCooperativeLevelFlags, "dwFlags")]),
+    Method(DDRESULT, "SetDisplayMode", [(DWORD, "dwWidth"), (DWORD, "dwHeight"), (DWORD, "dwBPP"), (DWORD, "dwRefreshRate"), (DirectDrawSetDisplayModeFlags, "dwFlags")]),
+    Method(DDRESULT, "WaitForVerticalBlank", [(DirectDrawWaitForVerticalBlankFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "GetAvailableVidMem", [(LPDDSCAPS2, "lpDDSCaps"), Out(LPDWORD, "lpdwTotal"), Out(LPDWORD, "lpdwFree")]),
+    Method(DDRESULT, "GetSurfaceFromDC", [(HDC, "hdc"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lpDDSurface")]),
+    Method(DDRESULT, "RestoreAllSurfaces", []),
+    Method(DDRESULT, "TestCooperativeLevel", []),
+    Method(DDRESULT, "GetDeviceIdentifier", [Out(LPDDDEVICEIDENTIFIER2, "lpDDDI"), (DirectDrawGetDeviceIdentifierFlags, "dwFlags")]),
+    Method(DDRESULT, "StartModeTest", [(LPSIZE, "lpModesToTest"), (DWORD, "dwNumEntries"), (DirectDrawStartModeTestFlags, "dwFlags")]),
+    Method(DDRESULT, "EvaluateMode", [(DirectDrawEvaluateModeFlags, "dwFlags"), Out(Pointer(DWORD), "pSecondsUntilTimeout")]),
+]
+
+IDirectDrawPalette.methods += [
+    Method(DDRESULT, "GetCaps", [Out(Pointer(DirectDrawPaletteCapsFlags), "lpdwCaps")]),
+    Method(DDRESULT, "GetEntries", [(DWORD, "dwFlags"), (DWORD, "dwBase"), (DWORD, "dwNumEntries"), Out(LPPALETTEENTRY, "lpEntries")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (DWORD, "dwFlags"), (LPPALETTEENTRY, "lpDDColorTable")]),
+    Method(DDRESULT, "SetEntries", [(DWORD, "dwFlags"), (DWORD, "dwStartingEntry"), (DWORD, "dwCount"), (LPPALETTEENTRY, "lpEntries")]),
+]
+
+IDirectDrawClipper.methods += [
+    Method(DDRESULT, "GetClipList", [(LPRECT, "lpRect"), (LPRGNDATA, "lpClipList"), Out(LPDWORD, "lpdwSize")]),
+    Method(DDRESULT, "GetHWnd", [Out(Pointer(HWND), "hWnd")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "IsClipListChanged", [Out(Pointer(BOOL), "lpbChanged")]),
+    Method(DDRESULT, "SetClipList", [(LPRGNDATA, "lpClipList"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "SetHWnd", [(DWORD, "dwFlags"), (HWND, "hWnd")]),
+]
+
+
+IDirectDrawSurface.methods += [
+    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE, "lpDDSAttachedSurface")]),
+    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE, "lpDDSurface")]),
+    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
+    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE), "lplpDDAttachedSurface")]),
+    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
+    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "IsLost", []),
+    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+    Method(DDRESULT, "Restore", []),
+    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+    Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
+    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE, "lpDDSReference")]),
+]
+
+IDirectDrawSurface2.methods += [
+    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE2, "lpDDSAttachedSurface")]),
+    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE2, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE2, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE2, "lpDDSurface")]),
+    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
+    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE2, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE2), "lplpDDAttachedSurface")]),
+    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
+    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "IsLost", []),
+    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+    Method(DDRESULT, "Restore", []),
+    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+    Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
+    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE2, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE2, "lpDDSReference")]),
+    Method(DDRESULT, "GetDDInterface", [Out(Pointer(IUnknown), "lplpDD")]),
+    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+]
+
+IDirectDrawSurface3.methods += [
+    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE3, "lpDDSAttachedSurface")]),
+    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE3, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE3, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE3, "lpDDSurface")]),
+    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK, "lpfnCallback")]),
+    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE3, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE3), "lplpDDAttachedSurface")]),
+    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS, "lpDDSCaps")]),
+    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "IsLost", []),
+    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+    Method(DDRESULT, "Restore", []),
+    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+    Method(DDRESULT, "Unlock", [(LPVOID, "lp")]),
+    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE3, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE3, "lpDDSReference")]),
+    Method(DDRESULT, "GetDDInterface", [Out(Pointer(IUnknown), "lplpDD")]),
+    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC, "lpDDSD"), (DWORD, "dwFlags")]),
+]
+
+IDirectDrawSurface4.methods += [
+    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE4, "lpDDSAttachedSurface")]),
+    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE4, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE4, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE4, "lpDDSurface")]),
+    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK2, "lpfnCallback")]),
+    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE4, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS2, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE4), "lplpDDAttachedSurface")]),
+    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS2, "lpDDSCaps")]),
+    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "IsLost", []),
+    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+    Method(DDRESULT, "Restore", []),
+    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+    Method(DDRESULT, "Unlock", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE4, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE4, "lpDDSReference")]),
+    Method(DDRESULT, "GetDDInterface", [Out(Pointer(LPVOID), "lplpDD")]),
+    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC2, "lpDDSD"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "SetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), (DWORD, "cbSize"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), Out(LPDWORD, "lpcbBufferSize")]),
+    Method(DDRESULT, "FreePrivateData", [(REFGUID, "guidTag")]),
+    Method(DDRESULT, "GetUniquenessValue", [Out(LPDWORD, "lpValue")]),
+    Method(DDRESULT, "ChangeUniquenessValue", []),
+]
+
+IDirectDrawSurface7.methods += [
+    Method(DDRESULT, "AddAttachedSurface", [(LPDIRECTDRAWSURFACE7, "lpDDSAttachedSurface")]),
+    Method(DDRESULT, "AddOverlayDirtyRect", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "Blt", [(LPRECT, "lpDestRect"), (LPDIRECTDRAWSURFACE7, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DirectDrawBltFlags, "dwFlags"), (LPDDBLTFX, "lpDDBltFx")]),
+    Method(DDRESULT, "BltBatch", [(LPDDBLTBATCH, "lpDDBltBatch"), (DWORD, "dwCount"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "BltFast", [(DWORD, "dwX"), (DWORD, "dwY"), (LPDIRECTDRAWSURFACE7, "lpDDSrcSurface"), (LPRECT, "lpSrcRect"), (DWORD, "dwTrans")]),
+    Method(DDRESULT, "DeleteAttachedSurface", [(DWORD, "dwFlags"), (LPDIRECTDRAWSURFACE7, "lpDDSurface")]),
+    Method(DDRESULT, "EnumAttachedSurfaces", [(LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpEnumSurfacesCallback")]),
+    Method(DDRESULT, "EnumOverlayZOrders", [(DirectDrawEnumOverlayZOrderFlags, "dwFlags"), (LPVOID, "lpContext"), (LPDDENUMSURFACESCALLBACK7, "lpfnCallback")]),
+    Method(DDRESULT, "Flip", [(LPDIRECTDRAWSURFACE7, "lpDDSurfaceTargetOverride"), (DirectDrawFlipFlags, "dwFlags")]),
+    Method(DDRESULT, "GetAttachedSurface", [(LPDDSCAPS2, "lpDDSCaps"), Out(Pointer(LPDIRECTDRAWSURFACE7), "lplpDDAttachedSurface")]),
+    Method(DDRESULT, "GetBltStatus", [(DirectDrawGetBltStatusFlags, "dwFlags")]),
+    Method(DDRESULT, "GetCaps", [Out(LPDDSCAPS2, "lpDDSCaps")]),
+    Method(DDRESULT, "GetClipper", [Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper")]),
+    Method(DDRESULT, "GetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "GetDC", [Out(Pointer(HDC), "phDC")]),
+    Method(DDRESULT, "GetFlipStatus", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetOverlayPosition", [Out(LPLONG, "lplX"), Out(LPLONG, "lplY")]),
+    Method(DDRESULT, "GetPalette", [Out(Pointer(LPDIRECTDRAWPALETTE), "lplpDDPalette")]),
+    Method(DDRESULT, "GetPixelFormat", [Out(LPDDPIXELFORMAT, "lpDDPixelFormat")]),
+    Method(DDRESULT, "GetSurfaceDesc", [Out(LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "Initialize", [(LPDIRECTDRAW, "lpDD"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc")]),
+    Method(DDRESULT, "IsLost", []),
+    Method(DDRESULT, "Lock", [(LPRECT, "lpDestRect"), (LPDDSURFACEDESC2, "lpDDSurfaceDesc"), (DirectDrawSurfaceLockFlags, "dwFlags"), (HANDLE, "hEvent")]),
+    Method(DDRESULT, "ReleaseDC", [(HDC, "hDC")]),
+    Method(DDRESULT, "Restore", []),
+    Method(DDRESULT, "SetClipper", [(LPDIRECTDRAWCLIPPER, "lpDDClipper")]),
+    Method(DDRESULT, "SetColorKey", [(DirectDrawSurfaceSetGetColorKeyFlags, "dwFlags"), Out(LPDDCOLORKEY, "lpDDColorKey")]),
+    Method(DDRESULT, "SetOverlayPosition", [(LONG, "lX"), (LONG, "lY")]),
+    Method(DDRESULT, "SetPalette", [(LPDIRECTDRAWPALETTE, "lpDDPalette")]),
+    Method(DDRESULT, "Unlock", [(LPRECT, "lpRect")]),
+    Method(DDRESULT, "UpdateOverlay", [(LPRECT, "lpSrcRect"), (LPDIRECTDRAWSURFACE7, "lpDDDestSurface"), (LPRECT, "lpDestRect"), (DirectDrawSurfaceOverlayFlags, "dwFlags"), (LPDDOVERLAYFX, "lpDDOverlayFx")]),
+    Method(DDRESULT, "UpdateOverlayDisplay", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "UpdateOverlayZOrder", [(DirectDrawUpdateOverlayZOrderFlags, "dwFlags"), (LPDIRECTDRAWSURFACE7, "lpDDSReference")]),
+    Method(DDRESULT, "GetDDInterface", [Out(Pointer(LPVOID), "lplpDD")]),
+    Method(DDRESULT, "PageLock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "PageUnlock", [(DWORD, "dwFlags")]),
+    Method(DDRESULT, "SetSurfaceDesc", [(LPDDSURFACEDESC2, "lpDDSD"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "SetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), (DWORD, "cbSize"), (DWORD, "dwFlags")]),
+    Method(DDRESULT, "GetPrivateData", [(REFGUID, "guidTag"), (LPVOID, "lpData"), Out(LPDWORD, "lpcbBufferSize")]),
+    Method(DDRESULT, "FreePrivateData", [(REFGUID, "guidTag")]),
+    Method(DDRESULT, "GetUniquenessValue", [Out(LPDWORD, "lpValue")]),
+    Method(DDRESULT, "ChangeUniquenessValue", []),
+    Method(DDRESULT, "SetPriority", [(DWORD, "dwPriority")]),
+    Method(DDRESULT, "GetPriority", [Out(LPDWORD, "lpdwPriority")]),
+    Method(DDRESULT, "SetLOD", [(DWORD, "dwMaxLOD")]),
+    Method(DDRESULT, "GetLOD", [Out(LPDWORD, "lpdwMaxLOD")]),
+]
+
+IDirectDrawColorControl.methods += [
+    Method(DDRESULT, "GetColorControls", [(LPDDCOLORCONTROL, "lpColorControl")]),
+    Method(DDRESULT, "SetColorControls", [(LPDDCOLORCONTROL, "lpColorControl")]),
+]
+
+IDirectDrawGammaControl.methods += [
+    Method(DDRESULT, "GetGammaRamp", [(DWORD, "dwFlags"), Out(LPDDGAMMARAMP, "lpRampData")]),
+    Method(DDRESULT, "SetGammaRamp", [(DirectDrawSetGammaRampFlags, "dwFlags"), (LPDDGAMMARAMP, "lpRampData")]),
+]
+
+LPDDENUMCALLBACKA   = FunctionPointer(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])
+LPDDENUMCALLBACKW   = FunctionPointer(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])
+LPDDENUMCALLBACKEXA = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])
+LPDDENUMCALLBACKEXW = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])
+
+DDENUM = Flags(DWORD, [
+    "DDENUM_ATTACHEDSECONDARYDEVICES",
+    "DDENUM_DETACHEDSECONDARYDEVICES",
+    "DDENUM_NONDISPLAYDEVICES",
+])
+
+DDCREATE = Flags(DWORD, [
+    "DDCREATE_HARDWAREONLY",
+    "DDCREATE_EMULATIONONLY",
+])
+
+ddraw = API("ddraw")
+ddraw.add_functions([
+    StdFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
+    StdFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
+    StdFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
+    StdFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
+    StdFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), Out(Pointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
+    StdFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), Out(Pointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
+    StdFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+    StdFunction(Void, "AcquireDDThreadLock", []),
+    StdFunction(Void, "ReleaseDDThreadLock", []),
+    StdFunction(DWORD, "D3DParseUnknownCommand", [(LPVOID, "lpCmd"), Out(Pointer(LPVOID), "lpRetCmd")]),
+    StdFunction(HRESULT, "DllCanUnloadNow", []),
+    StdFunction(HRESULT, "DllGetClassObject", [(REFCLSID, "rclsid"), (REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppv")]),
+
+    # XXX
+    StdFunction(HRESULT, "CompleteCreateSysmemSurface", [Int, Int]),
+    StdFunction(HRESULT, "GetSurfaceFromDC", [Int, Int, Int]),
+    StdFunction(HRESULT, "DDInternalLock", [Int, Int]),
+    StdFunction(HRESULT, "DDInternalUnlock", [Int]),
+    StdFunction(HRESULT, "DSoundHelp", [HWND, Int, Int]),
+    StdFunction(HRESULT, "GetDDSurfaceLocal", [Int, Int, Int]),
+    StdFunction(HANDLE, "GetOLEThunkData", [Int]),
+    StdFunction(HRESULT, "RegisterSpecialCase", [Int, Int, Int, Int]),
+    StdFunction(HRESULT, "DDGetAttachedSurfaceLcl", [Int, Int, Int]),
+
+    # TODO: SetAppCompatData
+])
+
diff --git a/specs/debug.py b/specs/debug.py
new file mode 100644 (file)
index 0000000..0a00474
--- /dev/null
@@ -0,0 +1,61 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+'''Debugging utilities.'''
+
+
+import sys
+import traceback
+import inspect
+
+
+def excepthook(type, value, tb):
+       """
+       Automatically start the debugger on an exception.
+
+       See also:
+       - http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65287
+       """
+
+       if hasattr(sys, 'ps1') \
+       or not (sys.stdin.isatty() and sys.stdout.isatty() and sys.stderr.isatty()) \
+       or type == SyntaxError or type == KeyboardInterrupt:
+               # we are in interactive mode or we don't have a tty-like
+               # device, so we call the default hook
+               oldexcepthook(type, value, tb)
+       else:
+               import traceback, pdb
+               # we are NOT in interactive mode, print the exception...
+               traceback.print_exception(type, value, tb)
+               print
+               # ...then start the debugger in post-mortem mode.
+               pdb.pm()
+
+oldexcepthook, sys.excepthook = sys.excepthook, excepthook
+
+
+def dump(var):
+       sys.stderr.write(repr(var) + '\n')
+       
diff --git a/specs/dxgi.py b/specs/dxgi.py
new file mode 100644 (file)
index 0000000..e77c0b5
--- /dev/null
@@ -0,0 +1,183 @@
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+from dxgitype import *
+
+HMONITOR = Alias("HMONITOR", HANDLE)
+_LUID = Struct("_LUID", [
+    (DWORD, "LowPart"),
+    (LONG, "HighPart"),
+])
+
+DXGI_USAGE = Alias("DXGI_USAGE", UINT)
+DXGI_SWAP_EFFECT = Enum("DXGI_SWAP_EFFECT", [
+    "DXGI_SWAP_EFFECT_DISCARD",
+    "DXGI_SWAP_EFFECT_SEQUENTIAL",
+])
+
+DXGI_RESIDENCY = Enum("DXGI_RESIDENCY", [
+    "DXGI_RESIDENCY_FULLY_RESIDENT",
+    "DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY",
+    "DXGI_RESIDENCY_EVICTED_TO_DISK",
+])
+
+DXGI_SURFACE_DESC = Struct("DXGI_SURFACE_DESC", [
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (DXGI_FORMAT, "Format"),
+    (DXGI_SAMPLE_DESC, "SampleDesc"),
+])
+
+DXGI_MAPPED_RECT = Struct("DXGI_MAPPED_RECT", [
+    (INT, "Pitch"),
+    (OpaquePointer(BYTE), "pBits"),
+])
+
+DXGI_OUTPUT_DESC = Struct("DXGI_OUTPUT_DESC", [
+    (Array(WCHAR, "32"), "DeviceName"),
+    (RECT, "DesktopCoordinates"),
+    (BOOL, "AttachedToDesktop"),
+    (DXGI_MODE_ROTATION, "Rotation"),
+    (HMONITOR, "Monitor"),
+])
+
+DXGI_FRAME_STATISTICS = Struct("DXGI_FRAME_STATISTICS", [
+    (UINT, "PresentCount"),
+    (UINT, "PresentRefreshCount"),
+    (UINT, "SyncRefreshCount"),
+    (LARGE_INTEGER, "SyncQPCTime"),
+    (LARGE_INTEGER, "SyncGPUTime"),
+])
+
+DXGI_ADAPTER_DESC = Struct("DXGI_ADAPTER_DESC", [
+    (Array(WCHAR, "128"), "Description"),
+    (UINT, "VendorId"),
+    (UINT, "DeviceId"),
+    (UINT, "SubSysId"),
+    (UINT, "Revision"),
+    (SIZE_T, "DedicatedVideoMemory"),
+    (SIZE_T, "DedicatedSystemMemory"),
+    (SIZE_T, "SharedSystemMemory"),
+    (LUID, "AdapterLuid"),
+])
+
+DXGI_SWAP_CHAIN_FLAG = Enum("DXGI_SWAP_CHAIN_FLAG", [
+    "DXGI_SWAP_CHAIN_FLAG_NONPREROTATED",
+    "DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH",
+    "DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE",
+])
+
+DXGI_SWAP_CHAIN_DESC = Struct("DXGI_SWAP_CHAIN_DESC", [
+    (DXGI_MODE_DESC, "BufferDesc"),
+    (DXGI_SAMPLE_DESC, "SampleDesc"),
+    (DXGI_USAGE, "BufferUsage"),
+    (UINT, "BufferCount"),
+    (HWND, "OutputWindow"),
+    (BOOL, "Windowed"),
+    (DXGI_SWAP_EFFECT, "SwapEffect"),
+    (UINT, "Flags"),
+])
+
+DXGI_SHARED_RESOURCE = Struct("DXGI_SHARED_RESOURCE", [
+    (HANDLE, "Handle"),
+])
+
+IDXGIObject = Interface("IDXGIObject", IUnknown)
+IDXGIObject.methods += [
+    Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "data_size"), (OpaquePointer(Const(Void)), "data")]),
+    Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "object")]),
+    Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(OpaquePointer(UINT), "data_size"), Out(OpaquePointer(Void), "data")]),
+    Method(HRESULT, "GetParent", [(REFIID, "riid"), Out(OpaquePointer(OpaquePointer(Void)), "parent")]),
+]
+
+IDXGIDeviceSubObject = Interface("IDXGIDeviceSubObject", IDXGIObject)
+IDXGIDeviceSubObject.methods += [
+    Method(HRESULT, "GetDevice", [(REFIID, "riid"), Out(OpaquePointer(OpaquePointer(Void)), "device")]),
+]
+
+IDXGISurface = Interface("IDXGISurface", IDXGIDeviceSubObject)
+IDXGISurface.methods += [
+    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_SURFACE_DESC), "desc")]),
+    Method(HRESULT, "Map", [Out(OpaquePointer(DXGI_MAPPED_RECT), "mapped_rect"), (UINT, "flags")]),
+    Method(HRESULT, "Unmap", []),
+]
+
+IDXGIOutput = Interface("IDXGIOutput", IDXGIObject)
+IDXGIOutput.methods += [
+    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_OUTPUT_DESC), "desc")]),
+    Method(HRESULT, "GetDisplayModeList", [(DXGI_FORMAT, "format"), (UINT, "flags"), Out(OpaquePointer(UINT), "mode_count"), Out(OpaquePointer(DXGI_MODE_DESC), "desc")]),
+    Method(HRESULT, "FindClosestMatchingMode", [(Const(OpaquePointer(DXGI_MODE_DESC)), "mode"), Out(OpaquePointer(DXGI_MODE_DESC), "closest_match"), (OpaquePointer(IUnknown), "device")]),
+    Method(HRESULT, "WaitForVBlank", []),
+    Method(HRESULT, "TakeOwnership", [(OpaquePointer(IUnknown), "device"), (BOOL, "exclusive")]),
+    Method(Void, "ReleaseOwnership", []),
+    Method(HRESULT, "GetGammaControlCapabilities", [Out(OpaquePointer(DXGI_GAMMA_CONTROL_CAPABILITIES), "gamma_caps")]),
+    Method(HRESULT, "SetGammaControl", [(Const(OpaquePointer(DXGI_GAMMA_CONTROL)), "gamma_control")]),
+    Method(HRESULT, "GetGammaControl", [Out(OpaquePointer(DXGI_GAMMA_CONTROL), "gamma_control")]),
+    Method(HRESULT, "SetDisplaySurface", [(OpaquePointer(IDXGISurface), "surface")]),
+    Method(HRESULT, "GetDisplaySurfaceData", [(OpaquePointer(IDXGISurface), "surface")]),
+    Method(HRESULT, "GetFrameStatistics", [Out(OpaquePointer(DXGI_FRAME_STATISTICS), "stats")]),
+]
+
+IDXGIAdapter = Interface("IDXGIAdapter", IDXGIObject)
+IDXGIAdapter.methods += [
+    Method(HRESULT, "EnumOutputs", [(UINT, "output_idx"), Out(OpaquePointer(OpaquePointer(IDXGIOutput)), "output")]),
+    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_ADAPTER_DESC), "desc")]),
+    Method(HRESULT, "CheckInterfaceSupport", [(REFGUID, "guid"), Out(OpaquePointer(LARGE_INTEGER), "umd_version")]),
+]
+
+IDXGISwapChain = Interface("IDXGISwapChain", IDXGIDeviceSubObject)
+IDXGISwapChain.methods += [
+    Method(HRESULT, "Present", [(UINT, "sync_interval"), (UINT, "flags")]),
+    Method(HRESULT, "GetBuffer", [(UINT, "buffer_idx"), (REFIID, "riid"), Out(OpaquePointer(OpaquePointer(Void)), "surface")]),
+    Method(HRESULT, "SetFullscreenState", [(BOOL, "fullscreen"), (OpaquePointer(IDXGIOutput), "target")]),
+    Method(HRESULT, "GetFullscreenState", [Out(OpaquePointer(BOOL), "fullscreen"), Out(OpaquePointer(OpaquePointer(IDXGIOutput)), "target")]),
+    Method(HRESULT, "GetDesc", [Out(OpaquePointer(DXGI_SWAP_CHAIN_DESC), "desc")]),
+    Method(HRESULT, "ResizeBuffers", [(UINT, "buffer_count"), (UINT, "width"), (UINT, "height"), (DXGI_FORMAT, "format"), (UINT, "flags")]),
+    Method(HRESULT, "ResizeTarget", [(OpaquePointer(Const(DXGI_MODE_DESC)), "target_mode_desc")]),
+    Method(HRESULT, "GetContainingOutput", [Out(OpaquePointer(OpaquePointer(IDXGIOutput)), "output")]),
+    Method(HRESULT, "GetFrameStatistics", [Out(OpaquePointer(DXGI_FRAME_STATISTICS), "stats")]),
+    Method(HRESULT, "GetLastPresentCount", [Out(OpaquePointer(UINT), "last_present_count")]),
+]
+
+IDXGIFactory = Interface("IDXGIFactory", IDXGIObject)
+IDXGIFactory.methods += [
+    Method(HRESULT, "EnumAdapters", [(UINT, "adapter_idx"), Out(OpaquePointer(OpaquePointer(IDXGIAdapter)), "adapter")]),
+    Method(HRESULT, "MakeWindowAssociation", [(HWND, "window"), (UINT, "flags")]),
+    Method(HRESULT, "GetWindowAssociation", [(OpaquePointer(HWND), "window")]),
+    Method(HRESULT, "CreateSwapChain", [(OpaquePointer(IUnknown), "device"), (OpaquePointer(DXGI_SWAP_CHAIN_DESC), "desc"), Out(OpaquePointer(OpaquePointer(IDXGISwapChain)), "swapchain")]),
+    Method(HRESULT, "CreateSoftwareAdapter", [(HMODULE, "swrast"), Out(OpaquePointer(OpaquePointer(IDXGIAdapter)), "adapter")]),
+]
+
+#StdFunction(HRESULT, "CreateDXGIFactory", [(REFIID, "riid"), (OpaquePointer(OpaquePointer(Void)), "factory")]),
+
+IDXGIDevice = Interface("IDXGIDevice", IDXGIObject)
+IDXGIDevice.methods += [
+    Method(HRESULT, "GetAdapter", [Out(OpaquePointer(OpaquePointer(IDXGIAdapter)), "adapter")]),
+    Method(HRESULT, "CreateSurface", [(Const(OpaquePointer(DXGI_SURFACE_DESC)), "desc"), (UINT, "surface_count"), (DXGI_USAGE, "usage"), (Const(OpaquePointer(DXGI_SHARED_RESOURCE)), "shared_resource"), Out(OpaquePointer(OpaquePointer(IDXGISurface)), "surface")]),
+    Method(HRESULT, "QueryResourceResidency", [(OpaquePointer(Const(OpaquePointer(IUnknown))), "resources"), Out(OpaquePointer(DXGI_RESIDENCY), "residency"), (UINT, "resource_count")]),
+    Method(HRESULT, "SetGPUThreadPriority", [(INT, "priority")]),
+    Method(HRESULT, "GetGPUThreadPriority", [Out(OpaquePointer(INT), "priority")]),
+]
+
diff --git a/specs/dxgiformat.py b/specs/dxgiformat.py
new file mode 100644 (file)
index 0000000..1d00f64
--- /dev/null
@@ -0,0 +1,107 @@
+
+from winapi import *
+
+DXGI_FORMAT = Enum("DXGI_FORMAT", [
+    "DXGI_FORMAT_UNKNOWN",
+    "DXGI_FORMAT_R32G32B32A32_TYPELESS",
+    "DXGI_FORMAT_R32G32B32A32_FLOAT",
+    "DXGI_FORMAT_R32G32B32A32_UINT",
+    "DXGI_FORMAT_R32G32B32A32_SINT",
+    "DXGI_FORMAT_R32G32B32_TYPELESS",
+    "DXGI_FORMAT_R32G32B32_FLOAT",
+    "DXGI_FORMAT_R32G32B32_UINT",
+    "DXGI_FORMAT_R32G32B32_SINT",
+    "DXGI_FORMAT_R16G16B16A16_TYPELESS",
+    "DXGI_FORMAT_R16G16B16A16_FLOAT",
+    "DXGI_FORMAT_R16G16B16A16_UNORM",
+    "DXGI_FORMAT_R16G16B16A16_UINT",
+    "DXGI_FORMAT_R16G16B16A16_SNORM",
+    "DXGI_FORMAT_R16G16B16A16_SINT",
+    "DXGI_FORMAT_R32G32_TYPELESS",
+    "DXGI_FORMAT_R32G32_FLOAT",
+    "DXGI_FORMAT_R32G32_UINT",
+    "DXGI_FORMAT_R32G32_SINT",
+    "DXGI_FORMAT_R32G8X24_TYPELESS",
+    "DXGI_FORMAT_D32_FLOAT_S8X24_UINT",
+    "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",
+    "DXGI_FORMAT_X32_TYPELESS_G8X24_UINT",
+    "DXGI_FORMAT_R10G10B10A2_TYPELESS",
+    "DXGI_FORMAT_R10G10B10A2_UNORM",
+    "DXGI_FORMAT_R10G10B10A2_UINT",
+    "DXGI_FORMAT_R11G11B10_FLOAT",
+    "DXGI_FORMAT_R8G8B8A8_TYPELESS",
+    "DXGI_FORMAT_R8G8B8A8_UNORM",
+    "DXGI_FORMAT_R8G8B8A8_UNORM_SRGB",
+    "DXGI_FORMAT_R8G8B8A8_UINT",
+    "DXGI_FORMAT_R8G8B8A8_SNORM",
+    "DXGI_FORMAT_R8G8B8A8_SINT",
+    "DXGI_FORMAT_R16G16_TYPELESS",
+    "DXGI_FORMAT_R16G16_FLOAT",
+    "DXGI_FORMAT_R16G16_UNORM",
+    "DXGI_FORMAT_R16G16_UINT",
+    "DXGI_FORMAT_R16G16_SNORM",
+    "DXGI_FORMAT_R16G16_SINT",
+    "DXGI_FORMAT_R32_TYPELESS",
+    "DXGI_FORMAT_D32_FLOAT",
+    "DXGI_FORMAT_R32_FLOAT",
+    "DXGI_FORMAT_R32_UINT",
+    "DXGI_FORMAT_R32_SINT",
+    "DXGI_FORMAT_R24G8_TYPELESS",
+    "DXGI_FORMAT_D24_UNORM_S8_UINT",
+    "DXGI_FORMAT_R24_UNORM_X8_TYPELESS",
+    "DXGI_FORMAT_X24_TYPELESS_G8_UINT",
+    "DXGI_FORMAT_R8G8_TYPELESS",
+    "DXGI_FORMAT_R8G8_UNORM",
+    "DXGI_FORMAT_R8G8_UINT",
+    "DXGI_FORMAT_R8G8_SNORM",
+    "DXGI_FORMAT_R8G8_SINT",
+    "DXGI_FORMAT_R16_TYPELESS",
+    "DXGI_FORMAT_R16_FLOAT",
+    "DXGI_FORMAT_D16_UNORM",
+    "DXGI_FORMAT_R16_UNORM",
+    "DXGI_FORMAT_R16_UINT",
+    "DXGI_FORMAT_R16_SNORM",
+    "DXGI_FORMAT_R16_SINT",
+    "DXGI_FORMAT_R8_TYPELESS",
+    "DXGI_FORMAT_R8_UNORM",
+    "DXGI_FORMAT_R8_UINT",
+    "DXGI_FORMAT_R8_SNORM",
+    "DXGI_FORMAT_R8_SINT",
+    "DXGI_FORMAT_A8_UNORM",
+    "DXGI_FORMAT_R1_UNORM",
+    "DXGI_FORMAT_R9G9B9E5_SHAREDEXP",
+    "DXGI_FORMAT_R8G8_B8G8_UNORM",
+    "DXGI_FORMAT_G8R8_G8B8_UNORM",
+    "DXGI_FORMAT_BC1_TYPELESS",
+    "DXGI_FORMAT_BC1_UNORM",
+    "DXGI_FORMAT_BC1_UNORM_SRGB",
+    "DXGI_FORMAT_BC2_TYPELESS",
+    "DXGI_FORMAT_BC2_UNORM",
+    "DXGI_FORMAT_BC2_UNORM_SRGB",
+    "DXGI_FORMAT_BC3_TYPELESS",
+    "DXGI_FORMAT_BC3_UNORM",
+    "DXGI_FORMAT_BC3_UNORM_SRGB",
+    "DXGI_FORMAT_BC4_TYPELESS",
+    "DXGI_FORMAT_BC4_UNORM",
+    "DXGI_FORMAT_BC4_SNORM",
+    "DXGI_FORMAT_BC5_TYPELESS",
+    "DXGI_FORMAT_BC5_UNORM",
+    "DXGI_FORMAT_BC5_SNORM",
+    "DXGI_FORMAT_B5G6R5_UNORM",
+    "DXGI_FORMAT_B5G5R5A1_UNORM",
+    "DXGI_FORMAT_B8G8R8A8_UNORM",
+    "DXGI_FORMAT_B8G8R8X8_UNORM",
+    "DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM",
+    "DXGI_FORMAT_B8G8R8A8_TYPELESS",
+    "DXGI_FORMAT_B8G8R8A8_UNORM_SRGB",
+    "DXGI_FORMAT_B8G8R8X8_TYPELESS",
+    "DXGI_FORMAT_B8G8R8X8_UNORM_SRGB",
+    "DXGI_FORMAT_BC6H_TYPELESS",
+    "DXGI_FORMAT_BC6H_UF16",
+    "DXGI_FORMAT_BC6H_SF16",
+    "DXGI_FORMAT_BC7_TYPELESS",
+    "DXGI_FORMAT_BC7_UNORM",
+    "DXGI_FORMAT_BC7_UNORM_SRGB",
+    "DXGI_FORMAT_FORCE_UINT",
+])
+
diff --git a/specs/dxgitype.py b/specs/dxgitype.py
new file mode 100644 (file)
index 0000000..31cadde
--- /dev/null
@@ -0,0 +1,87 @@
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+from dxgiformat import *
+
+DXGI_RGB = Struct("DXGI_RGB", [
+    (Float, "Red"),
+    (Float, "Green"),
+    (Float, "Blue"),
+])
+
+DXGI_GAMMA_CONTROL = Struct("DXGI_GAMMA_CONTROL", [
+    (DXGI_RGB, "Scale"),
+    (DXGI_RGB, "Offset"),
+    (Array(DXGI_RGB, "1025"), "GammaCurve"),
+])
+
+DXGI_GAMMA_CONTROL_CAPABILITIES = Struct("DXGI_GAMMA_CONTROL_CAPABILITIES", [
+    (BOOL, "ScaleAndOffsetSupported"),
+    (Float, "MaxConvertedValue"),
+    (Float, "MinConvertedValue"),
+    (UINT, "NumGammaControlPoints"),
+    (Array(Float, "1025"), "ControlPointPositions"),
+])
+
+DXGI_RATIONAL = Struct("DXGI_RATIONAL", [
+    (UINT, "Numerator"),
+    (UINT, "Denominator"),
+])
+
+DXGI_MODE_SCANLINE_ORDER = Enum("DXGI_MODE_SCANLINE_ORDER", [
+    "DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED",
+    "DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE",
+    "DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST",
+    "DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST",
+])
+
+DXGI_MODE_SCALING = Enum("DXGI_MODE_SCALING", [
+    "DXGI_MODE_SCALING_UNSPECIFIED",
+    "DXGI_MODE_SCALING_CENTERED",
+    "DXGI_MODE_SCALING_STRETCHED",
+])
+
+DXGI_MODE_ROTATION = Enum("DXGI_MODE_ROTATION", [
+    "DXGI_MODE_ROTATION_UNSPECIFIED",
+    "DXGI_MODE_ROTATION_IDENTITY",
+    "DXGI_MODE_ROTATION_ROTATE90",
+    "DXGI_MODE_ROTATION_ROTATE180",
+    "DXGI_MODE_ROTATION_ROTATE270",
+])
+
+DXGI_MODE_DESC = Struct("DXGI_MODE_DESC", [
+    (UINT, "Width"),
+    (UINT, "Height"),
+    (DXGI_RATIONAL, "RefreshRate"),
+    (DXGI_FORMAT, "Format"),
+    (DXGI_MODE_SCANLINE_ORDER, "ScanlineOrdering"),
+    (DXGI_MODE_SCALING, "Scaling"),
+])
+
+DXGI_SAMPLE_DESC = Struct("DXGI_SAMPLE_DESC", [
+    (UINT, "Count"),
+    (UINT, "Quality"),
+])
+
diff --git a/specs/glapi.py b/specs/glapi.py
new file mode 100644 (file)
index 0000000..e5edd99
--- /dev/null
@@ -0,0 +1,2818 @@
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# Copyright 2008-2010 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+"""GL API description.
+
+Most of these were automatically generated with the apigen/glspec.py script
+from Khronos OpenGL spec files, and then manually edited to cover the corner
+cases correctly.
+
+"""
+
+
+from stdapi import *
+from gltypes import *
+import glparams
+
+
+def GlFunction(*args, **kwargs):
+    kwargs.setdefault('call', 'APIENTRY')
+    return Function(*args, **kwargs)
+
+
+glapi = API('GL')
+
+
+glapi.add_functions([
+    # GL_VERSION_1_0
+    GlFunction(Void, "glCullFace", [(GLenum, "mode")]),
+    GlFunction(Void, "glFrontFace", [(GLenum, "mode")]),
+    GlFunction(Void, "glHint", [(GLenum, "target"), (GLenum, "mode")]),
+    GlFunction(Void, "glLineWidth", [(GLfloat, "width")]),
+    GlFunction(Void, "glPointSize", [(GLfloat, "size")]),
+    GlFunction(Void, "glPolygonMode", [(GLenum, "face"), (GLenum, "mode")]),
+    GlFunction(Void, "glScissor", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glTexParameterf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glTexParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glTexParameterfv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexParameteri", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glTexParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glTexParameteriv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage1D_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage2D_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glDrawBuffer", [(GLenum, "mode")]),
+    GlFunction(Void, "glClear", [(GLbitfield_attrib, "mask")]),
+    GlFunction(Void, "glClearColor", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
+    GlFunction(Void, "glClearStencil", [(GLint, "s")]),
+    GlFunction(Void, "glClearDepth", [(GLclampd, "depth")]),
+    GlFunction(Void, "glStencilMask", [(GLuint, "mask")]),
+    GlFunction(Void, "glColorMask", [(GLboolean, "red"), (GLboolean, "green"), (GLboolean, "blue"), (GLboolean, "alpha")]),
+    GlFunction(Void, "glDepthMask", [(GLboolean, "flag")]),
+    GlFunction(Void, "glDisable", [(GLenum, "cap")]),
+    GlFunction(Void, "glEnable", [(GLenum, "cap")]),
+    GlFunction(Void, "glFinish", []),
+    GlFunction(Void, "glFlush", []),
+    GlFunction(Void, "glBlendFunc", [(GLenum, "sfactor"), (GLenum, "dfactor")]),
+    GlFunction(Void, "glLogicOp", [(GLenum, "opcode")]),
+    GlFunction(Void, "glStencilFunc", [(GLenum, "func"), (GLint, "ref"), (GLuint, "mask")]),
+    GlFunction(Void, "glStencilOp", [(GLenum, "fail"), (GLenum, "zfail"), (GLenum, "zpass")]),
+    GlFunction(Void, "glDepthFunc", [(GLenum, "func")]),
+    GlFunction(Void, "glPixelStoref", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPixelStorei", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glReadBuffer", [(GLenum, "mode")]),
+    GlFunction(Void, "glReadPixels", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), Out(OpaquePointer(GLvoid), "pixels")]),
+    GlFunction(Void, "glGetBooleanv", [(GLenum, "pname"), Out(Array(GLboolean, "__glGetBooleanv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetDoublev", [(GLenum, "pname"), Out(Array(GLdouble, "__glGetDoublev_size(pname)"), "params")], sideeffects=False),
+    GlFunction(GLenum_error, "glGetError", [], sideeffects=False),
+    GlFunction(Void, "glGetFloatv", [(GLenum, "pname"), Out(Array(GLfloat, "__glGetFloatv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetIntegerv", [(GLenum, "pname"), Out(Array(GLint, "__glGetIntegerv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(String("const GLubyte *"), "glGetString", [(GLenum, "name")], sideeffects=False),
+    GlFunction(Void, "glGetTexImage", [(GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaquePointer(GLvoid), "pixels")]),
+    GlFunction(Void, "glGetTexParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexParameterfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexLevelParameterfv", [(GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexLevelParameterfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexLevelParameteriv", [(GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexLevelParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(GLboolean, "glIsEnabled", [(GLenum, "cap")], sideeffects=False),
+    GlFunction(Void, "glDepthRange", [(GLclampd, "zNear"), (GLclampd, "zFar")]),
+    GlFunction(Void, "glViewport", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+
+    # GL_VERSION_1_0_DEPRECATED
+    GlFunction(Void, "glNewList", [(GLlist, "list"), (GLenum, "mode")]),
+    GlFunction(Void, "glEndList", []),
+    GlFunction(Void, "glCallList", [(GLlist, "list")]),
+    GlFunction(Void, "glCallLists", [(GLsizei, "n"), (GLenum, "type"), (Blob(Const(GLvoid), "__glCallLists_size(n, type)"), "lists")]),
+    GlFunction(Void, "glDeleteLists", [(GLlist, "list"), (GLsizei, "range")]),
+    GlFunction(Handle("list", GLuint, "range"), "glGenLists", [(GLsizei, "range")]),
+    GlFunction(Void, "glListBase", [(GLuint, "base")]),
+    GlFunction(Void, "glBegin", [(GLenum_mode, "mode")]),
+    GlFunction(Void, "glBitmap", [(GLsizei, "width"), (GLsizei, "height"), (GLfloat, "xorig"), (GLfloat, "yorig"), (GLfloat, "xmove"), (GLfloat, "ymove"), (Blob(Const(GLubyte), "__glBitmap_size(width, height)"), "bitmap")]),
+    GlFunction(Void, "glColor3b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
+    GlFunction(Void, "glColor3bv", [(Array(Const(GLbyte), "3"), "v")]),
+    GlFunction(Void, "glColor3d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
+    GlFunction(Void, "glColor3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glColor3f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
+    GlFunction(Void, "glColor3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glColor3i", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
+    GlFunction(Void, "glColor3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glColor3s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
+    GlFunction(Void, "glColor3sv", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glColor3ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
+    GlFunction(Void, "glColor3ubv", [(Array(Const(GLubyte), "3"), "v")]),
+    GlFunction(Void, "glColor3ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
+    GlFunction(Void, "glColor3uiv", [(Array(Const(GLuint), "3"), "v")]),
+    GlFunction(Void, "glColor3us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
+    GlFunction(Void, "glColor3usv", [(Array(Const(GLushort), "3"), "v")]),
+    GlFunction(Void, "glColor4b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue"), (GLbyte, "alpha")]),
+    GlFunction(Void, "glColor4bv", [(Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glColor4d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue"), (GLdouble, "alpha")]),
+    GlFunction(Void, "glColor4dv", [(Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glColor4f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue"), (GLfloat, "alpha")]),
+    GlFunction(Void, "glColor4fv", [(Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glColor4i", [(GLint, "red"), (GLint, "green"), (GLint, "blue"), (GLint, "alpha")]),
+    GlFunction(Void, "glColor4iv", [(Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glColor4s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue"), (GLshort, "alpha")]),
+    GlFunction(Void, "glColor4sv", [(Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glColor4ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue"), (GLubyte, "alpha")]),
+    GlFunction(Void, "glColor4ubv", [(Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glColor4ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue"), (GLuint, "alpha")]),
+    GlFunction(Void, "glColor4uiv", [(Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glColor4us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue"), (GLushort, "alpha")]),
+    GlFunction(Void, "glColor4usv", [(Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glEdgeFlag", [(GLboolean, "flag")]),
+    GlFunction(Void, "glEdgeFlagv", [(Pointer(Const(GLboolean)), "flag")]),
+    GlFunction(Void, "glEnd", []),
+    GlFunction(Void, "glIndexd", [(GLdouble, "c")]),
+    GlFunction(Void, "glIndexdv", [(Pointer(Const(GLdouble)), "c")]),
+    GlFunction(Void, "glIndexf", [(GLfloat, "c")]),
+    GlFunction(Void, "glIndexfv", [(Pointer(Const(GLfloat)), "c")]),
+    GlFunction(Void, "glIndexi", [(GLint, "c")]),
+    GlFunction(Void, "glIndexiv", [(Pointer(Const(GLint)), "c")]),
+    GlFunction(Void, "glIndexs", [(GLshort, "c")]),
+    GlFunction(Void, "glIndexsv", [(Pointer(Const(GLshort)), "c")]),
+    GlFunction(Void, "glNormal3b", [(GLbyte, "nx"), (GLbyte, "ny"), (GLbyte, "nz")]),
+    GlFunction(Void, "glNormal3bv", [(Array(Const(GLbyte), "3"), "v")]),
+    GlFunction(Void, "glNormal3d", [(GLdouble, "nx"), (GLdouble, "ny"), (GLdouble, "nz")]),
+    GlFunction(Void, "glNormal3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glNormal3f", [(GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz")]),
+    GlFunction(Void, "glNormal3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glNormal3i", [(GLint, "nx"), (GLint, "ny"), (GLint, "nz")]),
+    GlFunction(Void, "glNormal3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glNormal3s", [(GLshort, "nx"), (GLshort, "ny"), (GLshort, "nz")]),
+    GlFunction(Void, "glNormal3sv", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glRasterPos2d", [(GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glRasterPos2dv", [(Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glRasterPos2f", [(GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glRasterPos2fv", [(Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glRasterPos2i", [(GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glRasterPos2iv", [(Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glRasterPos2s", [(GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glRasterPos2sv", [(Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glRasterPos3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glRasterPos3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glRasterPos3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glRasterPos3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glRasterPos3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glRasterPos3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glRasterPos3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glRasterPos3sv", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glRasterPos4d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glRasterPos4dv", [(Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glRasterPos4f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glRasterPos4fv", [(Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glRasterPos4i", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glRasterPos4iv", [(Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glRasterPos4s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glRasterPos4sv", [(Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glRectd", [(GLdouble, "x1"), (GLdouble, "y1"), (GLdouble, "x2"), (GLdouble, "y2")]),
+    GlFunction(Void, "glRectdv", [(Array(Const(GLdouble), "2"), "v1"), (Array(Const(GLdouble), "2"), "v2")]),
+    GlFunction(Void, "glRectf", [(GLfloat, "x1"), (GLfloat, "y1"), (GLfloat, "x2"), (GLfloat, "y2")]),
+    GlFunction(Void, "glRectfv", [(Array(Const(GLfloat), "2"), "v1"), (Array(Const(GLfloat), "2"), "v2")]),
+    GlFunction(Void, "glRecti", [(GLint, "x1"), (GLint, "y1"), (GLint, "x2"), (GLint, "y2")]),
+    GlFunction(Void, "glRectiv", [(Array(Const(GLint), "2"), "v1"), (Array(Const(GLint), "2"), "v2")]),
+    GlFunction(Void, "glRects", [(GLshort, "x1"), (GLshort, "y1"), (GLshort, "x2"), (GLshort, "y2")]),
+    GlFunction(Void, "glRectsv", [(Array(Const(GLshort), "2"), "v1"), (Array(Const(GLshort), "2"), "v2")]),
+    GlFunction(Void, "glTexCoord1d", [(GLdouble, "s")]),
+    GlFunction(Void, "glTexCoord1dv", [(Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glTexCoord1f", [(GLfloat, "s")]),
+    GlFunction(Void, "glTexCoord1fv", [(Pointer(Const(GLfloat)), "v")]),
+    GlFunction(Void, "glTexCoord1i", [(GLint, "s")]),
+    GlFunction(Void, "glTexCoord1iv", [(Pointer(Const(GLint)), "v")]),
+    GlFunction(Void, "glTexCoord1s", [(GLshort, "s")]),
+    GlFunction(Void, "glTexCoord1sv", [(Pointer(Const(GLshort)), "v")]),
+    GlFunction(Void, "glTexCoord2d", [(GLdouble, "s"), (GLdouble, "t")]),
+    GlFunction(Void, "glTexCoord2dv", [(Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glTexCoord2f", [(GLfloat, "s"), (GLfloat, "t")]),
+    GlFunction(Void, "glTexCoord2fv", [(Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glTexCoord2i", [(GLint, "s"), (GLint, "t")]),
+    GlFunction(Void, "glTexCoord2iv", [(Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glTexCoord2s", [(GLshort, "s"), (GLshort, "t")]),
+    GlFunction(Void, "glTexCoord2sv", [(Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glTexCoord3d", [(GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
+    GlFunction(Void, "glTexCoord3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glTexCoord3f", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
+    GlFunction(Void, "glTexCoord3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord3i", [(GLint, "s"), (GLint, "t"), (GLint, "r")]),
+    GlFunction(Void, "glTexCoord3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glTexCoord3s", [(GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
+    GlFunction(Void, "glTexCoord3sv", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glTexCoord4d", [(GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
+    GlFunction(Void, "glTexCoord4dv", [(Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glTexCoord4f", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
+    GlFunction(Void, "glTexCoord4fv", [(Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glTexCoord4i", [(GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
+    GlFunction(Void, "glTexCoord4iv", [(Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glTexCoord4s", [(GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
+    GlFunction(Void, "glTexCoord4sv", [(Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertex2d", [(GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertex2dv", [(Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glVertex2f", [(GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glVertex2fv", [(Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glVertex2i", [(GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glVertex2iv", [(Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glVertex2s", [(GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glVertex2sv", [(Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glVertex3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertex3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glVertex3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glVertex3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glVertex3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glVertex3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glVertex3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glVertex3sv", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glVertex4d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertex4dv", [(Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glVertex4f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glVertex4fv", [(Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glVertex4i", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glVertex4iv", [(Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertex4s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glVertex4sv", [(Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glClipPlane", [(GLenum, "plane"), (Array(Const(GLdouble), "4"), "equation")]),
+    GlFunction(Void, "glColorMaterial", [(GLenum, "face"), (GLenum, "mode")]),
+    GlFunction(Void, "glFogf", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glFogfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__glFogfv_size(pname)"), "params")]),
+    GlFunction(Void, "glFogi", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glFogiv", [(GLenum, "pname"), (Array(Const(GLint), "__glFogiv_size(pname)"), "params")]),
+    GlFunction(Void, "glLightf", [(GLenum, "light"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glLightfv", [(GLenum, "light"), (GLenum, "pname"), (Array(Const(GLfloat), "__glLightfv_size(pname)"), "params")]),
+    GlFunction(Void, "glLighti", [(GLenum, "light"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glLightiv", [(GLenum, "light"), (GLenum, "pname"), (Array(Const(GLint), "__glLightiv_size(pname)"), "params")]),
+    GlFunction(Void, "glLightModelf", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glLightModelfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__glLightModelfv_size(pname)"), "params")]),
+    GlFunction(Void, "glLightModeli", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glLightModeliv", [(GLenum, "pname"), (Array(Const(GLint), "__glLightModeliv_size(pname)"), "params")]),
+    GlFunction(Void, "glLineStipple", [(GLint, "factor"), (GLushort, "pattern")]),
+    GlFunction(Void, "glMaterialf", [(GLenum, "face"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glMaterialfv", [(GLenum, "face"), (GLenum, "pname"), (Array(Const(GLfloat), "__glMaterialfv_size(pname)"), "params")]),
+    GlFunction(Void, "glMateriali", [(GLenum, "face"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glMaterialiv", [(GLenum, "face"), (GLenum, "pname"), (Array(Const(GLint), "__glMaterialiv_size(pname)"), "params")]),
+    GlFunction(Void, "glPolygonStipple", [(Array(Const(GLubyte), "__glPolygonStipple_size()"), "mask")]),
+    GlFunction(Void, "glShadeModel", [(GLenum, "mode")]),
+    GlFunction(Void, "glTexEnvf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glTexEnvfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glTexEnvfv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexEnvi", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glTexEnviv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glTexEnviv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexGend", [(GLenum, "coord"), (GLenum, "pname"), (GLdouble, "param")]),
+    GlFunction(Void, "glTexGendv", [(GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLdouble), "__glTexGendv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexGenf", [(GLenum, "coord"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glTexGenfv", [(GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLfloat), "__glTexGenfv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexGeni", [(GLenum, "coord"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glTexGeniv", [(GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLint), "__glTexGeniv_size(pname)"), "params")]),
+    GlFunction(Void, "glFeedbackBuffer", [(GLsizei, "size"), (GLenum, "type"), Out(Array(GLfloat, "size"), "buffer")]),
+    GlFunction(Void, "glSelectBuffer", [(GLsizei, "size"), Out(Array(GLuint, "size"), "buffer")]),
+    GlFunction(Alias("GLint", GLenum), "glRenderMode", [(GLenum, "mode")]),
+    GlFunction(Void, "glInitNames", []),
+    GlFunction(Void, "glLoadName", [(GLuint, "name")]),
+    GlFunction(Void, "glPassThrough", [(GLfloat, "token")]),
+    GlFunction(Void, "glPopName", []),
+    GlFunction(Void, "glPushName", [(GLuint, "name")]),
+    GlFunction(Void, "glClearAccum", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue"), (GLfloat, "alpha")]),
+    GlFunction(Void, "glClearIndex", [(GLfloat, "c")]),
+    GlFunction(Void, "glIndexMask", [(GLuint, "mask")]),
+    GlFunction(Void, "glAccum", [(GLenum, "op"), (GLfloat, "value")]),
+    GlFunction(Void, "glPopAttrib", []),
+    GlFunction(Void, "glPushAttrib", [(GLbitfield_attrib, "mask")]),
+    GlFunction(Void, "glMap1d", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "stride"), (GLint, "order"), (Array(Const(GLdouble), "__glMap1d_size(target, stride, order)"), "points")]),
+    GlFunction(Void, "glMap1f", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "stride"), (GLint, "order"), (Array(Const(GLfloat), "__glMap1f_size(target, stride, order)"), "points")]),
+    GlFunction(Void, "glMap2d", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (Array(Const(GLdouble), "__glMap2d_size(target, ustride, uorder, vstride, vorder)"), "points")]),
+    GlFunction(Void, "glMap2f", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (Array(Const(GLfloat), "__glMap2f_size(target, ustride, uorder, vstride, vorder)"), "points")]),
+    GlFunction(Void, "glMapGrid1d", [(GLint, "un"), (GLdouble, "u1"), (GLdouble, "u2")]),
+    GlFunction(Void, "glMapGrid1f", [(GLint, "un"), (GLfloat, "u1"), (GLfloat, "u2")]),
+    GlFunction(Void, "glMapGrid2d", [(GLint, "un"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "vn"), (GLdouble, "v1"), (GLdouble, "v2")]),
+    GlFunction(Void, "glMapGrid2f", [(GLint, "un"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "vn"), (GLfloat, "v1"), (GLfloat, "v2")]),
+    GlFunction(Void, "glEvalCoord1d", [(GLdouble, "u")]),
+    GlFunction(Void, "glEvalCoord1dv", [(Pointer(Const(GLdouble)), "u")]),
+    GlFunction(Void, "glEvalCoord1f", [(GLfloat, "u")]),
+    GlFunction(Void, "glEvalCoord1fv", [(Pointer(Const(GLfloat)), "u")]),
+    GlFunction(Void, "glEvalCoord2d", [(GLdouble, "u"), (GLdouble, "v")]),
+    GlFunction(Void, "glEvalCoord2dv", [(Array(Const(GLdouble), "2"), "u")]),
+    GlFunction(Void, "glEvalCoord2f", [(GLfloat, "u"), (GLfloat, "v")]),
+    GlFunction(Void, "glEvalCoord2fv", [(Array(Const(GLfloat), "2"), "u")]),
+    GlFunction(Void, "glEvalMesh1", [(GLenum, "mode"), (GLint, "i1"), (GLint, "i2")]),
+    GlFunction(Void, "glEvalPoint1", [(GLint, "i")]),
+    GlFunction(Void, "glEvalMesh2", [(GLenum, "mode"), (GLint, "i1"), (GLint, "i2"), (GLint, "j1"), (GLint, "j2")]),
+    GlFunction(Void, "glEvalPoint2", [(GLint, "i"), (GLint, "j")]),
+    GlFunction(Void, "glAlphaFunc", [(GLenum, "func"), (GLclampf, "ref")]),
+    GlFunction(Void, "glPixelZoom", [(GLfloat, "xfactor"), (GLfloat, "yfactor")]),
+    GlFunction(Void, "glPixelTransferf", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPixelTransferi", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glPixelMapfv", [(GLenum, "map"), (GLsizei, "mapsize"), (Array(Const(GLfloat), "mapsize"), "values")]),
+    GlFunction(Void, "glPixelMapuiv", [(GLenum, "map"), (GLsizei, "mapsize"), (Array(Const(GLuint), "mapsize"), "values")]),
+    GlFunction(Void, "glPixelMapusv", [(GLenum, "map"), (GLsizei, "mapsize"), (Array(Const(GLushort), "mapsize"), "values")]),
+    GlFunction(Void, "glCopyPixels", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "type")]),
+    GlFunction(Void, "glDrawPixels", [(GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glDrawPixels_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glGetClipPlane", [(GLenum, "plane"), Out(Array(GLdouble, "4"), "equation")], sideeffects=False),
+    GlFunction(Void, "glGetLightfv", [(GLenum, "light"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetLightfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetLightiv", [(GLenum, "light"), (GLenum, "pname"), Out(Array(GLint, "__glGetLightiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMapdv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLdouble), "v")], sideeffects=False),
+    GlFunction(Void, "glGetMapfv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLfloat), "v")], sideeffects=False),
+    GlFunction(Void, "glGetMapiv", [(GLenum, "target"), (GLenum, "query"), Out(Pointer(GLint), "v")], sideeffects=False),
+    GlFunction(Void, "glGetMaterialfv", [(GLenum, "face"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetMaterialfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMaterialiv", [(GLenum, "face"), (GLenum, "pname"), Out(Array(GLint, "__glGetMaterialiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetPixelMapfv", [(GLenum, "map"), Out(Pointer(GLfloat), "values")]),
+    GlFunction(Void, "glGetPixelMapuiv", [(GLenum, "map"), Out(Pointer(GLuint), "values")]),
+    GlFunction(Void, "glGetPixelMapusv", [(GLenum, "map"), Out(Pointer(GLushort), "values")]),
+    GlFunction(Void, "glGetPolygonStipple", [Out(OpaquePointer(GLubyte), "mask")]),
+    GlFunction(Void, "glGetTexEnvfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexEnvfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexEnviv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexEnviv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexGendv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLdouble, "__glGetTexGendv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexGenfv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetTexGenfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexGeniv", [(GLenum, "coord"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexGeniv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(GLboolean, "glIsList", [(GLuint, "list")], sideeffects=False),
+    GlFunction(Void, "glFrustum", [(GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
+    GlFunction(Void, "glLoadIdentity", []),
+    GlFunction(Void, "glLoadMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glLoadMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glMatrixMode", [(GLenum, "mode")]),
+    GlFunction(Void, "glMultMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMultMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glOrtho", [(GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
+    GlFunction(Void, "glPopMatrix", []),
+    GlFunction(Void, "glPushMatrix", []),
+    GlFunction(Void, "glRotated", [(GLdouble, "angle"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glRotatef", [(GLfloat, "angle"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glScaled", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glScalef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glTranslated", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glTranslatef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+
+    # GL_VERSION_1_1
+    GlFunction(Void, "glDrawArrays", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
+    GlFunction(Void, "glDrawElements", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices")]),
+    GlFunction(Void, "glGetPointerv", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
+    GlFunction(Void, "glPolygonOffset", [(GLfloat, "factor"), (GLfloat, "units")]),
+    GlFunction(Void, "glCopyTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
+    GlFunction(Void, "glCopyTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
+    GlFunction(Void, "glCopyTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glCopyTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage1D_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage2D_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glBindTexture", [(GLenum, "target"), (GLtexture, "texture")]),
+    GlFunction(Void, "glDeleteTextures", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures")]),
+    GlFunction(Void, "glGenTextures", [(GLsizei, "n"), Out(Array(GLtexture, "n"), "textures")]),
+    GlFunction(GLboolean, "glIsTexture", [(GLtexture, "texture")], sideeffects=False),
+
+    # GL_VERSION_1_1_DEPRECATED
+    GlFunction(Void, "glArrayElement", [(GLint, "i")]),
+    GlFunction(Void, "glColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glDisableClientState", [(GLenum, "array")]),
+    GlFunction(Void, "glEdgeFlagPointer", [(GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glEnableClientState", [(GLenum, "array")]),
+    GlFunction(Void, "glIndexPointer", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glInterleavedArrays", [(GLenum, "format"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glNormalPointer", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glTexCoordPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glVertexPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(GLboolean, "glAreTexturesResident", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), Out(Array(GLboolean, "n"), "residences")], sideeffects=False),
+    GlFunction(Void, "glPrioritizeTextures", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), (Array(Const(GLclampf), "n"), "priorities")]),
+    GlFunction(Void, "glIndexub", [(GLubyte, "c")]),
+    GlFunction(Void, "glIndexubv", [(Pointer(Const(GLubyte)), "c")]),
+    GlFunction(Void, "glPopClientAttrib", []),
+    GlFunction(Void, "glPushClientAttrib", [(GLbitfield_client_attrib, "mask")]),
+
+    # GL_VERSION_1_2
+    GlFunction(Void, "glBlendColor", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
+    GlFunction(Void, "glBlendEquation", [(GLenum, "mode")]),
+    GlFunction(Void, "glDrawRangeElements", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices")]),
+    GlFunction(Void, "glTexImage3D", [(GLenum, "target"), (GLint, "level"), (GLenum_int, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage3D_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage3D_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glCopyTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+
+    # GL_VERSION_1_2_DEPRECATED
+    GlFunction(Void, "glColorTable", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glColorTable_size(format, type, width)"), "table")]),
+    GlFunction(Void, "glColorTableParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glColorTableParameterfv_size(pname)"), "params")]),
+    GlFunction(Void, "glColorTableParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glColorTableParameteriv_size(pname)"), "params")]),
+    GlFunction(Void, "glCopyColorTable", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glGetColorTable", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTable_size(target, format, type)"), "table")], sideeffects=False),
+    GlFunction(Void, "glGetColorTableParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetColorTableParameterfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetColorTableParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetColorTableParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glColorSubTable", [(GLenum, "target"), (GLsizei, "start"), (GLsizei, "count"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glColorSubTable_size(format, type, count)"), "data")]),
+    GlFunction(Void, "glCopyColorSubTable", [(GLenum, "target"), (GLsizei, "start"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glConvolutionFilter1D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glConvolutionFilter1D_size(format, type, width)"), "image")]),
+    GlFunction(Void, "glConvolutionFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glConvolutionFilter2D_size(format, type, width, height)"), "image")]),
+    GlFunction(Void, "glConvolutionParameterf", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "params")]),
+    GlFunction(Void, "glConvolutionParameterfv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__glConvolutionParameterfv_size(pname)"), "params")]),
+    GlFunction(Void, "glConvolutionParameteri", [(GLenum, "target"), (GLenum, "pname"), (GLint, "params")]),
+    GlFunction(Void, "glConvolutionParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glConvolutionParameteriv_size(pname)"), "params")]),
+    GlFunction(Void, "glCopyConvolutionFilter1D", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glCopyConvolutionFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetConvolutionFilter", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetConvolutionFilter_size(target, format, type)"), "image")]),
+    GlFunction(Void, "glGetConvolutionParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetConvolutionParameterfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetConvolutionParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetConvolutionParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetSeparableFilter", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilter_size(target, format, type)"), "row"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilter_size(target, format, type)"), "column"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilter_size(target, format, type)"), "span")]),
+    GlFunction(Void, "glSeparableFilter2D", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glConvolutionFilter1D_size(format, type, width)"), "row"), (Blob(Const(GLvoid), "__glConvolutionFilter1D_size(format, type, height)"), "column")]),
+    GlFunction(Void, "glGetHistogram", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetHistogram_size(target, format, type)"), "values")]),
+    GlFunction(Void, "glGetHistogramParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetHistogramParameterfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetHistogramParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetHistogramParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMinmax", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMinmax_size(target, format, type)"), "values")]),
+    GlFunction(Void, "glGetMinmaxParameterfv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__glGetMinmaxParameterfv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMinmaxParameteriv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetMinmaxParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glHistogram", [(GLenum, "target"), (GLsizei, "width"), (GLenum, "internalformat"), (GLboolean, "sink")]),
+    GlFunction(Void, "glMinmax", [(GLenum, "target"), (GLenum, "internalformat"), (GLboolean, "sink")]),
+    GlFunction(Void, "glResetHistogram", [(GLenum, "target")]),
+    GlFunction(Void, "glResetMinmax", [(GLenum, "target")]),
+
+    # GL_VERSION_1_3
+    GlFunction(Void, "glActiveTexture", [(GLenum, "texture")]),
+    GlFunction(Void, "glSampleCoverage", [(GLclampf, "value"), (GLboolean, "invert")]),
+    GlFunction(Void, "glCompressedTexImage3D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexSubImage3D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glGetCompressedTexImage", [(GLenum, "target"), (GLint, "level"), Out(OpaqueBlob(GLvoid, "__glGetCompressedTexImage_size(target, level)"), "img")]),
+
+    # GL_VERSION_1_3_DEPRECATED
+    GlFunction(Void, "glClientActiveTexture", [(GLenum, "texture")]),
+    GlFunction(Void, "glMultiTexCoord1d", [(GLenum, "target"), (GLdouble, "s")]),
+    GlFunction(Void, "glMultiTexCoord1dv", [(GLenum, "target"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glMultiTexCoord1f", [(GLenum, "target"), (GLfloat, "s")]),
+    GlFunction(Void, "glMultiTexCoord1fv", [(GLenum, "target"), (Pointer(Const(GLfloat)), "v")]),
+    GlFunction(Void, "glMultiTexCoord1i", [(GLenum, "target"), (GLint, "s")]),
+    GlFunction(Void, "glMultiTexCoord1iv", [(GLenum, "target"), (Pointer(Const(GLint)), "v")]),
+    GlFunction(Void, "glMultiTexCoord1s", [(GLenum, "target"), (GLshort, "s")]),
+    GlFunction(Void, "glMultiTexCoord1sv", [(GLenum, "target"), (Pointer(Const(GLshort)), "v")]),
+    GlFunction(Void, "glMultiTexCoord2d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t")]),
+    GlFunction(Void, "glMultiTexCoord2dv", [(GLenum, "target"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord2f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t")]),
+    GlFunction(Void, "glMultiTexCoord2fv", [(GLenum, "target"), (Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord2i", [(GLenum, "target"), (GLint, "s"), (GLint, "t")]),
+    GlFunction(Void, "glMultiTexCoord2iv", [(GLenum, "target"), (Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord2s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t")]),
+    GlFunction(Void, "glMultiTexCoord2sv", [(GLenum, "target"), (Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
+    GlFunction(Void, "glMultiTexCoord3dv", [(GLenum, "target"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
+    GlFunction(Void, "glMultiTexCoord3fv", [(GLenum, "target"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3i", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r")]),
+    GlFunction(Void, "glMultiTexCoord3iv", [(GLenum, "target"), (Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
+    GlFunction(Void, "glMultiTexCoord3sv", [(GLenum, "target"), (Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4d", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
+    GlFunction(Void, "glMultiTexCoord4dv", [(GLenum, "target"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4f", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
+    GlFunction(Void, "glMultiTexCoord4fv", [(GLenum, "target"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4i", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
+    GlFunction(Void, "glMultiTexCoord4iv", [(GLenum, "target"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4s", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
+    GlFunction(Void, "glMultiTexCoord4sv", [(GLenum, "target"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glLoadTransposeMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glLoadTransposeMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glMultTransposeMatrixf", [(Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMultTransposeMatrixd", [(Array(Const(GLdouble), "16"), "m")]),
+
+    # GL_VERSION_1_4
+    GlFunction(Void, "glBlendFuncSeparate", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
+    GlFunction(Void, "glMultiDrawArrays", [(GLenum_mode, "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glMultiDrawElements", [(GLenum_mode, "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glPointParameterf", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPointParameterfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__glPointParameterfv_size(pname)"), "params")]),
+    GlFunction(Void, "glPointParameteri", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glPointParameteriv", [(GLenum, "pname"), (Array(Const(GLint), "__glPointParameteriv_size(pname)"), "params")]),
+
+    # GL_VERSION_1_4_DEPRECATED
+    GlFunction(Void, "glFogCoordf", [(GLfloat, "coord")]),
+    GlFunction(Void, "glFogCoordfv", [(Pointer(Const(GLfloat)), "coord")]),
+    GlFunction(Void, "glFogCoordd", [(GLdouble, "coord")]),
+    GlFunction(Void, "glFogCoorddv", [(Pointer(Const(GLdouble)), "coord")]),
+    GlFunction(Void, "glFogCoordPointer", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glSecondaryColor3b", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
+    GlFunction(Void, "glSecondaryColor3bv", [(Array(Const(GLbyte), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3d", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
+    GlFunction(Void, "glSecondaryColor3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3f", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
+    GlFunction(Void, "glSecondaryColor3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3i", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
+    GlFunction(Void, "glSecondaryColor3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3s", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
+    GlFunction(Void, "glSecondaryColor3sv", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3ub", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
+    GlFunction(Void, "glSecondaryColor3ubv", [(Array(Const(GLubyte), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3ui", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
+    GlFunction(Void, "glSecondaryColor3uiv", [(Array(Const(GLuint), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3us", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
+    GlFunction(Void, "glSecondaryColor3usv", [(Array(Const(GLushort), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glWindowPos2d", [(GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glWindowPos2dv", [(Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2f", [(GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glWindowPos2fv", [(Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2i", [(GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glWindowPos2iv", [(Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2s", [(GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glWindowPos2sv", [(Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glWindowPos3d", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glWindowPos3dv", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3f", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glWindowPos3fv", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3i", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glWindowPos3iv", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3s", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glWindowPos3sv", [(Array(Const(GLshort), "3"), "v")]),
+
+    # GL_VERSION_1_5
+    GlFunction(Void, "glGenQueries", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
+    GlFunction(Void, "glDeleteQueries", [(GLsizei, "n"), (Array(Const(GLquery), "n"), "ids")]),
+    GlFunction(GLboolean, "glIsQuery", [(GLquery, "id")], sideeffects=False),
+    GlFunction(Void, "glBeginQuery", [(GLenum, "target"), (GLquery, "id")]),
+    GlFunction(Void, "glEndQuery", [(GLenum, "target")]),
+    GlFunction(Void, "glGetQueryiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryivARB_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetQueryObjectiv", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryObjectivARB_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetQueryObjectuiv", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLuint, "__glGetQueryObjectuivARB_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glBindBuffer", [(GLenum, "target"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glDeleteBuffers", [(GLsizei, "n"), (Array(Const(GLbuffer), "n"), "buffer")]),
+    GlFunction(Void, "glGenBuffers", [(GLsizei, "n"), Out(Array(GLbuffer, "n"), "buffer")]),
+    GlFunction(GLboolean, "glIsBuffer", [(GLbuffer, "buffer")], sideeffects=False),
+    GlFunction(Void, "glBufferData", [(GLenum, "target"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
+    GlFunction(Void, "glBufferSubData", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data")]),
+    GlFunction(Void, "glGetBufferSubData", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size"), Out(Blob(GLvoid, "size"), "data")], sideeffects=False),
+    GlFunction(GLmap, "glMapBuffer", [(GLenum, "target"), (GLenum, "access")]),
+    GlFunction(GLboolean, "glUnmapBuffer", [(GLenum, "target")]),
+    GlFunction(Void, "glGetBufferParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetBufferPointerv", [(GLenum, "target"), (GLenum, "pname"), (Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
+
+    # GL_VERSION_2_0
+    GlFunction(Void, "glBlendEquationSeparate", [(GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
+    GlFunction(Void, "glDrawBuffers", [(GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
+    GlFunction(Void, "glStencilOpSeparate", [(GLenum, "face"), (GLenum, "sfail"), (GLenum, "dpfail"), (GLenum, "dppass")]),
+    GlFunction(Void, "glStencilFuncSeparate", [(GLenum, "face"), (GLenum, "func"), (GLint, "ref"), (GLuint, "mask")]),
+    GlFunction(Void, "glStencilMaskSeparate", [(GLenum, "face"), (GLuint, "mask")]),
+    GlFunction(Void, "glAttachShader", [(GLprogram, "program"), (GLshader, "shader")]),
+    GlFunction(Void, "glBindAttribLocation", [(GLprogram, "program"), (GLuint, "index"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glCompileShader", [(GLshader, "shader")]),
+    GlFunction(GLprogram, "glCreateProgram", []),
+    GlFunction(GLshader, "glCreateShader", [(GLenum, "type")]),
+    GlFunction(Void, "glDeleteProgram", [(GLprogram, "program")]),
+    GlFunction(Void, "glDeleteShader", [(GLshader, "shader")]),
+    GlFunction(Void, "glDetachShader", [(GLprogram, "program"), (GLshader, "shader")]),
+    GlFunction(Void, "glDisableVertexAttribArray", [(GLuint, "index")]),
+    GlFunction(Void, "glEnableVertexAttribArray", [(GLuint, "index")]),
+    GlFunction(Void, "glGetActiveAttrib", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
+    GlFunction(Void, "glGetActiveUniform", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
+    GlFunction(Void, "glGetAttachedShaders", [(GLprogram, "program"), (GLsizei, "maxCount"), Out(Pointer(GLsizei), "count"), Out(Array(GLuint, "(count ? *count : maxCount)"), "obj")], sideeffects=False),
+    GlFunction(GLint, "glGetAttribLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glGetProgramiv", [(GLprogram, "program"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramInfoLog", [(GLprogram, "program"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
+    GlFunction(Void, "glGetShaderiv", [(GLshader, "shader"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetShaderInfoLog", [(GLshader, "shader"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
+    GlFunction(Void, "glGetShaderSource", [(GLshader, "shader"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(String("GLchar *", "*length"), "source")], sideeffects=False),
+    GlFunction(GLlocation, "glGetUniformLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glGetUniformfv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetUniformiv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribdv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLdouble, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribfv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribPointerv", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
+    GlFunction(GLboolean, "glIsProgram", [(GLprogram, "program")], sideeffects=False),
+    GlFunction(GLboolean, "glIsShader", [(GLshader, "shader")], sideeffects=False),
+    GlFunction(Void, "glLinkProgram", [(GLprogram, "program")]),
+    GlFunction(Void, "glShaderSource", [(GLshader, "shader"), (GLsizei, "count"), (Const(Array(Const(GLstringARB), "count")), "string"), (Array(Const(GLint), "count"), "length")]),
+    GlFunction(Void, "glUseProgram", [(GLprogram, "program")]),
+    GlFunction(Void, "glUniform1f", [(GLlocation, "location"), (GLfloat, "v0")]),
+    GlFunction(Void, "glUniform2f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
+    GlFunction(Void, "glUniform3f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
+    GlFunction(Void, "glUniform4f", [(GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
+    GlFunction(Void, "glUniform1i", [(GLlocation, "location"), (GLint, "v0")]),
+    GlFunction(Void, "glUniform2i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
+    GlFunction(Void, "glUniform3i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
+    GlFunction(Void, "glUniform4i", [(GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
+    GlFunction(Void, "glUniform1fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
+    GlFunction(Void, "glUniform2fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4fv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
+    GlFunction(Void, "glUniform1iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
+    GlFunction(Void, "glUniform2iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4iv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
+    GlFunction(Void, "glUniformMatrix4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
+    GlFunction(Void, "glValidateProgram", [(GLprogram, "program")]),
+    GlFunction(Void, "glVertexAttrib1d", [(GLuint, "index"), (GLdouble, "x")]),
+    GlFunction(Void, "glVertexAttrib1dv", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glVertexAttrib1f", [(GLuint, "index"), (GLfloat, "x")]),
+    GlFunction(Void, "glVertexAttrib1fv", [(GLuint, "index"), (Pointer(Const(GLfloat)), "v")]),
+    GlFunction(Void, "glVertexAttrib1s", [(GLuint, "index"), (GLshort, "x")]),
+    GlFunction(Void, "glVertexAttrib1sv", [(GLuint, "index"), (Pointer(Const(GLshort)), "v")]),
+    GlFunction(Void, "glVertexAttrib2d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertexAttrib2dv", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib2f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glVertexAttrib2fv", [(GLuint, "index"), (Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib2s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glVertexAttrib2sv", [(GLuint, "index"), (Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib3d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertexAttrib3dv", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib3f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glVertexAttrib3fv", [(GLuint, "index"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib3s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glVertexAttrib3sv", [(GLuint, "index"), (Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib4Nbv", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4Niv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4Nsv", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4Nub", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
+    GlFunction(Void, "glVertexAttrib4Nubv", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4Nuiv", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4Nusv", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4bv", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertexAttrib4dv", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4f", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glVertexAttrib4fv", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4iv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4s", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glVertexAttrib4sv", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4ubv", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4uiv", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4usv", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_VERSION_2_1
+    GlFunction(Void, "glUniformMatrix2x3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*3"), "value")]),
+    GlFunction(Void, "glUniformMatrix3x2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix2x4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix4x2fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix3x4fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix4x3fv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*3"), "value")]),
+
+    # GL_VERSION_3_0
+    GlFunction(Void, "glColorMaski", [(GLuint, "index"), (GLboolean, "r"), (GLboolean, "g"), (GLboolean, "b"), (GLboolean, "a")]),
+    GlFunction(Void, "glGetBooleani_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLboolean, "__glGetBooleani_v_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetIntegeri_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "__glGetIntegeri_v_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glEnablei", [(GLenum, "target"), (GLuint, "index")]),
+    GlFunction(Void, "glDisablei", [(GLenum, "target"), (GLuint, "index")]),
+    GlFunction(GLboolean, "glIsEnabledi", [(GLenum, "target"), (GLuint, "index")], sideeffects=False),
+    GlFunction(Void, "glBeginTransformFeedback", [(GLenum_mode, "primitiveMode")]),
+    GlFunction(Void, "glEndTransformFeedback", []),
+    GlFunction(Void, "glBindBufferRange", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
+    GlFunction(Void, "glBindBufferBase", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glTransformFeedbackVaryings", [(GLprogram, "program"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "varyings"), (GLenum, "bufferMode")]),
+    GlFunction(Void, "glGetTransformFeedbackVarying", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
+    GlFunction(Void, "glClampColor", [(GLenum, "target"), (GLenum, "clamp")]),
+    GlFunction(Void, "glBeginConditionalRender", [(GLuint, "id"), (GLenum, "mode")]),
+    GlFunction(Void, "glEndConditionalRender", []),
+    GlFunction(Void, "glVertexAttribIPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glGetVertexAttribIiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribIuiv", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glVertexAttribI1i", [(GLuint, "index"), (GLint, "x")]),
+    GlFunction(Void, "glVertexAttribI2i", [(GLuint, "index"), (GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glVertexAttribI3i", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glVertexAttribI4i", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glVertexAttribI1ui", [(GLuint, "index"), (GLuint, "x")]),
+    GlFunction(Void, "glVertexAttribI2ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y")]),
+    GlFunction(Void, "glVertexAttribI3ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z")]),
+    GlFunction(Void, "glVertexAttribI4ui", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
+    GlFunction(Void, "glVertexAttribI1iv", [(GLuint, "index"), (Pointer(Const(GLint)), "v")]),
+    GlFunction(Void, "glVertexAttribI2iv", [(GLuint, "index"), (Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribI3iv", [(GLuint, "index"), (Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribI4iv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI1uiv", [(GLuint, "index"), (Pointer(Const(GLuint)), "v")]),
+    GlFunction(Void, "glVertexAttribI2uiv", [(GLuint, "index"), (Array(Const(GLuint), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribI3uiv", [(GLuint, "index"), (Array(Const(GLuint), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribI4uiv", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4bv", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4sv", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4ubv", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4usv", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glGetUniformuiv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLuint, "__glGetUniformuiv_size(program, location)"), "params")], sideeffects=False),
+    GlFunction(Void, "glBindFragDataLocation", [(GLprogram, "program"), (GLuint, "color"), (Const(GLstring), "name")]),
+    GlFunction(GLlocation, "glGetFragDataLocation", [(GLprogram, "program"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glUniform1ui", [(GLlocation, "location"), (GLuint, "v0")]),
+    GlFunction(Void, "glUniform2ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
+    GlFunction(Void, "glUniform3ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
+    GlFunction(Void, "glUniform4ui", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
+    GlFunction(Void, "glUniform1uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
+    GlFunction(Void, "glUniform2uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4uiv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
+    GlFunction(Void, "glTexParameterIiv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__glTexParameterIiv_size(pname)"), "params")]),
+    GlFunction(Void, "glTexParameterIuiv", [(GLenum, "target"), (GLenum, "pname"), (Array(Const(GLuint), "__glTexParameterIuiv_size(pname)"), "params")]),
+    GlFunction(Void, "glGetTexParameterIiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetTexParameterIiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexParameterIuiv", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLuint, "__glGetTexParameterIuiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glClearBufferiv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Array(Const(GLint), "__glClearBuffer_size(buffer)"), "value")]),
+    GlFunction(Void, "glClearBufferuiv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Array(Const(GLuint), "__glClearBuffer_size(buffer)"), "value")]),
+    GlFunction(Void, "glClearBufferfv", [(GLenum, "buffer"), (GLint, "drawbuffer"), (Array(Const(GLfloat), "__glClearBuffer_size(buffer)"), "value")]),
+    GlFunction(Void, "glClearBufferfi", [(GLenum, "buffer"), (GLint, "drawbuffer"), (GLfloat, "depth"), (GLint, "stencil")]),
+    GlFunction(String("const GLubyte *"), "glGetStringi", [(GLenum, "name"), (GLuint, "index")], sideeffects=False),
+
+    # GL_VERSION_3_1
+    GlFunction(Void, "glDrawArraysInstanced", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glDrawElementsInstanced", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glTexBuffer", [(GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glPrimitiveRestartIndex", [(GLuint, "index")]),
+
+    # GL_VERSION_3_2
+    GlFunction(Void, "glGetInteger64i_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint64, "__glGetInteger64i_v_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetBufferParameteri64v", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetBufferParameteri64v_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glFramebufferTexture", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
+
+    # GL_VERSION_3_3
+    GlFunction(Void, "glVertexAttribDivisor", [(GLuint, "index"), (GLuint, "divisor")]),
+
+    # GL_VERSION_4_0
+    GlFunction(Void, "glMinSampleShading", [(GLclampf, "value")]),
+    GlFunction(Void, "glBlendEquationi", [(GLuint, "buf"), (GLenum, "mode")]),
+    GlFunction(Void, "glBlendEquationSeparatei", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
+    GlFunction(Void, "glBlendFunci", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
+    GlFunction(Void, "glBlendFuncSeparatei", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
+
+    # GL_ARB_multitexture
+    GlFunction(Void, "glActiveTextureARB", [(GLenum, "texture")]),
+    GlFunction(Void, "glClientActiveTextureARB", [(GLenum, "texture")]),
+    GlFunction(Void, "glMultiTexCoord1dARB", [(GLenum, "target"), (GLdouble, "s")]),
+    GlFunction(Void, "glMultiTexCoord1dvARB", [(GLenum, "target"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glMultiTexCoord1fARB", [(GLenum, "target"), (GLfloat, "s")]),
+    GlFunction(Void, "glMultiTexCoord1fvARB", [(GLenum, "target"), (Pointer(Const(GLfloat)), "v")]),
+    GlFunction(Void, "glMultiTexCoord1iARB", [(GLenum, "target"), (GLint, "s")]),
+    GlFunction(Void, "glMultiTexCoord1ivARB", [(GLenum, "target"), (Pointer(Const(GLint)), "v")]),
+    GlFunction(Void, "glMultiTexCoord1sARB", [(GLenum, "target"), (GLshort, "s")]),
+    GlFunction(Void, "glMultiTexCoord1svARB", [(GLenum, "target"), (Pointer(Const(GLshort)), "v")]),
+    GlFunction(Void, "glMultiTexCoord2dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t")]),
+    GlFunction(Void, "glMultiTexCoord2dvARB", [(GLenum, "target"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord2fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t")]),
+    GlFunction(Void, "glMultiTexCoord2fvARB", [(GLenum, "target"), (Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord2iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t")]),
+    GlFunction(Void, "glMultiTexCoord2ivARB", [(GLenum, "target"), (Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord2sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t")]),
+    GlFunction(Void, "glMultiTexCoord2svARB", [(GLenum, "target"), (Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r")]),
+    GlFunction(Void, "glMultiTexCoord3dvARB", [(GLenum, "target"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r")]),
+    GlFunction(Void, "glMultiTexCoord3fvARB", [(GLenum, "target"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r")]),
+    GlFunction(Void, "glMultiTexCoord3ivARB", [(GLenum, "target"), (Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r")]),
+    GlFunction(Void, "glMultiTexCoord3svARB", [(GLenum, "target"), (Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4dARB", [(GLenum, "target"), (GLdouble, "s"), (GLdouble, "t"), (GLdouble, "r"), (GLdouble, "q")]),
+    GlFunction(Void, "glMultiTexCoord4dvARB", [(GLenum, "target"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4fARB", [(GLenum, "target"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "q")]),
+    GlFunction(Void, "glMultiTexCoord4fvARB", [(GLenum, "target"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4iARB", [(GLenum, "target"), (GLint, "s"), (GLint, "t"), (GLint, "r"), (GLint, "q")]),
+    GlFunction(Void, "glMultiTexCoord4ivARB", [(GLenum, "target"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4sARB", [(GLenum, "target"), (GLshort, "s"), (GLshort, "t"), (GLshort, "r"), (GLshort, "q")]),
+    GlFunction(Void, "glMultiTexCoord4svARB", [(GLenum, "target"), (Array(Const(GLshort), "4"), "v")]),
+
+    # GL_ARB_transpose_matrix
+    GlFunction(Void, "glLoadTransposeMatrixfARB", [(Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glLoadTransposeMatrixdARB", [(Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glMultTransposeMatrixfARB", [(Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMultTransposeMatrixdARB", [(Array(Const(GLdouble), "16"), "m")]),
+
+    # GL_ARB_multisample
+    GlFunction(Void, "glSampleCoverageARB", [(GLclampf, "value"), (GLboolean, "invert")]),
+
+    # GL_ARB_texture_compression
+    GlFunction(Void, "glCompressedTexImage3DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexImage2DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexImage1DARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexSubImage3DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexSubImage2DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glCompressedTexSubImage1DARB", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "data")]),
+    GlFunction(Void, "glGetCompressedTexImageARB", [(GLenum, "target"), (GLint, "level"), Out(OpaquePointer(GLvoid), "img")], sideeffects=False),
+
+    # GL_ARB_point_parameters
+    GlFunction(Void, "glPointParameterfARB", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPointParameterfvARB", [(GLenum, "pname"), (Array(Const(GLfloat), "__glPointParameterfvARB_size(pname)"), "params")]),
+
+    # GL_ARB_vertex_blend
+    GlFunction(Void, "glWeightbvARB", [(GLint, "size"), (Array(Const(GLbyte), "size"), "weights")]),
+    GlFunction(Void, "glWeightsvARB", [(GLint, "size"), (Array(Const(GLshort), "size"), "weights")]),
+    GlFunction(Void, "glWeightivARB", [(GLint, "size"), (Array(Const(GLint), "size"), "weights")]),
+    GlFunction(Void, "glWeightfvARB", [(GLint, "size"), (Array(Const(GLfloat), "size"), "weights")]),
+    GlFunction(Void, "glWeightdvARB", [(GLint, "size"), (Array(Const(GLdouble), "size"), "weights")]),
+    GlFunction(Void, "glWeightubvARB", [(GLint, "size"), (Array(Const(GLubyte), "size"), "weights")]),
+    GlFunction(Void, "glWeightusvARB", [(GLint, "size"), (Array(Const(GLushort), "size"), "weights")]),
+    GlFunction(Void, "glWeightuivARB", [(GLint, "size"), (Array(Const(GLuint), "size"), "weights")]),
+    GlFunction(Void, "glWeightPointerARB", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glVertexBlendARB", [(GLint, "count")]),
+
+    # GL_ARB_matrix_palette
+    GlFunction(Void, "glCurrentPaletteMatrixARB", [(GLint, "index")]),
+    GlFunction(Void, "glMatrixIndexubvARB", [(GLint, "size"), (Array(Const(GLubyte), "size"), "indices")]),
+    GlFunction(Void, "glMatrixIndexusvARB", [(GLint, "size"), (Array(Const(GLushort), "size"), "indices")]),
+    GlFunction(Void, "glMatrixIndexuivARB", [(GLint, "size"), (Array(Const(GLuint), "size"), "indices")]),
+    GlFunction(Void, "glMatrixIndexPointerARB", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_ARB_window_pos
+    GlFunction(Void, "glWindowPos2dARB", [(GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glWindowPos2dvARB", [(Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2fARB", [(GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glWindowPos2fvARB", [(Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2iARB", [(GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glWindowPos2ivARB", [(Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2sARB", [(GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glWindowPos2svARB", [(Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glWindowPos3dARB", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glWindowPos3dvARB", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3fARB", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glWindowPos3fvARB", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3iARB", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glWindowPos3ivARB", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3sARB", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glWindowPos3svARB", [(Array(Const(GLshort), "3"), "v")]),
+
+    # GL_ARB_vertex_program
+    GlFunction(Void, "glVertexAttrib1dARB", [(GLuint, "index"), (GLdouble, "x")]),
+    GlFunction(Void, "glVertexAttrib1dvARB", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glVertexAttrib1fARB", [(GLuint, "index"), (GLfloat, "x")]),
+    GlFunction(Void, "glVertexAttrib1fvARB", [(GLuint, "index"), (Pointer(Const(GLfloat)), "v")]),
+    GlFunction(Void, "glVertexAttrib1sARB", [(GLuint, "index"), (GLshort, "x")]),
+    GlFunction(Void, "glVertexAttrib1svARB", [(GLuint, "index"), (Pointer(Const(GLshort)), "v")]),
+    GlFunction(Void, "glVertexAttrib2dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertexAttrib2dvARB", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib2fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glVertexAttrib2fvARB", [(GLuint, "index"), (Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib2sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glVertexAttrib2svARB", [(GLuint, "index"), (Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib3dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertexAttrib3dvARB", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib3fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glVertexAttrib3fvARB", [(GLuint, "index"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib3sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glVertexAttrib3svARB", [(GLuint, "index"), (Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib4NbvARB", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4NivARB", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4NsvARB", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4NubARB", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
+    GlFunction(Void, "glVertexAttrib4NubvARB", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4NuivARB", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4NusvARB", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4bvARB", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4dARB", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertexAttrib4dvARB", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4fARB", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glVertexAttrib4fvARB", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4ivARB", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4sARB", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glVertexAttrib4svARB", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4ubvARB", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4uivARB", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4usvARB", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribPointerARB", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glEnableVertexAttribArrayARB", [(GLuint, "index")]),
+    GlFunction(Void, "glDisableVertexAttribArrayARB", [(GLuint, "index")]),
+    GlFunction(Void, "glProgramStringARB", [(GLenum, "target"), (GLenum, "format"), (GLsizei, "len"), (String("const void *", "len"), "string")]),
+    GlFunction(Void, "glBindProgramARB", [(GLenum, "target"), (GLprogramARB, "program")]),
+    GlFunction(Void, "glDeleteProgramsARB", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "programs")]),
+    GlFunction(Void, "glGenProgramsARB", [(GLsizei, "n"), Out(Array(GLprogramARB, "n"), "programs")]),
+    GlFunction(Void, "glProgramEnvParameter4dARB", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glProgramEnvParameter4dvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "params")]),
+    GlFunction(Void, "glProgramEnvParameter4fARB", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glProgramEnvParameter4fvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "params")]),
+    GlFunction(Void, "glProgramLocalParameter4dARB", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glProgramLocalParameter4dvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "params")]),
+    GlFunction(Void, "glProgramLocalParameter4fARB", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glProgramLocalParameter4fvARB", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "params")]),
+    GlFunction(Void, "glGetProgramEnvParameterdvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramEnvParameterfvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramLocalParameterdvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramLocalParameterfvARB", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramStringARB", [(GLenum, "target"), (GLenum, "pname"), Out(OpaquePointer(GLvoid), "string")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribdvARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLdouble, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribfvARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribivARB", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribPointervARB", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
+    GlFunction(GLboolean, "glIsProgramARB", [(GLprogramARB, "program")], sideeffects=False),
+
+    # GL_ARB_vertex_buffer_object
+    GlFunction(Void, "glBindBufferARB", [(GLenum, "target"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glDeleteBuffersARB", [(GLsizei, "n"), (Array(Const(GLbuffer), "n"), "buffers")]),
+    GlFunction(Void, "glGenBuffersARB", [(GLsizei, "n"), Out(Array(GLbuffer, "n"), "buffers")]),
+    GlFunction(GLboolean, "glIsBufferARB", [(GLbuffer, "buffer")], sideeffects=False),
+    GlFunction(Void, "glBufferDataARB", [(GLenum, "target"), (GLsizeiptrARB, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
+    GlFunction(Void, "glBufferSubDataARB", [(GLenum, "target"), (GLintptrARB, "offset"), (GLsizeiptrARB, "size"), (Blob(Const(GLvoid), "size"), "data")]),
+    GlFunction(Void, "glGetBufferSubDataARB", [(GLenum, "target"), (GLintptrARB, "offset"), (GLsizeiptrARB, "size"), Out(Blob(GLvoid, "size"), "data")], sideeffects=False),
+    GlFunction(GLmap, "glMapBufferARB", [(GLenum, "target"), (GLenum, "access")]),
+    GlFunction(GLboolean, "glUnmapBufferARB", [(GLenum, "target")]),
+    GlFunction(Void, "glGetBufferParameterivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetBufferPointervARB", [(GLenum, "target"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
+
+    # GL_ARB_occlusion_query
+    GlFunction(Void, "glGenQueriesARB", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
+    GlFunction(Void, "glDeleteQueriesARB", [(GLsizei, "n"), (Array(Const(GLquery), "n"), "ids")]),
+    GlFunction(GLboolean, "glIsQueryARB", [(GLquery, "id")], sideeffects=False),
+    GlFunction(Void, "glBeginQueryARB", [(GLenum, "target"), (GLquery, "id")]),
+    GlFunction(Void, "glEndQueryARB", [(GLenum, "target")]),
+    GlFunction(Void, "glGetQueryivARB", [(GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryivARB_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetQueryObjectivARB", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLint, "__glGetQueryObjectivARB_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetQueryObjectuivARB", [(GLquery, "id"), (GLenum, "pname"), Out(Array(GLuint, "__glGetQueryObjectuivARB_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_shader_objects
+    GlFunction(Void, "glDeleteObjectARB", [(GLhandleARB, "obj")]),
+    GlFunction(GLhandleARB, "glGetHandleARB", [(GLenum, "pname")], sideeffects=False),
+    GlFunction(Void, "glDetachObjectARB", [(GLhandleARB, "containerObj"), (GLhandleARB, "attachedObj")]),
+    GlFunction(GLhandleARB, "glCreateShaderObjectARB", [(GLenum, "shaderType")]),
+    GlFunction(Void, "glShaderSourceARB", [(GLhandleARB, "shaderObj"), (GLsizei, "count"), (Const(Array(Const(GLstringARB), "count")), "string"), (Array(Const(GLint), "count"), "length")]),
+    GlFunction(Void, "glCompileShaderARB", [(GLhandleARB, "shaderObj")]),
+    GlFunction(GLhandleARB, "glCreateProgramObjectARB", []),
+    GlFunction(Void, "glAttachObjectARB", [(GLhandleARB, "containerObj"), (GLhandleARB, "obj")]),
+    GlFunction(Void, "glLinkProgramARB", [(GLhandleARB, "programObj")]),
+    GlFunction(Void, "glUseProgramObjectARB", [(GLhandleARB, "programObj")]),
+    GlFunction(Void, "glValidateProgramARB", [(GLhandleARB, "programObj")]),
+    GlFunction(Void, "glUniform1fARB", [(GLlocationARB, "location"), (GLfloat, "v0")]),
+    GlFunction(Void, "glUniform2fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
+    GlFunction(Void, "glUniform3fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
+    GlFunction(Void, "glUniform4fARB", [(GLlocationARB, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
+    GlFunction(Void, "glUniform1iARB", [(GLlocationARB, "location"), (GLint, "v0")]),
+    GlFunction(Void, "glUniform2iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1")]),
+    GlFunction(Void, "glUniform3iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
+    GlFunction(Void, "glUniform4iARB", [(GLlocationARB, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
+    GlFunction(Void, "glUniform1fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
+    GlFunction(Void, "glUniform2fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
+    GlFunction(Void, "glUniform1ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
+    GlFunction(Void, "glUniform2ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4ivARB", [(GLlocationARB, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix2fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix3fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
+    GlFunction(Void, "glUniformMatrix4fvARB", [(GLlocationARB, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
+    GlFunction(Void, "glGetObjectParameterfvARB", [(GLhandleARB, "obj"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetObjectParameterivARB", [(GLhandleARB, "obj"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetInfoLogARB", [(GLhandleARB, "obj"), (GLsizei, "maxLength"), Out(Pointer(GLsizei), "length"), Out(GLstringARB, "infoLog")], sideeffects=False),
+    GlFunction(Void, "glGetAttachedObjectsARB", [(GLhandleARB, "containerObj"), (GLsizei, "maxCount"), Out(Pointer(GLsizei), "count"), Out(Array(GLhandleARB, "(count ? *count : maxCount)"), "obj")], sideeffects=False),
+    GlFunction(GLlocationARB, "glGetUniformLocationARB", [(GLhandleARB, "programObj"), (Const(GLstringARB), "name")]),
+    GlFunction(Void, "glGetActiveUniformARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstringARB, "name")], sideeffects=False),
+    GlFunction(Void, "glGetUniformfvARB", [(GLhandleARB, "programObj"), (GLlocationARB, "location"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetUniformivARB", [(GLhandleARB, "programObj"), (GLlocationARB, "location"), (OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetShaderSourceARB", [(GLhandleARB, "obj"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstringARB, "source")], sideeffects=False),
+
+    # GL_ARB_vertex_shader
+    GlFunction(Void, "glBindAttribLocationARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (Const(GLstringARB), "name")]),
+    GlFunction(Void, "glGetActiveAttribARB", [(GLhandleARB, "programObj"), (GLuint, "index"), (GLsizei, "maxLength"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLint), "size"), Out(Pointer(GLenum), "type"), Out(GLstringARB, "name")], sideeffects=False),
+    GlFunction(GLint, "glGetAttribLocationARB", [(GLhandleARB, "programObj"), (Const(GLstringARB), "name")]),
+
+    # GL_ARB_draw_buffers
+    GlFunction(Void, "glDrawBuffersARB", [(GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
+
+    # GL_ARB_color_buffer_float
+    GlFunction(Void, "glClampColorARB", [(GLenum, "target"), (GLenum, "clamp")]),
+
+    # GL_ARB_draw_instanced
+    GlFunction(Void, "glDrawArraysInstancedARB", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glDrawElementsInstancedARB", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount")]),
+
+    # GL_ARB_framebuffer_object
+    GlFunction(GLboolean, "glIsRenderbuffer", [(GLrenderbuffer, "renderbuffer")], sideeffects=False),
+    GlFunction(Void, "glBindRenderbuffer", [(GLenum, "target"), (GLrenderbuffer, "renderbuffer")]),
+    GlFunction(Void, "glDeleteRenderbuffers", [(GLsizei, "n"), (Array(Const(GLrenderbuffer), "n"), "renderbuffers")]),
+    GlFunction(Void, "glGenRenderbuffers", [(GLsizei, "n"), Out(Array(GLrenderbuffer, "n"), "renderbuffers")]),
+    GlFunction(Void, "glRenderbufferStorage", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetRenderbufferParameteriv", [(GLenum, "target"), (GLenum, "pname"), (Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(GLboolean, "glIsFramebuffer", [(GLframebuffer, "framebuffer")], sideeffects=False),
+    GlFunction(Void, "glBindFramebuffer", [(GLenum, "target"), (GLframebuffer, "framebuffer")]),
+    GlFunction(Void, "glDeleteFramebuffers", [(GLsizei, "n"), (Array(Const(GLframebuffer), "n"), "framebuffers")]),
+    GlFunction(Void, "glGenFramebuffers", [(GLsizei, "n"), Out(Array(GLframebuffer, "n"), "framebuffers")]),
+    GlFunction(GLenum, "glCheckFramebufferStatus", [(GLenum, "target")]),
+    GlFunction(Void, "glFramebufferTexture1D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glFramebufferTexture2D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glFramebufferTexture3D", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
+    GlFunction(Void, "glFramebufferRenderbuffer", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
+    GlFunction(Void, "glGetFramebufferAttachmentParameteriv", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "pname"), Out(Array(GLint, "__glGetFramebufferAttachmentParameteriv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGenerateMipmap", [(GLenum, "target")]),
+    GlFunction(Void, "glBlitFramebuffer", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
+    GlFunction(Void, "glRenderbufferStorageMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glFramebufferTextureLayer", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
+
+    # GL_ARB_geometry_shader4
+    GlFunction(Void, "glProgramParameteriARB", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
+    GlFunction(Void, "glFramebufferTextureARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glFramebufferTextureLayerARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
+    GlFunction(Void, "glFramebufferTextureFaceARB", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
+
+    # GL_ARB_instanced_arrays
+    GlFunction(Void, "glVertexAttribDivisorARB", [(GLuint, "index"), (GLuint, "divisor")]),
+
+    # GL_ARB_map_buffer_range
+    GlFunction(GLmap, "glMapBufferRange", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "length"), (GLbitfield_access, "access")]),
+    GlFunction(Void, "glFlushMappedBufferRange", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "length")]),
+
+    # GL_ARB_texture_buffer_object
+    GlFunction(Void, "glTexBufferARB", [(GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
+
+    # GL_ARB_vertex_array_object
+    GlFunction(Void, "glBindVertexArray", [(GLarray, "array")]),
+    GlFunction(Void, "glDeleteVertexArrays", [(GLsizei, "n"), (Array(Const(GLarray), "n"), "arrays")]),
+    GlFunction(Void, "glGenVertexArrays", [(GLsizei, "n"), Out(Array(GLarray, "n"), "arrays")]),
+    GlFunction(GLboolean, "glIsVertexArray", [(GLarray, "array")], sideeffects=False),
+
+    # GL_ARB_uniform_buffer_object
+    GlFunction(Void, "glGetUniformIndices", [(GLprogram, "program"), (GLsizei, "uniformCount"), (Array(Const(GLstring), "uniformCount"), "uniformNames"), Out(Array(GLuint, "uniformCount"), "uniformIndices")], sideeffects=False),
+    GlFunction(Void, "glGetActiveUniformsiv", [(GLprogram, "program"), (GLsizei, "uniformCount"), (Array(Const(GLuint), "uniformCount"), "uniformIndices"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveUniformsiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetActiveUniformName", [(GLprogram, "program"), (GLuint, "uniformIndex"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "uniformName")], sideeffects=False),
+    GlFunction(GLuint, "glGetUniformBlockIndex", [(GLprogram, "program"), (Const(GLstring), "uniformBlockName")]),
+    GlFunction(Void, "glGetActiveUniformBlockiv", [(GLprogram, "program"), (GLuint, "uniformBlockIndex"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveUniformBlockiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetActiveUniformBlockName", [(GLprogram, "program"), (GLuint, "uniformBlockIndex"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "uniformBlockName")], sideeffects=False),
+    GlFunction(Void, "glUniformBlockBinding", [(GLprogram, "program"), (GLuint, "uniformBlockIndex"), (GLuint, "uniformBlockBinding")]),
+
+    # GL_ARB_copy_buffer
+    GlFunction(Void, "glCopyBufferSubData", [(GLenum, "readTarget"), (GLenum, "writeTarget"), (GLintptr, "readOffset"), (GLintptr, "writeOffset"), (GLsizeiptr, "size")]),
+
+    # GL_ARB_draw_elements_base_vertex
+    GlFunction(Void, "glDrawElementsBaseVertex", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLint, "basevertex")]),
+    GlFunction(Void, "glDrawRangeElementsBaseVertex", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLint, "basevertex")]),
+    GlFunction(Void, "glDrawElementsInstancedBaseVertex", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount"), (GLint, "basevertex")]),
+    GlFunction(Void, "glMultiDrawElementsBaseVertex", [(GLenum_mode, "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount"), (Array(Const(GLint), "primcount"), "basevertex")]),
+
+    # GL_ARB_provoking_vertex
+    GlFunction(Void, "glProvokingVertex", [(GLenum, "mode")]),
+
+    # GL_ARB_sync
+    GlFunction(GLsync, "glFenceSync", [(GLenum, "condition"), (GLbitfield, "flags")]),
+    GlFunction(GLboolean, "glIsSync", [(GLsync, "sync")], sideeffects=False),
+    GlFunction(Void, "glDeleteSync", [(GLsync, "sync")]),
+    GlFunction(GLenum, "glClientWaitSync", [(GLsync, "sync"), (GLbitfield_sync_flush, "flags"), (GLuint64, "timeout")]),
+    GlFunction(Void, "glWaitSync", [(GLsync, "sync"), (GLbitfield, "flags"), (GLuint64, "timeout")]),
+    GlFunction(Void, "glGetInteger64v", [(GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetInteger64v_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetSynciv", [(GLsync, "sync"), (GLenum, "pname"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLint, "(length ? *length : bufSize)"), "values")], sideeffects=False),
+
+    # GL_ARB_texture_multisample
+    GlFunction(Void, "glTexImage2DMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLint, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedsamplelocations")]),
+    GlFunction(Void, "glTexImage3DMultisample", [(GLenum, "target"), (GLsizei, "samples"), (GLint, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedsamplelocations")]),
+    GlFunction(Void, "glGetMultisamplefv", [(GLenum, "pname"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetMultisamplefv_size(pname)"), "val")], sideeffects=False),
+    GlFunction(Void, "glSampleMaski", [(GLuint, "index"), (GLbitfield, "mask")]),
+
+    # GL_ARB_draw_buffers_blend
+    GlFunction(Void, "glBlendEquationiARB", [(GLuint, "buf"), (GLenum, "mode")]),
+    GlFunction(Void, "glBlendEquationSeparateiARB", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
+    GlFunction(Void, "glBlendFunciARB", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
+    GlFunction(Void, "glBlendFuncSeparateiARB", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
+
+    # GL_ARB_sample_shading
+    GlFunction(Void, "glMinSampleShadingARB", [(GLclampf, "value")]),
+
+    # GL_ARB_shading_language_include
+    GlFunction(Void, "glNamedStringARB", [(GLenum, "type"), (GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLint, "stringlen"), (Const(String('GLchar *', "stringlen")), "string")]),
+    GlFunction(Void, "glDeleteNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name")]),
+    GlFunction(Void, "glCompileShaderIncludeARB", [(GLshader, "shader"), (GLsizei, "count"), (Array(String("const GLchar *"), "count"), "path"), (Array(Const(GLint), "count"), "length")]),
+    GlFunction(GLboolean, "glIsNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name")], sideeffects=False),
+    GlFunction(Void, "glGetNamedStringARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLsizei, "bufSize"), Out(Pointer(GLint), "stringlen"), Out(Array(GLchar, "bufSize"), "string")], sideeffects=False),
+    GlFunction(Void, "glGetNamedStringivARB", [(GLint, "namelen"), (Const(String('GLchar *', "namelen")), "name"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetNamedStringivARB_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_blend_func_extended
+    GlFunction(Void, "glBindFragDataLocationIndexed", [(GLprogram, "program"), (GLuint, "colorNumber"), (GLuint, "index"), (Const(GLstring), "name")]),
+    GlFunction(GLint, "glGetFragDataIndex", [(GLprogram, "program"), (Const(GLstring), "name")], sideeffects=False),
+
+    # GL_ARB_sampler_objects
+    GlFunction(Void, "glGenSamplers", [(GLsizei, "count"), Out(Array(GLsampler, "count"), "samplers")]),
+    GlFunction(Void, "glDeleteSamplers", [(GLsizei, "count"), (Array(Const(GLsampler), "count"), "samplers")]),
+    GlFunction(GLboolean, "glIsSampler", [(GLsampler, "sampler")], sideeffects=False),
+    GlFunction(Void, "glBindSampler", [(GLuint, "unit"), (GLsampler, "sampler")]),
+    GlFunction(Void, "glSamplerParameteri", [(GLsampler, "sampler"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glSamplerParameteriv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "param")]),
+    GlFunction(Void, "glSamplerParameterf", [(GLsampler, "sampler"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glSamplerParameterfv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "param")]),
+    GlFunction(Void, "glSamplerParameterIiv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "param")]),
+    GlFunction(Void, "glSamplerParameterIuiv", [(GLsampler, "sampler"), (GLenum, "pname"), (Array(Const(GLuint), "__gl_param_size(pname)"), "param")]),
+    GlFunction(Void, "glGetSamplerParameteriv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetSamplerParameterIiv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetSamplerParameterfv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetSamplerParameterIuiv", [(GLsampler, "sampler"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_timer_query
+    GlFunction(Void, "glQueryCounter", [(GLuint, "id"), (GLenum, "target")]),
+    GlFunction(Void, "glGetQueryObjecti64v", [(GLuint, "id"), (GLenum, "pname"), Out(OpaqueArray(GLint64, "__glGetQueryObjectivARB_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetQueryObjectui64v", [(GLuint, "id"), (GLenum, "pname"), Out(OpaqueArray(GLuint64, "__glGetQueryObjectuivARB_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_vertex_type_2_10_10_10_rev
+    GlFunction(Void, "glVertexP2ui", [(GLenum, "type"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexP2uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "value")]),
+    GlFunction(Void, "glVertexP3ui", [(GLenum, "type"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "value")]),
+    GlFunction(Void, "glVertexP4ui", [(GLenum, "type"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexP4uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "value")]),
+    GlFunction(Void, "glTexCoordP1ui", [(GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glTexCoordP1uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glTexCoordP2ui", [(GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glTexCoordP2uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glTexCoordP3ui", [(GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glTexCoordP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glTexCoordP4ui", [(GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glTexCoordP4uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glMultiTexCoordP1ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glMultiTexCoordP1uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glMultiTexCoordP2ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glMultiTexCoordP2uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glMultiTexCoordP3ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glMultiTexCoordP3uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glMultiTexCoordP4ui", [(GLenum, "texture"), (GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glMultiTexCoordP4uiv", [(GLenum, "texture"), (GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glNormalP3ui", [(GLenum, "type"), (GLuint, "coords")]),
+    GlFunction(Void, "glNormalP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "coords")]),
+    GlFunction(Void, "glColorP3ui", [(GLenum, "type"), (GLuint, "color")]),
+    GlFunction(Void, "glColorP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "color")]),
+    GlFunction(Void, "glColorP4ui", [(GLenum, "type"), (GLuint, "color")]),
+    GlFunction(Void, "glColorP4uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "color")]),
+    GlFunction(Void, "glSecondaryColorP3ui", [(GLenum, "type"), (GLuint, "color")]),
+    GlFunction(Void, "glSecondaryColorP3uiv", [(GLenum, "type"), (Pointer(Const(GLuint)), "color")]),
+    GlFunction(Void, "glVertexAttribP1ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexAttribP1uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
+    GlFunction(Void, "glVertexAttribP2ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexAttribP2uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
+    GlFunction(Void, "glVertexAttribP3ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexAttribP3uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
+    GlFunction(Void, "glVertexAttribP4ui", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (GLuint, "value")]),
+    GlFunction(Void, "glVertexAttribP4uiv", [(GLuint, "index"), (GLenum, "type"), (GLboolean, "normalized"), (Pointer(Const(GLuint)), "value")]),
+
+    # GL_ARB_draw_indirect
+    GlFunction(Void, "glDrawArraysIndirect", [(GLenum_mode, "mode"), (OpaquePointer(Const(GLvoid)), "indirect")]),
+    GlFunction(Void, "glDrawElementsIndirect", [(GLenum_mode, "mode"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indirect")]),
+
+    # GL_ARB_gpu_shader_fp64
+    GlFunction(Void, "glUniform1d", [(GLlocation, "location"), (GLdouble, "x")]),
+    GlFunction(Void, "glUniform2d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glUniform3d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glUniform4d", [(GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glUniform1dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "value")]),
+    GlFunction(Void, "glUniform2dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4dv", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*3"), "value")]),
+    GlFunction(Void, "glUniformMatrix4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix2x3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*3"), "value")]),
+    GlFunction(Void, "glUniformMatrix2x4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix3x2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix3x4dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*4"), "value")]),
+    GlFunction(Void, "glUniformMatrix4x2dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*2"), "value")]),
+    GlFunction(Void, "glUniformMatrix4x3dv", [(GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*3"), "value")]),
+    GlFunction(Void, "glGetUniformdv", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLdouble, "__glGetUniformdv_size(location)"), "params")], sideeffects=False),
+
+    # GL_ARB_shader_subroutine
+    GlFunction(GLlocation, "glGetSubroutineUniformLocation", [(GLprogram, "program"), (GLenum, "shadertype"), (Const(GLstring), "name")]),
+    GlFunction(GLuint, "glGetSubroutineIndex", [(GLprogram, "program"), (GLenum, "shadertype"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glGetActiveSubroutineUniformiv", [(GLprogram, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveSubroutineUniformiv_size(pname)"), "values")], sideeffects=False),
+    GlFunction(Void, "glGetActiveSubroutineUniformName", [(GLprogram, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLsizei, "bufsize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufsize"), "name")], sideeffects=False),
+    GlFunction(Void, "glGetActiveSubroutineName", [(GLprogram, "program"), (GLenum, "shadertype"), (GLuint, "index"), (GLsizei, "bufsize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufsize"), "name")], sideeffects=False),
+    GlFunction(Void, "glUniformSubroutinesuiv", [(GLenum, "shadertype"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "indices")]),
+    GlFunction(Void, "glGetUniformSubroutineuiv", [(GLenum, "shadertype"), (GLlocation, "location"), Out(Pointer(GLuint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramStageiv", [(GLprogram, "program"), (GLenum, "shadertype"), (GLenum, "pname"), Out(Pointer(GLint), "values")], sideeffects=False),
+
+    # GL_ARB_tessellation_shader
+    GlFunction(Void, "glPatchParameteri", [(GLenum, "pname"), (GLint, "value")]),
+    GlFunction(Void, "glPatchParameterfv", [(GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "values")]),
+
+    # GL_ARB_transform_feedback2
+    GlFunction(Void, "glBindTransformFeedback", [(GLenum, "target"), (GLfeedback, "id")]),
+    GlFunction(Void, "glDeleteTransformFeedbacks", [(GLsizei, "n"), (Array(Const(GLfeedback), "n"), "ids")]),
+    GlFunction(Void, "glGenTransformFeedbacks", [(GLsizei, "n"), Out(Array(GLfeedback, "n"), "ids")]),
+    GlFunction(GLboolean, "glIsTransformFeedback", [(GLfeedback, "id")], sideeffects=False),
+    GlFunction(Void, "glPauseTransformFeedback", []),
+    GlFunction(Void, "glResumeTransformFeedback", []),
+    GlFunction(Void, "glDrawTransformFeedback", [(GLenum_mode, "mode"), (GLfeedback, "id")]),
+
+    # GL_ARB_transform_feedback3
+    GlFunction(Void, "glDrawTransformFeedbackStream", [(GLenum_mode, "mode"), (GLfeedback, "id"), (GLuint, "stream")]),
+    GlFunction(Void, "glBeginQueryIndexed", [(GLenum, "target"), (GLuint, "index"), (GLfeedback, "id")]),
+    GlFunction(Void, "glEndQueryIndexed", [(GLenum, "target"), (GLuint, "index")]),
+    GlFunction(Void, "glGetQueryIndexediv", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetQueryIndexediv_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_ES2_compatibility
+    GlFunction(Void, "glReleaseShaderCompiler", []),
+    GlFunction(Void, "glShaderBinary", [(GLsizei, "count"), (Array(Const(GLuint), "count"), "shaders"), (GLenum, "binaryformat"), (Blob(Const(GLvoid), "length"), "binary"), (GLsizei, "length")]),
+    GlFunction(Void, "glGetShaderPrecisionFormat", [(GLenum, "shadertype"), (GLenum, "precisiontype"), Out(Array(GLint, "2"), "range"), Out(Array(GLint, "2"), "precision")], sideeffects=False),
+    GlFunction(Void, "glDepthRangef", [(GLclampf, "n"), (GLclampf, "f")]),
+    GlFunction(Void, "glClearDepthf", [(GLclampf, "d")]),
+
+    # GL_ARB_get_program_binary
+    GlFunction(Void, "glGetProgramBinary", [(GLprogram, "program"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLenum), "binaryFormat"), Out(OpaqueArray(GLvoid, "__glGetProgramBinary_size(length)"), "binary")], sideeffects=False),
+    GlFunction(Void, "glProgramBinary", [(GLprogram, "program"), (GLenum, "binaryFormat"), (Blob(Const(GLvoid), "length"), "binary"), (GLsizei, "length")]),
+    GlFunction(Void, "glProgramParameteri", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
+
+    # GL_ARB_separate_shader_objects
+    GlFunction(Void, "glUseProgramStages", [(GLpipeline, "pipeline"), (GLbitfield_shader, "stages"), (GLprogram, "program")]),
+    GlFunction(Void, "glActiveShaderProgram", [(GLpipeline, "pipeline"), (GLprogram, "program")]),
+    GlFunction(GLprogram, "glCreateShaderProgramv", [(GLenum, "type"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "strings")]),
+    GlFunction(Void, "glBindProgramPipeline", [(GLpipeline, "pipeline")]),
+    GlFunction(Void, "glDeleteProgramPipelines", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "pipelines")]),
+    GlFunction(Void, "glGenProgramPipelines", [(GLsizei, "n"), Out(Array(GLpipeline, "n"), "pipelines")]),
+    GlFunction(GLboolean, "glIsProgramPipeline", [(GLpipeline, "pipeline")], sideeffects=False),
+    GlFunction(Void, "glGetProgramPipelineiv", [(GLpipeline, "pipeline"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetProgramPipelineiv_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glProgramUniform1i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0")]),
+    GlFunction(Void, "glProgramUniform1iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform1f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0")]),
+    GlFunction(Void, "glProgramUniform1fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform1d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0")]),
+    GlFunction(Void, "glProgramUniform1dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform1ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0")]),
+    GlFunction(Void, "glProgramUniform1uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
+    GlFunction(Void, "glProgramUniform2iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform2f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
+    GlFunction(Void, "glProgramUniform2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform2d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0"), (GLdouble, "v1")]),
+    GlFunction(Void, "glProgramUniform2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform2ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
+    GlFunction(Void, "glProgramUniform2uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
+    GlFunction(Void, "glProgramUniform3iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform3f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
+    GlFunction(Void, "glProgramUniform3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform3d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0"), (GLdouble, "v1"), (GLdouble, "v2")]),
+    GlFunction(Void, "glProgramUniform3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform3ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
+    GlFunction(Void, "glProgramUniform3uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4i", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
+    GlFunction(Void, "glProgramUniform4iv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniform4f", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
+    GlFunction(Void, "glProgramUniform4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniform4d", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "v0"), (GLdouble, "v1"), (GLdouble, "v2"), (GLdouble, "v3")]),
+    GlFunction(Void, "glProgramUniform4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniform4ui", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
+    GlFunction(Void, "glProgramUniform4uiv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x2fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x4fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x3fv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x2dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x4dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x3dv", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*3"), "value")]),
+    GlFunction(Void, "glValidateProgramPipeline", [(GLpipeline, "pipeline")]),
+    GlFunction(Void, "glGetProgramPipelineInfoLog", [(GLpipeline, "pipeline"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
+
+    # GL_ARB_vertex_attrib_64bit
+    GlFunction(Void, "glVertexAttribL1d", [(GLuint, "index"), (GLdouble, "x")]),
+    GlFunction(Void, "glVertexAttribL2d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertexAttribL3d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertexAttribL4d", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertexAttribL1dv", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glVertexAttribL2dv", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribL3dv", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribL4dv", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribLPointer", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glGetVertexAttribLdv", [(GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVertexAttribLdv_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_viewport_array
+    GlFunction(Void, "glViewportArrayv", [(GLuint, "first"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "v")]),
+    GlFunction(Void, "glViewportIndexedf", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "w"), (GLfloat, "h")]),
+    GlFunction(Void, "glViewportIndexedfv", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glScissorArrayv", [(GLuint, "first"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "v")]),
+    GlFunction(Void, "glScissorIndexed", [(GLuint, "index"), (GLint, "left"), (GLint, "bottom"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glScissorIndexedv", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glDepthRangeArrayv", [(GLuint, "first"), (GLsizei, "count"), (Array(Const(GLclampd), "count*2"), "v")]),
+    GlFunction(Void, "glDepthRangeIndexed", [(GLuint, "index"), (GLclampd, "n"), (GLclampd, "f")]),
+    GlFunction(Void, "glGetFloati_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "__gl_param_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetDoublei_v", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "__gl_param_size(target)"), "data")], sideeffects=False),
+
+    # GL_ARB_debug_output
+    GlFunction(Void, "glDebugMessageControlARB", [(GLenum, "source"), (GLenum, "type"), (GLenum, "severity"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "ids"), (GLboolean, "enabled")], sideeffects=False),
+    GlFunction(Void, "glDebugMessageInsertARB", [(GLenum, "source"), (GLenum, "type"), (GLuint, "id"), (GLenum, "severity"), (GLsizei, "length"), (Const(String("GLchar *", "length")), "buf")], sideeffects=False),
+    GlFunction(Void, "glDebugMessageCallbackARB", [(GLDEBUGPROCARB, "callback"), (Opaque("const GLvoid *"), "userParam")], sideeffects=False),
+    GlFunction(GLuint, "glGetDebugMessageLogARB", [(GLuint, "count"), (GLsizei, "bufsize"), Out(Array(GLenum, "count"), "sources"), Out(Array(GLenum, "count"), "types"), Out(Array(GLuint, "count"), "ids"), Out(Array(GLenum, "count"), "severities"), Out(Array(GLsizei, "count"), "lengths"), Out(GLstring, "messageLog")], sideeffects=False),
+
+    # GL_ARB_robustness
+    GlFunction(GLenum, "glGetGraphicsResetStatusARB", [], sideeffects=False),
+    GlFunction(Void, "glGetnMapdvARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLdouble, "bufSize"), "v")], sideeffects=False),
+    GlFunction(Void, "glGetnMapfvARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "v")], sideeffects=False),
+    GlFunction(Void, "glGetnMapivARB", [(GLenum, "target"), (GLenum, "query"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "v")], sideeffects=False),
+    GlFunction(Void, "glGetnPixelMapfvARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "values")]),
+    GlFunction(Void, "glGetnPixelMapuivARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLuint, "bufSize"), "values")]),
+    GlFunction(Void, "glGetnPixelMapusvARB", [(GLenum, "map"), (GLsizei, "bufSize"), Out(Array(GLushort, "bufSize"), "values")]),
+    GlFunction(Void, "glGetnPolygonStippleARB", [(GLsizei, "bufSize"), Out(Blob(GLubyte, "bufSize"), "pattern")]),
+    GlFunction(Void, "glGetnColorTableARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "table")], sideeffects=False),
+    GlFunction(Void, "glGetnConvolutionFilterARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "image")]),
+    GlFunction(Void, "glGetnSeparableFilterARB", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "rowBufSize"), Out(Blob(GLvoid, "rowBufSize"), "row"), (GLsizei, "columnBufSize"), Out(Blob(GLvoid, "columnBufSize"), "column"), Out(OpaquePointer(GLvoid), "span")]),
+    GlFunction(Void, "glGetnHistogramARB", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "values")]),
+    GlFunction(Void, "glGetnMinmaxARB", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "values")]),
+    GlFunction(Void, "glGetnTexImageARB", [(GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "img")]),
+    GlFunction(Void, "glReadnPixelsARB", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "data")]),
+    GlFunction(Void, "glGetnCompressedTexImageARB", [(GLenum, "target"), (GLint, "lod"), (GLsizei, "bufSize"), Out(Blob(GLvoid, "bufSize"), "img")], sideeffects=False),
+    GlFunction(Void, "glGetnUniformfvARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLfloat, "bufSize"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetnUniformivARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetnUniformuivARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLuint, "bufSize"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetnUniformdvARB", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "bufSize"), Out(Array(GLdouble, "bufSize"), "params")], sideeffects=False),
+
+    # GL_ARB_base_instance
+    GlFunction(Void, "glDrawArraysInstancedBaseInstance", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "primcount"), (GLuint, "baseinstance")]),
+    GlFunction(Void, "glDrawElementsInstancedBaseInstance", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount"), (GLuint, "baseinstance")]),
+    GlFunction(Void, "glDrawElementsInstancedBaseVertexBaseInstance", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount"), (GLint, "basevertex"), (GLuint, "baseinstance")]),
+
+    # GL_ARB_transform_feedback_instanced
+    GlFunction(Void, "glDrawTransformFeedbackInstanced", [(GLenum_mode, "mode"), (GLfeedback, "id"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glDrawTransformFeedbackStreamInstanced", [(GLenum_mode, "mode"), (GLfeedback, "id"), (GLuint, "stream"), (GLsizei, "primcount")]),
+
+    # GL_ARB_internalformat_query
+    GlFunction(Void, "glGetInternalformativ", [(GLenum, "target"), (GLenum, "internalformat"), (GLenum, "pname"), (GLsizei, "bufSize"), Out(Array(GLint, "bufSize"), "params")], sideeffects=False),
+
+    # GL_ARB_shader_atomic_counters
+    GlFunction(Void, "glGetActiveAtomicCounterBufferiv", [(GLprogram, "program"), (GLuint, "bufferIndex"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetActiveAtomicCounterBufferiv_size(pname)"), "params")], sideeffects=False),
+
+    # GL_ARB_shader_image_load_store
+    GlFunction(Void, "glBindImageTexture", [(GLuint, "unit"), (GLtexture, "texture"), (GLint, "level"), (GLboolean, "layered"), (GLint, "layer"), (GLenum, "access"), (GLenum, "format")]),
+    GlFunction(Void, "glMemoryBarrier", [(GLbitfield_barrier, "barriers")]),
+
+    # GL_ARB_texture_storage
+    GlFunction(Void, "glTexStorage1D", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width")]),
+    GlFunction(Void, "glTexStorage2D", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glTexStorage3D", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
+    GlFunction(Void, "glTextureStorage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width")]),
+    GlFunction(Void, "glTextureStorage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glTextureStorage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
+
+    # GL_EXT_blend_color
+    GlFunction(Void, "glBlendColorEXT", [(GLclampf, "red"), (GLclampf, "green"), (GLclampf, "blue"), (GLclampf, "alpha")]),
+
+    # GL_EXT_polygon_offset
+    GlFunction(Void, "glPolygonOffsetEXT", [(GLfloat, "factor"), (GLfloat, "bias")]),
+
+    # GL_EXT_texture3D
+    GlFunction(Void, "glTexImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexImage3D_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glTexSubImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage3D_size(format, type, width, height, depth)"), "pixels")]),
+
+    # GL_SGIS_texture_filter4
+    GlFunction(Void, "glGetTexFilterFuncSGIS", [(GLenum, "target"), (GLenum, "filter"), Out(OpaqueArray(GLfloat, "__glGetTexFilterFuncSGIS_size(target, filter)"), "weights")], sideeffects=False),
+    GlFunction(Void, "glTexFilterFuncSGIS", [(GLenum, "target"), (GLenum, "filter"), (GLsizei, "n"), (Array(Const(GLfloat), "n"), "weights")]),
+
+    # GL_EXT_subtexture
+    GlFunction(Void, "glTexSubImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage1D_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glTexSubImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTexSubImage2D_size(format, type, width, height)"), "pixels")]),
+
+    # GL_EXT_copy_texture
+    GlFunction(Void, "glCopyTexImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
+    GlFunction(Void, "glCopyTexImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
+    GlFunction(Void, "glCopyTexSubImage1DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glCopyTexSubImage2DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glCopyTexSubImage3DEXT", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+
+    # GL_EXT_histogram
+    GlFunction(Void, "glGetHistogramEXT", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetHistogramEXT_size(target, format, type)"), "values")], sideeffects=False),
+    GlFunction(Void, "glGetHistogramParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetHistogramParameterfvEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetHistogramParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetHistogramParameterivEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMinmaxEXT", [(GLenum, "target"), (GLboolean, "reset"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMinmaxEXT_size(target, format, type)"), "values")], sideeffects=False),
+    GlFunction(Void, "glGetMinmaxParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMinmaxParameterfvEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMinmaxParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMinmaxParameterivEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glHistogramEXT", [(GLenum, "target"), (GLsizei, "width"), (GLenum, "internalformat"), (GLboolean, "sink")]),
+    GlFunction(Void, "glMinmaxEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLboolean, "sink")]),
+    GlFunction(Void, "glResetHistogramEXT", [(GLenum, "target")]),
+    GlFunction(Void, "glResetMinmaxEXT", [(GLenum, "target")]),
+
+    # GL_EXT_convolution
+    GlFunction(Void, "glConvolutionFilter1DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glConvolutionFilter1DEXT_size(format, type, width)"), "image")]),
+    GlFunction(Void, "glConvolutionFilter2DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glConvolutionFilter2DEXT_size(format, type, width, height)"), "image")]),
+    GlFunction(Void, "glConvolutionParameterfEXT", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "params")]),
+    GlFunction(Void, "glConvolutionParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glConvolutionParameterfvEXT_size(pname)"), "params")]),
+    GlFunction(Void, "glConvolutionParameteriEXT", [(GLenum, "target"), (GLenum, "pname"), (GLint, "params")]),
+    GlFunction(Void, "glConvolutionParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glConvolutionParameterivEXT_size(pname)"), "params")]),
+    GlFunction(Void, "glCopyConvolutionFilter1DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glCopyConvolutionFilter2DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetConvolutionFilterEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetConvolutionFilterEXT_size(target, format, type)"), "image")], sideeffects=False),
+    GlFunction(Void, "glGetConvolutionParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetConvolutionParameterfvEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetConvolutionParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetConvolutionParameterivEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetSeparableFilterEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilterEXT_size(target, format, type)"), "row"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilterEXT_size(target, format, type)"), "column"), Out(OpaqueBlob(GLvoid, "__glGetSeparableFilterEXT_size(target, format, type)"), "span")], sideeffects=False),
+    GlFunction(Void, "glSeparableFilter2DEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glSeparableFilter2DEXT_size(target, format, type, width)"), "row"), (OpaqueBlob(Const(GLvoid), "__glSeparableFilter2DEXT_size(target, format, type, height)"), "column")]),
+
+    # GL_SGI_color_table
+    GlFunction(Void, "glColorTableSGI", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glColorTableSGI_size(format, type, width)"), "table")]),
+    GlFunction(Void, "glColorTableParameterfvSGI", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glColorTableParameterfvSGI_size(pname)"), "params")]),
+    GlFunction(Void, "glColorTableParameterivSGI", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glColorTableParameterivSGI_size(pname)"), "params")]),
+    GlFunction(Void, "glCopyColorTableSGI", [(GLenum, "target"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glGetColorTableSGI", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTableSGI_size(target, format, type)"), "table")], sideeffects=False),
+    GlFunction(Void, "glGetColorTableParameterfvSGI", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetColorTableParameterfvSGI_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetColorTableParameterivSGI", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetColorTableParameterivSGI_size(pname)"), "params")], sideeffects=False),
+
+    # GL_SGIX_pixel_texture
+    GlFunction(Void, "glPixelTexGenSGIX", [(GLenum, "mode")]),
+
+    # GL_SGIS_pixel_texture
+    GlFunction(Void, "glPixelTexGenParameteriSGIS", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glPixelTexGenParameterivSGIS", [(GLenum, "pname"), (OpaqueArray(Const(GLint), "__glPixelTexGenParameterivSGIS_size(pname)"), "params")]),
+    GlFunction(Void, "glPixelTexGenParameterfSGIS", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPixelTexGenParameterfvSGIS", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glPixelTexGenParameterfvSGIS_size(pname)"), "params")]),
+    GlFunction(Void, "glGetPixelTexGenParameterivSGIS", [(GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetPixelTexGenParameterivSGIS_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetPixelTexGenParameterfvSGIS", [(GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetPixelTexGenParameterfvSGIS_size(pname)"), "params")], sideeffects=False),
+
+    # GL_SGIS_texture4D
+    GlFunction(Void, "glTexImage4DSGIS", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLsizei, "size4d"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glTexImage4DSGIS_size(format, type, width, height, depth, size4d)"), "pixels")]),
+    GlFunction(Void, "glTexSubImage4DSGIS", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "woffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLsizei, "size4d"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glTexSubImage4DSGIS_size(format, type, width, height, depth, size4d)"), "pixels")]),
+
+    # GL_EXT_texture_object
+    GlFunction(GLboolean, "glAreTexturesResidentEXT", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), Out(Array(GLboolean, "n"), "residences")]),
+    GlFunction(Void, "glBindTextureEXT", [(GLenum, "target"), (GLtexture, "texture")]),
+    GlFunction(Void, "glDeleteTexturesEXT", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures")]),
+    GlFunction(Void, "glGenTexturesEXT", [(GLsizei, "n"), Out(Array(GLtexture, "n"), "textures")]),
+    GlFunction(GLboolean, "glIsTextureEXT", [(GLtexture, "texture")], sideeffects=False),
+    GlFunction(Void, "glPrioritizeTexturesEXT", [(GLsizei, "n"), (Array(Const(GLtexture), "n"), "textures"), (Array(Const(GLclampf), "n"), "priorities")]),
+
+    # GL_SGIS_detail_texture
+    GlFunction(Void, "glDetailTexFuncSGIS", [(GLenum, "target"), (GLsizei, "n"), (Array(Const(GLfloat), "n*2"), "points")]),
+    GlFunction(Void, "glGetDetailTexFuncSGIS", [(GLenum, "target"), Out(OpaqueArray(GLfloat, "__glGetDetailTexFuncSGIS_size(target)"), "points")], sideeffects=False),
+
+    # GL_SGIS_sharpen_texture
+    GlFunction(Void, "glSharpenTexFuncSGIS", [(GLenum, "target"), (GLsizei, "n"), (Array(Const(GLfloat), "n*2"), "points")]),
+    GlFunction(Void, "glGetSharpenTexFuncSGIS", [(GLenum, "target"), Out(OpaqueArray(GLfloat, "__glGetSharpenTexFuncSGIS_size(target)"), "points")], sideeffects=False),
+
+    # GL_SGIS_multisample
+    GlFunction(Void, "glSampleMaskSGIS", [(GLclampf, "value"), (GLboolean, "invert")]),
+    GlFunction(Void, "glSamplePatternSGIS", [(GLenum, "pattern")]),
+
+    # GL_EXT_vertex_array
+    GlFunction(Void, "glArrayElementEXT", [(GLint, "i")]),
+    GlFunction(Void, "glColorPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glDrawArraysEXT", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
+    GlFunction(Void, "glEdgeFlagPointerEXT", [(GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLboolean)), "pointer")]),
+    GlFunction(Void, "glGetPointervEXT", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
+    GlFunction(Void, "glIndexPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glNormalPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glTexCoordPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glVertexPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLsizei, "count"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_EXT_blend_minmax
+    GlFunction(Void, "glBlendEquationEXT", [(GLenum, "mode")]),
+
+    # GL_SGIX_sprite
+    GlFunction(Void, "glSpriteParameterfSGIX", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glSpriteParameterfvSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glSpriteParameterfvSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glSpriteParameteriSGIX", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glSpriteParameterivSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLint), "__glSpriteParameterivSGIX_size(pname)"), "params")]),
+
+    # GL_EXT_point_parameters
+    GlFunction(Void, "glPointParameterfEXT", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPointParameterfvEXT", [(GLenum, "pname"), (Array(Const(GLfloat), "__glPointParameterfv_size(pname)"), "params")]),
+
+    # GL_SGIS_point_parameters
+    GlFunction(Void, "glPointParameterfSGIS", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPointParameterfvSGIS", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glPointParameterfvSGIS_size(pname)"), "params")]),
+
+    # GL_SGIX_instruments
+    GlFunction(GLint, "glGetInstrumentsSGIX", [], sideeffects=False),
+    GlFunction(Void, "glInstrumentsBufferSGIX", [(GLsizei, "size"), Out(OpaquePointer(GLint), "buffer")]),
+    GlFunction(GLint, "glPollInstrumentsSGIX", [Out(Pointer(GLint), "marker_p")]),
+    GlFunction(Void, "glReadInstrumentsSGIX", [(GLint, "marker")]),
+    GlFunction(Void, "glStartInstrumentsSGIX", []),
+    GlFunction(Void, "glStopInstrumentsSGIX", [(GLint, "marker")]),
+
+    # GL_SGIX_framezoom
+    GlFunction(Void, "glFrameZoomSGIX", [(GLint, "factor")]),
+
+    # GL_SGIX_tag_sample_buffer
+    GlFunction(Void, "glTagSampleBufferSGIX", []),
+
+    # GL_SGIX_polynomial_ffd
+    GlFunction(Void, "glDeformationMap3dSGIX", [(GLenum, "target"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (GLdouble, "w1"), (GLdouble, "w2"), (GLint, "wstride"), (GLint, "worder"), (OpaqueArray(Const(GLdouble), "__glDeformationMap3dSGIX_size(target, ustride, uorder, vstride, vorder, wstride, worder)"), "points")]),
+    GlFunction(Void, "glDeformationMap3fSGIX", [(GLenum, "target"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (GLfloat, "w1"), (GLfloat, "w2"), (GLint, "wstride"), (GLint, "worder"), (OpaqueArray(Const(GLfloat), "__glDeformationMap3fSGIX_size(target, ustride, uorder, vstride, vorder, wstride, worder)"), "points")]),
+    GlFunction(Void, "glDeformSGIX", [(GLbitfield, "mask")]),
+    GlFunction(Void, "glLoadIdentityDeformationMapSGIX", [(GLbitfield, "mask")]),
+
+    # GL_SGIX_reference_plane
+    GlFunction(Void, "glReferencePlaneSGIX", [(Array(Const(GLdouble), "4"), "equation")]),
+
+    # GL_SGIX_flush_raster
+    GlFunction(Void, "glFlushRasterSGIX", []),
+
+    # GL_SGIS_fog_function
+    GlFunction(Void, "glFogFuncSGIS", [(GLsizei, "n"), (Array(Const(GLfloat), "n*2"), "points")]),
+    GlFunction(Void, "glGetFogFuncSGIS", [Out(OpaqueArray(GLfloat, "__glGetFogFuncSGIS_size()"), "points")], sideeffects=False),
+
+    # GL_HP_image_transform
+    GlFunction(Void, "glImageTransformParameteriHP", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glImageTransformParameterfHP", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glImageTransformParameterivHP", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glImageTransformParameterivHP_size(pname)"), "params")]),
+    GlFunction(Void, "glImageTransformParameterfvHP", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glImageTransformParameterfvHP_size(pname)"), "params")]),
+    GlFunction(Void, "glGetImageTransformParameterivHP", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetImageTransformParameterivHP_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetImageTransformParameterfvHP", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetImageTransformParameterfvHP_size(pname)"), "params")], sideeffects=False),
+
+    # GL_EXT_color_subtable
+    GlFunction(Void, "glColorSubTableEXT", [(GLenum, "target"), (GLsizei, "start"), (GLsizei, "count"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glColorSubTable_size(format, type, count)"), "data")]),
+    GlFunction(Void, "glCopyColorSubTableEXT", [(GLenum, "target"), (GLsizei, "start"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+
+    # GL_PGI_misc_hints
+    GlFunction(Void, "glHintPGI", [(GLenum, "target"), (GLint, "mode")]),
+
+    # GL_EXT_paletted_texture
+    GlFunction(Void, "glColorTableEXT", [(GLenum, "target"), (GLenum, "internalFormat"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glColorTableEXT_size(format, type, width)"), "table")]),
+    GlFunction(Void, "glGetColorTableEXT", [(GLenum, "target"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetColorTableEXT_size(target, format, type)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetColorTableParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetColorTableParameterivEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetColorTableParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetColorTableParameterfvEXT_size(pname)"), "params")], sideeffects=False),
+
+    # GL_SGIX_list_priority
+    GlFunction(Void, "glGetListParameterfvSGIX", [(GLuint, "list"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetListParameterfvSGIX_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetListParameterivSGIX", [(GLuint, "list"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetListParameterivSGIX_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glListParameterfSGIX", [(GLuint, "list"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glListParameterfvSGIX", [(GLuint, "list"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glListParameterfvSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glListParameteriSGIX", [(GLuint, "list"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glListParameterivSGIX", [(GLuint, "list"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glListParameterivSGIX_size(pname)"), "params")]),
+
+    # GL_EXT_index_material
+    GlFunction(Void, "glIndexMaterialEXT", [(GLenum, "face"), (GLenum, "mode")]),
+
+    # GL_EXT_index_func
+    GlFunction(Void, "glIndexFuncEXT", [(GLenum, "func"), (GLclampf, "ref")]),
+
+    # GL_EXT_compiled_vertex_array
+    GlFunction(Void, "glLockArraysEXT", [(GLint, "first"), (GLsizei, "count")]),
+    GlFunction(Void, "glUnlockArraysEXT", []),
+
+    # GL_EXT_cull_vertex
+    GlFunction(Void, "glCullParameterdvEXT", [(GLenum, "pname"), Out(Array(GLdouble, "4"), "params")]),
+    GlFunction(Void, "glCullParameterfvEXT", [(GLenum, "pname"), Out(Array(GLfloat, "4"), "params")]),
+
+    # GL_SGIX_fragment_lighting
+    GlFunction(Void, "glFragmentColorMaterialSGIX", [(GLenum, "face"), (GLenum, "mode")]),
+    GlFunction(Void, "glFragmentLightfSGIX", [(GLenum, "light"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glFragmentLightfvSGIX", [(GLenum, "light"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glFragmentLightfvSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glFragmentLightiSGIX", [(GLenum, "light"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glFragmentLightivSGIX", [(GLenum, "light"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glFragmentLightivSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glFragmentLightModelfSGIX", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glFragmentLightModelfvSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glFragmentLightModelfvSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glFragmentLightModeliSGIX", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glFragmentLightModelivSGIX", [(GLenum, "pname"), (OpaqueArray(Const(GLint), "__glFragmentLightModelivSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glFragmentMaterialfSGIX", [(GLenum, "face"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glFragmentMaterialfvSGIX", [(GLenum, "face"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glFragmentMaterialfvSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glFragmentMaterialiSGIX", [(GLenum, "face"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glFragmentMaterialivSGIX", [(GLenum, "face"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glFragmentMaterialivSGIX_size(pname)"), "params")]),
+    GlFunction(Void, "glGetFragmentLightfvSGIX", [(GLenum, "light"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetFragmentLightfvSGIX_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetFragmentLightivSGIX", [(GLenum, "light"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFragmentLightivSGIX_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetFragmentMaterialfvSGIX", [(GLenum, "face"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetFragmentMaterialfvSGIX_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetFragmentMaterialivSGIX", [(GLenum, "face"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFragmentMaterialivSGIX_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glLightEnviSGIX", [(GLenum, "pname"), (GLint, "param")]),
+
+    # GL_EXT_draw_range_elements
+    GlFunction(Void, "glDrawRangeElementsEXT", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices")]),
+
+    # GL_EXT_light_texture
+    GlFunction(Void, "glApplyTextureEXT", [(GLenum, "mode")]),
+    GlFunction(Void, "glTextureLightEXT", [(GLenum, "pname")]),
+    GlFunction(Void, "glTextureMaterialEXT", [(GLenum, "face"), (GLenum, "mode")]),
+
+    # GL_SGIX_async
+    GlFunction(Void, "glAsyncMarkerSGIX", [(GLuint, "marker")]),
+    GlFunction(GLint, "glFinishAsyncSGIX", [Out(Pointer(GLuint), "markerp")]),
+    GlFunction(GLint, "glPollAsyncSGIX", [Out(Pointer(GLuint), "markerp")]),
+    GlFunction(GLuint, "glGenAsyncMarkersSGIX", [(GLsizei, "range")]),
+    GlFunction(Void, "glDeleteAsyncMarkersSGIX", [(GLuint, "marker"), (GLsizei, "range")]),
+    GlFunction(GLboolean, "glIsAsyncMarkerSGIX", [(GLuint, "marker")], sideeffects=False),
+
+    # GL_INTEL_parallel_arrays
+    GlFunction(Void, "glVertexPointervINTEL", [(GLint, "size"), (GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
+    GlFunction(Void, "glNormalPointervINTEL", [(GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
+    GlFunction(Void, "glColorPointervINTEL", [(GLint, "size"), (GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
+    GlFunction(Void, "glTexCoordPointervINTEL", [(GLint, "size"), (GLenum, "type"), (OpaqueArray(Opaque("const GLvoid *"), "size"), "pointer")]),
+
+    # GL_EXT_pixel_transform
+    GlFunction(Void, "glPixelTransformParameteriEXT", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glPixelTransformParameterfEXT", [(GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glPixelTransformParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (Pointer(Const(GLint)), "params")]),
+    GlFunction(Void, "glPixelTransformParameterfvEXT", [(GLenum, "target"), (GLenum, "pname"), (Pointer(Const(GLfloat)), "params")]),
+
+    # GL_EXT_secondary_color
+    GlFunction(Void, "glSecondaryColor3bEXT", [(GLbyte, "red"), (GLbyte, "green"), (GLbyte, "blue")]),
+    GlFunction(Void, "glSecondaryColor3bvEXT", [(Array(Const(GLbyte), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3dEXT", [(GLdouble, "red"), (GLdouble, "green"), (GLdouble, "blue")]),
+    GlFunction(Void, "glSecondaryColor3dvEXT", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3fEXT", [(GLfloat, "red"), (GLfloat, "green"), (GLfloat, "blue")]),
+    GlFunction(Void, "glSecondaryColor3fvEXT", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3iEXT", [(GLint, "red"), (GLint, "green"), (GLint, "blue")]),
+    GlFunction(Void, "glSecondaryColor3ivEXT", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3sEXT", [(GLshort, "red"), (GLshort, "green"), (GLshort, "blue")]),
+    GlFunction(Void, "glSecondaryColor3svEXT", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3ubEXT", [(GLubyte, "red"), (GLubyte, "green"), (GLubyte, "blue")]),
+    GlFunction(Void, "glSecondaryColor3ubvEXT", [(Array(Const(GLubyte), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3uiEXT", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue")]),
+    GlFunction(Void, "glSecondaryColor3uivEXT", [(Array(Const(GLuint), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColor3usEXT", [(GLushort, "red"), (GLushort, "green"), (GLushort, "blue")]),
+    GlFunction(Void, "glSecondaryColor3usvEXT", [(Array(Const(GLushort), "3"), "v")]),
+    GlFunction(Void, "glSecondaryColorPointerEXT", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_EXT_texture_perturb_normal
+    GlFunction(Void, "glTextureNormalEXT", [(GLenum, "mode")]),
+
+    # GL_EXT_multi_draw_arrays
+    GlFunction(Void, "glMultiDrawArraysEXT", [(GLenum_mode, "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glMultiDrawElementsEXT", [(GLenum_mode, "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount")]),
+
+    # GL_EXT_fog_coord
+    GlFunction(Void, "glFogCoordfEXT", [(GLfloat, "coord")]),
+    GlFunction(Void, "glFogCoordfvEXT", [(Pointer(Const(GLfloat)), "coord")]),
+    GlFunction(Void, "glFogCoorddEXT", [(GLdouble, "coord")]),
+    GlFunction(Void, "glFogCoorddvEXT", [(Pointer(Const(GLdouble)), "coord")]),
+    GlFunction(Void, "glFogCoordPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_EXT_coordinate_frame
+    GlFunction(Void, "glTangent3bEXT", [(GLbyte, "tx"), (GLbyte, "ty"), (GLbyte, "tz")]),
+    GlFunction(Void, "glTangent3bvEXT", [(Array(Const(GLbyte), "3"), "v")]),
+    GlFunction(Void, "glTangent3dEXT", [(GLdouble, "tx"), (GLdouble, "ty"), (GLdouble, "tz")]),
+    GlFunction(Void, "glTangent3dvEXT", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glTangent3fEXT", [(GLfloat, "tx"), (GLfloat, "ty"), (GLfloat, "tz")]),
+    GlFunction(Void, "glTangent3fvEXT", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTangent3iEXT", [(GLint, "tx"), (GLint, "ty"), (GLint, "tz")]),
+    GlFunction(Void, "glTangent3ivEXT", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glTangent3sEXT", [(GLshort, "tx"), (GLshort, "ty"), (GLshort, "tz")]),
+    GlFunction(Void, "glTangent3svEXT", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glBinormal3bEXT", [(GLbyte, "bx"), (GLbyte, "by"), (GLbyte, "bz")]),
+    GlFunction(Void, "glBinormal3bvEXT", [(Array(Const(GLbyte), "3"), "v")]),
+    GlFunction(Void, "glBinormal3dEXT", [(GLdouble, "bx"), (GLdouble, "by"), (GLdouble, "bz")]),
+    GlFunction(Void, "glBinormal3dvEXT", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glBinormal3fEXT", [(GLfloat, "bx"), (GLfloat, "by"), (GLfloat, "bz")]),
+    GlFunction(Void, "glBinormal3fvEXT", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glBinormal3iEXT", [(GLint, "bx"), (GLint, "by"), (GLint, "bz")]),
+    GlFunction(Void, "glBinormal3ivEXT", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glBinormal3sEXT", [(GLshort, "bx"), (GLshort, "by"), (GLshort, "bz")]),
+    GlFunction(Void, "glBinormal3svEXT", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glTangentPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glBinormalPointerEXT", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_SUNX_constant_data
+    GlFunction(Void, "glFinishTextureSUNX", []),
+
+    # GL_SUN_global_alpha
+    GlFunction(Void, "glGlobalAlphaFactorbSUN", [(GLbyte, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactorsSUN", [(GLshort, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactoriSUN", [(GLint, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactorfSUN", [(GLfloat, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactordSUN", [(GLdouble, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactorubSUN", [(GLubyte, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactorusSUN", [(GLushort, "factor")]),
+    GlFunction(Void, "glGlobalAlphaFactoruiSUN", [(GLuint, "factor")]),
+
+    # GL_SUN_triangle_list
+    GlFunction(Void, "glReplacementCodeuiSUN", [(GLuint, "code")]),
+    GlFunction(Void, "glReplacementCodeusSUN", [(GLushort, "code")]),
+    GlFunction(Void, "glReplacementCodeubSUN", [(GLubyte, "code")]),
+    GlFunction(Void, "glReplacementCodeuivSUN", [(OpaqueArray(Const(GLuint), "__glReplacementCodeuivSUN_size()"), "code")]),
+    GlFunction(Void, "glReplacementCodeusvSUN", [(OpaqueArray(Const(GLushort), "__glReplacementCodeusvSUN_size()"), "code")]),
+    GlFunction(Void, "glReplacementCodeubvSUN", [(OpaqueArray(Const(GLubyte), "__glReplacementCodeubvSUN_size()"), "code")]),
+    GlFunction(Void, "glReplacementCodePointerSUN", [(GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer")]),
+
+    # GL_SUN_vertex
+    GlFunction(Void, "glColor4ubVertex2fSUN", [(GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glColor4ubVertex2fvSUN", [(Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glColor4ubVertex3fSUN", [(GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glColor4ubVertex3fvSUN", [(Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glColor3fVertex3fSUN", [(GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glColor3fVertex3fvSUN", [(Array(Const(GLfloat), "3"), "c"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glNormal3fVertex3fSUN", [(GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glColor4fNormal3fVertex3fSUN", [(GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glColor4fNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord2fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glTexCoord2fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord4fVertex4fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "p"), (GLfloat, "q"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glTexCoord4fVertex4fvSUN", [(Array(Const(GLfloat), "4"), "tc"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glTexCoord2fColor4ubVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glTexCoord2fColor4ubVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord2fColor3fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glTexCoord2fColor3fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "c"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord2fNormal3fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glTexCoord2fNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord2fColor4fNormal3fVertex3fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glTexCoord2fColor4fNormal3fVertex3fvSUN", [(Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glTexCoord4fColor4fNormal3fVertex4fSUN", [(GLfloat, "s"), (GLfloat, "t"), (GLfloat, "p"), (GLfloat, "q"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glTexCoord4fColor4fNormal3fVertex4fvSUN", [(Array(Const(GLfloat), "4"), "tc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiVertex3fSUN", [(GLuint, "rc"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiColor4ubVertex3fSUN", [(GLuint, "rc"), (GLubyte, "r"), (GLubyte, "g"), (GLubyte, "b"), (GLubyte, "a"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiColor4ubVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLubyte), "4"), "c"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiColor3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiColor3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "3"), "c"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiColor4fNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiTexCoord2fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiTexCoord2fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", [(GLuint, "rc"), (GLfloat, "s"), (GLfloat, "t"), (GLfloat, "r"), (GLfloat, "g"), (GLfloat, "b"), (GLfloat, "a"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", [(Pointer(Const(GLuint)), "rc"), (Array(Const(GLfloat), "2"), "tc"), (Array(Const(GLfloat), "4"), "c"), (Array(Const(GLfloat), "3"), "n"), (Array(Const(GLfloat), "3"), "v")]),
+
+    # GL_EXT_blend_func_separate
+    GlFunction(Void, "glBlendFuncSeparateEXT", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
+
+    # GL_INGR_blend_func_separate
+    GlFunction(Void, "glBlendFuncSeparateINGR", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
+
+    # GL_EXT_vertex_weighting
+    GlFunction(Void, "glVertexWeightfEXT", [(GLfloat, "weight")]),
+    GlFunction(Void, "glVertexWeightfvEXT", [(Pointer(Const(GLfloat)), "weight")]),
+    GlFunction(Void, "glVertexWeightPointerEXT", [(GLsizei, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_NV_vertex_array_range
+    GlFunction(Void, "glFlushVertexArrayRangeNV", []),
+    GlFunction(Void, "glVertexArrayRangeNV", [(GLsizei, "length"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+
+    # GL_NV_register_combiners
+    GlFunction(Void, "glCombinerParameterfvNV", [(GLenum, "pname"), (OpaquePointer(Const(GLfloat)), "params")]),
+    GlFunction(Void, "glCombinerParameterfNV", [(GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glCombinerParameterivNV", [(GLenum, "pname"), (OpaquePointer(Const(GLint)), "params")]),
+    GlFunction(Void, "glCombinerParameteriNV", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glCombinerInputNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "input"), (GLenum, "mapping"), (GLenum, "componentUsage")]),
+    GlFunction(Void, "glCombinerOutputNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "abOutput"), (GLenum, "cdOutput"), (GLenum, "sumOutput"), (GLenum, "scale"), (GLenum, "bias"), (GLboolean, "abDotProduct"), (GLboolean, "cdDotProduct"), (GLboolean, "muxSum")]),
+    GlFunction(Void, "glFinalCombinerInputNV", [(GLenum, "variable"), (GLenum, "input"), (GLenum, "mapping"), (GLenum, "componentUsage")]),
+    GlFunction(Void, "glGetCombinerInputParameterfvNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetCombinerInputParameterivNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetCombinerOutputParameterfvNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetCombinerOutputParameterivNV", [(GLenum, "stage"), (GLenum, "portion"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetFinalCombinerInputParameterfvNV", [(GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetFinalCombinerInputParameterivNV", [(GLenum, "variable"), (GLenum, "pname"), Out(OpaquePointer(GLint), "params")], sideeffects=False),
+
+    # GL_MESA_resize_buffers
+    GlFunction(Void, "glResizeBuffersMESA", []),
+
+    # GL_MESA_window_pos
+    GlFunction(Void, "glWindowPos2dMESA", [(GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glWindowPos2dvMESA", [(Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2fMESA", [(GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glWindowPos2fvMESA", [(Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2iMESA", [(GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glWindowPos2ivMESA", [(Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glWindowPos2sMESA", [(GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glWindowPos2svMESA", [(Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glWindowPos3dMESA", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glWindowPos3dvMESA", [(Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3fMESA", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glWindowPos3fvMESA", [(Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3iMESA", [(GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glWindowPos3ivMESA", [(Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glWindowPos3sMESA", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glWindowPos3svMESA", [(Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glWindowPos4dMESA", [(GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glWindowPos4dvMESA", [(Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glWindowPos4fMESA", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glWindowPos4fvMESA", [(Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glWindowPos4iMESA", [(GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glWindowPos4ivMESA", [(Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glWindowPos4sMESA", [(GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glWindowPos4svMESA", [(Array(Const(GLshort), "4"), "v")]),
+
+    # GL_IBM_multimode_draw_arrays
+    GlFunction(Void, "glMultiModeDrawArraysIBM", [(Array(Const(GLenum), "primcount"), "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount"), (GLint, "modestride")]),
+    GlFunction(Void, "glMultiModeDrawElementsIBM", [(Array(Const(GLenum), "primcount"), "mode"), (Array(Const(GLsizei), "primcount"), "count"), (GLenum, "type"), (Array(Const(Opaque("const GLvoid *")), "primcount"), "indices"), (GLsizei, "primcount"), (GLint, "modestride")]),
+
+    # GL_IBM_vertex_array_lists
+    GlFunction(Void, "glColorPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glSecondaryColorPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glEdgeFlagPointerListIBM", [(GLint, "stride"), (OpaquePointer(Opaque("const GLboolean *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glFogCoordPointerListIBM", [(GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glIndexPointerListIBM", [(GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glNormalPointerListIBM", [(GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glTexCoordPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+    GlFunction(Void, "glVertexPointerListIBM", [(GLint, "size"), (GLenum, "type"), (GLint, "stride"), (OpaquePointer(Opaque("const GLvoid *")), "pointer"), (GLint, "ptrstride")]),
+
+    # GL_3DFX_tbuffer
+    GlFunction(Void, "glTbufferMask3DFX", [(GLuint, "mask")]),
+
+    # GL_EXT_multisample
+    GlFunction(Void, "glSampleMaskEXT", [(GLclampf, "value"), (GLboolean, "invert")]),
+    GlFunction(Void, "glSamplePatternEXT", [(GLenum, "pattern")]),
+
+    # GL_SGIS_texture_color_mask
+    GlFunction(Void, "glTextureColorMaskSGIS", [(GLboolean, "red"), (GLboolean, "green"), (GLboolean, "blue"), (GLboolean, "alpha")]),
+
+    # GL_SGIX_igloo_interface
+    GlFunction(Void, "glIglooInterfaceSGIX", [(GLenum, "pname"), (OpaqueBlob(Const(GLvoid), "__glIglooInterfaceSGIX_size(pname)"), "params")]),
+
+    # GL_NV_fence
+    GlFunction(Void, "glDeleteFencesNV", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "fences")]),
+    GlFunction(Void, "glGenFencesNV", [(GLsizei, "n"), Out(Array(GLuint, "n"), "fences")]),
+    GlFunction(GLboolean, "glIsFenceNV", [(GLuint, "fence")], sideeffects=False),
+    GlFunction(GLboolean, "glTestFenceNV", [(GLuint, "fence")]),
+    GlFunction(Void, "glGetFenceivNV", [(GLuint, "fence"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetFenceivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glFinishFenceNV", [(GLuint, "fence")]),
+    GlFunction(Void, "glSetFenceNV", [(GLuint, "fence"), (GLenum, "condition")]),
+
+    # GL_NV_evaluators
+    GlFunction(Void, "glMapControlPointsNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "type"), (GLsizei, "ustride"), (GLsizei, "vstride"), (GLint, "uorder"), (GLint, "vorder"), (GLboolean, "packed"), (OpaqueBlob(Const(GLvoid), "__glMapControlPointsNV_size(target, uorder, vorder)"), "points")]),
+    GlFunction(Void, "glMapParameterivNV", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glMapParameterivNV_size(target, pname)"), "params")]),
+    GlFunction(Void, "glMapParameterfvNV", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glMapParameterfvNV_size(target, pname)"), "params")]),
+    GlFunction(Void, "glGetMapControlPointsNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "type"), (GLsizei, "ustride"), (GLsizei, "vstride"), (GLboolean, "packed"), Out(OpaqueBlob(GLvoid, "__glGetMapControlPointsNV_size(target)"), "points")], sideeffects=False),
+    GlFunction(Void, "glGetMapParameterivNV", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMapParameterivNV_size(target, pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMapParameterfvNV", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMapParameterfvNV_size(target, pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMapAttribParameterivNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetMapAttribParameterivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMapAttribParameterfvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetMapAttribParameterfvNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glEvalMapsNV", [(GLenum, "target"), (GLenum, "mode")]),
+
+    # GL_NV_register_combiners2
+    GlFunction(Void, "glCombinerStageParameterfvNV", [(GLenum, "stage"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glCombinerStageParameterfvNV_size(pname)"), "params")]),
+    GlFunction(Void, "glGetCombinerStageParameterfvNV", [(GLenum, "stage"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetCombinerStageParameterfvNV_size(pname)"), "params")], sideeffects=False),
+
+    # GL_NV_vertex_program
+    GlFunction(GLboolean, "glAreProgramsResidentNV", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "ids"), Out(Array(GLboolean, "n"), "residences")]),
+    GlFunction(Void, "glBindProgramNV", [(GLenum, "target"), (GLprogramARB, "program")]),
+    GlFunction(Void, "glDeleteProgramsNV", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "programs")]),
+    GlFunction(Void, "glExecuteProgramNV", [(GLenum, "target"), (GLprogramARB, "id"), (Array(Const(GLfloat), "4"), "params")]),
+    GlFunction(Void, "glGenProgramsNV", [(GLsizei, "n"), Out(Array(GLprogramARB, "n"), "programs")]),
+    GlFunction(Void, "glGetProgramParameterdvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramParameterfvNV", [(GLenum, "target"), (GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramivNV", [(GLprogramARB, "id"), (GLenum, "pname"), (Pointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramStringNV", [(GLprogramARB, "id"), (GLenum, "pname"), (OpaquePointer(GLubyte), "program")], sideeffects=False),
+    GlFunction(Void, "glGetTrackMatrixivNV", [(GLenum, "target"), (GLuint, "address"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribdvNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribfvNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribivNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribPointervNV", [(GLuint, "index"), (GLenum, "pname"), (OpaquePointer(OpaquePointer(GLvoid)), "pointer")], sideeffects=False),
+    GlFunction(GLboolean, "glIsProgramNV", [(GLprogramARB, "program")], sideeffects=False),
+    GlFunction(Void, "glLoadProgramNV", [(GLenum, "target"), (GLprogramARB, "id"), (GLsizei, "len"), (String("const GLubyte *", "len"), "program")]),
+    GlFunction(Void, "glProgramParameter4dNV", [(GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glProgramParameter4dvNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glProgramParameter4fNV", [(GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glProgramParameter4fvNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glProgramParameters4dvNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "v")]),
+    GlFunction(Void, "glProgramParameters4fvNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "v")]),
+    GlFunction(Void, "glRequestResidentProgramsNV", [(GLsizei, "n"), (Array(Const(GLprogramARB), "n"), "programs")]),
+    GlFunction(Void, "glTrackMatrixNV", [(GLenum, "target"), (GLuint, "address"), (GLenum, "matrix"), (GLenum, "transform")]),
+    GlFunction(Void, "glVertexAttribPointerNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glVertexAttrib1dNV", [(GLuint, "index"), (GLdouble, "x")]),
+    GlFunction(Void, "glVertexAttrib1dvNV", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glVertexAttrib1fNV", [(GLuint, "index"), (GLfloat, "x")]),
+    GlFunction(Void, "glVertexAttrib1fvNV", [(GLuint, "index"), (Pointer(Const(GLfloat)), "v")]),
+    GlFunction(Void, "glVertexAttrib1sNV", [(GLuint, "index"), (GLshort, "x")]),
+    GlFunction(Void, "glVertexAttrib1svNV", [(GLuint, "index"), (Pointer(Const(GLshort)), "v")]),
+    GlFunction(Void, "glVertexAttrib2dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertexAttrib2dvNV", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib2fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glVertexAttrib2fvNV", [(GLuint, "index"), (Array(Const(GLfloat), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib2sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glVertexAttrib2svNV", [(GLuint, "index"), (Array(Const(GLshort), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib3dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertexAttrib3dvNV", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib3fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glVertexAttrib3fvNV", [(GLuint, "index"), (Array(Const(GLfloat), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib3sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glVertexAttrib3svNV", [(GLuint, "index"), (Array(Const(GLshort), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib4dNV", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertexAttrib4dvNV", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4fNV", [(GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glVertexAttrib4fvNV", [(GLuint, "index"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4sNV", [(GLuint, "index"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glVertexAttrib4svNV", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttrib4ubNV", [(GLuint, "index"), (GLubyte, "x"), (GLubyte, "y"), (GLubyte, "z"), (GLubyte, "w")]),
+    GlFunction(Void, "glVertexAttrib4ubvNV", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribs1dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "v")]),
+    GlFunction(Void, "glVertexAttribs1fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "v")]),
+    GlFunction(Void, "glVertexAttribs1svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count"), "v")]),
+    GlFunction(Void, "glVertexAttribs2dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "v")]),
+    GlFunction(Void, "glVertexAttribs2fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "v")]),
+    GlFunction(Void, "glVertexAttribs2svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count*2"), "v")]),
+    GlFunction(Void, "glVertexAttribs3dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "v")]),
+    GlFunction(Void, "glVertexAttribs3fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "v")]),
+    GlFunction(Void, "glVertexAttribs3svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count*3"), "v")]),
+    GlFunction(Void, "glVertexAttribs4dvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "v")]),
+    GlFunction(Void, "glVertexAttribs4fvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "v")]),
+    GlFunction(Void, "glVertexAttribs4svNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLshort), "count*4"), "v")]),
+    GlFunction(Void, "glVertexAttribs4ubvNV", [(GLuint, "index"), (GLsizei, "count"), (Array(Const(GLubyte), "count*4"), "v")]),
+
+    # GL_ATI_envmap_bumpmap
+    GlFunction(Void, "glTexBumpParameterivATI", [(GLenum, "pname"), (OpaquePointer(Const(GLint)), "param")]),
+    GlFunction(Void, "glTexBumpParameterfvATI", [(GLenum, "pname"), (OpaquePointer(Const(GLfloat)), "param")]),
+    GlFunction(Void, "glGetTexBumpParameterivATI", [(GLenum, "pname"), Out(OpaquePointer(GLint), "param")], sideeffects=False),
+    GlFunction(Void, "glGetTexBumpParameterfvATI", [(GLenum, "pname"), Out(OpaquePointer(GLfloat), "param")], sideeffects=False),
+
+    # GL_ATI_fragment_shader
+    GlFunction(Handle("fragmentShaderATI", GLuint, "range"), "glGenFragmentShadersATI", [(GLuint, "range")]),
+    GlFunction(Void, "glBindFragmentShaderATI", [(GLfragmentShaderATI, "id")]),
+    GlFunction(Void, "glDeleteFragmentShaderATI", [(GLfragmentShaderATI, "id")]),
+    GlFunction(Void, "glBeginFragmentShaderATI", []),
+    GlFunction(Void, "glEndFragmentShaderATI", []),
+    GlFunction(Void, "glPassTexCoordATI", [(GLuint, "dst"), (GLuint, "coord"), (GLenum, "swizzle")]),
+    GlFunction(Void, "glSampleMapATI", [(GLuint, "dst"), (GLuint, "interp"), (GLenum, "swizzle")]),
+    GlFunction(Void, "glColorFragmentOp1ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod")]),
+    GlFunction(Void, "glColorFragmentOp2ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod")]),
+    GlFunction(Void, "glColorFragmentOp3ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMask"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod"), (GLuint, "arg3"), (GLuint, "arg3Rep"), (GLuint, "arg3Mod")]),
+    GlFunction(Void, "glAlphaFragmentOp1ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod")]),
+    GlFunction(Void, "glAlphaFragmentOp2ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod")]),
+    GlFunction(Void, "glAlphaFragmentOp3ATI", [(GLenum, "op"), (GLuint, "dst"), (GLuint, "dstMod"), (GLuint, "arg1"), (GLuint, "arg1Rep"), (GLuint, "arg1Mod"), (GLuint, "arg2"), (GLuint, "arg2Rep"), (GLuint, "arg2Mod"), (GLuint, "arg3"), (GLuint, "arg3Rep"), (GLuint, "arg3Mod")]),
+    GlFunction(Void, "glSetFragmentShaderConstantATI", [(GLuint, "dst"), (Array(Const(GLfloat), "4"), "value")]),
+
+    # GL_ATI_pn_triangles
+    GlFunction(Void, "glPNTrianglesiATI", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glPNTrianglesfATI", [(GLenum, "pname"), (GLfloat, "param")]),
+
+    # GL_ATI_vertex_array_object
+    GlFunction(GLuint, "glNewObjectBufferATI", [(GLsizei, "size"), (Blob(Const(GLvoid), "size"), "pointer"), (GLenum, "usage")]),
+    GlFunction(GLboolean, "glIsObjectBufferATI", [(GLuint, "buffer")], sideeffects=False),
+    GlFunction(Void, "glUpdateObjectBufferATI", [(GLuint, "buffer"), (GLuint, "offset"), (GLsizei, "size"), (Blob(Const(GLvoid), "size"), "pointer"), (GLenum, "preserve")]),
+    GlFunction(Void, "glGetObjectBufferfvATI", [(GLuint, "buffer"), (GLenum, "pname"), Out(Pointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetObjectBufferivATI", [(GLuint, "buffer"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glFreeObjectBufferATI", [(GLuint, "buffer")]),
+    GlFunction(Void, "glArrayObjectATI", [(GLenum, "array"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLuint, "buffer"), (GLuint, "offset")]),
+    GlFunction(Void, "glGetArrayObjectfvATI", [(GLenum, "array"), (GLenum, "pname"), Out(Pointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetArrayObjectivATI", [(GLenum, "array"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glVariantArrayObjectATI", [(GLuint, "id"), (GLenum, "type"), (GLsizei, "stride"), (GLuint, "buffer"), (GLuint, "offset")]),
+    GlFunction(Void, "glGetVariantArrayObjectfvATI", [(GLuint, "id"), (GLenum, "pname"), Out(Pointer(GLfloat), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVariantArrayObjectivATI", [(GLuint, "id"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
+
+    # GL_EXT_vertex_shader
+    GlFunction(Void, "glBeginVertexShaderEXT", []),
+    GlFunction(Void, "glEndVertexShaderEXT", []),
+    GlFunction(Void, "glBindVertexShaderEXT", [(GLuint, "id")]),
+    GlFunction(GLuint, "glGenVertexShadersEXT", [(GLuint, "range")]),
+    GlFunction(Void, "glDeleteVertexShaderEXT", [(GLuint, "id")]),
+    GlFunction(Void, "glShaderOp1EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1")]),
+    GlFunction(Void, "glShaderOp2EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1"), (GLuint, "arg2")]),
+    GlFunction(Void, "glShaderOp3EXT", [(GLenum, "op"), (GLuint, "res"), (GLuint, "arg1"), (GLuint, "arg2"), (GLuint, "arg3")]),
+    GlFunction(Void, "glSwizzleEXT", [(GLuint, "res"), (GLuint, "in"), (GLenum, "outX"), (GLenum, "outY"), (GLenum, "outZ"), (GLenum, "outW")]),
+    GlFunction(Void, "glWriteMaskEXT", [(GLuint, "res"), (GLuint, "in"), (GLenum, "outX"), (GLenum, "outY"), (GLenum, "outZ"), (GLenum, "outW")]),
+    GlFunction(Void, "glInsertComponentEXT", [(GLuint, "res"), (GLuint, "src"), (GLuint, "num")]),
+    GlFunction(Void, "glExtractComponentEXT", [(GLuint, "res"), (GLuint, "src"), (GLuint, "num")]),
+    GlFunction(GLuint, "glGenSymbolsEXT", [(GLenum, "datatype"), (GLenum, "storagetype"), (GLenum, "range"), (GLuint, "components")]),
+    GlFunction(Void, "glSetInvariantEXT", [(GLuint, "id"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glSetInvariantEXT_size(id, type)"), "addr")]),
+    GlFunction(Void, "glSetLocalConstantEXT", [(GLuint, "id"), (GLenum, "type"), (OpaqueBlob(Const(GLvoid), "__glSetLocalConstantEXT_size(id, type)"), "addr")]),
+    GlFunction(Void, "glVariantbvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLbyte), "__glVariantbvEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantsvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLshort), "__glVariantsvEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantivEXT", [(GLuint, "id"), (OpaqueArray(Const(GLint), "__glVariantivEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantfvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLfloat), "__glVariantfvEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantdvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLdouble), "__glVariantdvEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantubvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLubyte), "__glVariantubvEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantusvEXT", [(GLuint, "id"), (OpaqueArray(Const(GLushort), "__glVariantusvEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantuivEXT", [(GLuint, "id"), (OpaqueArray(Const(GLuint), "__glVariantuivEXT_size(id)"), "addr")]),
+    GlFunction(Void, "glVariantPointerEXT", [(GLuint, "id"), (GLenum, "type"), (GLuint, "stride"), (OpaqueBlob(Const(GLvoid), "__glVariantPointerEXT_size(id, type, stride)"), "addr")]),
+    GlFunction(Void, "glEnableVariantClientStateEXT", [(GLuint, "id")]),
+    GlFunction(Void, "glDisableVariantClientStateEXT", [(GLuint, "id")]),
+    GlFunction(GLuint, "glBindLightParameterEXT", [(GLenum, "light"), (GLenum, "value")]),
+    GlFunction(GLuint, "glBindMaterialParameterEXT", [(GLenum, "face"), (GLenum, "value")]),
+    GlFunction(GLuint, "glBindTexGenParameterEXT", [(GLenum, "unit"), (GLenum, "coord"), (GLenum, "value")]),
+    GlFunction(GLuint, "glBindTextureUnitParameterEXT", [(GLenum, "unit"), (GLenum, "value")]),
+    GlFunction(GLuint, "glBindParameterEXT", [(GLenum, "value")]),
+    GlFunction(GLboolean, "glIsVariantEnabledEXT", [(GLuint, "id"), (GLenum, "cap")], sideeffects=False),
+    GlFunction(Void, "glGetVariantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetVariantBooleanvEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetVariantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetVariantIntegervEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetVariantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetVariantFloatvEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetVariantPointervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetVariantPointervEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetInvariantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetInvariantBooleanvEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetInvariantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetInvariantIntegervEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetInvariantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetInvariantFloatvEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetLocalConstantBooleanvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLboolean, "__glGetLocalConstantBooleanvEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetLocalConstantIntegervEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLint, "__glGetLocalConstantIntegervEXT_size(id)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetLocalConstantFloatvEXT", [(GLuint, "id"), (GLenum, "value"), Out(OpaqueArray(GLfloat, "__glGetLocalConstantFloatvEXT_size(id)"), "data")], sideeffects=False),
+
+    # GL_ATI_vertex_streams
+    GlFunction(Void, "glVertexStream1sATI", [(GLenum, "stream"), (GLshort, "x")]),
+    GlFunction(Void, "glVertexStream1svATI", [(GLenum, "stream"), (Pointer(Const(GLshort)), "coords")]),
+    GlFunction(Void, "glVertexStream1iATI", [(GLenum, "stream"), (GLint, "x")]),
+    GlFunction(Void, "glVertexStream1ivATI", [(GLenum, "stream"), (Pointer(Const(GLint)), "coords")]),
+    GlFunction(Void, "glVertexStream1fATI", [(GLenum, "stream"), (GLfloat, "x")]),
+    GlFunction(Void, "glVertexStream1fvATI", [(GLenum, "stream"), (Pointer(Const(GLfloat)), "coords")]),
+    GlFunction(Void, "glVertexStream1dATI", [(GLenum, "stream"), (GLdouble, "x")]),
+    GlFunction(Void, "glVertexStream1dvATI", [(GLenum, "stream"), (Pointer(Const(GLdouble)), "coords")]),
+    GlFunction(Void, "glVertexStream2sATI", [(GLenum, "stream"), (GLshort, "x"), (GLshort, "y")]),
+    GlFunction(Void, "glVertexStream2svATI", [(GLenum, "stream"), (Array(Const(GLshort), "2"), "coords")]),
+    GlFunction(Void, "glVertexStream2iATI", [(GLenum, "stream"), (GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glVertexStream2ivATI", [(GLenum, "stream"), (Array(Const(GLint), "2"), "coords")]),
+    GlFunction(Void, "glVertexStream2fATI", [(GLenum, "stream"), (GLfloat, "x"), (GLfloat, "y")]),
+    GlFunction(Void, "glVertexStream2fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "2"), "coords")]),
+    GlFunction(Void, "glVertexStream2dATI", [(GLenum, "stream"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertexStream2dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "2"), "coords")]),
+    GlFunction(Void, "glVertexStream3sATI", [(GLenum, "stream"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z")]),
+    GlFunction(Void, "glVertexStream3svATI", [(GLenum, "stream"), (Array(Const(GLshort), "3"), "coords")]),
+    GlFunction(Void, "glVertexStream3iATI", [(GLenum, "stream"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glVertexStream3ivATI", [(GLenum, "stream"), (Array(Const(GLint), "3"), "coords")]),
+    GlFunction(Void, "glVertexStream3fATI", [(GLenum, "stream"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glVertexStream3fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "3"), "coords")]),
+    GlFunction(Void, "glVertexStream3dATI", [(GLenum, "stream"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertexStream3dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "3"), "coords")]),
+    GlFunction(Void, "glVertexStream4sATI", [(GLenum, "stream"), (GLshort, "x"), (GLshort, "y"), (GLshort, "z"), (GLshort, "w")]),
+    GlFunction(Void, "glVertexStream4svATI", [(GLenum, "stream"), (Array(Const(GLshort), "4"), "coords")]),
+    GlFunction(Void, "glVertexStream4iATI", [(GLenum, "stream"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glVertexStream4ivATI", [(GLenum, "stream"), (Array(Const(GLint), "4"), "coords")]),
+    GlFunction(Void, "glVertexStream4fATI", [(GLenum, "stream"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glVertexStream4fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "4"), "coords")]),
+    GlFunction(Void, "glVertexStream4dATI", [(GLenum, "stream"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertexStream4dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "4"), "coords")]),
+    GlFunction(Void, "glNormalStream3bATI", [(GLenum, "stream"), (GLbyte, "nx"), (GLbyte, "ny"), (GLbyte, "nz")]),
+    GlFunction(Void, "glNormalStream3bvATI", [(GLenum, "stream"), (Array(Const(GLbyte), "3"), "coords")]),
+    GlFunction(Void, "glNormalStream3sATI", [(GLenum, "stream"), (GLshort, "nx"), (GLshort, "ny"), (GLshort, "nz")]),
+    GlFunction(Void, "glNormalStream3svATI", [(GLenum, "stream"), (Array(Const(GLshort), "3"), "coords")]),
+    GlFunction(Void, "glNormalStream3iATI", [(GLenum, "stream"), (GLint, "nx"), (GLint, "ny"), (GLint, "nz")]),
+    GlFunction(Void, "glNormalStream3ivATI", [(GLenum, "stream"), (Array(Const(GLint), "3"), "coords")]),
+    GlFunction(Void, "glNormalStream3fATI", [(GLenum, "stream"), (GLfloat, "nx"), (GLfloat, "ny"), (GLfloat, "nz")]),
+    GlFunction(Void, "glNormalStream3fvATI", [(GLenum, "stream"), (Array(Const(GLfloat), "3"), "coords")]),
+    GlFunction(Void, "glNormalStream3dATI", [(GLenum, "stream"), (GLdouble, "nx"), (GLdouble, "ny"), (GLdouble, "nz")]),
+    GlFunction(Void, "glNormalStream3dvATI", [(GLenum, "stream"), (Array(Const(GLdouble), "3"), "coords")]),
+    GlFunction(Void, "glClientActiveVertexStreamATI", [(GLenum, "stream")]),
+    GlFunction(Void, "glVertexBlendEnviATI", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glVertexBlendEnvfATI", [(GLenum, "pname"), (GLfloat, "param")]),
+
+    # GL_ATI_element_array
+    GlFunction(Void, "glElementPointerATI", [(GLenum, "type"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glDrawElementArrayATI", [(GLenum_mode, "mode"), (GLsizei, "count")]),
+    GlFunction(Void, "glDrawRangeElementArrayATI", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLsizei, "count")]),
+
+    # GL_SUN_mesh_array
+    GlFunction(Void, "glDrawMeshArraysSUN", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count"), (GLsizei, "width")]),
+
+    # GL_NV_occlusion_query
+    GlFunction(Void, "glGenOcclusionQueriesNV", [(GLsizei, "n"), Out(Array(GLquery, "n"), "ids")]),
+    GlFunction(Void, "glDeleteOcclusionQueriesNV", [(GLsizei, "n"), (Array(Const(GLquery), "n"), "ids")]),
+    GlFunction(GLboolean, "glIsOcclusionQueryNV", [(GLquery, "id")], sideeffects=False),
+    GlFunction(Void, "glBeginOcclusionQueryNV", [(GLquery, "id")]),
+    GlFunction(Void, "glEndOcclusionQueryNV", []),
+    GlFunction(Void, "glGetOcclusionQueryivNV", [(GLquery, "id"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetOcclusionQueryivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetOcclusionQueryuivNV", [(GLquery, "id"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetOcclusionQueryuivNV_size(pname)"), "params")], sideeffects=False),
+
+    # GL_NV_point_sprite
+    GlFunction(Void, "glPointParameteriNV", [(GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glPointParameterivNV", [(GLenum, "pname"), (OpaquePointer(Const(GLint)), "params")]),
+
+    # GL_EXT_stencil_two_side
+    GlFunction(Void, "glActiveStencilFaceEXT", [(GLenum, "face")]),
+
+    # GL_APPLE_element_array
+    GlFunction(Void, "glElementPointerAPPLE", [(GLenum, "type"), (Blob(Const(GLvoid), "type"), "pointer")]),
+    GlFunction(Void, "glDrawElementArrayAPPLE", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
+    GlFunction(Void, "glDrawRangeElementArrayAPPLE", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (GLint, "first"), (GLsizei, "count")]),
+    GlFunction(Void, "glMultiDrawElementArrayAPPLE", [(GLenum_mode, "mode"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glMultiDrawRangeElementArrayAPPLE", [(GLenum_mode, "mode"), (GLuint, "start"), (GLuint, "end"), (Array(Const(GLint), "primcount"), "first"), (Array(Const(GLsizei), "primcount"), "count"), (GLsizei, "primcount")]),
+
+    # GL_APPLE_fence
+    GlFunction(Void, "glGenFencesAPPLE", [(GLsizei, "n"), Out(Array(GLuint, "n"), "fences")]),
+    GlFunction(Void, "glDeleteFencesAPPLE", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "fences")]),
+    GlFunction(Void, "glSetFenceAPPLE", [(GLuint, "fence")]),
+    GlFunction(GLboolean, "glIsFenceAPPLE", [(GLuint, "fence")], sideeffects=False),
+    GlFunction(GLboolean, "glTestFenceAPPLE", [(GLuint, "fence")]),
+    GlFunction(Void, "glFinishFenceAPPLE", [(GLuint, "fence")]),
+    GlFunction(GLboolean, "glTestObjectAPPLE", [(GLenum, "object"), (GLuint, "name")]),
+    GlFunction(Void, "glFinishObjectAPPLE", [(GLenum, "object"), (GLint, "name")]),
+
+    # GL_APPLE_vertex_array_object
+    GlFunction(Void, "glBindVertexArrayAPPLE", [(GLuint, "array")]),
+    GlFunction(Void, "glDeleteVertexArraysAPPLE", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "arrays")]),
+    GlFunction(Void, "glGenVertexArraysAPPLE", [(GLsizei, "n"), Out(Array(GLuint, "n"), "arrays")]),
+    GlFunction(GLboolean, "glIsVertexArrayAPPLE", [(GLuint, "array")], sideeffects=False),
+
+    # GL_APPLE_vertex_array_range
+    GlFunction(Void, "glVertexArrayRangeAPPLE", [(GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
+    GlFunction(Void, "glFlushVertexArrayRangeAPPLE", [(GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
+    GlFunction(Void, "glVertexArrayParameteriAPPLE", [(GLenum, "pname"), (GLint, "param")]),
+
+    # GL_APPLE_flush_render
+    GlFunction(Void, "glFlushRenderAPPLE", []),
+    GlFunction(Void, "glFinishRenderAPPLE", []),
+    GlFunction(Void, "glSwapAPPLE", []),
+
+    # GL_ATI_draw_buffers
+    GlFunction(Void, "glDrawBuffersATI", [(GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
+
+    # GL_NV_fragment_program
+    GlFunction(Void, "glProgramNamedParameter4fNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glProgramNamedParameter4dNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glProgramNamedParameter4fvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (Array(Const(GLfloat), "4"), "v")]),
+    GlFunction(Void, "glProgramNamedParameter4dvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glGetProgramNamedParameterdvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (OpaquePointer(GLdouble), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramNamedParameterfvNV", [(GLprogramARB, "id"), (GLsizei, "len"), (OpaquePointer(Const(GLubyte)), "name"), (OpaquePointer(GLfloat), "params")], sideeffects=False),
+
+    # GL_NV_half_float
+    GlFunction(Void, "glVertex2hNV", [(GLhalfNV, "x"), (GLhalfNV, "y")]),
+    GlFunction(Void, "glVertex2hvNV", [(Array(Const(GLhalfNV), "2"), "v")]),
+    GlFunction(Void, "glVertex3hNV", [(GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z")]),
+    GlFunction(Void, "glVertex3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glVertex4hNV", [(GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z"), (GLhalfNV, "w")]),
+    GlFunction(Void, "glVertex4hvNV", [(Array(Const(GLhalfNV), "4"), "v")]),
+    GlFunction(Void, "glNormal3hNV", [(GLhalfNV, "nx"), (GLhalfNV, "ny"), (GLhalfNV, "nz")]),
+    GlFunction(Void, "glNormal3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glColor3hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue")]),
+    GlFunction(Void, "glColor3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glColor4hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue"), (GLhalfNV, "alpha")]),
+    GlFunction(Void, "glColor4hvNV", [(Array(Const(GLhalfNV), "4"), "v")]),
+    GlFunction(Void, "glTexCoord1hNV", [(GLhalfNV, "s")]),
+    GlFunction(Void, "glTexCoord1hvNV", [(Pointer(Const(GLhalfNV)), "v")]),
+    GlFunction(Void, "glTexCoord2hNV", [(GLhalfNV, "s"), (GLhalfNV, "t")]),
+    GlFunction(Void, "glTexCoord2hvNV", [(Array(Const(GLhalfNV), "2"), "v")]),
+    GlFunction(Void, "glTexCoord3hNV", [(GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r")]),
+    GlFunction(Void, "glTexCoord3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glTexCoord4hNV", [(GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r"), (GLhalfNV, "q")]),
+    GlFunction(Void, "glTexCoord4hvNV", [(Array(Const(GLhalfNV), "4"), "v")]),
+    GlFunction(Void, "glMultiTexCoord1hNV", [(GLenum, "target"), (GLhalfNV, "s")]),
+    GlFunction(Void, "glMultiTexCoord1hvNV", [(GLenum, "target"), (Pointer(Const(GLhalfNV)), "v")]),
+    GlFunction(Void, "glMultiTexCoord2hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t")]),
+    GlFunction(Void, "glMultiTexCoord2hvNV", [(GLenum, "target"), (Array(Const(GLhalfNV), "2"), "v")]),
+    GlFunction(Void, "glMultiTexCoord3hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r")]),
+    GlFunction(Void, "glMultiTexCoord3hvNV", [(GLenum, "target"), (Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glMultiTexCoord4hNV", [(GLenum, "target"), (GLhalfNV, "s"), (GLhalfNV, "t"), (GLhalfNV, "r"), (GLhalfNV, "q")]),
+    GlFunction(Void, "glMultiTexCoord4hvNV", [(GLenum, "target"), (Array(Const(GLhalfNV), "4"), "v")]),
+    GlFunction(Void, "glFogCoordhNV", [(GLhalfNV, "fog")]),
+    GlFunction(Void, "glFogCoordhvNV", [(Pointer(Const(GLhalfNV)), "fog")]),
+    GlFunction(Void, "glSecondaryColor3hNV", [(GLhalfNV, "red"), (GLhalfNV, "green"), (GLhalfNV, "blue")]),
+    GlFunction(Void, "glSecondaryColor3hvNV", [(Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glVertexWeighthNV", [(GLhalfNV, "weight")]),
+    GlFunction(Void, "glVertexWeighthvNV", [(Pointer(Const(GLhalfNV)), "weight")]),
+    GlFunction(Void, "glVertexAttrib1hNV", [(GLuint, "index"), (GLhalfNV, "x")]),
+    GlFunction(Void, "glVertexAttrib1hvNV", [(GLuint, "index"), (Pointer(Const(GLhalfNV)), "v")]),
+    GlFunction(Void, "glVertexAttrib2hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y")]),
+    GlFunction(Void, "glVertexAttrib2hvNV", [(GLuint, "index"), (Array(Const(GLhalfNV), "2"), "v")]),
+    GlFunction(Void, "glVertexAttrib3hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z")]),
+    GlFunction(Void, "glVertexAttrib3hvNV", [(GLuint, "index"), (Array(Const(GLhalfNV), "3"), "v")]),
+    GlFunction(Void, "glVertexAttrib4hNV", [(GLuint, "index"), (GLhalfNV, "x"), (GLhalfNV, "y"), (GLhalfNV, "z"), (GLhalfNV, "w")]),
+    GlFunction(Void, "glVertexAttrib4hvNV", [(GLuint, "index"), (Array(Const(GLhalfNV), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribs1hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
+    GlFunction(Void, "glVertexAttribs2hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
+    GlFunction(Void, "glVertexAttribs3hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
+    GlFunction(Void, "glVertexAttribs4hvNV", [(GLuint, "index"), (GLsizei, "n"), (Array(Const(GLhalfNV), "n"), "v")]),
+
+    # GL_NV_pixel_data_range
+    GlFunction(Void, "glPixelDataRangeNV", [(GLenum, "target"), (GLsizei, "length"), Out(Blob(GLvoid, "length"), "pointer")]),
+    GlFunction(Void, "glFlushPixelDataRangeNV", [(GLenum, "target")]),
+
+    # GL_NV_primitive_restart
+    GlFunction(Void, "glPrimitiveRestartNV", []),
+    GlFunction(Void, "glPrimitiveRestartIndexNV", [(GLuint, "index")]),
+
+    # GL_ATI_map_object_buffer
+    GlFunction(GLmap, "glMapObjectBufferATI", [(GLbuffer, "buffer")]),
+    GlFunction(Void, "glUnmapObjectBufferATI", [(GLbuffer, "buffer")]),
+
+    # GL_ATI_separate_stencil
+    GlFunction(Void, "glStencilOpSeparateATI", [(GLenum, "face"), (GLenum, "sfail"), (GLenum, "dpfail"), (GLenum, "dppass")]),
+    GlFunction(Void, "glStencilFuncSeparateATI", [(GLenum, "frontfunc"), (GLenum, "backfunc"), (GLint, "ref"), (GLuint, "mask")]),
+
+    # GL_ATI_vertex_attrib_array_object
+    GlFunction(Void, "glVertexAttribArrayObjectATI", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (GLuint, "buffer"), (GLuint, "offset")]),
+    GlFunction(Void, "glGetVertexAttribArrayObjectfvATI", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLfloat, "pname"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribArrayObjectivATI", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint, "pname"), "params")], sideeffects=False),
+
+    # GL_EXT_depth_bounds_test
+    GlFunction(Void, "glDepthBoundsEXT", [(GLclampd, "zmin"), (GLclampd, "zmax")]),
+
+    # GL_EXT_blend_equation_separate
+    GlFunction(Void, "glBlendEquationSeparateEXT", [(GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
+
+    # GL_EXT_framebuffer_object
+    GlFunction(GLboolean, "glIsRenderbufferEXT", [(GLrenderbuffer, "renderbuffer")], sideeffects=False),
+    GlFunction(Void, "glBindRenderbufferEXT", [(GLenum, "target"), (GLrenderbuffer, "renderbuffer")]),
+    GlFunction(Void, "glDeleteRenderbuffersEXT", [(GLsizei, "n"), (Array(Const(GLrenderbuffer), "n"), "renderbuffers")]),
+    GlFunction(Void, "glGenRenderbuffersEXT", [(GLsizei, "n"), Out(Array(GLrenderbuffer, "n"), "renderbuffers")]),
+    GlFunction(Void, "glRenderbufferStorageEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetRenderbufferParameterivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(GLboolean, "glIsFramebufferEXT", [(GLframebuffer, "framebuffer")], sideeffects=False),
+    GlFunction(Void, "glBindFramebufferEXT", [(GLenum, "target"), (GLframebuffer, "framebuffer")]),
+    GlFunction(Void, "glDeleteFramebuffersEXT", [(GLsizei, "n"), (Array(Const(GLframebuffer), "n"), "framebuffers")]),
+    GlFunction(Void, "glGenFramebuffersEXT", [(GLsizei, "n"), Out(Array(GLframebuffer, "n"), "framebuffers")]),
+    GlFunction(GLenum, "glCheckFramebufferStatusEXT", [(GLenum, "target")]),
+    GlFunction(Void, "glFramebufferTexture1DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glFramebufferTexture2DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glFramebufferTexture3DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
+    GlFunction(Void, "glFramebufferRenderbufferEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
+    GlFunction(Void, "glGetFramebufferAttachmentParameterivEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "pname"), (OpaquePointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGenerateMipmapEXT", [(GLenum, "target")]),
+
+    # GL_GREMEDY_string_marker
+    GlFunction(Void, "glStringMarkerGREMEDY", [(GLsizei, "len"), (Const(String("GLvoid *", "len ? len : strlen((const char *)string)")), "string")], sideeffects=False),
+
+    # GL_EXT_stencil_clear_tag
+    GlFunction(Void, "glStencilClearTagEXT", [(GLsizei, "stencilTagBits"), (GLuint, "stencilClearTag")]),
+
+    # GL_EXT_framebuffer_blit
+    GlFunction(Void, "glBlitFramebufferEXT", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
+
+    # GL_EXT_framebuffer_multisample
+    GlFunction(Void, "glRenderbufferStorageMultisampleEXT", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+
+    # GL_EXT_timer_query
+    GlFunction(Void, "glGetQueryObjecti64vEXT", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLint64EXT), "params")], sideeffects=False),
+    GlFunction(Void, "glGetQueryObjectui64vEXT", [(GLquery, "id"), (GLenum, "pname"), (OpaquePointer(GLuint64EXT), "params")], sideeffects=False),
+
+    # GL_EXT_gpu_program_parameters
+    GlFunction(Void, "glProgramEnvParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "params")]),
+    GlFunction(Void, "glProgramLocalParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "params")]),
+
+    # GL_APPLE_flush_buffer_range
+    GlFunction(Void, "glBufferParameteriAPPLE", [(GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glFlushMappedBufferRangeAPPLE", [(GLenum, "target"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
+
+    # GL_NV_gpu_program4
+    GlFunction(Void, "glProgramLocalParameterI4iNV", [(GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glProgramLocalParameterI4ivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLint), "4"), "params")]),
+    GlFunction(Void, "glProgramLocalParametersI4ivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "params")]),
+    GlFunction(Void, "glProgramLocalParameterI4uiNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
+    GlFunction(Void, "glProgramLocalParameterI4uivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLuint), "4"), "params")]),
+    GlFunction(Void, "glProgramLocalParametersI4uivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "params")]),
+    GlFunction(Void, "glProgramEnvParameterI4iNV", [(GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glProgramEnvParameterI4ivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLint), "4"), "params")]),
+    GlFunction(Void, "glProgramEnvParametersI4ivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "params")]),
+    GlFunction(Void, "glProgramEnvParameterI4uiNV", [(GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
+    GlFunction(Void, "glProgramEnvParameterI4uivNV", [(GLenum, "target"), (GLuint, "index"), (Array(Const(GLuint), "4"), "params")]),
+    GlFunction(Void, "glProgramEnvParametersI4uivNV", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "params")]),
+    GlFunction(Void, "glGetProgramLocalParameterIivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramLocalParameterIuivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramEnvParameterIivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetProgramEnvParameterIuivNV", [(GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
+
+    # GL_NV_geometry_program4
+    GlFunction(Void, "glProgramVertexLimitNV", [(GLenum, "target"), (GLint, "limit")]),
+    GlFunction(Void, "glFramebufferTextureEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glFramebufferTextureLayerEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
+    GlFunction(Void, "glFramebufferTextureFaceEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
+
+    # GL_EXT_geometry_shader4
+    GlFunction(Void, "glProgramParameteriEXT", [(GLprogram, "program"), (GLenum, "pname"), (GLint, "value")]),
+
+    # GL_NV_vertex_program4
+    GlFunction(Void, "glVertexAttribI1iEXT", [(GLuint, "index"), (GLint, "x")]),
+    GlFunction(Void, "glVertexAttribI2iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y")]),
+    GlFunction(Void, "glVertexAttribI3iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z")]),
+    GlFunction(Void, "glVertexAttribI4iEXT", [(GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glVertexAttribI1uiEXT", [(GLuint, "index"), (GLuint, "x")]),
+    GlFunction(Void, "glVertexAttribI2uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y")]),
+    GlFunction(Void, "glVertexAttribI3uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z")]),
+    GlFunction(Void, "glVertexAttribI4uiEXT", [(GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
+    GlFunction(Void, "glVertexAttribI1ivEXT", [(GLuint, "index"), (Pointer(Const(GLint)), "v")]),
+    GlFunction(Void, "glVertexAttribI2ivEXT", [(GLuint, "index"), (Array(Const(GLint), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribI3ivEXT", [(GLuint, "index"), (Array(Const(GLint), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribI4ivEXT", [(GLuint, "index"), (Array(Const(GLint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI1uivEXT", [(GLuint, "index"), (Pointer(Const(GLuint)), "v")]),
+    GlFunction(Void, "glVertexAttribI2uivEXT", [(GLuint, "index"), (Array(Const(GLuint), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribI3uivEXT", [(GLuint, "index"), (Array(Const(GLuint), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribI4uivEXT", [(GLuint, "index"), (Array(Const(GLuint), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4bvEXT", [(GLuint, "index"), (Array(Const(GLbyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4svEXT", [(GLuint, "index"), (Array(Const(GLshort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4ubvEXT", [(GLuint, "index"), (Array(Const(GLubyte), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribI4usvEXT", [(GLuint, "index"), (Array(Const(GLushort), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribIPointerEXT", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glGetVertexAttribIivEXT", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribIuivEXT", [(GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLuint), "params")], sideeffects=False),
+
+    # GL_EXT_gpu_shader4
+    GlFunction(Void, "glGetUniformuivEXT", [(GLprogram, "program"), (GLlocation, "location"), Out(OpaqueArray(GLuint, "__glGetUniformuivEXT_size(program, location)"), "params")], sideeffects=False),
+    GlFunction(Void, "glBindFragDataLocationEXT", [(GLprogram, "program"), (GLuint, "color"), (Const(GLstring), "name")]),
+    GlFunction(GLlocation, "glGetFragDataLocationEXT", [(GLprogram, "program"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glUniform1uiEXT", [(GLlocation, "location"), (GLuint, "v0")]),
+    GlFunction(Void, "glUniform2uiEXT", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
+    GlFunction(Void, "glUniform3uiEXT", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
+    GlFunction(Void, "glUniform4uiEXT", [(GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
+    GlFunction(Void, "glUniform1uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
+    GlFunction(Void, "glUniform2uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4uivEXT", [(GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
+
+    # GL_EXT_draw_instanced
+    GlFunction(Void, "glDrawArraysInstancedEXT", [(GLenum_mode, "mode"), (GLint, "start"), (GLsizei, "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glDrawElementsInstancedEXT", [(GLenum_mode, "mode"), (GLsizei, "count"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indices"), (GLsizei, "primcount")]),
+
+    # GL_EXT_texture_buffer_object
+    GlFunction(Void, "glTexBufferEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
+
+    # GL_NV_depth_buffer_float
+    GlFunction(Void, "glDepthRangedNV", [(GLdouble, "zNear"), (GLdouble, "zFar")]),
+    GlFunction(Void, "glClearDepthdNV", [(GLdouble, "depth")]),
+    GlFunction(Void, "glDepthBoundsdNV", [(GLdouble, "zmin"), (GLdouble, "zmax")]),
+
+    # GL_NV_framebuffer_multisample_coverage
+    GlFunction(Void, "glRenderbufferStorageMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+
+    # GL_NV_parameter_buffer_object
+    GlFunction(Void, "glProgramBufferParametersfvNV", [(GLenum, "target"), (GLbuffer, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "params")]),
+    GlFunction(Void, "glProgramBufferParametersIivNV", [(GLenum, "target"), (GLbuffer, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count"), "params")]),
+    GlFunction(Void, "glProgramBufferParametersIuivNV", [(GLenum, "target"), (GLbuffer, "buffer"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "params")]),
+
+    # GL_EXT_draw_buffers2
+    GlFunction(Void, "glColorMaskIndexedEXT", [(GLuint, "index"), (GLboolean, "r"), (GLboolean, "g"), (GLboolean, "b"), (GLboolean, "a")]),
+    GlFunction(Void, "glGetBooleanIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLboolean, "__glGetBooleanIndexedvEXT_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetIntegerIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLint, "__glGetIntegerIndexedvEXT_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glEnableIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
+    GlFunction(Void, "glDisableIndexedEXT", [(GLenum, "target"), (GLuint, "index")]),
+    GlFunction(GLboolean, "glIsEnabledIndexedEXT", [(GLenum, "target"), (GLuint, "index")], sideeffects=False),
+
+    # GL_NV_transform_feedback
+    GlFunction(Void, "glBeginTransformFeedbackNV", [(GLenum_mode, "primitiveMode")]),
+    GlFunction(Void, "glEndTransformFeedbackNV", []),
+    GlFunction(Void, "glTransformFeedbackAttribsNV", [(GLuint, "count"), (OpaqueArray(Const(GLint), "__glTransformFeedbackAttribsNV_size(count)"), "attribs"), (GLenum, "bufferMode")]),
+    GlFunction(Void, "glBindBufferRangeNV", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
+    GlFunction(Void, "glBindBufferOffsetNV", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset")]),
+    GlFunction(Void, "glBindBufferBaseNV", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glTransformFeedbackVaryingsNV", [(GLprogram, "program"), (GLsizei, "count"), (Array(Const(GLint), "count"), "locations"), (GLenum, "bufferMode")]),
+    GlFunction(Void, "glActiveVaryingNV", [(GLprogram, "program"), (Const(GLstring), "name")]),
+    GlFunction(GLlocation, "glGetVaryingLocationNV", [(GLprogram, "program"), (Const(GLstring), "name")]),
+    GlFunction(Void, "glGetActiveVaryingNV", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
+    GlFunction(Void, "glGetTransformFeedbackVaryingNV", [(GLprogram, "program"), (GLuint, "index"), Out(Pointer(GLlocation), "location")], sideeffects=False),
+    GlFunction(Void, "glTransformFeedbackStreamAttribsNV", [(GLsizei, "count"), (Array(Const(GLint), "count"), "attribs"), (GLsizei, "nbuffers"), (Array(Const(GLint), "nbuffers"), "bufstreams"), (GLenum, "bufferMode")]),
+
+    # GL_EXT_bindable_uniform
+    GlFunction(Void, "glUniformBufferEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLbuffer, "buffer")]),
+    GlFunction(GLint, "glGetUniformBufferSizeEXT", [(GLprogram, "program"), (GLlocation, "location")]),
+    GlFunction(GLintptr, "glGetUniformOffsetEXT", [(GLprogram, "program"), (GLlocation, "location")]),
+
+    # GL_EXT_texture_integer
+    GlFunction(Void, "glTexParameterIivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glTexParameterIivEXT_size(pname)"), "params")]),
+    GlFunction(Void, "glTexParameterIuivEXT", [(GLenum, "target"), (GLenum, "pname"), (OpaqueArray(Const(GLuint), "__glTexParameterIuivEXT_size(pname)"), "params")]),
+    GlFunction(Void, "glGetTexParameterIivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetTexParameterIivEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTexParameterIuivEXT", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetTexParameterIuivEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glClearColorIiEXT", [(GLint, "red"), (GLint, "green"), (GLint, "blue"), (GLint, "alpha")]),
+    GlFunction(Void, "glClearColorIuiEXT", [(GLuint, "red"), (GLuint, "green"), (GLuint, "blue"), (GLuint, "alpha")]),
+
+    # GL_GREMEDY_frame_terminator
+    GlFunction(Void, "glFrameTerminatorGREMEDY", []),
+
+    # GL_NV_conditional_render
+    GlFunction(Void, "glBeginConditionalRenderNV", [(GLuint, "id"), (GLenum, "mode")]),
+    GlFunction(Void, "glEndConditionalRenderNV", []),
+
+    # GL_NV_present_video
+    GlFunction(Void, "glPresentFrameKeyedNV", [(GLuint, "video_slot"), (GLuint64EXT, "minPresentTime"), (GLuint, "beginPresentTimeId"), (GLuint, "presentDurationId"), (GLenum, "type"), (GLenum, "target0"), (GLuint, "fill0"), (GLuint, "key0"), (GLenum, "target1"), (GLuint, "fill1"), (GLuint, "key1")]),
+    GlFunction(Void, "glPresentFrameDualFillNV", [(GLuint, "video_slot"), (GLuint64EXT, "minPresentTime"), (GLuint, "beginPresentTimeId"), (GLuint, "presentDurationId"), (GLenum, "type"), (GLenum, "target0"), (GLuint, "fill0"), (GLenum, "target1"), (GLuint, "fill1"), (GLenum, "target2"), (GLuint, "fill2"), (GLenum, "target3"), (GLuint, "fill3")]),
+    GlFunction(Void, "glGetVideoivNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVideouivNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLuint, "__glGetVideouivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVideoi64vNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint64EXT, "__glGetVideoi64vNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVideoui64vNV", [(GLuint, "video_slot"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetVideoui64vNV_size(pname)"), "params")], sideeffects=False),
+
+    # GL_EXT_transform_feedback
+    GlFunction(Void, "glBeginTransformFeedbackEXT", [(GLenum_mode, "primitiveMode")]),
+    GlFunction(Void, "glEndTransformFeedbackEXT", []),
+    GlFunction(Void, "glBindBufferRangeEXT", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size")]),
+    GlFunction(Void, "glBindBufferOffsetEXT", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer"), (GLintptr, "offset")]),
+    GlFunction(Void, "glBindBufferBaseEXT", [(GLenum, "target"), (GLuint, "index"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glTransformFeedbackVaryingsEXT", [(GLprogram, "program"), (GLsizei, "count"), (Const(Array(Const(GLstring), "count")), "varyings"), (GLenum, "bufferMode")]),
+    GlFunction(Void, "glGetTransformFeedbackVaryingEXT", [(GLprogram, "program"), (GLuint, "index"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Pointer(GLsizei), "size"), Out(Pointer(GLenum), "type"), Out(GLstring, "name")], sideeffects=False),
+
+    # GL_EXT_direct_state_access
+    GlFunction(Void, "glClientAttribDefaultEXT", [(GLbitfield_client_attrib, "mask")]),
+    GlFunction(Void, "glPushClientAttribDefaultEXT", [(GLbitfield_client_attrib, "mask")]),
+    GlFunction(Void, "glMatrixLoadfEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMatrixLoaddEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glMatrixMultfEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMatrixMultdEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glMatrixLoadIdentityEXT", [(GLenum, "mode")]),
+    GlFunction(Void, "glMatrixRotatefEXT", [(GLenum, "mode"), (GLfloat, "angle"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glMatrixRotatedEXT", [(GLenum, "mode"), (GLdouble, "angle"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glMatrixScalefEXT", [(GLenum, "mode"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glMatrixScaledEXT", [(GLenum, "mode"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glMatrixTranslatefEXT", [(GLenum, "mode"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
+    GlFunction(Void, "glMatrixTranslatedEXT", [(GLenum, "mode"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glMatrixFrustumEXT", [(GLenum, "mode"), (GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
+    GlFunction(Void, "glMatrixOrthoEXT", [(GLenum, "mode"), (GLdouble, "left"), (GLdouble, "right"), (GLdouble, "bottom"), (GLdouble, "top"), (GLdouble, "zNear"), (GLdouble, "zFar")]),
+    GlFunction(Void, "glMatrixPopEXT", [(GLenum, "mode")]),
+    GlFunction(Void, "glMatrixPushEXT", [(GLenum, "mode")]),
+    GlFunction(Void, "glMatrixLoadTransposefEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMatrixLoadTransposedEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glMatrixMultTransposefEXT", [(GLenum, "mode"), (Array(Const(GLfloat), "16"), "m")]),
+    GlFunction(Void, "glMatrixMultTransposedEXT", [(GLenum, "mode"), (Array(Const(GLdouble), "16"), "m")]),
+    GlFunction(Void, "glTextureParameterfEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glTextureParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glTextureParameteriEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glTextureParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureImage1DEXT_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureImage2DEXT_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureSubImage1DEXT_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureSubImage2DEXT_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glCopyTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
+    GlFunction(Void, "glCopyTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
+    GlFunction(Void, "glCopyTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glCopyTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetTextureImageEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetTextureImageEXT_size(target, level, format, type)"), "pixels")], sideeffects=False),
+    GlFunction(Void, "glGetTextureParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTextureParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTextureLevelParameterfvEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTextureLevelParameterivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glTextureImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glTextureSubImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glCopyTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glMultiTexParameterfEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glMultiTexParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexParameteriEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glMultiTexParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexImage1DEXT_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexImage2DEXT_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexSubImage1DEXT_size(format, type, width)"), "pixels")]),
+    GlFunction(Void, "glMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexSubImage2DEXT_size(format, type, width, height)"), "pixels")]),
+    GlFunction(Void, "glCopyMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
+    GlFunction(Void, "glCopyMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
+    GlFunction(Void, "glCopyMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
+    GlFunction(Void, "glCopyMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetMultiTexImageEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "format"), (GLenum, "type"), Out(OpaqueBlob(GLvoid, "__glGetMultiTexImageEXT_size(target, level, format, type)"), "pixels")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexLevelParameterfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexLevelParameterivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glMultiTexImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__glMultiTexSubImage3DEXT_size(format, type, width, height, depth)"), "pixels")]),
+    GlFunction(Void, "glCopyMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glBindMultiTextureEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLtexture, "texture")]),
+    GlFunction(Void, "glEnableClientStateIndexedEXT", [(GLenum, "array"), (GLuint, "index")]),
+    GlFunction(Void, "glDisableClientStateIndexedEXT", [(GLenum, "array"), (GLuint, "index")]),
+    GlFunction(Void, "glMultiTexCoordPointerEXT", [(GLenum, "texunit"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
+    GlFunction(Void, "glMultiTexEnvfEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glMultiTexEnvfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexEnviEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glMultiTexEnvivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexGendEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLdouble, "param")]),
+    GlFunction(Void, "glMultiTexGendvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLdouble), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexGenfEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLfloat, "param")]),
+    GlFunction(Void, "glMultiTexGenfvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLfloat), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexGeniEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (GLint, "param")]),
+    GlFunction(Void, "glMultiTexGenivEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glGetMultiTexEnvfvEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexEnvivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexGendvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(Array(GLdouble, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexGenfvEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(Array(GLfloat, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexGenivEXT", [(GLenum, "texunit"), (GLenum, "coord"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetFloatIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLfloat, "__glGetFloatIndexedvEXT_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetDoubleIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLdouble, "__glGetDoubleIndexedvEXT_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGetPointerIndexedvEXT", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(OpaquePointer(GLvoid), "__glGetPointerIndexedvEXT_size(target)"), "data")], sideeffects=False),
+    GlFunction(Void, "glCompressedTextureImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedTextureImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedTextureImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedTextureSubImage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedTextureSubImage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedTextureSubImage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glGetCompressedTextureImageEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLint, "lod"), Out(OpaqueBlob(GLvoid, "__glGetCompressedTextureImageEXT_size(target, lod)"), "img")], sideeffects=False),
+    GlFunction(Void, "glCompressedMultiTexImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedMultiTexImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedMultiTexImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLsizei, "width"), (GLint, "border"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedMultiTexSubImage3DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "zoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedMultiTexSubImage2DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glCompressedMultiTexSubImage1DEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLsizei, "imageSize"), (Blob(Const(GLvoid), "imageSize"), "bits")]),
+    GlFunction(Void, "glGetCompressedMultiTexImageEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLint, "lod"), Out(OpaqueBlob(GLvoid, "__glGetCompressedMultiTexImageEXT_size(target, lod)"), "img")], sideeffects=False),
+    GlFunction(Void, "glNamedProgramStringEXT", [(GLprogram, "program"), (GLenum, "target"), (GLenum, "format"), (GLsizei, "len"), (Const(String("GLvoid *", "len")), "string")]),
+    GlFunction(Void, "glNamedProgramLocalParameter4dEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glNamedProgramLocalParameter4dvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLdouble), "4"), "params")]),
+    GlFunction(Void, "glNamedProgramLocalParameter4fEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z"), (GLfloat, "w")]),
+    GlFunction(Void, "glNamedProgramLocalParameter4fvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLfloat), "4"), "params")]),
+    GlFunction(Void, "glGetNamedProgramLocalParameterdvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLdouble, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedProgramLocalParameterfvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLfloat, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedProgramivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLenum, "pname"), Out(Pointer(GLint), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedProgramStringEXT", [(GLprogram, "program"), (GLenum, "target"), (GLenum, "pname"), Out(OpaqueBlob(GLvoid, "__glGetNamedProgramStringEXT_size(program,pname)"), "string")], sideeffects=False),
+    GlFunction(Void, "glNamedProgramLocalParameters4fvEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "params")]),
+    GlFunction(Void, "glNamedProgramLocalParameterI4iEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLint, "x"), (GLint, "y"), (GLint, "z"), (GLint, "w")]),
+    GlFunction(Void, "glNamedProgramLocalParameterI4ivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLint), "4"), "params")]),
+    GlFunction(Void, "glNamedProgramLocalParametersI4ivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "params")]),
+    GlFunction(Void, "glNamedProgramLocalParameterI4uiEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLuint, "x"), (GLuint, "y"), (GLuint, "z"), (GLuint, "w")]),
+    GlFunction(Void, "glNamedProgramLocalParameterI4uivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (Array(Const(GLuint), "4"), "params")]),
+    GlFunction(Void, "glNamedProgramLocalParametersI4uivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "params")]),
+    GlFunction(Void, "glGetNamedProgramLocalParameterIivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLint, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedProgramLocalParameterIuivEXT", [(GLprogram, "program"), (GLenum, "target"), (GLuint, "index"), Out(Array(GLuint, "4"), "params")], sideeffects=False),
+    GlFunction(Void, "glTextureParameterIivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glTextureParameterIuivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLuint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glGetTextureParameterIivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetTextureParameterIuivEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glMultiTexParameterIivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glMultiTexParameterIuivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), (Array(Const(GLuint), "__gl_param_size(pname)"), "params")]),
+    GlFunction(Void, "glGetMultiTexParameterIivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetMultiTexParameterIuivEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "pname"), Out(Array(GLuint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glProgramUniform1fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0")]),
+    GlFunction(Void, "glProgramUniform2fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1")]),
+    GlFunction(Void, "glProgramUniform3fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2")]),
+    GlFunction(Void, "glProgramUniform4fEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLfloat, "v0"), (GLfloat, "v1"), (GLfloat, "v2"), (GLfloat, "v3")]),
+    GlFunction(Void, "glProgramUniform1iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0")]),
+    GlFunction(Void, "glProgramUniform2iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1")]),
+    GlFunction(Void, "glProgramUniform3iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2")]),
+    GlFunction(Void, "glProgramUniform4iEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLint, "v0"), (GLint, "v1"), (GLint, "v2"), (GLint, "v3")]),
+    GlFunction(Void, "glProgramUniform1fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLfloat), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniform1ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4ivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLint), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*2*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x2fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*3*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x3fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*3"), "value")]),
+    GlFunction(Void, "glProgramUniform1uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0")]),
+    GlFunction(Void, "glProgramUniform2uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1")]),
+    GlFunction(Void, "glProgramUniform3uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2")]),
+    GlFunction(Void, "glProgramUniform4uiEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLuint, "v0"), (GLuint, "v1"), (GLuint, "v2"), (GLuint, "v3")]),
+    GlFunction(Void, "glProgramUniform1uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4uivEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLuint), "count*4"), "value")]),
+    GlFunction(Void, "glNamedBufferDataEXT", [(GLbuffer, "buffer"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data"), (GLenum, "usage")]),
+    GlFunction(Void, "glNamedBufferSubDataEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size"), (Blob(Const(GLvoid), "size"), "data")]),
+    GlFunction(GLmap, "glMapNamedBufferEXT", [(GLbuffer, "buffer"), (GLenum, "access")]),
+    GlFunction(GLboolean, "glUnmapNamedBufferEXT", [(GLbuffer, "buffer")]),
+    GlFunction(GLmap, "glMapNamedBufferRangeEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "length"), (GLbitfield_access, "access")]),
+    GlFunction(Void, "glFlushMappedNamedBufferRangeEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "length")]),
+    GlFunction(Void, "glNamedCopyBufferSubDataEXT", [(GLbuffer, "readBuffer"), (GLbuffer, "writeBuffer"), (GLintptr, "readOffset"), (GLintptr, "writeOffset"), (GLsizeiptr, "size")]),
+    GlFunction(Void, "glGetNamedBufferParameterivEXT", [(GLbuffer, "buffer"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedBufferPointervEXT", [(GLbuffer, "buffer"), (GLenum, "pname"), Out(Array(OpaquePointer(GLvoid), "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedBufferSubDataEXT", [(GLbuffer, "buffer"), (GLintptr, "offset"), (GLsizeiptr, "size"), Out(OpaqueBlob(GLvoid, "__glGetNamedBufferSubDataEXT_size(size)"), "data")], sideeffects=False),
+    GlFunction(Void, "glTextureBufferEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glMultiTexBufferEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLenum, "internalformat"), (GLbuffer, "buffer")]),
+    GlFunction(Void, "glNamedRenderbufferStorageEXT", [(GLrenderbuffer, "renderbuffer"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glGetNamedRenderbufferParameterivEXT", [(GLrenderbuffer, "renderbuffer"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(GLenum, "glCheckNamedFramebufferStatusEXT", [(GLframebuffer, "framebuffer"), (GLenum, "target")]),
+    GlFunction(Void, "glNamedFramebufferTexture1DEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glNamedFramebufferTexture2DEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glNamedFramebufferTexture3DEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
+    GlFunction(Void, "glNamedFramebufferRenderbufferEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
+    GlFunction(Void, "glGetNamedFramebufferAttachmentParameterivEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGenerateTextureMipmapEXT", [(GLtexture, "texture"), (GLenum, "target")]),
+    GlFunction(Void, "glGenerateMultiTexMipmapEXT", [(GLenum, "texunit"), (GLenum, "target")]),
+    GlFunction(Void, "glFramebufferDrawBufferEXT", [(GLframebuffer, "framebuffer"), (GLenum, "mode")]),
+    GlFunction(Void, "glFramebufferDrawBuffersEXT", [(GLframebuffer, "framebuffer"), (GLsizei, "n"), (Array(Const(GLenum), "n"), "bufs")]),
+    GlFunction(Void, "glFramebufferReadBufferEXT", [(GLframebuffer, "framebuffer"), (GLenum, "mode")]),
+    GlFunction(Void, "glGetFramebufferParameterivEXT", [(GLframebuffer, "framebuffer"), (GLenum, "pname"), Out(Array(GLint, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glNamedRenderbufferStorageMultisampleEXT", [(GLrenderbuffer, "renderbuffer"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glNamedRenderbufferStorageMultisampleCoverageEXT", [(GLrenderbuffer, "renderbuffer"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glNamedFramebufferTextureEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level")]),
+    GlFunction(Void, "glNamedFramebufferTextureLayerEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLint, "layer")]),
+    GlFunction(Void, "glNamedFramebufferTextureFaceEXT", [(GLframebuffer, "framebuffer"), (GLenum, "attachment"), (GLtexture, "texture"), (GLint, "level"), (GLenum, "face")]),
+    GlFunction(Void, "glTextureRenderbufferEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLuint, "renderbuffer")]),
+    GlFunction(Void, "glMultiTexRenderbufferEXT", [(GLenum, "texunit"), (GLenum, "target"), (GLuint, "renderbuffer")]),
+    GlFunction(Void, "glProgramUniform1dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x")]),
+    GlFunction(Void, "glProgramUniform2dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glProgramUniform3dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glProgramUniform4dEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glProgramUniform1dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (Array(Const(GLdouble), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*3"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix2x4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*2*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix3x4dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*3*4"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x2dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*2"), "value")]),
+    GlFunction(Void, "glProgramUniformMatrix4x3dvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLdouble), "count*4*3"), "value")]),
+    GlFunction(Void, "glVertexArrayVertexOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayColorOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayEdgeFlagOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayIndexOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayNormalOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayTexCoordOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayMultiTexCoordOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "texunit"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayFogCoordOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArraySecondaryColorOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayVertexAttribOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glVertexArrayVertexAttribIOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+    GlFunction(Void, "glEnableVertexArrayEXT", [(GLarray, "vaobj"), (GLenum, "array")]),
+    GlFunction(Void, "glDisableVertexArrayEXT", [(GLarray, "vaobj"), (GLenum, "array")]),
+    GlFunction(Void, "glEnableVertexArrayAttribEXT", [(GLarray, "vaobj"), (GLuint, "index")]),
+    GlFunction(Void, "glDisableVertexArrayAttribEXT", [(GLarray, "vaobj"), (GLuint, "index")]),
+    GlFunction(Void, "glGetVertexArrayIntegervEXT", [(GLarray, "vaobj"), (GLenum, "pname"), Out(Pointer(GLint), "param")]),
+    GlFunction(Void, "glGetVertexArrayPointervEXT", [(GLarray, "vaobj"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "param")]),
+    GlFunction(Void, "glGetVertexArrayIntegeri_vEXT", [(GLarray, "vaobj"), (GLuint, "index"), (GLenum, "pname"), Out(Pointer(GLint), "param")]),
+    GlFunction(Void, "glGetVertexArrayPointeri_vEXT", [(GLarray, "vaobj"), (GLuint, "index"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "param")]),
+
+    # GL_NV_explicit_multisample
+    GlFunction(Void, "glGetMultisamplefvNV", [(GLenum, "pname"), (GLuint, "index"), Out(Array(GLfloat, "2"), "val")], sideeffects=False),
+    GlFunction(Void, "glSampleMaskIndexedNV", [(GLuint, "index"), (GLbitfield, "mask")]),
+    GlFunction(Void, "glTexRenderbufferNV", [(GLenum, "target"), (GLuint, "renderbuffer")]),
+
+    # GL_NV_transform_feedback2
+    GlFunction(Void, "glBindTransformFeedbackNV", [(GLenum, "target"), (GLfeedback, "id")]),
+    GlFunction(Void, "glDeleteTransformFeedbacksNV", [(GLsizei, "n"), (Array(Const(GLfeedback), "n"), "ids")]),
+    GlFunction(Void, "glGenTransformFeedbacksNV", [(GLsizei, "n"), Out(Array(GLfeedback, "n"), "ids")]),
+    GlFunction(GLboolean, "glIsTransformFeedbackNV", [(GLfeedback, "id")], sideeffects=False),
+    GlFunction(Void, "glPauseTransformFeedbackNV", []),
+    GlFunction(Void, "glResumeTransformFeedbackNV", []),
+    GlFunction(Void, "glDrawTransformFeedbackNV", [(GLenum_mode, "mode"), (GLfeedback, "id")]),
+
+    # GL_AMD_performance_monitor
+    GlFunction(Void, "glGetPerfMonitorGroupsAMD", [Out(Pointer(GLint), "numGroups"), (GLsizei, "groupsSize"), Out(Array(GLuint, "groupsSize"), "groups")], sideeffects=False),
+    GlFunction(Void, "glGetPerfMonitorCountersAMD", [(GLuint, "group"), Out(Pointer(GLint), "numCounters"), Out(Pointer(GLint), "maxActiveCounters"), (GLsizei, "counterSize"), Out(Array(GLuint, "counterSize"), "counters")], sideeffects=False),
+    GlFunction(Void, "glGetPerfMonitorGroupStringAMD", [(GLuint, "group"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "groupString")], sideeffects=False),
+    GlFunction(Void, "glGetPerfMonitorCounterStringAMD", [(GLuint, "group"), (GLuint, "counter"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(Array(GLchar, "bufSize"), "counterString")], sideeffects=False),
+    GlFunction(Void, "glGetPerfMonitorCounterInfoAMD", [(GLuint, "group"), (GLuint, "counter"), (GLenum, "pname"), Out(OpaqueBlob(GLvoid, "__glGetPerfMonitorCounterInfoAMD_size(pname)"), "data")], sideeffects=False),
+    GlFunction(Void, "glGenPerfMonitorsAMD", [(GLsizei, "n"), Out(Array(GLuint, "n"), "monitors")]),
+    GlFunction(Void, "glDeletePerfMonitorsAMD", [(GLsizei, "n"), Out(Array(GLuint, "n"), "monitors")]),
+    GlFunction(Void, "glSelectPerfMonitorCountersAMD", [(GLuint, "monitor"), (GLboolean, "enable"), (GLuint, "group"), (GLint, "numCounters"), Out(Array(GLuint, "numCounters"), "counterList")]),
+    GlFunction(Void, "glBeginPerfMonitorAMD", [(GLuint, "monitor")]),
+    GlFunction(Void, "glEndPerfMonitorAMD", [(GLuint, "monitor")]),
+    GlFunction(Void, "glGetPerfMonitorCounterDataAMD", [(GLuint, "monitor"), (GLenum, "pname"), (GLsizei, "dataSize"), Out(Array(GLuint, "dataSize"), "data"), Out(Pointer(GLint), "bytesWritten")], sideeffects=False),
+
+    # GL_AMD_vertex_shader_tesselator
+    GlFunction(Void, "glTessellationFactorAMD", [(GLfloat, "factor")]),
+    GlFunction(Void, "glTessellationModeAMD", [(GLenum, "mode")]),
+
+    # GL_EXT_provoking_vertex
+    GlFunction(Void, "glProvokingVertexEXT", [(GLenum, "mode")]),
+
+    # GL_AMD_draw_buffers_blend
+    GlFunction(Void, "glBlendFuncIndexedAMD", [(GLuint, "buf"), (GLenum, "src"), (GLenum, "dst")]),
+    GlFunction(Void, "glBlendFuncSeparateIndexedAMD", [(GLuint, "buf"), (GLenum, "srcRGB"), (GLenum, "dstRGB"), (GLenum, "srcAlpha"), (GLenum, "dstAlpha")]),
+    GlFunction(Void, "glBlendEquationIndexedAMD", [(GLuint, "buf"), (GLenum, "mode")]),
+    GlFunction(Void, "glBlendEquationSeparateIndexedAMD", [(GLuint, "buf"), (GLenum, "modeRGB"), (GLenum, "modeAlpha")]),
+
+    # GL_APPLE_texture_range
+    GlFunction(Void, "glTextureRangeAPPLE", [(GLenum, "target"), (GLsizei, "length"), (Blob(Const(GLvoid), "length"), "pointer")]),
+    GlFunction(Void, "glGetTexParameterPointervAPPLE", [(GLenum, "target"), (GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
+
+    # GL_APPLE_vertex_program_evaluators
+    GlFunction(Void, "glEnableVertexAttribAPPLE", [(GLuint, "index"), (GLenum, "pname")]),
+    GlFunction(Void, "glDisableVertexAttribAPPLE", [(GLuint, "index"), (GLenum, "pname")]),
+    GlFunction(GLboolean, "glIsVertexAttribEnabledAPPLE", [(GLuint, "index"), (GLenum, "pname")], sideeffects=False),
+    GlFunction(Void, "glMapVertexAttrib1dAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "stride"), (GLint, "order"), (OpaqueArray(Const(GLdouble), "__glMapVertexAttrib1dAPPLE_size(size, stride, order)"), "points")]),
+    GlFunction(Void, "glMapVertexAttrib1fAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "stride"), (GLint, "order"), (OpaqueArray(Const(GLfloat), "__glMapVertexAttrib1fAPPLE_size(size, stride, order)"), "points")]),
+    GlFunction(Void, "glMapVertexAttrib2dAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLdouble, "u1"), (GLdouble, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLdouble, "v1"), (GLdouble, "v2"), (GLint, "vstride"), (GLint, "vorder"), (OpaqueArray(Const(GLdouble), "__glMapVertexAttrib2dAPPLE_size(size, ustride, uorder, vstride, vorder)"), "points")]),
+    GlFunction(Void, "glMapVertexAttrib2fAPPLE", [(GLuint, "index"), (GLuint, "size"), (GLfloat, "u1"), (GLfloat, "u2"), (GLint, "ustride"), (GLint, "uorder"), (GLfloat, "v1"), (GLfloat, "v2"), (GLint, "vstride"), (GLint, "vorder"), (OpaqueArray(Const(GLfloat), "__glMapVertexAttrib2fAPPLE_size(size, ustride, uorder, vstride, vorder)"), "points")]),
+
+    # GL_APPLE_object_purgeable
+    GlFunction(GLenum, "glObjectPurgeableAPPLE", [(GLenum, "objectType"), (GLuint, "name"), (GLenum, "option")]),
+    GlFunction(GLenum, "glObjectUnpurgeableAPPLE", [(GLenum, "objectType"), (GLuint, "name"), (GLenum, "option")]),
+    GlFunction(Void, "glGetObjectParameterivAPPLE", [(GLenum, "objectType"), (GLuint, "name"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetObjectParameterivAPPLE_size(pname)"), "params")], sideeffects=False),
+
+    # GL_NV_video_capture
+    GlFunction(Void, "glBeginVideoCaptureNV", [(GLuint, "video_capture_slot")]),
+    GlFunction(Void, "glBindVideoCaptureStreamBufferNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "frame_region"), (GLintptrARB, "offset")]),
+    GlFunction(Void, "glBindVideoCaptureStreamTextureNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "frame_region"), (GLenum, "target"), (GLuint, "texture")]),
+    GlFunction(Void, "glEndVideoCaptureNV", [(GLuint, "video_capture_slot")]),
+    GlFunction(Void, "glGetVideoCaptureivNV", [(GLuint, "video_capture_slot"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoCaptureivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVideoCaptureStreamivNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), Out(OpaqueArray(GLint, "__glGetVideoCaptureStreamivNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVideoCaptureStreamfvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), Out(OpaqueArray(GLfloat, "__glGetVideoCaptureStreamfvNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVideoCaptureStreamdvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVideoCaptureStreamdvNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(GLenum, "glVideoCaptureNV", [(GLuint, "video_capture_slot"), Out(Pointer(GLuint), "sequence_num"), Out(Pointer(GLuint64EXT), "capture_time")]),
+    GlFunction(Void, "glVideoCaptureStreamParameterivNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), (OpaqueArray(Const(GLint), "__glVideoCaptureStreamParameterivNV_size(pname)"), "params")]),
+    GlFunction(Void, "glVideoCaptureStreamParameterfvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), (OpaqueArray(Const(GLfloat), "__glVideoCaptureStreamParameterfvNV_size(pname)"), "params")]),
+    GlFunction(Void, "glVideoCaptureStreamParameterdvNV", [(GLuint, "video_capture_slot"), (GLuint, "stream"), (GLenum, "pname"), (OpaqueArray(Const(GLdouble), "__glVideoCaptureStreamParameterdvNV_size(pname)"), "params")]),
+
+    # GL_NV_copy_image
+    GlFunction(Void, "glCopyImageSubDataNV", [(GLuint, "srcName"), (GLenum, "srcTarget"), (GLint, "srcLevel"), (GLint, "srcX"), (GLint, "srcY"), (GLint, "srcZ"), (GLuint, "dstName"), (GLenum, "dstTarget"), (GLint, "dstLevel"), (GLint, "dstX"), (GLint, "dstY"), (GLint, "dstZ"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
+
+    # GL_EXT_separate_shader_objects
+    GlFunction(Void, "glUseShaderProgramEXT", [(GLenum, "type"), (GLprogram, "program")]),
+    GlFunction(Void, "glActiveProgramEXT", [(GLprogram, "program")]),
+    GlFunction(GLprogram, "glCreateShaderProgramEXT", [(GLenum, "type"), (Const(GLstring), "string")]),
+
+    # GL_NV_shader_buffer_load
+    GlFunction(Void, "glMakeBufferResidentNV", [(GLenum, "target"), (GLenum, "access")]),
+    GlFunction(Void, "glMakeBufferNonResidentNV", [(GLenum, "target")]),
+    GlFunction(GLboolean, "glIsBufferResidentNV", [(GLenum, "target")], sideeffects=False),
+    GlFunction(Void, "glMakeNamedBufferResidentNV", [(GLuint, "buffer"), (GLenum, "access")]),
+    GlFunction(Void, "glMakeNamedBufferNonResidentNV", [(GLuint, "buffer")]),
+    GlFunction(GLboolean, "glIsNamedBufferResidentNV", [(GLuint, "buffer")], sideeffects=False),
+    GlFunction(Void, "glGetBufferParameterui64vNV", [(GLenum, "target"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetBufferParameterui64vNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetNamedBufferParameterui64vNV", [(GLuint, "buffer"), (GLenum, "pname"), Out(OpaqueArray(GLuint64EXT, "__glGetNamedBufferParameterui64vNV_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetIntegerui64vNV", [(GLenum, "value"), Out(OpaqueArray(GLuint64EXT, "__glGetIntegerui64vNV_size(value)"), "result")], sideeffects=False),
+    GlFunction(Void, "glUniformui64NV", [(GLint, "location"), (GLuint64EXT, "value")]),
+    GlFunction(Void, "glUniformui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
+    GlFunction(Void, "glGetUniformui64vNV", [(GLuint, "program"), (GLint, "location"), Out(OpaqueArray(GLuint64EXT, "__glGetUniformui64vNV_size(program, location)"), "params")], sideeffects=False),
+    GlFunction(Void, "glProgramUniformui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "value")]),
+    GlFunction(Void, "glProgramUniformui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
+
+    # GL_NV_vertex_buffer_unified_memory
+    GlFunction(Void, "glBufferAddressRangeNV", [(GLenum, "pname"), (GLuint, "index"), (GLuint64EXT, "address"), (GLsizeiptr, "length")]),
+    GlFunction(Void, "glVertexFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glNormalFormatNV", [(GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glColorFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glIndexFormatNV", [(GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glTexCoordFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glEdgeFlagFormatNV", [(GLsizei, "stride")]),
+    GlFunction(Void, "glSecondaryColorFormatNV", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glFogCoordFormatNV", [(GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glVertexAttribFormatNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLboolean, "normalized"), (GLsizei, "stride")]),
+    GlFunction(Void, "glVertexAttribIFormatNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
+    GlFunction(Void, "glGetIntegerui64i_vNV", [(GLenum, "value"), (GLuint, "index"), Out(OpaqueArray(GLuint64EXT, "__glGetIntegerui64i_vNV_size(value)"), "result")], sideeffects=False),
+
+    # GL_NV_texture_barrier
+    GlFunction(Void, "glTextureBarrierNV", []),
+
+    # GL_EXT_shader_image_load_store
+    GlFunction(Void, "glBindImageTextureEXT", [(GLuint, "index"), (GLtexture, "texture"), (GLint, "level"), (GLboolean, "layered"), (GLint, "layer"), (GLenum, "access"), (GLint, "format")]),
+    GlFunction(Void, "glMemoryBarrierEXT", [(GLbitfield_barrier, "barriers")]),
+
+    # GL_EXT_vertex_attrib_64bit
+    GlFunction(Void, "glVertexAttribL1dEXT", [(GLuint, "index"), (GLdouble, "x")]),
+    GlFunction(Void, "glVertexAttribL2dEXT", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y")]),
+    GlFunction(Void, "glVertexAttribL3dEXT", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z")]),
+    GlFunction(Void, "glVertexAttribL4dEXT", [(GLuint, "index"), (GLdouble, "x"), (GLdouble, "y"), (GLdouble, "z"), (GLdouble, "w")]),
+    GlFunction(Void, "glVertexAttribL1dvEXT", [(GLuint, "index"), (Pointer(Const(GLdouble)), "v")]),
+    GlFunction(Void, "glVertexAttribL2dvEXT", [(GLuint, "index"), (Array(Const(GLdouble), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribL3dvEXT", [(GLuint, "index"), (Array(Const(GLdouble), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribL4dvEXT", [(GLuint, "index"), (Array(Const(GLdouble), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribLPointerEXT", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (Blob(Const(GLvoid), "size"), "pointer")]),
+    GlFunction(Void, "glGetVertexAttribLdvEXT", [(GLuint, "index"), (GLenum, "pname"), Out(OpaqueArray(GLdouble, "__glGetVertexAttribLdvEXT_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glVertexArrayVertexAttribLOffsetEXT", [(GLarray, "vaobj"), (GLuint, "buffer"), (GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (GLintptr, "offset")]),
+
+    # GL_NV_gpu_program5
+    GlFunction(Void, "glProgramSubroutineParametersuivNV", [(GLenum, "target"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "params")]),
+    GlFunction(Void, "glGetProgramSubroutineParameteruivNV", [(GLenum, "target"), (GLuint, "index"), Out(OpaqueArray(GLuint, "__glGetProgramSubroutineParameteruivNV_size(target)"), "param")], sideeffects=False),
+
+    # GL_NV_gpu_shader5
+    GlFunction(Void, "glUniform1i64NV", [(GLint, "location"), (GLint64EXT, "x")]),
+    GlFunction(Void, "glUniform2i64NV", [(GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y")]),
+    GlFunction(Void, "glUniform3i64NV", [(GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z")]),
+    GlFunction(Void, "glUniform4i64NV", [(GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z"), (GLint64EXT, "w")]),
+    GlFunction(Void, "glUniform1i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count"), "value")]),
+    GlFunction(Void, "glUniform2i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4i64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*4"), "value")]),
+    GlFunction(Void, "glUniform1ui64NV", [(GLint, "location"), (GLuint64EXT, "x")]),
+    GlFunction(Void, "glUniform2ui64NV", [(GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y")]),
+    GlFunction(Void, "glUniform3ui64NV", [(GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z")]),
+    GlFunction(Void, "glUniform4ui64NV", [(GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z"), (GLuint64EXT, "w")]),
+    GlFunction(Void, "glUniform1ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
+    GlFunction(Void, "glUniform2ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*2"), "value")]),
+    GlFunction(Void, "glUniform3ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*3"), "value")]),
+    GlFunction(Void, "glUniform4ui64vNV", [(GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*4"), "value")]),
+    GlFunction(Void, "glGetUniformi64vNV", [(GLuint, "program"), (GLint, "location"), Out(OpaqueArray(GLint64EXT, "__glGetUniformi64vNV_size(location)"), "params")], sideeffects=False),
+    GlFunction(Void, "glProgramUniform1i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x")]),
+    GlFunction(Void, "glProgramUniform2i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y")]),
+    GlFunction(Void, "glProgramUniform3i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z")]),
+    GlFunction(Void, "glProgramUniform4i64NV", [(GLuint, "program"), (GLint, "location"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z"), (GLint64EXT, "w")]),
+    GlFunction(Void, "glProgramUniform1i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4i64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLint64EXT), "count*4"), "value")]),
+    GlFunction(Void, "glProgramUniform1ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x")]),
+    GlFunction(Void, "glProgramUniform2ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y")]),
+    GlFunction(Void, "glProgramUniform3ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z")]),
+    GlFunction(Void, "glProgramUniform4ui64NV", [(GLuint, "program"), (GLint, "location"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z"), (GLuint64EXT, "w")]),
+    GlFunction(Void, "glProgramUniform1ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count"), "value")]),
+    GlFunction(Void, "glProgramUniform2ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*2"), "value")]),
+    GlFunction(Void, "glProgramUniform3ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*3"), "value")]),
+    GlFunction(Void, "glProgramUniform4ui64vNV", [(GLuint, "program"), (GLint, "location"), (GLsizei, "count"), (Array(Const(GLuint64EXT), "count*4"), "value")]),
+
+    # GL_NV_vertex_attrib_integer_64bit
+    GlFunction(Void, "glVertexAttribL1i64NV", [(GLuint, "index"), (GLint64EXT, "x")]),
+    GlFunction(Void, "glVertexAttribL2i64NV", [(GLuint, "index"), (GLint64EXT, "x"), (GLint64EXT, "y")]),
+    GlFunction(Void, "glVertexAttribL3i64NV", [(GLuint, "index"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z")]),
+    GlFunction(Void, "glVertexAttribL4i64NV", [(GLuint, "index"), (GLint64EXT, "x"), (GLint64EXT, "y"), (GLint64EXT, "z"), (GLint64EXT, "w")]),
+    GlFunction(Void, "glVertexAttribL1i64vNV", [(GLuint, "index"), (Pointer(Const(GLint64EXT)), "v")]),
+    GlFunction(Void, "glVertexAttribL2i64vNV", [(GLuint, "index"), (Array(Const(GLint64EXT), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribL3i64vNV", [(GLuint, "index"), (Array(Const(GLint64EXT), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribL4i64vNV", [(GLuint, "index"), (Array(Const(GLint64EXT), "4"), "v")]),
+    GlFunction(Void, "glVertexAttribL1ui64NV", [(GLuint, "index"), (GLuint64EXT, "x")]),
+    GlFunction(Void, "glVertexAttribL2ui64NV", [(GLuint, "index"), (GLuint64EXT, "x"), (GLuint64EXT, "y")]),
+    GlFunction(Void, "glVertexAttribL3ui64NV", [(GLuint, "index"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z")]),
+    GlFunction(Void, "glVertexAttribL4ui64NV", [(GLuint, "index"), (GLuint64EXT, "x"), (GLuint64EXT, "y"), (GLuint64EXT, "z"), (GLuint64EXT, "w")]),
+    GlFunction(Void, "glVertexAttribL1ui64vNV", [(GLuint, "index"), (Pointer(Const(GLuint64EXT)), "v")]),
+    GlFunction(Void, "glVertexAttribL2ui64vNV", [(GLuint, "index"), (Array(Const(GLuint64EXT), "2"), "v")]),
+    GlFunction(Void, "glVertexAttribL3ui64vNV", [(GLuint, "index"), (Array(Const(GLuint64EXT), "3"), "v")]),
+    GlFunction(Void, "glVertexAttribL4ui64vNV", [(GLuint, "index"), (Array(Const(GLuint64EXT), "4"), "v")]),
+    GlFunction(Void, "glGetVertexAttribLi64vNV", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLint64EXT, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glGetVertexAttribLui64vNV", [(GLuint, "index"), (GLenum, "pname"), Out(Array(GLuint64EXT, "__gl_param_size(pname)"), "params")], sideeffects=False),
+    GlFunction(Void, "glVertexAttribLFormatNV", [(GLuint, "index"), (GLint, "size"), (GLenum, "type"), (GLsizei, "stride")]),
+
+    # GL_AMD_name_gen_delete
+    GlFunction(Void, "glGenNamesAMD", [(GLenum, "identifier"), (GLuint, "num"), Out(Array(GLuint, "num"), "names")]),
+    GlFunction(Void, "glDeleteNamesAMD", [(GLenum, "identifier"), (GLuint, "num"), (Array(Const(GLuint), "num"), "names")]),
+    GlFunction(GLboolean, "glIsNameAMD", [(GLenum, "identifier"), (GLuint, "name")], sideeffects=False),
+
+    # GL_AMD_debug_output
+    GlFunction(Void, "glDebugMessageEnableAMD", [(GLenum, "category"), (GLenum, "severity"), (GLsizei, "count"), (Array(Const(GLuint), "count"), "ids"), (GLboolean, "enabled")], sideeffects=False),
+    GlFunction(Void, "glDebugMessageInsertAMD", [(GLenum, "category"), (GLenum, "severity"), (GLuint, "id"), (GLsizei, "length"), (Array(Const(GLchar), "length"), "buf")], sideeffects=False),
+    GlFunction(Void, "glDebugMessageCallbackAMD", [(GLDEBUGPROCAMD, "callback"), (Opaque("GLvoid *"), "userParam")], sideeffects=False),
+    GlFunction(GLuint, "glGetDebugMessageLogAMD", [(GLuint, "count"), (GLsizei, "bufsize"), Out(Array(GLenum, "count"), "categories"), Out(Array(GLuint, "count"), "severities"), Out(Array(GLuint, "count"), "ids"), Out(Array(GLsizei, "count"), "lengths"), Out(Array(GLchar, "bufsize"), "message")], sideeffects=False),
+
+    # GL_NV_texture_multisample
+    GlFunction(Void, "glTexImage2DMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedSampleLocations")]),
+    GlFunction(Void, "glTexImage3DMultisampleCoverageNV", [(GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedSampleLocations")]),
+    GlFunction(Void, "glTextureImage2DMultisampleNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "samples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedSampleLocations")]),
+    GlFunction(Void, "glTextureImage3DMultisampleNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "samples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedSampleLocations")]),
+    GlFunction(Void, "glTextureImage2DMultisampleCoverageNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLboolean, "fixedSampleLocations")]),
+    GlFunction(Void, "glTextureImage3DMultisampleCoverageNV", [(GLuint, "texture"), (GLenum, "target"), (GLsizei, "coverageSamples"), (GLsizei, "colorSamples"), (GLint, "internalFormat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth"), (GLboolean, "fixedSampleLocations")]),
+
+    # GL_AMD_sample_positions
+    GlFunction(Void, "glSetMultisamplefvAMD", [(GLenum, "pname"), (GLuint, "index"), (Array(Const(GLfloat), "2"), "val")]),
+
+    # GL_EXT_x11_sync_object
+    GlFunction(GLsync, "glImportSyncEXT", [(GLenum, "external_sync_type"), (GLintptr, "external_sync"), (GLbitfield, "flags")]),
+
+    # GL_AMD_multi_draw_indirect
+    GlFunction(Void, "glMultiDrawArraysIndirectAMD", [(GLenum_mode, "mode"), (OpaquePointer(Const(GLvoid)), "indirect"), (GLsizei, "primcount"), (GLsizei, "stride")]),
+    GlFunction(Void, "glMultiDrawElementsIndirectAMD", [(GLenum_mode, "mode"), (GLenum, "type"), (OpaquePointer(Const(GLvoid)), "indirect"), (GLsizei, "primcount"), (GLsizei, "stride")]),
+
+    # GL_KTX_buffer_region
+    # XXX: http://www.west.net/~brittain/3dsmax2.htm does not mention EXT suffix
+    GlFunction(GLregion, "glNewBufferRegion", [(GLenum, "type")]),
+    GlFunction(Void, "glDeleteBufferRegion", [(GLregion, "region")]),
+    GlFunction(Void, "glReadBufferRegion", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glDrawBufferRegion", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "xDest"), (GLint, "yDest")]),
+    GlFunction(GLuint, "glBufferRegionEnabled", [], sideeffects=False),
+    # XXX: but GLEW uses EXT suffix
+    GlFunction(GLregion, "glNewBufferRegionEXT", [(GLenum, "type")]),
+    GlFunction(Void, "glDeleteBufferRegionEXT", [(GLregion, "region")]),
+    GlFunction(Void, "glReadBufferRegionEXT", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+    GlFunction(Void, "glDrawBufferRegionEXT", [(GLregion, "region"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "xDest"), (GLint, "yDest")]),
+    GlFunction(GLuint, "glBufferRegionEnabledEXT", [], sideeffects=False),
+
+    # GL_WIN_swap_hint
+    GlFunction(Void, "glAddSwapHintRectWIN", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
+])
+
+
+# memcpy's prototype.  We don't really want to trace all memcpy calls -- just
+# emit a few fake memcpy calls --, which is why the prototype is not together
+# with the rest.
+memcpy = Function(Void, "memcpy", [(GLmap, "dest"), (Blob(Const(Void), "n"), "src"), (SizeT, "n")])
diff --git a/specs/glparams.py b/specs/glparams.py
new file mode 100644 (file)
index 0000000..8636877
--- /dev/null
@@ -0,0 +1,2985 @@
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+'''Describe GL parameters.'''
+
+
+from stdapi import *
+
+from gltypes import *
+
+
+# Shorthands for the types
+X = None # To be determined, merely an enum
+B = GLboolean
+I = GLint
+I64 = GLint64
+E = GLenum
+F = GLfloat
+D = GLdouble
+P = OpaquePointer(Void)
+S = CString
+H = GLhandleARB
+
+# A underscore prefix (e.g., _glGet) is used to skip automatic code generation
+# for parameters that are obtained through other ways.
+
+parameters = [
+    # (functions, type, count, name) # value
+    ("",       X,      1,      "GL_ZERO"),     # 0x0000
+    ("",       X,      1,      "GL_ONE"),      # 0x0001
+
+    # These are enumerated separately in GLenum_mode
+    #("",      X,      1,      "GL_POINTS"),   # 0x0000
+    #("",      X,      1,      "GL_LINES"),    # 0x0001
+    #("",      X,      1,      "GL_LINE_LOOP"),        # 0x0002
+    #("",      X,      1,      "GL_LINE_STRIP"),       # 0x0003
+    #("",      X,      1,      "GL_TRIANGLES"),        # 0x0004
+    #("",      X,      1,      "GL_TRIANGLE_STRIP"),   # 0x0005
+    #("",      X,      1,      "GL_TRIANGLE_FAN"),     # 0x0006
+    #("",      X,      1,      "GL_QUADS"),    # 0x0007
+    #("",      X,      1,      "GL_QUAD_STRIP"),       # 0x0008
+    #("",      X,      1,      "GL_POLYGON"),  # 0x0009
+    #("",      X,      1,      "GL_LINES_ADJACENCY"),  # 0x000A
+    #("",      X,      1,      "GL_LINE_STRIP_ADJACENCY"),     # 0x000B
+    #("",      X,      1,      "GL_TRIANGLES_ADJACENCY"),      # 0x000C
+    #("",      X,      1,      "GL_TRIANGLE_STRIP_ADJACENCY"), # 0x000D
+    #("",      X,      1,      "GL_PATCHES"),  # 0x000E
+
+    ("",       X,      1,      "GL_ACCUM"),    # 0x0100
+    ("",       X,      1,      "GL_LOAD"),     # 0x0101
+    ("",       X,      1,      "GL_RETURN"),   # 0x0102
+    ("",       X,      1,      "GL_MULT"),     # 0x0103
+    ("",       X,      1,      "GL_ADD"),      # 0x0104
+    ("",       X,      1,      "GL_NEVER"),    # 0x0200
+    ("",       X,      1,      "GL_LESS"),     # 0x0201
+    ("",       X,      1,      "GL_EQUAL"),    # 0x0202
+    ("",       X,      1,      "GL_LEQUAL"),   # 0x0203
+    ("",       X,      1,      "GL_GREATER"),  # 0x0204
+    ("",       X,      1,      "GL_NOTEQUAL"), # 0x0205
+    ("",       X,      1,      "GL_GEQUAL"),   # 0x0206
+    ("",       X,      1,      "GL_ALWAYS"),   # 0x0207
+    ("",       X,      1,      "GL_SRC_COLOR"),        # 0x0300
+    ("",       X,      1,      "GL_ONE_MINUS_SRC_COLOR"),      # 0x0301
+    ("",       X,      1,      "GL_SRC_ALPHA"),        # 0x0302
+    ("",       X,      1,      "GL_ONE_MINUS_SRC_ALPHA"),      # 0x0303
+    ("",       X,      1,      "GL_DST_ALPHA"),        # 0x0304
+    ("",       X,      1,      "GL_ONE_MINUS_DST_ALPHA"),      # 0x0305
+    ("",       X,      1,      "GL_DST_COLOR"),        # 0x0306
+    ("",       X,      1,      "GL_ONE_MINUS_DST_COLOR"),      # 0x0307
+    ("",       X,      1,      "GL_SRC_ALPHA_SATURATE"),       # 0x0308
+    ("",       X,      1,      "GL_FRONT_LEFT"),       # 0x0400
+    ("",       X,      1,      "GL_FRONT_RIGHT"),      # 0x0401
+    ("",       X,      1,      "GL_BACK_LEFT"),        # 0x0402
+    ("",       X,      1,      "GL_BACK_RIGHT"),       # 0x0403
+    ("",       X,      1,      "GL_FRONT"),    # 0x0404
+    ("",       X,      1,      "GL_BACK"),     # 0x0405
+    ("",       X,      1,      "GL_LEFT"),     # 0x0406
+    ("",       X,      1,      "GL_RIGHT"),    # 0x0407
+    ("",       X,      1,      "GL_FRONT_AND_BACK"),   # 0x0408
+    ("",       X,      1,      "GL_AUX0"),     # 0x0409
+    ("",       X,      1,      "GL_AUX1"),     # 0x040A
+    ("",       X,      1,      "GL_AUX2"),     # 0x040B
+    ("",       X,      1,      "GL_AUX3"),     # 0x040C
+    ("",       X,      1,      "GL_INVALID_ENUM"),     # 0x0500
+    ("",       X,      1,      "GL_INVALID_VALUE"),    # 0x0501
+    ("",       X,      1,      "GL_INVALID_OPERATION"),        # 0x0502
+    ("",       X,      1,      "GL_STACK_OVERFLOW"),   # 0x0503
+    ("",       X,      1,      "GL_STACK_UNDERFLOW"),  # 0x0504
+    ("",       X,      1,      "GL_OUT_OF_MEMORY"),    # 0x0505
+    ("",       X,      1,      "GL_INVALID_FRAMEBUFFER_OPERATION"),    # 0x0506
+    ("",       X,      1,      "GL_2D"),       # 0x0600
+    ("",       X,      1,      "GL_3D"),       # 0x0601
+    ("",       X,      1,      "GL_3D_COLOR"), # 0x0602
+    ("",       X,      1,      "GL_3D_COLOR_TEXTURE"), # 0x0603
+    ("",       X,      1,      "GL_4D_COLOR_TEXTURE"), # 0x0604
+    ("",       X,      1,      "GL_PASS_THROUGH_TOKEN"),       # 0x0700
+    ("",       X,      1,      "GL_POINT_TOKEN"),      # 0x0701
+    ("",       X,      1,      "GL_LINE_TOKEN"),       # 0x0702
+    ("",       X,      1,      "GL_POLYGON_TOKEN"),    # 0x0703
+    ("",       X,      1,      "GL_BITMAP_TOKEN"),     # 0x0704
+    ("",       X,      1,      "GL_DRAW_PIXEL_TOKEN"), # 0x0705
+    ("",       X,      1,      "GL_COPY_PIXEL_TOKEN"), # 0x0706
+    ("",       X,      1,      "GL_LINE_RESET_TOKEN"), # 0x0707
+    ("",       X,      1,      "GL_EXP"),      # 0x0800
+    ("",       X,      1,      "GL_EXP2"),     # 0x0801
+    ("",       X,      1,      "GL_CW"),       # 0x0900
+    ("",       X,      1,      "GL_CCW"),      # 0x0901
+    ("",       X,      1,      "GL_COEFF"),    # 0x0A00
+    ("",       X,      1,      "GL_ORDER"),    # 0x0A01
+    ("",       X,      1,      "GL_DOMAIN"),   # 0x0A02
+    ("glGet",  F,      4,      "GL_CURRENT_COLOR"),    # 0x0B00
+    ("glGet",  F,      1,      "GL_CURRENT_INDEX"),    # 0x0B01
+    ("glGet",  F,      3,      "GL_CURRENT_NORMAL"),   # 0x0B02
+    ("glGet",  F,      4,      "GL_CURRENT_TEXTURE_COORDS"),   # 0x0B03
+    ("glGet",  F,      4,      "GL_CURRENT_RASTER_COLOR"),     # 0x0B04
+    ("glGet",  F,      1,      "GL_CURRENT_RASTER_INDEX"),     # 0x0B05
+    ("glGet",  F,      4,      "GL_CURRENT_RASTER_TEXTURE_COORDS"),    # 0x0B06
+    ("glGet",  F,      4,      "GL_CURRENT_RASTER_POSITION"),  # 0x0B07
+    ("glGet",  I,      1,      "GL_CURRENT_RASTER_POSITION_VALID"),    # 0x0B08
+    ("glGet",  F,      1,      "GL_CURRENT_RASTER_DISTANCE"),  # 0x0B09
+    ("glGet",  B,      1,      "GL_POINT_SMOOTH"),     # 0x0B10
+    ("glGet",  F,      1,      "GL_POINT_SIZE"),       # 0x0B11
+    ("glGet",  F,      2,      "GL_POINT_SIZE_RANGE"), # 0x0B12
+    ("glGet",  F,      1,      "GL_POINT_SIZE_GRANULARITY"),   # 0x0B13
+    ("glGet",  B,      1,      "GL_LINE_SMOOTH"),      # 0x0B20
+    ("glGet",  F,      1,      "GL_LINE_WIDTH"),       # 0x0B21
+    ("glGet",  F,      2,      "GL_LINE_WIDTH_RANGE"), # 0x0B22
+    ("glGet",  F,      1,      "GL_LINE_WIDTH_GRANULARITY"),   # 0x0B23
+    ("glGet",  B,      1,      "GL_LINE_STIPPLE"),     # 0x0B24
+    ("glGet",  I,      1,      "GL_LINE_STIPPLE_PATTERN"),     # 0x0B25
+    ("glGet",  I,      1,      "GL_LINE_STIPPLE_REPEAT"),      # 0x0B26
+    ("glGet",  E,      1,      "GL_LIST_MODE"),        # 0x0B30
+    ("glGet",  I,      1,      "GL_MAX_LIST_NESTING"), # 0x0B31
+    ("glGet",  I,      1,      "GL_LIST_BASE"),        # 0x0B32
+    ("glGet",  I,      1,      "GL_LIST_INDEX"),       # 0x0B33
+    ("glGet",  E,      2,      "GL_POLYGON_MODE"),     # 0x0B40
+    ("glGet",  B,      1,      "GL_POLYGON_SMOOTH"),   # 0x0B41
+    ("glGet",  B,      1,      "GL_POLYGON_STIPPLE"),  # 0x0B42
+    ("glGet",  B,      1,      "GL_EDGE_FLAG"),        # 0x0B43
+    ("glGet",  B,      1,      "GL_CULL_FACE"),        # 0x0B44
+    ("glGet",  E,      1,      "GL_CULL_FACE_MODE"),   # 0x0B45
+    ("glGet",  E,      1,      "GL_FRONT_FACE"),       # 0x0B46
+    ("glGet",  B,      1,      "GL_LIGHTING"), # 0x0B50
+    ("glGet",  B,      1,      "GL_LIGHT_MODEL_LOCAL_VIEWER"), # 0x0B51
+    ("glGet",  B,      1,      "GL_LIGHT_MODEL_TWO_SIDE"),     # 0x0B52
+    ("glGet",  F,      4,      "GL_LIGHT_MODEL_AMBIENT"),      # 0x0B53
+    ("glGet",  E,      1,      "GL_SHADE_MODEL"),      # 0x0B54
+    ("glGet",  E,      1,      "GL_COLOR_MATERIAL_FACE"),      # 0x0B55
+    ("glGet",  E,      1,      "GL_COLOR_MATERIAL_PARAMETER"), # 0x0B56
+    ("glGet",  B,      1,      "GL_COLOR_MATERIAL"),   # 0x0B57
+    ("glGet",  B,      1,      "GL_FOG"),      # 0x0B60
+    ("glGet",  I,      1,      "GL_FOG_INDEX"),        # 0x0B61
+    ("glGet",  F,      1,      "GL_FOG_DENSITY"),      # 0x0B62
+    ("glGet",  F,      1,      "GL_FOG_START"),        # 0x0B63
+    ("glGet",  F,      1,      "GL_FOG_END"),  # 0x0B64
+    ("glGet",  E,      1,      "GL_FOG_MODE"), # 0x0B65
+    ("glGet",  F,      4,      "GL_FOG_COLOR"),        # 0x0B66
+    ("glGet",  F,      2,      "GL_DEPTH_RANGE"),      # 0x0B70
+    ("glGet",  B,      1,      "GL_DEPTH_TEST"),       # 0x0B71
+    ("glGet",  B,      1,      "GL_DEPTH_WRITEMASK"),  # 0x0B72
+    ("glGet",  F,      1,      "GL_DEPTH_CLEAR_VALUE"),        # 0x0B73
+    ("glGet",  E,      1,      "GL_DEPTH_FUNC"),       # 0x0B74
+    ("glGet",  F,      4,      "GL_ACCUM_CLEAR_VALUE"),        # 0x0B80
+    ("glGet",  B,      1,      "GL_STENCIL_TEST"),     # 0x0B90
+    ("glGet",  I,      1,      "GL_STENCIL_CLEAR_VALUE"),      # 0x0B91
+    ("glGet",  E,      1,      "GL_STENCIL_FUNC"),     # 0x0B92
+    ("glGet",  I,      1,      "GL_STENCIL_VALUE_MASK"),       # 0x0B93
+    ("glGet",  E,      1,      "GL_STENCIL_FAIL"),     # 0x0B94
+    ("glGet",  E,      1,      "GL_STENCIL_PASS_DEPTH_FAIL"),  # 0x0B95
+    ("glGet",  E,      1,      "GL_STENCIL_PASS_DEPTH_PASS"),  # 0x0B96
+    ("glGet",  I,      1,      "GL_STENCIL_REF"),      # 0x0B97
+    ("glGet",  I,      1,      "GL_STENCIL_WRITEMASK"),        # 0x0B98
+    ("glGet",  E,      1,      "GL_MATRIX_MODE"),      # 0x0BA0
+    ("glGet",  B,      1,      "GL_NORMALIZE"),        # 0x0BA1
+    ("glGet",  I,      4,      "GL_VIEWPORT"), # 0x0BA2
+    ("glGet",  I,      1,      "GL_MODELVIEW_STACK_DEPTH"),    # 0x0BA3
+    ("glGet",  I,      1,      "GL_PROJECTION_STACK_DEPTH"),   # 0x0BA4
+    ("glGet",  I,      1,      "GL_TEXTURE_STACK_DEPTH"),      # 0x0BA5
+    ("glGet",  F,      16,     "GL_MODELVIEW_MATRIX"), # 0x0BA6
+    ("glGet",  F,      16,     "GL_PROJECTION_MATRIX"),        # 0x0BA7
+    ("glGet",  F,      16,     "GL_TEXTURE_MATRIX"),   # 0x0BA8
+    ("glGet",  I,      1,      "GL_ATTRIB_STACK_DEPTH"),       # 0x0BB0
+    ("glGet",  I,      1,      "GL_CLIENT_ATTRIB_STACK_DEPTH"),        # 0x0BB1
+    ("glGet",  B,      1,      "GL_ALPHA_TEST"),       # 0x0BC0
+    ("glGet",  E,      1,      "GL_ALPHA_TEST_FUNC"),  # 0x0BC1
+    ("glGet",  F,      1,      "GL_ALPHA_TEST_REF"),   # 0x0BC2
+    ("glGet",  B,      1,      "GL_DITHER"),   # 0x0BD0
+    ("glGet",  E,      1,      "GL_BLEND_DST"),        # 0x0BE0
+    ("glGet",  E,      1,      "GL_BLEND_SRC"),        # 0x0BE1
+    ("glGet",  B,      1,      "GL_BLEND"),    # 0x0BE2
+    ("glGet",  E,      1,      "GL_LOGIC_OP_MODE"),    # 0x0BF0
+    ("glGet",  B,      1,      "GL_INDEX_LOGIC_OP"),   # 0x0BF1
+    ("glGet",  B,      1,      "GL_COLOR_LOGIC_OP"),   # 0x0BF2
+    ("glGet",  I,      1,      "GL_AUX_BUFFERS"),      # 0x0C00
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER"),      # 0x0C01
+    ("glGet",  E,      1,      "GL_READ_BUFFER"),      # 0x0C02
+    ("glGet",  I,      4,      "GL_SCISSOR_BOX"),      # 0x0C10
+    ("glGet",  B,      1,      "GL_SCISSOR_TEST"),     # 0x0C11
+    ("glGet",  I,      1,      "GL_INDEX_CLEAR_VALUE"),        # 0x0C20
+    ("glGet",  I,      1,      "GL_INDEX_WRITEMASK"),  # 0x0C21
+    ("glGet",  F,      4,      "GL_COLOR_CLEAR_VALUE"),        # 0x0C22
+    ("glGet",  B,      4,      "GL_COLOR_WRITEMASK"),  # 0x0C23
+    ("glGet",  B,      1,      "GL_INDEX_MODE"),       # 0x0C30
+    ("glGet",  B,      1,      "GL_RGBA_MODE"),        # 0x0C31
+    ("glGet",  B,      1,      "GL_DOUBLEBUFFER"),     # 0x0C32
+    ("glGet",  B,      1,      "GL_STEREO"),   # 0x0C33
+    ("glGet",  E,      1,      "GL_RENDER_MODE"),      # 0x0C40
+    ("glGet",  E,      1,      "GL_PERSPECTIVE_CORRECTION_HINT"),      # 0x0C50
+    ("glGet",  E,      1,      "GL_POINT_SMOOTH_HINT"),        # 0x0C51
+    ("glGet",  E,      1,      "GL_LINE_SMOOTH_HINT"), # 0x0C52
+    ("glGet",  E,      1,      "GL_POLYGON_SMOOTH_HINT"),      # 0x0C53
+    ("glGet",  E,      1,      "GL_FOG_HINT"), # 0x0C54
+    ("glGet",  B,      1,      "GL_TEXTURE_GEN_S"),    # 0x0C60
+    ("glGet",  B,      1,      "GL_TEXTURE_GEN_T"),    # 0x0C61
+    ("glGet",  B,      1,      "GL_TEXTURE_GEN_R"),    # 0x0C62
+    ("glGet",  B,      1,      "GL_TEXTURE_GEN_Q"),    # 0x0C63
+    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_I"), # 0x0C70
+    ("",       X,      1,      "GL_PIXEL_MAP_S_TO_S"), # 0x0C71
+    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_R"), # 0x0C72
+    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_G"), # 0x0C73
+    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_B"), # 0x0C74
+    ("",       X,      1,      "GL_PIXEL_MAP_I_TO_A"), # 0x0C75
+    ("",       X,      1,      "GL_PIXEL_MAP_R_TO_R"), # 0x0C76
+    ("",       X,      1,      "GL_PIXEL_MAP_G_TO_G"), # 0x0C77
+    ("",       X,      1,      "GL_PIXEL_MAP_B_TO_B"), # 0x0C78
+    ("",       X,      1,      "GL_PIXEL_MAP_A_TO_A"), # 0x0C79
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_I_SIZE"),    # 0x0CB0
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_S_TO_S_SIZE"),    # 0x0CB1
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_R_SIZE"),    # 0x0CB2
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_G_SIZE"),    # 0x0CB3
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_B_SIZE"),    # 0x0CB4
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_I_TO_A_SIZE"),    # 0x0CB5
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_R_TO_R_SIZE"),    # 0x0CB6
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_G_TO_G_SIZE"),    # 0x0CB7
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_B_TO_B_SIZE"),    # 0x0CB8
+    ("glGet",  I,      1,      "GL_PIXEL_MAP_A_TO_A_SIZE"),    # 0x0CB9
+    ("glGet",  B,      1,      "GL_UNPACK_SWAP_BYTES"),        # 0x0CF0
+    ("glGet",  B,      1,      "GL_UNPACK_LSB_FIRST"), # 0x0CF1
+    ("glGet",  I,      1,      "GL_UNPACK_ROW_LENGTH"),        # 0x0CF2
+    ("glGet",  I,      1,      "GL_UNPACK_SKIP_ROWS"), # 0x0CF3
+    ("glGet",  I,      1,      "GL_UNPACK_SKIP_PIXELS"),       # 0x0CF4
+    ("glGet",  I,      1,      "GL_UNPACK_ALIGNMENT"), # 0x0CF5
+    ("glGet",  B,      1,      "GL_PACK_SWAP_BYTES"),  # 0x0D00
+    ("glGet",  B,      1,      "GL_PACK_LSB_FIRST"),   # 0x0D01
+    ("glGet",  I,      1,      "GL_PACK_ROW_LENGTH"),  # 0x0D02
+    ("glGet",  I,      1,      "GL_PACK_SKIP_ROWS"),   # 0x0D03
+    ("glGet",  I,      1,      "GL_PACK_SKIP_PIXELS"), # 0x0D04
+    ("glGet",  I,      1,      "GL_PACK_ALIGNMENT"),   # 0x0D05
+    ("glGet",  B,      1,      "GL_MAP_COLOR"),        # 0x0D10
+    ("glGet",  B,      1,      "GL_MAP_STENCIL"),      # 0x0D11
+    ("glGet",  I,      1,      "GL_INDEX_SHIFT"),      # 0x0D12
+    ("glGet",  I,      1,      "GL_INDEX_OFFSET"),     # 0x0D13
+    ("glGet",  F,      1,      "GL_RED_SCALE"),        # 0x0D14
+    ("glGet",  F,      1,      "GL_RED_BIAS"), # 0x0D15
+    ("glGet",  F,      1,      "GL_ZOOM_X"),   # 0x0D16
+    ("glGet",  F,      1,      "GL_ZOOM_Y"),   # 0x0D17
+    ("glGet",  F,      1,      "GL_GREEN_SCALE"),      # 0x0D18
+    ("glGet",  F,      1,      "GL_GREEN_BIAS"),       # 0x0D19
+    ("glGet",  F,      1,      "GL_BLUE_SCALE"),       # 0x0D1A
+    ("glGet",  F,      1,      "GL_BLUE_BIAS"),        # 0x0D1B
+    ("glGet,glGetTexEnv",      F,      1,      "GL_ALPHA_SCALE"),      # 0x0D1C
+    ("glGet",  F,      1,      "GL_ALPHA_BIAS"),       # 0x0D1D
+    ("glGet",  F,      1,      "GL_DEPTH_SCALE"),      # 0x0D1E
+    ("glGet",  F,      1,      "GL_DEPTH_BIAS"),       # 0x0D1F
+    ("glGet",  I,      1,      "GL_MAX_EVAL_ORDER"),   # 0x0D30
+    ("glGet",  I,      1,      "GL_MAX_LIGHTS"),       # 0x0D31
+    ("glGet",  I,      1,      "GL_MAX_CLIP_DISTANCES"),       # 0x0D32
+    ("glGet",  I,      1,      "GL_MAX_TEXTURE_SIZE"), # 0x0D33
+    ("glGet",  I,      1,      "GL_MAX_PIXEL_MAP_TABLE"),      # 0x0D34
+    ("glGet",  I,      1,      "GL_MAX_ATTRIB_STACK_DEPTH"),   # 0x0D35
+    ("glGet",  I,      1,      "GL_MAX_MODELVIEW_STACK_DEPTH"),        # 0x0D36
+    ("glGet",  I,      1,      "GL_MAX_NAME_STACK_DEPTH"),     # 0x0D37
+    ("glGet",  I,      1,      "GL_MAX_PROJECTION_STACK_DEPTH"),       # 0x0D38
+    ("glGet",  I,      1,      "GL_MAX_TEXTURE_STACK_DEPTH"),  # 0x0D39
+    ("glGet",  F,      2,      "GL_MAX_VIEWPORT_DIMS"),        # 0x0D3A
+    ("glGet",  I,      1,      "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH"),    # 0x0D3B
+    ("glGet",  I,      1,      "GL_SUBPIXEL_BITS"),    # 0x0D50
+    ("glGet",  I,      1,      "GL_INDEX_BITS"),       # 0x0D51
+    ("glGet",  I,      1,      "GL_RED_BITS"), # 0x0D52
+    ("glGet",  I,      1,      "GL_GREEN_BITS"),       # 0x0D53
+    ("glGet",  I,      1,      "GL_BLUE_BITS"),        # 0x0D54
+    ("glGet",  I,      1,      "GL_ALPHA_BITS"),       # 0x0D55
+    ("glGet",  I,      1,      "GL_DEPTH_BITS"),       # 0x0D56
+    ("glGet",  I,      1,      "GL_STENCIL_BITS"),     # 0x0D57
+    ("glGet",  I,      1,      "GL_ACCUM_RED_BITS"),   # 0x0D58
+    ("glGet",  I,      1,      "GL_ACCUM_GREEN_BITS"), # 0x0D59
+    ("glGet",  I,      1,      "GL_ACCUM_BLUE_BITS"),  # 0x0D5A
+    ("glGet",  I,      1,      "GL_ACCUM_ALPHA_BITS"), # 0x0D5B
+    ("glGet",  I,      1,      "GL_NAME_STACK_DEPTH"), # 0x0D70
+    ("glGet",  B,      1,      "GL_AUTO_NORMAL"),      # 0x0D80
+    ("glGet",  B,      1,      "GL_MAP1_COLOR_4"),     # 0x0D90
+    ("glGet",  B,      1,      "GL_MAP1_INDEX"),       # 0x0D91
+    ("glGet",  B,      1,      "GL_MAP1_NORMAL"),      # 0x0D92
+    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_1"),     # 0x0D93
+    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_2"),     # 0x0D94
+    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_3"),     # 0x0D95
+    ("glGet",  B,      1,      "GL_MAP1_TEXTURE_COORD_4"),     # 0x0D96
+    ("glGet",  B,      1,      "GL_MAP1_VERTEX_3"),    # 0x0D97
+    ("glGet",  B,      1,      "GL_MAP1_VERTEX_4"),    # 0x0D98
+    ("glGet",  B,      1,      "GL_MAP2_COLOR_4"),     # 0x0DB0
+    ("glGet",  B,      1,      "GL_MAP2_INDEX"),       # 0x0DB1
+    ("glGet",  B,      1,      "GL_MAP2_NORMAL"),      # 0x0DB2
+    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_1"),     # 0x0DB3
+    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_2"),     # 0x0DB4
+    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_3"),     # 0x0DB5
+    ("glGet",  B,      1,      "GL_MAP2_TEXTURE_COORD_4"),     # 0x0DB6
+    ("glGet",  B,      1,      "GL_MAP2_VERTEX_3"),    # 0x0DB7
+    ("glGet",  B,      1,      "GL_MAP2_VERTEX_4"),    # 0x0DB8
+    ("glGet",  F,      2,      "GL_MAP1_GRID_DOMAIN"), # 0x0DD0
+    ("glGet",  I,      1,      "GL_MAP1_GRID_SEGMENTS"),       # 0x0DD1
+    ("glGet",  F,      4,      "GL_MAP2_GRID_DOMAIN"), # 0x0DD2
+    ("glGet",  I,      2,      "GL_MAP2_GRID_SEGMENTS"),       # 0x0DD3
+    ("_glGet", B,      1,      "GL_TEXTURE_1D"),       # 0x0DE0
+    ("_glGet", B,      1,      "GL_TEXTURE_2D"),       # 0x0DE1
+    ("glGet",  P,      1,      "GL_FEEDBACK_BUFFER_POINTER"),  # 0x0DF0
+    ("glGet",  I,      1,      "GL_FEEDBACK_BUFFER_SIZE"),     # 0x0DF1
+    ("glGet",  E,      1,      "GL_FEEDBACK_BUFFER_TYPE"),     # 0x0DF2
+    ("glGet",  P,      1,      "GL_SELECTION_BUFFER_POINTER"), # 0x0DF3
+    ("glGet",  I,      1,      "GL_SELECTION_BUFFER_SIZE"),    # 0x0DF4
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_WIDTH"),    # 0x1000
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_HEIGHT"),   # 0x1001
+    ("glGetTexLevelParameter", E,      1,      "GL_TEXTURE_INTERNAL_FORMAT"),  # 0x1003
+    ("glGetTexParameter",      F,      4,      "GL_TEXTURE_BORDER_COLOR"),     # 0x1004
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_BORDER"),   # 0x1005
+    ("",       X,      1,      "GL_DONT_CARE"),        # 0x1100
+    ("",       X,      1,      "GL_FASTEST"),  # 0x1101
+    ("",       X,      1,      "GL_NICEST"),   # 0x1102
+    ("glGetLight,glGetMaterial",       F,      4,      "GL_AMBIENT"),  # 0x1200
+    ("glGetLight,glGetMaterial",       F,      4,      "GL_DIFFUSE"),  # 0x1201
+    ("glGetLight,glGetMaterial",       F,      4,      "GL_SPECULAR"), # 0x1202
+    ("glGetLight",     F,      4,      "GL_POSITION"), # 0x1203
+    ("glGetLight",     F,      3,      "GL_SPOT_DIRECTION"),   # 0x1204
+    ("glGetLight",     F,      1,      "GL_SPOT_EXPONENT"),    # 0x1205
+    ("glGetLight",     F,      1,      "GL_SPOT_CUTOFF"),      # 0x1206
+    ("glGetLight",     F,      1,      "GL_CONSTANT_ATTENUATION"),     # 0x1207
+    ("glGetLight",     F,      1,      "GL_LINEAR_ATTENUATION"),       # 0x1208
+    ("glGetLight",     F,      1,      "GL_QUADRATIC_ATTENUATION"),    # 0x1209
+    ("",       X,      1,      "GL_COMPILE"),  # 0x1300
+    ("",       X,      1,      "GL_COMPILE_AND_EXECUTE"),      # 0x1301
+    ("",       X,      1,      "GL_BYTE"),     # 0x1400
+    ("",       X,      1,      "GL_UNSIGNED_BYTE"),    # 0x1401
+    ("",       X,      1,      "GL_SHORT"),    # 0x1402
+    ("",       X,      1,      "GL_UNSIGNED_SHORT"),   # 0x1403
+    ("",       X,      1,      "GL_INT"),      # 0x1404
+    ("",       X,      1,      "GL_UNSIGNED_INT"),     # 0x1405
+    ("",       X,      1,      "GL_FLOAT"),    # 0x1406
+    ("",       X,      1,      "GL_2_BYTES"),  # 0x1407
+    ("",       X,      1,      "GL_3_BYTES"),  # 0x1408
+    ("",       X,      1,      "GL_4_BYTES"),  # 0x1409
+    ("",       X,      1,      "GL_DOUBLE"),   # 0x140A
+    ("",       X,      1,      "GL_HALF_FLOAT"),       # 0x140B
+    ("",       X,      1,      "GL_FIXED"),    # 0x140C
+    ("",       X,      1,      "GL_INT64_NV"), # 0x140E
+    ("",       X,      1,      "GL_UNSIGNED_INT64_NV"),        # 0x140F
+    ("",       X,      1,      "GL_CLEAR"),    # 0x1500
+    ("",       X,      1,      "GL_AND"),      # 0x1501
+    ("",       X,      1,      "GL_AND_REVERSE"),      # 0x1502
+    ("",       X,      1,      "GL_COPY"),     # 0x1503
+    ("",       X,      1,      "GL_AND_INVERTED"),     # 0x1504
+    ("",       X,      1,      "GL_NOOP"),     # 0x1505
+    ("",       X,      1,      "GL_XOR"),      # 0x1506
+    ("",       X,      1,      "GL_OR"),       # 0x1507
+    ("",       X,      1,      "GL_NOR"),      # 0x1508
+    ("",       X,      1,      "GL_EQUIV"),    # 0x1509
+    ("",       X,      1,      "GL_INVERT"),   # 0x150A
+    ("",       X,      1,      "GL_OR_REVERSE"),       # 0x150B
+    ("",       X,      1,      "GL_COPY_INVERTED"),    # 0x150C
+    ("",       X,      1,      "GL_OR_INVERTED"),      # 0x150D
+    ("",       X,      1,      "GL_NAND"),     # 0x150E
+    ("",       X,      1,      "GL_SET"),      # 0x150F
+    ("glGetMaterial",  F,      4,      "GL_EMISSION"), # 0x1600
+    ("glGetMaterial",  F,      1,      "GL_SHININESS"),        # 0x1601
+    ("",       F,      4,      "GL_AMBIENT_AND_DIFFUSE"),      # 0x1602
+    ("glGetMaterial",  F,      3,      "GL_COLOR_INDEXES"),    # 0x1603
+    ("",       X,      1,      "GL_MODELVIEW"),        # 0x1700
+    ("",       X,      1,      "GL_PROJECTION"),       # 0x1701
+    ("",       X,      1,      "GL_TEXTURE"),  # 0x1702
+    ("",       X,      1,      "GL_COLOR"),    # 0x1800
+    ("",       X,      1,      "GL_DEPTH"),    # 0x1801
+    ("",       X,      1,      "GL_STENCIL"),  # 0x1802
+    ("",       X,      1,      "GL_COLOR_INDEX"),      # 0x1900
+    ("",       X,      1,      "GL_STENCIL_INDEX"),    # 0x1901
+    ("",       X,      1,      "GL_DEPTH_COMPONENT"),  # 0x1902
+    ("",       X,      1,      "GL_RED"),      # 0x1903
+    ("",       X,      1,      "GL_GREEN"),    # 0x1904
+    ("",       X,      1,      "GL_BLUE"),     # 0x1905
+    ("",       X,      1,      "GL_ALPHA"),    # 0x1906
+    ("",       X,      1,      "GL_RGB"),      # 0x1907
+    ("",       X,      1,      "GL_RGBA"),     # 0x1908
+    ("",       X,      1,      "GL_LUMINANCE"),        # 0x1909
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA"),  # 0x190A
+    ("_glGet", B,      1,      "GL_RASTER_POSITION_UNCLIPPED_IBM"),    # 0x19262
+    ("",       X,      1,      "GL_BITMAP"),   # 0x1A00
+    ("",       X,      1,      "GL_PREFER_DOUBLEBUFFER_HINT_PGI"),     # 0x1A1F8
+    ("",       X,      1,      "GL_CONSERVE_MEMORY_HINT_PGI"), # 0x1A1FD
+    ("",       X,      1,      "GL_RECLAIM_MEMORY_HINT_PGI"),  # 0x1A1FE
+    ("",       X,      1,      "GL_NATIVE_GRAPHICS_HANDLE_PGI"),       # 0x1A202
+    ("",       X,      1,      "GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI"),   # 0x1A203
+    ("",       X,      1,      "GL_NATIVE_GRAPHICS_END_HINT_PGI"),     # 0x1A204
+    ("",       X,      1,      "GL_ALWAYS_FAST_HINT_PGI"),     # 0x1A20C
+    ("",       X,      1,      "GL_ALWAYS_SOFT_HINT_PGI"),     # 0x1A20D
+    ("",       X,      1,      "GL_ALLOW_DRAW_OBJ_HINT_PGI"),  # 0x1A20E
+    ("",       X,      1,      "GL_ALLOW_DRAW_WIN_HINT_PGI"),  # 0x1A20F
+    ("",       X,      1,      "GL_ALLOW_DRAW_FRG_HINT_PGI"),  # 0x1A210
+    ("",       X,      1,      "GL_ALLOW_DRAW_MEM_HINT_PGI"),  # 0x1A211
+    ("",       X,      1,      "GL_STRICT_DEPTHFUNC_HINT_PGI"),        # 0x1A216
+    ("",       X,      1,      "GL_STRICT_LIGHTING_HINT_PGI"), # 0x1A217
+    ("",       X,      1,      "GL_STRICT_SCISSOR_HINT_PGI"),  # 0x1A218
+    ("",       X,      1,      "GL_FULL_STIPPLE_HINT_PGI"),    # 0x1A219
+    ("",       X,      1,      "GL_CLIP_NEAR_HINT_PGI"),       # 0x1A220
+    ("",       X,      1,      "GL_CLIP_FAR_HINT_PGI"),        # 0x1A221
+    ("",       X,      1,      "GL_WIDE_LINE_HINT_PGI"),       # 0x1A222
+    ("",       X,      1,      "GL_BACK_NORMALS_HINT_PGI"),    # 0x1A223
+    ("",       X,      1,      "GL_VERTEX_DATA_HINT_PGI"),     # 0x1A22A
+    ("",       X,      1,      "GL_VERTEX_CONSISTENT_HINT_PGI"),       # 0x1A22B
+    ("",       X,      1,      "GL_MATERIAL_SIDE_HINT_PGI"),   # 0x1A22C
+    ("",       X,      1,      "GL_MAX_VERTEX_HINT_PGI"),      # 0x1A22D
+    ("",       X,      1,      "GL_POINT"),    # 0x1B00
+    ("",       X,      1,      "GL_LINE"),     # 0x1B01
+    ("",       X,      1,      "GL_FILL"),     # 0x1B02
+    ("",       X,      1,      "GL_RENDER"),   # 0x1C00
+    ("",       X,      1,      "GL_FEEDBACK"), # 0x1C01
+    ("",       X,      1,      "GL_SELECT"),   # 0x1C02
+    ("",       X,      1,      "GL_FLAT"),     # 0x1D00
+    ("",       X,      1,      "GL_SMOOTH"),   # 0x1D01
+    ("",       X,      1,      "GL_KEEP"),     # 0x1E00
+    ("",       X,      1,      "GL_REPLACE"),  # 0x1E01
+    ("",       X,      1,      "GL_INCR"),     # 0x1E02
+    ("",       X,      1,      "GL_DECR"),     # 0x1E03
+    ("glGet",  S,      1,      "GL_VENDOR"),   # 0x1F00
+    ("glGet",  S,      1,      "GL_RENDERER"), # 0x1F01
+    ("glGet",  S,      1,      "GL_VERSION"),  # 0x1F02
+    ("glGet",  S,      1,      "GL_EXTENSIONS"),       # 0x1F03
+    ("",       X,      1,      "GL_S"),        # 0x2000
+    ("",       X,      1,      "GL_T"),        # 0x2001
+    ("",       X,      1,      "GL_R"),        # 0x2002
+    ("",       X,      1,      "GL_Q"),        # 0x2003
+    ("",       X,      1,      "GL_MODULATE"), # 0x2100
+    ("",       X,      1,      "GL_DECAL"),    # 0x2101
+    ("glGetTexEnv",    E,      1,      "GL_TEXTURE_ENV_MODE"), # 0x2200
+    ("glGetTexEnv",    F,      4,      "GL_TEXTURE_ENV_COLOR"),        # 0x2201
+    ("_glGet", X,      1,      "GL_TEXTURE_ENV"),      # 0x2300
+    ("",       X,      1,      "GL_EYE_LINEAR"),       # 0x2400
+    ("",       X,      1,      "GL_OBJECT_LINEAR"),    # 0x2401
+    ("",       X,      1,      "GL_SPHERE_MAP"),       # 0x2402
+    ("glGetTexGen",    E,      1,      "GL_TEXTURE_GEN_MODE"), # 0x2500
+    ("glGetTexGen",    F,      4,      "GL_OBJECT_PLANE"),     # 0x2501
+    ("glGetTexGen",    F,      4,      "GL_EYE_PLANE"),        # 0x2502
+    ("",       X,      1,      "GL_NEAREST"),  # 0x2600
+    ("",       X,      1,      "GL_LINEAR"),   # 0x2601
+    ("",       X,      1,      "GL_NEAREST_MIPMAP_NEAREST"),   # 0x2700
+    ("",       X,      1,      "GL_LINEAR_MIPMAP_NEAREST"),    # 0x2701
+    ("",       X,      1,      "GL_NEAREST_MIPMAP_LINEAR"),    # 0x2702
+    ("",       X,      1,      "GL_LINEAR_MIPMAP_LINEAR"),     # 0x2703
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_MAG_FILTER"),       # 0x2800
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_MIN_FILTER"),       # 0x2801
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_WRAP_S"),   # 0x2802
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_WRAP_T"),   # 0x2803
+    ("",       X,      1,      "GL_CLAMP"),    # 0x2900
+    ("",       X,      1,      "GL_REPEAT"),   # 0x2901
+    ("glGet",  F,      1,      "GL_POLYGON_OFFSET_UNITS"),     # 0x2A00
+    ("glGet",  B,      1,      "GL_POLYGON_OFFSET_POINT"),     # 0x2A01
+    ("glGet",  B,      1,      "GL_POLYGON_OFFSET_LINE"),      # 0x2A02
+    ("",       X,      1,      "GL_R3_G3_B2"), # 0x2A10
+    ("",       X,      1,      "GL_V2F"),      # 0x2A20
+    ("",       X,      1,      "GL_V3F"),      # 0x2A21
+    ("",       X,      1,      "GL_C4UB_V2F"), # 0x2A22
+    ("",       X,      1,      "GL_C4UB_V3F"), # 0x2A23
+    ("",       X,      1,      "GL_C3F_V3F"),  # 0x2A24
+    ("",       X,      1,      "GL_N3F_V3F"),  # 0x2A25
+    ("",       X,      1,      "GL_C4F_N3F_V3F"),      # 0x2A26
+    ("",       X,      1,      "GL_T2F_V3F"),  # 0x2A27
+    ("",       X,      1,      "GL_T4F_V4F"),  # 0x2A28
+    ("",       X,      1,      "GL_T2F_C4UB_V3F"),     # 0x2A29
+    ("",       X,      1,      "GL_T2F_C3F_V3F"),      # 0x2A2A
+    ("",       X,      1,      "GL_T2F_N3F_V3F"),      # 0x2A2B
+    ("",       X,      1,      "GL_T2F_C4F_N3F_V3F"),  # 0x2A2C
+    ("",       X,      1,      "GL_T4F_C4F_N3F_V4F"),  # 0x2A2D
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE0"),   # 0x3000
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE1"),   # 0x3001
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE2"),   # 0x3002
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE3"),   # 0x3003
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE4"),   # 0x3004
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE5"),   # 0x3005
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE6"),   # 0x3006
+    ("glGet",  B,      1,      "GL_CLIP_DISTANCE7"),   # 0x3007
+    ("_glGet", B,      1,      "GL_LIGHT0"),   # 0x4000
+    ("_glGet", B,      1,      "GL_LIGHT1"),   # 0x4001
+    ("_glGet", B,      1,      "GL_LIGHT2"),   # 0x4002
+    ("_glGet", B,      1,      "GL_LIGHT3"),   # 0x4003
+    ("_glGet", B,      1,      "GL_LIGHT4"),   # 0x4004
+    ("_glGet", B,      1,      "GL_LIGHT5"),   # 0x4005
+    ("_glGet", B,      1,      "GL_LIGHT6"),   # 0x4006
+    ("_glGet", B,      1,      "GL_LIGHT7"),   # 0x4007
+    ("",       X,      1,      "GL_ABGR_EXT"), # 0x8000
+    ("",       X,      1,      "GL_CONSTANT_COLOR"),   # 0x8001
+    ("",       X,      1,      "GL_ONE_MINUS_CONSTANT_COLOR"), # 0x8002
+    ("",       X,      1,      "GL_CONSTANT_ALPHA"),   # 0x8003
+    ("",       X,      1,      "GL_ONE_MINUS_CONSTANT_ALPHA"), # 0x8004
+    ("glGet",  F,      4,      "GL_BLEND_COLOR"),      # 0x8005
+    ("",       X,      1,      "GL_FUNC_ADD"), # 0x8006
+    ("",       X,      1,      "GL_MIN"),      # 0x8007
+    ("",       X,      1,      "GL_MAX"),      # 0x8008
+    ("glGet",  E,      1,      "GL_BLEND_EQUATION"),   # 0x8009
+    ("",       X,      1,      "GL_FUNC_SUBTRACT"),    # 0x800A
+    ("",       X,      1,      "GL_FUNC_REVERSE_SUBTRACT"),    # 0x800B
+    ("",       X,      1,      "GL_CMYK_EXT"), # 0x800C
+    ("",       X,      1,      "GL_CMYKA_EXT"),        # 0x800D
+    ("glGet",  I,      1,      "GL_PACK_CMYK_HINT_EXT"),       # 0x800E
+    ("glGet",  I,      1,      "GL_UNPACK_CMYK_HINT_EXT"),     # 0x800F
+    ("glGet",  B,      1,      "GL_CONVOLUTION_1D"),   # 0x8010
+    ("glGet",  B,      1,      "GL_CONVOLUTION_2D"),   # 0x8011
+    ("glGet",  B,      1,      "GL_SEPARABLE_2D"),     # 0x8012
+    ("glGetConvolutionParameter",      E,      1,      "GL_CONVOLUTION_BORDER_MODE"),  # 0x8013
+    ("glGetConvolutionParameter",      F,      4,      "GL_CONVOLUTION_FILTER_SCALE"), # 0x8014
+    ("glGetConvolutionParameter",      F,      4,      "GL_CONVOLUTION_FILTER_BIAS"),  # 0x8015
+    ("",       X,      1,      "GL_REDUCE"),   # 0x8016
+    ("glGetConvolutionParameter",      E,      1,      "GL_CONVOLUTION_FORMAT"),       # 0x8017
+    ("glGetConvolutionParameter",      I,      1,      "GL_CONVOLUTION_WIDTH"),        # 0x8018
+    ("glGetConvolutionParameter",      I,      1,      "GL_CONVOLUTION_HEIGHT"),       # 0x8019
+    ("glGetConvolutionParameter",      I,      1,      "GL_MAX_CONVOLUTION_WIDTH"),    # 0x801A
+    ("glGetConvolutionParameter",      I,      1,      "GL_MAX_CONVOLUTION_HEIGHT"),   # 0x801B
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_RED_SCALE"),       # 0x801C
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_GREEN_SCALE"),     # 0x801D
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_BLUE_SCALE"),      # 0x801E
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_ALPHA_SCALE"),     # 0x801F
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_RED_BIAS"),        # 0x8020
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_GREEN_BIAS"),      # 0x8021
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_BLUE_BIAS"),       # 0x8022
+    ("glGet",  F,      1,      "GL_POST_CONVOLUTION_ALPHA_BIAS"),      # 0x8023
+    ("glGet",  B,      1,      "GL_HISTOGRAM"),        # 0x8024
+    ("",       X,      1,      "GL_PROXY_HISTOGRAM"),  # 0x8025
+    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_WIDTH"),  # 0x8026
+    ("glGetHistogramParameter",        E,      1,      "GL_HISTOGRAM_FORMAT"), # 0x8027
+    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_RED_SIZE"),       # 0x8028
+    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_GREEN_SIZE"),     # 0x8029
+    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_BLUE_SIZE"),      # 0x802A
+    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_ALPHA_SIZE"),     # 0x802B
+    ("glGetHistogramParameter",        I,      1,      "GL_HISTOGRAM_LUMINANCE_SIZE"), # 0x802C
+    ("glGetHistogramParameter",        B,      1,      "GL_HISTOGRAM_SINK"),   # 0x802D
+    ("glGet",  B,      1,      "GL_MINMAX"),   # 0x802E
+    ("glGetMinMaxParameter",   E,      1,      "GL_MINMAX_FORMAT"),    # 0x802F
+    ("glGetMinMaxParameter",   B,      1,      "GL_MINMAX_SINK"),      # 0x8030
+    ("",       X,      1,      "GL_TABLE_TOO_LARGE"),  # 0x8031
+    ("",       X,      1,      "GL_UNSIGNED_BYTE_3_3_2"),      # 0x8032
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_4_4_4_4"),   # 0x8033
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_5_5_5_1"),   # 0x8034
+    ("",       X,      1,      "GL_UNSIGNED_INT_8_8_8_8"),     # 0x8035
+    ("",       X,      1,      "GL_UNSIGNED_INT_10_10_10_2"),  # 0x8036
+    ("glGet",  B,      1,      "GL_POLYGON_OFFSET_FILL"),      # 0x8037
+    ("glGet",  F,      1,      "GL_POLYGON_OFFSET_FACTOR"),    # 0x8038
+    ("glGet",  F,      1,      "GL_POLYGON_OFFSET_BIAS_EXT"),  # 0x8039
+    ("glGet",  B,      1,      "GL_RESCALE_NORMAL"),   # 0x803A
+    ("",       X,      1,      "GL_ALPHA4"),   # 0x803B
+    ("",       X,      1,      "GL_ALPHA8"),   # 0x803C
+    ("",       X,      1,      "GL_ALPHA12"),  # 0x803D
+    ("",       X,      1,      "GL_ALPHA16"),  # 0x803E
+    ("",       X,      1,      "GL_LUMINANCE4"),       # 0x803F
+    ("",       X,      1,      "GL_LUMINANCE8"),       # 0x8040
+    ("",       X,      1,      "GL_LUMINANCE12"),      # 0x8041
+    ("",       X,      1,      "GL_LUMINANCE16"),      # 0x8042
+    ("",       X,      1,      "GL_LUMINANCE4_ALPHA4"),        # 0x8043
+    ("",       X,      1,      "GL_LUMINANCE6_ALPHA2"),        # 0x8044
+    ("",       X,      1,      "GL_LUMINANCE8_ALPHA8"),        # 0x8045
+    ("",       X,      1,      "GL_LUMINANCE12_ALPHA4"),       # 0x8046
+    ("",       X,      1,      "GL_LUMINANCE12_ALPHA12"),      # 0x8047
+    ("",       X,      1,      "GL_LUMINANCE16_ALPHA16"),      # 0x8048
+    ("",       X,      1,      "GL_INTENSITY"),        # 0x8049
+    ("",       X,      1,      "GL_INTENSITY4"),       # 0x804A
+    ("",       X,      1,      "GL_INTENSITY8"),       # 0x804B
+    ("",       X,      1,      "GL_INTENSITY12"),      # 0x804C
+    ("",       X,      1,      "GL_INTENSITY16"),      # 0x804D
+    ("",       X,      1,      "GL_RGB2_EXT"), # 0x804E
+    ("",       X,      1,      "GL_RGB4"),     # 0x804F
+    ("",       X,      1,      "GL_RGB5"),     # 0x8050
+    ("",       X,      1,      "GL_RGB8"),     # 0x8051
+    ("",       X,      1,      "GL_RGB10"),    # 0x8052
+    ("",       X,      1,      "GL_RGB12"),    # 0x8053
+    ("",       X,      1,      "GL_RGB16"),    # 0x8054
+    ("",       X,      1,      "GL_RGBA2"),    # 0x8055
+    ("",       X,      1,      "GL_RGBA4"),    # 0x8056
+    ("",       X,      1,      "GL_RGB5_A1"),  # 0x8057
+    ("",       X,      1,      "GL_RGBA8"),    # 0x8058
+    ("",       X,      1,      "GL_RGB10_A2"), # 0x8059
+    ("",       X,      1,      "GL_RGBA12"),   # 0x805A
+    ("",       X,      1,      "GL_RGBA16"),   # 0x805B
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_RED_SIZE"), # 0x805C
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_GREEN_SIZE"),       # 0x805D
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_BLUE_SIZE"),        # 0x805E
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_ALPHA_SIZE"),       # 0x805F
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_LUMINANCE_SIZE"),   # 0x8060
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_INTENSITY_SIZE"),   # 0x8061
+    ("",       X,      1,      "GL_REPLACE_EXT"),      # 0x8062
+    ("",       X,      1,      "GL_PROXY_TEXTURE_1D"), # 0x8063
+    ("",       X,      1,      "GL_PROXY_TEXTURE_2D"), # 0x8064
+    ("",       X,      1,      "GL_TEXTURE_TOO_LARGE_EXT"),    # 0x8065
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_PRIORITY"), # 0x8066
+    ("glGetTexParameter",      B,      1,      "GL_TEXTURE_RESIDENT"), # 0x8067
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_1D"),       # 0x8068
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_2D"),       # 0x8069
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_3D"),       # 0x806A
+    ("glGet",  I,      1,      "GL_PACK_SKIP_IMAGES"), # 0x806B
+    ("glGet",  F,      1,      "GL_PACK_IMAGE_HEIGHT"),        # 0x806C
+    ("glGet",  I,      1,      "GL_UNPACK_SKIP_IMAGES"),       # 0x806D
+    ("glGet",  F,      1,      "GL_UNPACK_IMAGE_HEIGHT"),      # 0x806E
+    ("glGet",  B,      1,      "GL_TEXTURE_3D"),       # 0x806F
+    ("",       X,      1,      "GL_PROXY_TEXTURE_3D"), # 0x8070
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_DEPTH"),    # 0x8071
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_WRAP_R"),   # 0x8072
+    ("glGet",  I,      1,      "GL_MAX_3D_TEXTURE_SIZE"),      # 0x8073
+    ("glGet",  B,      1,      "GL_VERTEX_ARRAY"),     # 0x8074
+    ("glGet",  B,      1,      "GL_NORMAL_ARRAY"),     # 0x8075
+    ("glGet",  B,      1,      "GL_COLOR_ARRAY"),      # 0x8076
+    ("glGet",  B,      1,      "GL_INDEX_ARRAY"),      # 0x8077
+    ("glGet",  B,      1,      "GL_TEXTURE_COORD_ARRAY"),      # 0x8078
+    ("glGet",  B,      1,      "GL_EDGE_FLAG_ARRAY"),  # 0x8079
+    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_SIZE"),        # 0x807A
+    ("glGet",  E,      1,      "GL_VERTEX_ARRAY_TYPE"),        # 0x807B
+    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_STRIDE"),      # 0x807C
+    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_COUNT_EXT"),   # 0x807D
+    ("glGet",  E,      1,      "GL_NORMAL_ARRAY_TYPE"),        # 0x807E
+    ("glGet",  I,      1,      "GL_NORMAL_ARRAY_STRIDE"),      # 0x807F
+    ("glGet",  I,      1,      "GL_NORMAL_ARRAY_COUNT_EXT"),   # 0x8080
+    ("glGet",  I,      1,      "GL_COLOR_ARRAY_SIZE"), # 0x8081
+    ("glGet",  E,      1,      "GL_COLOR_ARRAY_TYPE"), # 0x8082
+    ("glGet",  I,      1,      "GL_COLOR_ARRAY_STRIDE"),       # 0x8083
+    ("glGet",  I,      1,      "GL_COLOR_ARRAY_COUNT_EXT"),    # 0x8084
+    ("glGet",  E,      1,      "GL_INDEX_ARRAY_TYPE"), # 0x8085
+    ("glGet",  I,      1,      "GL_INDEX_ARRAY_STRIDE"),       # 0x8086
+    ("glGet",  I,      1,      "GL_INDEX_ARRAY_COUNT_EXT"),    # 0x8087
+    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_SIZE"), # 0x8088
+    ("glGet",  E,      1,      "GL_TEXTURE_COORD_ARRAY_TYPE"), # 0x8089
+    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_STRIDE"),       # 0x808A
+    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_COUNT_EXT"),    # 0x808B
+    ("glGet",  I,      1,      "GL_EDGE_FLAG_ARRAY_STRIDE"),   # 0x808C
+    ("glGet",  I,      1,      "GL_EDGE_FLAG_ARRAY_COUNT_EXT"),        # 0x808D
+    ("glGet",  P,      1,      "GL_VERTEX_ARRAY_POINTER"),     # 0x808E
+    ("glGet",  P,      1,      "GL_NORMAL_ARRAY_POINTER"),     # 0x808F
+    ("glGet",  P,      1,      "GL_COLOR_ARRAY_POINTER"),      # 0x8090
+    ("glGet",  P,      1,      "GL_INDEX_ARRAY_POINTER"),      # 0x8091
+    ("glGet",  P,      1,      "GL_TEXTURE_COORD_ARRAY_POINTER"),      # 0x8092
+    ("glGet",  P,      1,      "GL_EDGE_FLAG_ARRAY_POINTER"),  # 0x8093
+    ("glGet",  I,      1,      "GL_INTERLACE_SGIX"),   # 0x8094
+    ("",       X,      1,      "GL_DETAIL_TEXTURE_2D_SGIS"),   # 0x8095
+    ("glGet",  I,      1,      "GL_DETAIL_TEXTURE_2D_BINDING_SGIS"),   # 0x8096
+    ("",       X,      1,      "GL_LINEAR_DETAIL_SGIS"),       # 0x8097
+    ("",       X,      1,      "GL_LINEAR_DETAIL_ALPHA_SGIS"), # 0x8098
+    ("",       X,      1,      "GL_LINEAR_DETAIL_COLOR_SGIS"), # 0x8099
+    ("",       X,      1,      "GL_DETAIL_TEXTURE_LEVEL_SGIS"),        # 0x809A
+    ("",       X,      1,      "GL_DETAIL_TEXTURE_MODE_SGIS"), # 0x809B
+    ("",       X,      1,      "GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS"),  # 0x809C
+    ("glGet",  I,      1,      "GL_MULTISAMPLE"),      # 0x809D
+    ("glGet",  I,      1,      "GL_SAMPLE_ALPHA_TO_COVERAGE"), # 0x809E
+    ("glGet",  I,      1,      "GL_SAMPLE_ALPHA_TO_ONE"),      # 0x809F
+    ("glGet",  I,      1,      "GL_SAMPLE_COVERAGE"),  # 0x80A0
+    ("",       X,      1,      "GL_1PASS_EXT"),        # 0x80A1
+    ("",       X,      1,      "GL_2PASS_0_EXT"),      # 0x80A2
+    ("",       X,      1,      "GL_2PASS_1_EXT"),      # 0x80A3
+    ("",       X,      1,      "GL_4PASS_0_EXT"),      # 0x80A4
+    ("",       X,      1,      "GL_4PASS_1_EXT"),      # 0x80A5
+    ("",       X,      1,      "GL_4PASS_2_EXT"),      # 0x80A6
+    ("",       X,      1,      "GL_4PASS_3_EXT"),      # 0x80A7
+    ("glGet",  I,      1,      "GL_SAMPLE_BUFFERS"),   # 0x80A8
+    ("glGet",  I,      1,      "GL_SAMPLES"),  # 0x80A9
+    ("glGet",  F,      1,      "GL_SAMPLE_COVERAGE_VALUE"),    # 0x80AA
+    ("glGet",  I,      1,      "GL_SAMPLE_COVERAGE_INVERT"),   # 0x80AB
+    ("glGet",  I,      1,      "GL_SAMPLE_PATTERN_EXT"),       # 0x80AC
+    ("",       X,      1,      "GL_LINEAR_SHARPEN_SGIS"),      # 0x80AD
+    ("",       X,      1,      "GL_LINEAR_SHARPEN_ALPHA_SGIS"),        # 0x80AE
+    ("",       X,      1,      "GL_LINEAR_SHARPEN_COLOR_SGIS"),        # 0x80AF
+    ("",       X,      1,      "GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS"), # 0x80B0
+    ("glGet",  F,      16,     "GL_COLOR_MATRIX"),     # 0x80B1
+    ("glGet",  I,      1,      "GL_COLOR_MATRIX_STACK_DEPTH"), # 0x80B2
+    ("glGet",  I,      1,      "GL_MAX_COLOR_MATRIX_STACK_DEPTH"),     # 0x80B3
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_RED_SCALE"),      # 0x80B4
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_GREEN_SCALE"),    # 0x80B5
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_BLUE_SCALE"),     # 0x80B6
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_ALPHA_SCALE"),    # 0x80B7
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_RED_BIAS"),       # 0x80B8
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_GREEN_BIAS"),     # 0x80B9
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_BLUE_BIAS"),      # 0x80BA
+    ("glGet",  F,      1,      "GL_POST_COLOR_MATRIX_ALPHA_BIAS"),     # 0x80BB
+    ("glGet",  I,      1,      "GL_TEXTURE_COLOR_TABLE_SGI"),  # 0x80BC
+    ("",       X,      1,      "GL_PROXY_TEXTURE_COLOR_TABLE_SGI"),    # 0x80BD
+    ("",       X,      1,      "GL_TEXTURE_ENV_BIAS_SGIX"),    # 0x80BE
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB"),   # 0x80BF
+    ("glGet",  E,      1,      "GL_BLEND_DST_RGB"),    # 0x80C8
+    ("glGet",  E,      1,      "GL_BLEND_SRC_RGB"),    # 0x80C9
+    ("glGet",  E,      1,      "GL_BLEND_DST_ALPHA"),  # 0x80CA
+    ("glGet",  E,      1,      "GL_BLEND_SRC_ALPHA"),  # 0x80CB
+    ("",       X,      1,      "GL_422_EXT"),  # 0x80CC
+    ("",       X,      1,      "GL_422_REV_EXT"),      # 0x80CD
+    ("",       X,      1,      "GL_422_AVERAGE_EXT"),  # 0x80CE
+    ("",       X,      1,      "GL_422_REV_AVERAGE_EXT"),      # 0x80CF
+    ("glGet",  B,      1,      "GL_COLOR_TABLE"),      # 0x80D0
+    ("glGet",  I,      1,      "GL_POST_CONVOLUTION_COLOR_TABLE"),     # 0x80D1
+    ("glGet",  I,      1,      "GL_POST_COLOR_MATRIX_COLOR_TABLE"),    # 0x80D2
+    ("",       X,      1,      "GL_PROXY_COLOR_TABLE"),        # 0x80D3
+    ("",       X,      1,      "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE"),       # 0x80D4
+    ("",       X,      1,      "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE"),      # 0x80D5
+    ("glGetColorTableParameter",       F,      4,      "GL_COLOR_TABLE_SCALE"),        # 0x80D6
+    ("glGetColorTableParameter",       F,      4,      "GL_COLOR_TABLE_BIAS"), # 0x80D7
+    ("glGetColorTableParameter",       E,      1,      "GL_COLOR_TABLE_FORMAT"),       # 0x80D8
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_WIDTH"),        # 0x80D9
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_RED_SIZE"),     # 0x80DA
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_GREEN_SIZE"),   # 0x80DB
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_BLUE_SIZE"),    # 0x80DC
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_ALPHA_SIZE"),   # 0x80DD
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_LUMINANCE_SIZE"),       # 0x80DE
+    ("glGetColorTableParameter",       I,      1,      "GL_COLOR_TABLE_INTENSITY_SIZE"),       # 0x80DF
+    ("",       X,      1,      "GL_BGR"),      # 0x80E0
+    ("",       X,      1,      "GL_BGRA"),     # 0x80E1
+    ("",       X,      1,      "GL_COLOR_INDEX1_EXT"), # 0x80E2
+    ("",       X,      1,      "GL_COLOR_INDEX2_EXT"), # 0x80E3
+    ("",       X,      1,      "GL_COLOR_INDEX4_EXT"), # 0x80E4
+    ("",       X,      1,      "GL_COLOR_INDEX8_EXT"), # 0x80E5
+    ("",       X,      1,      "GL_COLOR_INDEX12_EXT"),        # 0x80E6
+    ("",       X,      1,      "GL_COLOR_INDEX16_EXT"),        # 0x80E7
+    ("glGet",  I,      1,      "GL_MAX_ELEMENTS_VERTICES"),    # 0x80E8
+    ("glGet",  I,      1,      "GL_MAX_ELEMENTS_INDICES"),     # 0x80E9
+    ("",       X,      1,      "GL_PHONG_WIN"),        # 0x80EA
+    ("",       X,      1,      "GL_PHONG_HINT_WIN"),   # 0x80EB
+    ("",       X,      1,      "GL_FOG_SPECULAR_TEXTURE_WIN"), # 0x80EC
+    ("",       X,      1,      "GL_TEXTURE_INDEX_SIZE_EXT"),   # 0x80ED
+    ("glGet",  E,      1,      "GL_CLIP_VOLUME_CLIPPING_HINT_EXT"),    # 0x80F0
+    ("",       X,      1,      "GL_DUAL_ALPHA4_SGIS"), # 0x8110
+    ("",       X,      1,      "GL_DUAL_ALPHA8_SGIS"), # 0x8111
+    ("",       X,      1,      "GL_DUAL_ALPHA12_SGIS"),        # 0x8112
+    ("",       X,      1,      "GL_DUAL_ALPHA16_SGIS"),        # 0x8113
+    ("",       X,      1,      "GL_DUAL_LUMINANCE4_SGIS"),     # 0x8114
+    ("",       X,      1,      "GL_DUAL_LUMINANCE8_SGIS"),     # 0x8115
+    ("",       X,      1,      "GL_DUAL_LUMINANCE12_SGIS"),    # 0x8116
+    ("",       X,      1,      "GL_DUAL_LUMINANCE16_SGIS"),    # 0x8117
+    ("",       X,      1,      "GL_DUAL_INTENSITY4_SGIS"),     # 0x8118
+    ("",       X,      1,      "GL_DUAL_INTENSITY8_SGIS"),     # 0x8119
+    ("",       X,      1,      "GL_DUAL_INTENSITY12_SGIS"),    # 0x811A
+    ("",       X,      1,      "GL_DUAL_INTENSITY16_SGIS"),    # 0x811B
+    ("",       X,      1,      "GL_DUAL_LUMINANCE_ALPHA4_SGIS"),       # 0x811C
+    ("",       X,      1,      "GL_DUAL_LUMINANCE_ALPHA8_SGIS"),       # 0x811D
+    ("",       X,      1,      "GL_QUAD_ALPHA4_SGIS"), # 0x811E
+    ("",       X,      1,      "GL_QUAD_ALPHA8_SGIS"), # 0x811F
+    ("",       X,      1,      "GL_QUAD_LUMINANCE4_SGIS"),     # 0x8120
+    ("",       X,      1,      "GL_QUAD_LUMINANCE8_SGIS"),     # 0x8121
+    ("",       X,      1,      "GL_QUAD_INTENSITY4_SGIS"),     # 0x8122
+    ("",       X,      1,      "GL_QUAD_INTENSITY8_SGIS"),     # 0x8123
+    ("",       X,      1,      "GL_DUAL_TEXTURE_SELECT_SGIS"), # 0x8124
+    ("",       X,      1,      "GL_QUAD_TEXTURE_SELECT_SGIS"), # 0x8125
+    ("glGet",  F,      1,      "GL_POINT_SIZE_MIN"),   # 0x8126
+    ("glGet",  F,      1,      "GL_POINT_SIZE_MAX"),   # 0x8127
+    ("glGet",  F,      1,      "GL_POINT_FADE_THRESHOLD_SIZE"),        # 0x8128
+    ("glGet",  F,      3,      "GL_POINT_DISTANCE_ATTENUATION"),       # 0x8129
+    ("",       X,      1,      "GL_FOG_FUNC_SGIS"),    # 0x812A
+    ("glGet",  I,      1,      "GL_FOG_FUNC_POINTS_SGIS"),     # 0x812B
+    ("glGet",  I,      1,      "GL_MAX_FOG_FUNC_POINTS_SGIS"), # 0x812C
+    ("",       X,      1,      "GL_CLAMP_TO_BORDER"),  # 0x812D
+    ("",       X,      1,      "GL_TEXTURE_MULTI_BUFFER_HINT_SGIX"),   # 0x812E
+    ("",       X,      1,      "GL_CLAMP_TO_EDGE"),    # 0x812F
+    ("glGet",  I,      1,      "GL_PACK_SKIP_VOLUMES_SGIS"),   # 0x8130
+    ("glGet",  I,      1,      "GL_PACK_IMAGE_DEPTH_SGIS"),    # 0x8131
+    ("glGet",  I,      1,      "GL_UNPACK_SKIP_VOLUMES_SGIS"), # 0x8132
+    ("glGet",  I,      1,      "GL_UNPACK_IMAGE_DEPTH_SGIS"),  # 0x8133
+    ("glGet",  I,      1,      "GL_TEXTURE_4D_SGIS"),  # 0x8134
+    ("",       X,      1,      "GL_PROXY_TEXTURE_4D_SGIS"),    # 0x8135
+    ("",       X,      1,      "GL_TEXTURE_4DSIZE_SGIS"),      # 0x8136
+    ("",       X,      1,      "GL_TEXTURE_WRAP_Q_SGIS"),      # 0x8137
+    ("glGet",  I,      1,      "GL_MAX_4D_TEXTURE_SIZE_SGIS"), # 0x8138
+    ("glGet",  I,      1,      "GL_PIXEL_TEX_GEN_SGIX"),       # 0x8139
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MIN_LOD"),  # 0x813A
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_LOD"),  # 0x813B
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_BASE_LEVEL"),       # 0x813C
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_LEVEL"),        # 0x813D
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX"),   # 0x813E
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_CACHE_INCREMENT_SGIX"),  # 0x813F
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_WIDTH_SGIX"),    # 0x8140
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_HEIGHT_SGIX"),   # 0x8141
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_GRID_WIDTH_SGIX"),       # 0x8142
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_GRID_HEIGHT_SGIX"),      # 0x8143
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_GRID_DEPTH_SGIX"),       # 0x8144
+    ("glGet",  I,      1,      "GL_PIXEL_TILE_CACHE_SIZE_SGIX"),       # 0x8145
+    ("",       X,      1,      "GL_FILTER4_SGIS"),     # 0x8146
+    ("",       X,      1,      "GL_TEXTURE_FILTER4_SIZE_SGIS"),        # 0x8147
+    ("glGet",  I,      1,      "GL_SPRITE_SGIX"),      # 0x8148
+    ("glGet",  I,      1,      "GL_SPRITE_MODE_SGIX"), # 0x8149
+    ("glGet",  F,      3,      "GL_SPRITE_AXIS_SGIX"), # 0x814A
+    ("glGet",  F,      3,      "GL_SPRITE_TRANSLATION_SGIX"),  # 0x814B
+    ("",       X,      1,      "GL_SPRITE_AXIAL_SGIX"),        # 0x814C
+    ("",       X,      1,      "GL_SPRITE_OBJECT_ALIGNED_SGIX"),       # 0x814D
+    ("",       X,      1,      "GL_SPRITE_EYE_ALIGNED_SGIX"),  # 0x814E
+    ("glGet",  I,      1,      "GL_TEXTURE_4D_BINDING_SGIS"),  # 0x814F
+    ("",       X,      1,      "GL_IGNORE_BORDER_HP"), # 0x8150
+    ("",       X,      1,      "GL_CONSTANT_BORDER"),  # 0x8151
+    ("",       X,      1,      "GL_REPLICATE_BORDER"), # 0x8153
+    ("glGetConvolutionParameter",      F,      4,      "GL_CONVOLUTION_BORDER_COLOR"), # 0x8154
+    ("",       X,      1,      "GL_IMAGE_SCALE_X_HP"), # 0x8155
+    ("",       X,      1,      "GL_IMAGE_SCALE_Y_HP"), # 0x8156
+    ("",       X,      1,      "GL_IMAGE_TRANSLATE_X_HP"),     # 0x8157
+    ("",       X,      1,      "GL_IMAGE_TRANSLATE_Y_HP"),     # 0x8158
+    ("",       X,      1,      "GL_IMAGE_ROTATE_ANGLE_HP"),    # 0x8159
+    ("",       X,      1,      "GL_IMAGE_ROTATE_ORIGIN_X_HP"), # 0x815A
+    ("",       X,      1,      "GL_IMAGE_ROTATE_ORIGIN_Y_HP"), # 0x815B
+    ("",       X,      1,      "GL_IMAGE_MAG_FILTER_HP"),      # 0x815C
+    ("",       X,      1,      "GL_IMAGE_MIN_FILTER_HP"),      # 0x815D
+    ("",       X,      1,      "GL_IMAGE_CUBIC_WEIGHT_HP"),    # 0x815E
+    ("",       X,      1,      "GL_CUBIC_HP"), # 0x815F
+    ("",       X,      1,      "GL_AVERAGE_HP"),       # 0x8160
+    ("",       X,      1,      "GL_IMAGE_TRANSFORM_2D_HP"),    # 0x8161
+    ("",       X,      1,      "GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP"),      # 0x8162
+    ("",       X,      1,      "GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP"),        # 0x8163
+    ("_glGet", B,      1,      "GL_OCCLUSION_TEST_HP"),        # 0x8165
+    ("_glGet", B,      1,      "GL_OCCLUSION_TEST_RESULT_HP"), # 0x8166
+    ("",       X,      1,      "GL_TEXTURE_LIGHTING_MODE_HP"), # 0x8167
+    ("",       X,      1,      "GL_TEXTURE_POST_SPECULAR_HP"), # 0x8168
+    ("",       X,      1,      "GL_TEXTURE_PRE_SPECULAR_HP"),  # 0x8169
+    ("",       X,      1,      "GL_LINEAR_CLIPMAP_LINEAR_SGIX"),       # 0x8170
+    ("glGetTexParameter",      I,      2,      "GL_TEXTURE_CLIPMAP_CENTER_SGIX"),      # 0x8171
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_CLIPMAP_FRAME_SGIX"),       # 0x8172
+    ("glGetTexParameter",      I,      2,      "GL_TEXTURE_CLIPMAP_OFFSET_SGIX"),      # 0x8173
+    ("glGetTexParameter",      I,      3,      "GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX"),       # 0x8174
+    ("",       X,      1,      "GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX"),  # 0x8175
+    ("",       X,      1,      "GL_TEXTURE_CLIPMAP_DEPTH_SGIX"),       # 0x8176
+    ("glGet",  I,      1,      "GL_MAX_CLIPMAP_DEPTH_SGIX"),   # 0x8177
+    ("glGet",  I,      1,      "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX"),   # 0x8178
+    ("glGetTexParameter",      F,      1,      "GL_POST_TEXTURE_FILTER_BIAS_SGIX"),    # 0x8179
+    ("glGetTexParameter",      F,      1,      "GL_POST_TEXTURE_FILTER_SCALE_SGIX"),   # 0x817A
+    ("glGet",  F,      2,      "GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX"),      # 0x817B
+    ("glGet",  F,      2,      "GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX"),     # 0x817C
+    ("glGet",  I,      1,      "GL_REFERENCE_PLANE_SGIX"),     # 0x817D
+    ("glGet",  F,      4,      "GL_REFERENCE_PLANE_EQUATION_SGIX"),    # 0x817E
+    ("glGet",  I,      1,      "GL_IR_INSTRUMENT1_SGIX"),      # 0x817F
+    ("",       X,      1,      "GL_INSTRUMENT_BUFFER_POINTER_SGIX"),   # 0x8180
+    ("glGet",  I,      1,      "GL_INSTRUMENT_MEASUREMENTS_SGIX"),     # 0x8181
+    ("",       X,      1,      "GL_LIST_PRIORITY_SGIX"),       # 0x8182
+    ("glGet",  I,      1,      "GL_CALLIGRAPHIC_FRAGMENT_SGIX"),       # 0x8183
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_Q_CEILING_SGIX"),     # 0x8184
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_Q_ROUND_SGIX"),       # 0x8185
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX"),       # 0x8186
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX"), # 0x8187
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX"),      # 0x8188
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX"),      # 0x8189
+    ("",       X,      1,      "GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX"),      # 0x818A
+    ("glGet",  I,      1,      "GL_FRAMEZOOM_SGIX"),   # 0x818B
+    ("glGet",  I,      1,      "GL_FRAMEZOOM_FACTOR_SGIX"),    # 0x818C
+    ("glGet",  I,      1,      "GL_MAX_FRAMEZOOM_FACTOR_SGIX"),        # 0x818D
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_LOD_BIAS_S_SGIX"),  # 0x818E
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_LOD_BIAS_T_SGIX"),  # 0x818F
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_LOD_BIAS_R_SGIX"),  # 0x8190
+    ("glGetTexParameter",      B,      1,      "GL_GENERATE_MIPMAP"),  # 0x8191
+    ("glGet",  E,      1,      "GL_GENERATE_MIPMAP_HINT"),     # 0x8192
+    ("",       X,      1,      "GL_GEOMETRY_DEFORMATION_SGIX"),        # 0x8194
+    ("",       X,      1,      "GL_TEXTURE_DEFORMATION_SGIX"), # 0x8195
+    ("glGet",  I,      1,      "GL_DEFORMATIONS_MASK_SGIX"),   # 0x8196
+    ("",       X,      1,      "GL_MAX_DEFORMATION_ORDER_SGIX"),       # 0x8197
+    ("glGet",  I,      1,      "GL_FOG_OFFSET_SGIX"),  # 0x8198
+    ("glGet",  F,      4,      "GL_FOG_OFFSET_VALUE_SGIX"),    # 0x8199
+    ("glGetTexParameter",      B,      1,      "GL_TEXTURE_COMPARE_SGIX"),     # 0x819A
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_COMPARE_OPERATOR_SGIX"),    # 0x819B
+    ("",       X,      1,      "GL_TEXTURE_LEQUAL_R_SGIX"),    # 0x819C
+    ("",       X,      1,      "GL_TEXTURE_GEQUAL_R_SGIX"),    # 0x819D
+    ("",       X,      1,      "GL_DEPTH_COMPONENT16"),        # 0x81A5
+    ("",       X,      1,      "GL_DEPTH_COMPONENT24"),        # 0x81A6
+    ("",       X,      1,      "GL_DEPTH_COMPONENT32"),        # 0x81A7
+    ("",       X,      1,      "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT"),     # 0x81A8
+    ("",       X,      1,      "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT"),     # 0x81A9
+    ("",       X,      1,      "GL_CULL_VERTEX_EXT"),  # 0x81AA
+    ("",       X,      1,      "GL_CULL_VERTEX_EYE_POSITION_EXT"),     # 0x81AB
+    ("",       X,      1,      "GL_CULL_VERTEX_OBJECT_POSITION_EXT"),  # 0x81AC
+    ("",       X,      1,      "GL_IUI_V2F_EXT"),      # 0x81AD
+    ("",       X,      1,      "GL_IUI_V3F_EXT"),      # 0x81AE
+    ("",       X,      1,      "GL_IUI_N3F_V2F_EXT"),  # 0x81AF
+    ("",       X,      1,      "GL_IUI_N3F_V3F_EXT"),  # 0x81B0
+    ("",       X,      1,      "GL_T2F_IUI_V2F_EXT"),  # 0x81B1
+    ("",       X,      1,      "GL_T2F_IUI_V3F_EXT"),  # 0x81B2
+    ("",       X,      1,      "GL_T2F_IUI_N3F_V2F_EXT"),      # 0x81B3
+    ("",       X,      1,      "GL_T2F_IUI_N3F_V3F_EXT"),      # 0x81B4
+    ("",       X,      1,      "GL_INDEX_TEST_EXT"),   # 0x81B5
+    ("",       X,      1,      "GL_INDEX_TEST_FUNC_EXT"),      # 0x81B6
+    ("",       X,      1,      "GL_INDEX_TEST_REF_EXT"),       # 0x81B7
+    ("",       X,      1,      "GL_INDEX_MATERIAL_EXT"),       # 0x81B8
+    ("",       X,      1,      "GL_INDEX_MATERIAL_PARAMETER_EXT"),     # 0x81B9
+    ("",       X,      1,      "GL_INDEX_MATERIAL_FACE_EXT"),  # 0x81BA
+    ("",       X,      1,      "GL_YCRCB_422_SGIX"),   # 0x81BB
+    ("",       X,      1,      "GL_YCRCB_444_SGIX"),   # 0x81BC
+    ("",       X,      1,      "GL_WRAP_BORDER_SUN"),  # 0x81D4
+    ("",       X,      1,      "GL_UNPACK_CONSTANT_DATA_SUNX"),        # 0x81D5
+    ("",       X,      1,      "GL_TEXTURE_CONSTANT_DATA_SUNX"),       # 0x81D6
+    ("",       X,      1,      "GL_TRIANGLE_LIST_SUN"),        # 0x81D7
+    ("",       X,      1,      "GL_REPLACEMENT_CODE_SUN"),     # 0x81D8
+    ("",       X,      1,      "GL_GLOBAL_ALPHA_SUN"), # 0x81D9
+    ("",       X,      1,      "GL_GLOBAL_ALPHA_FACTOR_SUN"),  # 0x81DA
+    ("",       X,      1,      "GL_TEXTURE_COLOR_WRITEMASK_SGIS"),     # 0x81EF
+    ("",       X,      1,      "GL_EYE_DISTANCE_TO_POINT_SGIS"),       # 0x81F0
+    ("",       X,      1,      "GL_OBJECT_DISTANCE_TO_POINT_SGIS"),    # 0x81F1
+    ("",       X,      1,      "GL_EYE_DISTANCE_TO_LINE_SGIS"),        # 0x81F2
+    ("",       X,      1,      "GL_OBJECT_DISTANCE_TO_LINE_SGIS"),     # 0x81F3
+    ("",       X,      1,      "GL_EYE_POINT_SGIS"),   # 0x81F4
+    ("",       X,      1,      "GL_OBJECT_POINT_SGIS"),        # 0x81F5
+    ("",       X,      1,      "GL_EYE_LINE_SGIS"),    # 0x81F6
+    ("",       X,      1,      "GL_OBJECT_LINE_SGIS"), # 0x81F7
+    ("glGet",  E,      1,      "GL_LIGHT_MODEL_COLOR_CONTROL"),        # 0x81F8
+    ("",       X,      1,      "GL_SINGLE_COLOR"),     # 0x81F9
+    ("",       X,      1,      "GL_SEPARATE_SPECULAR_COLOR"),  # 0x81FA
+    ("",       X,      1,      "GL_SHARED_TEXTURE_PALETTE_EXT"),       # 0x81FB
+    ("",       X,      1,      "GL_FOG_SCALE_SGIX"),   # 0x81FC
+    ("",       X,      1,      "GL_FOG_SCALE_VALUE_SGIX"),     # 0x81FD
+    ("",       X,      1,      "GL_TEXT_FRAGMENT_SHADER_ATI"), # 0x8200
+    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"),    # 0x8210
+    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"),    # 0x8211
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"),  # 0x8212
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"),        # 0x8213
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"), # 0x8214
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"),        # 0x8215
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"),        # 0x8216
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"),      # 0x8217
+    ("",       X,      1,      "GL_FRAMEBUFFER_DEFAULT"),      # 0x8218
+    ("",       X,      1,      "GL_FRAMEBUFFER_UNDEFINED"),    # 0x8219
+    ("",       X,      1,      "GL_DEPTH_STENCIL_ATTACHMENT"), # 0x821A
+    ("glGet",  I,      1,      "GL_MAJOR_VERSION"),    # 0x821B
+    ("glGet",  I,      1,      "GL_MINOR_VERSION"),    # 0x821C
+    ("glGet",  I,      1,      "GL_NUM_EXTENSIONS"),   # 0x821D
+    ("glGet",  I,      1,      "GL_CONTEXT_FLAGS"),    # 0x821E
+    ("",       X,      1,      "GL_INDEX"),    # 0x8222
+    ("",       X,      1,      "GL_DEPTH_BUFFER"),     # 0x8223
+    ("",       X,      1,      "GL_STENCIL_BUFFER"),   # 0x8224
+    ("",       X,      1,      "GL_COMPRESSED_RED"),   # 0x8225
+    ("",       X,      1,      "GL_COMPRESSED_RG"),    # 0x8226
+    ("",       X,      1,      "GL_RG"),       # 0x8227
+    ("",       X,      1,      "GL_RG_INTEGER"),       # 0x8228
+    ("",       X,      1,      "GL_R8"),       # 0x8229
+    ("",       X,      1,      "GL_R16"),      # 0x822A
+    ("",       X,      1,      "GL_RG8"),      # 0x822B
+    ("",       X,      1,      "GL_RG16"),     # 0x822C
+    ("",       X,      1,      "GL_R16F"),     # 0x822D
+    ("",       X,      1,      "GL_R32F"),     # 0x822E
+    ("",       X,      1,      "GL_RG16F"),    # 0x822F
+    ("",       X,      1,      "GL_RG32F"),    # 0x8230
+    ("",       X,      1,      "GL_R8I"),      # 0x8231
+    ("",       X,      1,      "GL_R8UI"),     # 0x8232
+    ("",       X,      1,      "GL_R16I"),     # 0x8233
+    ("",       X,      1,      "GL_R16UI"),    # 0x8234
+    ("",       X,      1,      "GL_R32I"),     # 0x8235
+    ("",       X,      1,      "GL_R32UI"),    # 0x8236
+    ("",       X,      1,      "GL_RG8I"),     # 0x8237
+    ("",       X,      1,      "GL_RG8UI"),    # 0x8238
+    ("",       X,      1,      "GL_RG16I"),    # 0x8239
+    ("",       X,      1,      "GL_RG16UI"),   # 0x823A
+    ("",       X,      1,      "GL_RG32I"),    # 0x823B
+    ("",       X,      1,      "GL_RG32UI"),   # 0x823C
+    ("",       X,      1,      "GL_SYNC_CL_EVENT_ARB"),        # 0x8240
+    ("",       X,      1,      "GL_SYNC_CL_EVENT_COMPLETE_ARB"),       # 0x8241
+    ("",       X,      1,      "GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB"),     # 0x8242
+    ("",       X,      1,      "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB"),     # 0x8243
+    ("",       X,      1,      "GL_DEBUG_CALLBACK_FUNCTION_ARB"),      # 0x8244
+    ("",       X,      1,      "GL_DEBUG_CALLBACK_USER_PARAM_ARB"),    # 0x8245
+    ("",       X,      1,      "GL_DEBUG_SOURCE_API_ARB"),     # 0x8246
+    ("",       X,      1,      "GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB"),   # 0x8247
+    ("",       X,      1,      "GL_DEBUG_SOURCE_SHADER_COMPILER_ARB"), # 0x8248
+    ("",       X,      1,      "GL_DEBUG_SOURCE_THIRD_PARTY_ARB"),     # 0x8249
+    ("",       X,      1,      "GL_DEBUG_SOURCE_APPLICATION_ARB"),     # 0x824A
+    ("",       X,      1,      "GL_DEBUG_SOURCE_OTHER_ARB"),   # 0x824B
+    ("",       X,      1,      "GL_DEBUG_TYPE_ERROR_ARB"),     # 0x824C
+    ("",       X,      1,      "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB"),       # 0x824D
+    ("",       X,      1,      "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB"),        # 0x824E
+    ("",       X,      1,      "GL_DEBUG_TYPE_PORTABILITY_ARB"),       # 0x824F
+    ("",       X,      1,      "GL_DEBUG_TYPE_PERFORMANCE_ARB"),       # 0x8250
+    ("",       X,      1,      "GL_DEBUG_TYPE_OTHER_ARB"),     # 0x8251
+    ("",       X,      1,      "GL_LOSE_CONTEXT_ON_RESET_ARB"),        # 0x8252
+    ("",       X,      1,      "GL_GUILTY_CONTEXT_RESET_ARB"), # 0x8253
+    ("",       X,      1,      "GL_INNOCENT_CONTEXT_RESET_ARB"),       # 0x8254
+    ("",       X,      1,      "GL_UNKNOWN_CONTEXT_RESET_ARB"),        # 0x8255
+    ("glGet",  E,      1,      "GL_RESET_NOTIFICATION_STRATEGY_ARB"),  # 0x8256
+    ("",       X,      1,      "GL_PROGRAM_BINARY_RETRIEVABLE_HINT"),  # 0x8257
+    ("",       X,      1,      "GL_PROGRAM_SEPARABLE"),        # 0x8258
+    ("glGet",  I,      1,      "GL_ACTIVE_PROGRAM"),   # 0x8259
+    ("glGet",  I,      1,      "GL_PROGRAM_PIPELINE_BINDING"), # 0x825A
+    ("glGet",  I,      1,      "GL_MAX_VIEWPORTS"),    # 0x825B
+    ("glGet",  I,      1,      "GL_VIEWPORT_SUBPIXEL_BITS"),   # 0x825C
+    ("glGet",  F,      2,      "GL_VIEWPORT_BOUNDS_RANGE"),    # 0x825D
+    ("glGet",  E,      1,      "GL_LAYER_PROVOKING_VERTEX"),   # 0x825E
+    ("glGet",  E,      1,      "GL_VIEWPORT_INDEX_PROVOKING_VERTEX"),  # 0x825F
+    ("",       X,      1,      "GL_UNDEFINED_VERTEX"), # 0x8260
+    ("",       X,      1,      "GL_NO_RESET_NOTIFICATION_ARB"),        # 0x8261
+    ("",       X,      1,      "GL_DEPTH_PASS_INSTRUMENT_SGIX"),       # 0x8310
+    ("",       X,      1,      "GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX"),      # 0x8311
+    ("",       X,      1,      "GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX"),   # 0x8312
+    ("glGet",  I,      1,      "GL_CONVOLUTION_HINT_SGIX"),    # 0x8316
+    ("",       X,      1,      "GL_YCRCB_SGIX"),       # 0x8318
+    ("",       X,      1,      "GL_YCRCBA_SGIX"),      # 0x8319
+    ("",       X,      1,      "GL_ALPHA_MIN_SGIX"),   # 0x8320
+    ("",       X,      1,      "GL_ALPHA_MAX_SGIX"),   # 0x8321
+    ("",       X,      1,      "GL_SCALEBIAS_HINT_SGIX"),      # 0x8322
+    ("",       X,      1,      "GL_ASYNC_MARKER_SGIX"),        # 0x8329
+    ("glGet",  I,      1,      "GL_PIXEL_TEX_GEN_MODE_SGIX"),  # 0x832B
+    ("",       X,      1,      "GL_ASYNC_HISTOGRAM_SGIX"),     # 0x832C
+    ("",       X,      1,      "GL_MAX_ASYNC_HISTOGRAM_SGIX"), # 0x832D
+    ("",       X,      1,      "GL_PIXEL_TRANSFORM_2D_EXT"),   # 0x8330
+    ("",       X,      1,      "GL_PIXEL_MAG_FILTER_EXT"),     # 0x8331
+    ("",       X,      1,      "GL_PIXEL_MIN_FILTER_EXT"),     # 0x8332
+    ("",       X,      1,      "GL_PIXEL_CUBIC_WEIGHT_EXT"),   # 0x8333
+    ("",       X,      1,      "GL_CUBIC_EXT"),        # 0x8334
+    ("",       X,      1,      "GL_AVERAGE_EXT"),      # 0x8335
+    ("",       X,      1,      "GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT"),       # 0x8336
+    ("",       X,      1,      "GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT"),   # 0x8337
+    ("",       X,      1,      "GL_PIXEL_TRANSFORM_2D_MATRIX_EXT"),    # 0x8338
+    ("",       X,      1,      "GL_FRAGMENT_MATERIAL_EXT"),    # 0x8349
+    ("",       X,      1,      "GL_FRAGMENT_NORMAL_EXT"),      # 0x834A
+    ("",       X,      1,      "GL_FRAGMENT_COLOR_EXT"),       # 0x834C
+    ("",       X,      1,      "GL_ATTENUATION_EXT"),  # 0x834D
+    ("",       X,      1,      "GL_SHADOW_ATTENUATION_EXT"),   # 0x834E
+    ("glGet",  I,      1,      "GL_TEXTURE_APPLICATION_MODE_EXT"),     # 0x834F
+    ("glGet",  I,      1,      "GL_TEXTURE_LIGHT_EXT"),        # 0x8350
+    ("glGet",  I,      1,      "GL_TEXTURE_MATERIAL_FACE_EXT"),        # 0x8351
+    ("glGet",  I,      1,      "GL_TEXTURE_MATERIAL_PARAMETER_EXT"),   # 0x8352
+    ("glGet",  I,      1,      "GL_PIXEL_TEXTURE_SGIS"),       # 0x8353
+    ("glGet",  I,      1,      "GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS"),   # 0x8354
+    ("glGet",  I,      1,      "GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS"), # 0x8355
+    ("glGet",  I,      1,      "GL_PIXEL_GROUP_COLOR_SGIS"),   # 0x8356
+    ("",       X,      1,      "GL_ASYNC_TEX_IMAGE_SGIX"),     # 0x835C
+    ("",       X,      1,      "GL_ASYNC_DRAW_PIXELS_SGIX"),   # 0x835D
+    ("",       X,      1,      "GL_ASYNC_READ_PIXELS_SGIX"),   # 0x835E
+    ("",       X,      1,      "GL_MAX_ASYNC_TEX_IMAGE_SGIX"), # 0x835F
+    ("",       X,      1,      "GL_MAX_ASYNC_DRAW_PIXELS_SGIX"),       # 0x8360
+    ("",       X,      1,      "GL_MAX_ASYNC_READ_PIXELS_SGIX"),       # 0x8361
+    ("",       X,      1,      "GL_UNSIGNED_BYTE_2_3_3_REV"),  # 0x8362
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_5_6_5"),     # 0x8363
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_5_6_5_REV"), # 0x8364
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_4_4_4_4_REV"),       # 0x8365
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_1_5_5_5_REV"),       # 0x8366
+    ("",       X,      1,      "GL_UNSIGNED_INT_8_8_8_8_REV"), # 0x8367
+    ("",       X,      1,      "GL_UNSIGNED_INT_2_10_10_10_REV"),      # 0x8368
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_CLAMP_S_SGIX"), # 0x8369
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_CLAMP_T_SGIX"), # 0x836A
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_CLAMP_R_SGIX"), # 0x836B
+    ("",       X,      1,      "GL_MIRRORED_REPEAT"),  # 0x8370
+    ("",       X,      1,      "GL_RGB_S3TC"), # 0x83A0
+    ("",       X,      1,      "GL_RGB4_S3TC"),        # 0x83A1
+    ("",       X,      1,      "GL_RGBA_S3TC"),        # 0x83A2
+    ("",       X,      1,      "GL_RGBA4_S3TC"),       # 0x83A3
+    ("",       X,      1,      "GL_VERTEX_PRECLIP_SGIX"),      # 0x83EE
+    ("",       X,      1,      "GL_VERTEX_PRECLIP_HINT_SGIX"), # 0x83EF
+    ("",       X,      1,      "GL_COMPRESSED_RGB_S3TC_DXT1_EXT"),     # 0x83F0
+    ("",       X,      1,      "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"),    # 0x83F1
+    ("",       X,      1,      "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"),    # 0x83F2
+    ("",       X,      1,      "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"),    # 0x83F3
+    ("",       X,      1,      "GL_PARALLEL_ARRAYS_INTEL"),    # 0x83F4
+    ("",       X,      1,      "GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL"),     # 0x83F5
+    ("",       X,      1,      "GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL"),     # 0x83F6
+    ("",       X,      1,      "GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL"),      # 0x83F7
+    ("",       X,      1,      "GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL"),      # 0x83F8
+    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHTING_SGIX"),   # 0x8400
+    ("glGet",  I,      1,      "GL_FRAGMENT_COLOR_MATERIAL_SGIX"),     # 0x8401
+    ("glGet",  I,      1,      "GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX"),        # 0x8402
+    ("glGet",  I,      1,      "GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX"),   # 0x8403
+    ("glGet",  I,      1,      "GL_MAX_FRAGMENT_LIGHTS_SGIX"), # 0x8404
+    ("glGet",  I,      1,      "GL_MAX_ACTIVE_LIGHTS_SGIX"),   # 0x8405
+    ("glGet",  I,      1,      "GL_CURRENT_RASTER_NORMAL_SGIX"),       # 0x8406
+    ("glGet",  I,      1,      "GL_LIGHT_ENV_MODE_SGIX"),      # 0x8407
+    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX"),   # 0x8408
+    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX"),       # 0x8409
+    ("glGet",  F,      4,      "GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX"),        # 0x840A
+    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX"),   # 0x840B
+    ("glGet",  I,      1,      "GL_FRAGMENT_LIGHT0_SGIX"),     # 0x840C
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT1_SGIX"),     # 0x840D
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT2_SGIX"),     # 0x840E
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT3_SGIX"),     # 0x840F
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT4_SGIX"),     # 0x8410
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT5_SGIX"),     # 0x8411
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT6_SGIX"),     # 0x8412
+    ("",       X,      1,      "GL_FRAGMENT_LIGHT7_SGIX"),     # 0x8413
+    ("",       X,      1,      "GL_PACK_RESAMPLE_SGIX"),       # 0x842C
+    ("",       X,      1,      "GL_UNPACK_RESAMPLE_SGIX"),     # 0x842D
+    ("",       X,      1,      "GL_RESAMPLE_REPLICATE_SGIX"),  # 0x842E
+    ("",       X,      1,      "GL_RESAMPLE_ZERO_FILL_SGIX"),  # 0x842F
+    ("",       X,      1,      "GL_RESAMPLE_DECIMATE_SGIX"),   # 0x8430
+    ("",       X,      1,      "GL_TANGENT_ARRAY_EXT"),        # 0x8439
+    ("",       X,      1,      "GL_BINORMAL_ARRAY_EXT"),       # 0x843A
+    ("",       X,      1,      "GL_CURRENT_TANGENT_EXT"),      # 0x843B
+    ("",       X,      1,      "GL_CURRENT_BINORMAL_EXT"),     # 0x843C
+    ("glGet",  E,      1,      "GL_TANGENT_ARRAY_TYPE_EXT"),   # 0x843E
+    ("",       X,      1,      "GL_TANGENT_ARRAY_STRIDE_EXT"), # 0x843F
+    ("glGet",  E,      1,      "GL_BINORMAL_ARRAY_TYPE_EXT"),  # 0x8440
+    ("",       X,      1,      "GL_BINORMAL_ARRAY_STRIDE_EXT"),        # 0x8441
+    ("glGet",  P,      1,      "GL_TANGENT_ARRAY_POINTER_EXT"),        # 0x8442
+    ("glGet",  P,      1,      "GL_BINORMAL_ARRAY_POINTER_EXT"),       # 0x8443
+    ("",       X,      1,      "GL_MAP1_TANGENT_EXT"), # 0x8444
+    ("",       X,      1,      "GL_MAP2_TANGENT_EXT"), # 0x8445
+    ("",       X,      1,      "GL_MAP1_BINORMAL_EXT"),        # 0x8446
+    ("",       X,      1,      "GL_MAP2_BINORMAL_EXT"),        # 0x8447
+    ("",       X,      1,      "GL_NEAREST_CLIPMAP_NEAREST_SGIX"),     # 0x844D
+    ("",       X,      1,      "GL_NEAREST_CLIPMAP_LINEAR_SGIX"),      # 0x844E
+    ("",       X,      1,      "GL_LINEAR_CLIPMAP_NEAREST_SGIX"),      # 0x844F
+    ("glGet",  E,      1,      "GL_FOG_COORD_SRC"),    # 0x8450
+    ("",       X,      1,      "GL_FOG_COORD"),        # 0x8451
+    ("",       X,      1,      "GL_FRAGMENT_DEPTH"),   # 0x8452
+    ("glGet",  F,      1,      "GL_CURRENT_FOG_COORD"),        # 0x8453
+    ("glGet",  E,      1,      "GL_FOG_COORD_ARRAY_TYPE"),     # 0x8454
+    ("glGet",  I,      1,      "GL_FOG_COORD_ARRAY_STRIDE"),   # 0x8455
+    ("",       X,      1,      "GL_FOG_COORD_ARRAY_POINTER"),  # 0x8456
+    ("glGet",  B,      1,      "GL_FOG_COORD_ARRAY"),  # 0x8457
+    ("glGet",  B,      1,      "GL_COLOR_SUM"),        # 0x8458
+    ("glGet",  F,      3,      "GL_CURRENT_SECONDARY_COLOR"),  # 0x8459
+    ("glGet",  I,      1,      "GL_SECONDARY_COLOR_ARRAY_SIZE"),       # 0x845A
+    ("glGet",  E,      1,      "GL_SECONDARY_COLOR_ARRAY_TYPE"),       # 0x845B
+    ("glGet",  I,      1,      "GL_SECONDARY_COLOR_ARRAY_STRIDE"),     # 0x845C
+    ("",       X,      1,      "GL_SECONDARY_COLOR_ARRAY_POINTER"),    # 0x845D
+    ("glGet",  B,      1,      "GL_SECONDARY_COLOR_ARRAY"),    # 0x845E
+    ("",       X,      1,      "GL_CURRENT_RASTER_SECONDARY_COLOR"),   # 0x845F
+    ("glGet",  F,      2,      "GL_ALIASED_POINT_SIZE_RANGE"), # 0x846D
+    ("glGet",  F,      2,      "GL_ALIASED_LINE_WIDTH_RANGE"), # 0x846E
+    ("",       X,      1,      "GL_SCREEN_COORDINATES_REND"),  # 0x8490
+    ("",       X,      1,      "GL_INVERTED_SCREEN_W_REND"),   # 0x8491
+    ("",       X,      1,      "GL_TEXTURE0"), # 0x84C0
+    ("",       X,      1,      "GL_TEXTURE1"), # 0x84C1
+    ("",       X,      1,      "GL_TEXTURE2"), # 0x84C2
+    ("",       X,      1,      "GL_TEXTURE3"), # 0x84C3
+    ("",       X,      1,      "GL_TEXTURE4"), # 0x84C4
+    ("",       X,      1,      "GL_TEXTURE5"), # 0x84C5
+    ("",       X,      1,      "GL_TEXTURE6"), # 0x84C6
+    ("",       X,      1,      "GL_TEXTURE7"), # 0x84C7
+    ("",       X,      1,      "GL_TEXTURE8"), # 0x84C8
+    ("",       X,      1,      "GL_TEXTURE9"), # 0x84C9
+    ("",       X,      1,      "GL_TEXTURE10"),        # 0x84CA
+    ("",       X,      1,      "GL_TEXTURE11"),        # 0x84CB
+    ("",       X,      1,      "GL_TEXTURE12"),        # 0x84CC
+    ("",       X,      1,      "GL_TEXTURE13"),        # 0x84CD
+    ("",       X,      1,      "GL_TEXTURE14"),        # 0x84CE
+    ("",       X,      1,      "GL_TEXTURE15"),        # 0x84CF
+    ("",       X,      1,      "GL_TEXTURE16"),        # 0x84D0
+    ("",       X,      1,      "GL_TEXTURE17"),        # 0x84D1
+    ("",       X,      1,      "GL_TEXTURE18"),        # 0x84D2
+    ("",       X,      1,      "GL_TEXTURE19"),        # 0x84D3
+    ("",       X,      1,      "GL_TEXTURE20"),        # 0x84D4
+    ("",       X,      1,      "GL_TEXTURE21"),        # 0x84D5
+    ("",       X,      1,      "GL_TEXTURE22"),        # 0x84D6
+    ("",       X,      1,      "GL_TEXTURE23"),        # 0x84D7
+    ("",       X,      1,      "GL_TEXTURE24"),        # 0x84D8
+    ("",       X,      1,      "GL_TEXTURE25"),        # 0x84D9
+    ("",       X,      1,      "GL_TEXTURE26"),        # 0x84DA
+    ("",       X,      1,      "GL_TEXTURE27"),        # 0x84DB
+    ("",       X,      1,      "GL_TEXTURE28"),        # 0x84DC
+    ("",       X,      1,      "GL_TEXTURE29"),        # 0x84DD
+    ("",       X,      1,      "GL_TEXTURE30"),        # 0x84DE
+    ("",       X,      1,      "GL_TEXTURE31"),        # 0x84DF
+    ("glGet",  E,      1,      "GL_ACTIVE_TEXTURE"),   # 0x84E0
+    ("glGet",  E,      1,      "GL_CLIENT_ACTIVE_TEXTURE"),    # 0x84E1
+    ("glGet",  I,      1,      "GL_MAX_TEXTURE_UNITS"),        # 0x84E2
+    ("glGet",  F,      16,     "GL_TRANSPOSE_MODELVIEW_MATRIX"),       # 0x84E3
+    ("glGet",  F,      16,     "GL_TRANSPOSE_PROJECTION_MATRIX"),      # 0x84E4
+    ("glGet",  F,      16,     "GL_TRANSPOSE_TEXTURE_MATRIX"), # 0x84E5
+    ("glGet",  F,      16,     "GL_TRANSPOSE_COLOR_MATRIX"),   # 0x84E6
+    ("",       X,      1,      "GL_SUBTRACT"), # 0x84E7
+    ("glGet",  I,      1,      "GL_MAX_RENDERBUFFER_SIZE"),    # 0x84E8
+    ("",       X,      1,      "GL_COMPRESSED_ALPHA"), # 0x84E9
+    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE"),     # 0x84EA
+    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE_ALPHA"),       # 0x84EB
+    ("",       X,      1,      "GL_COMPRESSED_INTENSITY"),     # 0x84EC
+    ("",       X,      1,      "GL_COMPRESSED_RGB"),   # 0x84ED
+    ("",       X,      1,      "GL_COMPRESSED_RGBA"),  # 0x84EE
+    ("glGet",  E,      1,      "GL_TEXTURE_COMPRESSION_HINT"), # 0x84EF
+    ("",       X,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"),  # 0x84F0
+    ("",       X,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"),       # 0x84F1
+    ("",       X,      1,      "GL_ALL_COMPLETED_NV"), # 0x84F2
+    ("",       X,      1,      "GL_FENCE_STATUS_NV"),  # 0x84F3
+    ("",       X,      1,      "GL_FENCE_CONDITION_NV"),       # 0x84F4
+    ("_glGet", B,      1,      "GL_TEXTURE_RECTANGLE"),        # 0x84F5
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_RECTANGLE"),        # 0x84F6
+    ("",       X,      1,      "GL_PROXY_TEXTURE_RECTANGLE"),  # 0x84F7
+    ("glGet",  I,      1,      "GL_MAX_RECTANGLE_TEXTURE_SIZE"),       # 0x84F8
+    ("",       X,      1,      "GL_DEPTH_STENCIL"),    # 0x84F9
+    ("",       X,      1,      "GL_UNSIGNED_INT_24_8"),        # 0x84FA
+    ("glGet",  F,      1,      "GL_MAX_TEXTURE_LOD_BIAS"),     # 0x84FD
+    ("glGetTexParameter",      F,      1,      "GL_TEXTURE_MAX_ANISOTROPY_EXT"),       # 0x84FE
+    ("glGet",  F,      1,      "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"),   # 0x84FF
+    ("glGetTexEnv",    E,      1,      "GL_TEXTURE_FILTER_CONTROL"),   # 0x8500
+    ("glGetTexParameter,glGetTexEnv",  F,      1,      "GL_TEXTURE_LOD_BIAS"), # 0x8501
+    ("",       X,      1,      "GL_MODELVIEW1_STACK_DEPTH_EXT"),       # 0x8502
+    ("",       X,      1,      "GL_COMBINE4_NV"),      # 0x8503
+    ("glGet",  F,      1,      "GL_MAX_SHININESS_NV"), # 0x8504
+    ("glGet",  F,      1,      "GL_MAX_SPOT_EXPONENT_NV"),     # 0x8505
+    ("",       X,      1,      "GL_MODELVIEW1_MATRIX_EXT"),    # 0x8506
+    ("",       X,      1,      "GL_INCR_WRAP"),        # 0x8507
+    ("",       X,      1,      "GL_DECR_WRAP"),        # 0x8508
+    ("",       X,      1,      "GL_VERTEX_WEIGHTING_EXT"),     # 0x8509
+    ("",       X,      1,      "GL_MODELVIEW1_ARB"),   # 0x850A
+    ("",       X,      1,      "GL_CURRENT_VERTEX_WEIGHT_EXT"),        # 0x850B
+    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_EXT"),  # 0x850C
+    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT"),     # 0x850D
+    ("glGet",  E,      1,      "GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT"),     # 0x850E
+    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT"),   # 0x850F
+    ("",       X,      1,      "GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT"),  # 0x8510
+    ("",       X,      1,      "GL_NORMAL_MAP"),       # 0x8511
+    ("",       X,      1,      "GL_REFLECTION_MAP"),   # 0x8512
+    ("_glGet", B,      1,      "GL_TEXTURE_CUBE_MAP"), # 0x8513
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_CUBE_MAP"), # 0x8514
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_POSITIVE_X"),      # 0x8515
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_NEGATIVE_X"),      # 0x8516
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_POSITIVE_Y"),      # 0x8517
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"),      # 0x8518
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_POSITIVE_Z"),      # 0x8519
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"),      # 0x851A
+    ("",       X,      1,      "GL_PROXY_TEXTURE_CUBE_MAP"),   # 0x851B
+    ("glGet",  I,      1,      "GL_MAX_CUBE_MAP_TEXTURE_SIZE"),        # 0x851C
+    ("_glGet", B,      1,      "GL_VERTEX_ARRAY_RANGE_NV"),    # 0x851D
+    ("_glGet", I,      1,      "GL_VERTEX_ARRAY_RANGE_LENGTH_NV"),     # 0x851E
+    ("_glGet", B,      1,      "GL_VERTEX_ARRAY_RANGE_VALID_NV"),      # 0x851F
+    ("_glGet", I,      1,      "GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV"),        # 0x8520
+    ("_glGet", P,      1,      "GL_VERTEX_ARRAY_RANGE_POINTER_NV"),    # 0x8521
+    ("",       X,      1,      "GL_REGISTER_COMBINERS_NV"),    # 0x8522
+    ("",       X,      1,      "GL_VARIABLE_A_NV"),    # 0x8523
+    ("",       X,      1,      "GL_VARIABLE_B_NV"),    # 0x8524
+    ("",       X,      1,      "GL_VARIABLE_C_NV"),    # 0x8525
+    ("",       X,      1,      "GL_VARIABLE_D_NV"),    # 0x8526
+    ("",       X,      1,      "GL_VARIABLE_E_NV"),    # 0x8527
+    ("",       X,      1,      "GL_VARIABLE_F_NV"),    # 0x8528
+    ("",       X,      1,      "GL_VARIABLE_G_NV"),    # 0x8529
+    ("glGet",  F,      4,      "GL_CONSTANT_COLOR0_NV"),       # 0x852A
+    ("glGet",  F,      4,      "GL_CONSTANT_COLOR1_NV"),       # 0x852B
+    ("",       X,      1,      "GL_PRIMARY_COLOR_NV"), # 0x852C
+    ("",       X,      1,      "GL_SECONDARY_COLOR_NV"),       # 0x852D
+    ("",       X,      1,      "GL_SPARE0_NV"),        # 0x852E
+    ("",       X,      1,      "GL_SPARE1_NV"),        # 0x852F
+    ("",       X,      1,      "GL_DISCARD_NV"),       # 0x8530
+    ("",       X,      1,      "GL_E_TIMES_F_NV"),     # 0x8531
+    ("",       X,      1,      "GL_SPARE0_PLUS_SECONDARY_COLOR_NV"),   # 0x8532
+    ("",       X,      1,      "GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV"),      # 0x8533
+    ("glGet",  E,      1,      "GL_MULTISAMPLE_FILTER_HINT_NV"),       # 0x8534
+    ("",       X,      1,      "GL_PER_STAGE_CONSTANTS_NV"),   # 0x8535
+    ("",       X,      1,      "GL_UNSIGNED_IDENTITY_NV"),     # 0x8536
+    ("",       X,      1,      "GL_UNSIGNED_INVERT_NV"),       # 0x8537
+    ("",       X,      1,      "GL_EXPAND_NORMAL_NV"), # 0x8538
+    ("",       X,      1,      "GL_EXPAND_NEGATE_NV"), # 0x8539
+    ("",       X,      1,      "GL_HALF_BIAS_NORMAL_NV"),      # 0x853A
+    ("",       X,      1,      "GL_HALF_BIAS_NEGATE_NV"),      # 0x853B
+    ("",       X,      1,      "GL_SIGNED_IDENTITY_NV"),       # 0x853C
+    ("",       X,      1,      "GL_SIGNED_NEGATE_NV"), # 0x853D
+    ("",       X,      1,      "GL_SCALE_BY_TWO_NV"),  # 0x853E
+    ("",       X,      1,      "GL_SCALE_BY_FOUR_NV"), # 0x853F
+    ("",       X,      1,      "GL_SCALE_BY_ONE_HALF_NV"),     # 0x8540
+    ("",       X,      1,      "GL_BIAS_BY_NEGATIVE_ONE_HALF_NV"),     # 0x8541
+    ("",       X,      1,      "GL_COMBINER_INPUT_NV"),        # 0x8542
+    ("",       X,      1,      "GL_COMBINER_MAPPING_NV"),      # 0x8543
+    ("",       X,      1,      "GL_COMBINER_COMPONENT_USAGE_NV"),      # 0x8544
+    ("",       X,      1,      "GL_COMBINER_AB_DOT_PRODUCT_NV"),       # 0x8545
+    ("",       X,      1,      "GL_COMBINER_CD_DOT_PRODUCT_NV"),       # 0x8546
+    ("",       X,      1,      "GL_COMBINER_MUX_SUM_NV"),      # 0x8547
+    ("",       X,      1,      "GL_COMBINER_SCALE_NV"),        # 0x8548
+    ("",       X,      1,      "GL_COMBINER_BIAS_NV"), # 0x8549
+    ("",       X,      1,      "GL_COMBINER_AB_OUTPUT_NV"),    # 0x854A
+    ("",       X,      1,      "GL_COMBINER_CD_OUTPUT_NV"),    # 0x854B
+    ("",       X,      1,      "GL_COMBINER_SUM_OUTPUT_NV"),   # 0x854C
+    ("glGet",  I,      1,      "GL_MAX_GENERAL_COMBINERS_NV"), # 0x854D
+    ("glGet",  I,      1,      "GL_NUM_GENERAL_COMBINERS_NV"), # 0x854E
+    ("glGet",  B,      1,      "GL_COLOR_SUM_CLAMP_NV"),       # 0x854F
+    ("",       X,      1,      "GL_COMBINER0_NV"),     # 0x8550
+    ("",       X,      1,      "GL_COMBINER1_NV"),     # 0x8551
+    ("",       X,      1,      "GL_COMBINER2_NV"),     # 0x8552
+    ("",       X,      1,      "GL_COMBINER3_NV"),     # 0x8553
+    ("",       X,      1,      "GL_COMBINER4_NV"),     # 0x8554
+    ("",       X,      1,      "GL_COMBINER5_NV"),     # 0x8555
+    ("",       X,      1,      "GL_COMBINER6_NV"),     # 0x8556
+    ("",       X,      1,      "GL_COMBINER7_NV"),     # 0x8557
+    ("",       X,      1,      "GL_PRIMITIVE_RESTART_NV"),     # 0x8558
+    ("",       X,      1,      "GL_PRIMITIVE_RESTART_INDEX_NV"),       # 0x8559
+    ("glGet",  E,      1,      "GL_FOG_DISTANCE_MODE_NV"),     # 0x855A
+    ("",       X,      1,      "GL_EYE_RADIAL_NV"),    # 0x855B
+    ("",       X,      1,      "GL_EYE_PLANE_ABSOLUTE_NV"),    # 0x855C
+    ("",       X,      1,      "GL_EMBOSS_LIGHT_NV"),  # 0x855D
+    ("",       X,      1,      "GL_EMBOSS_CONSTANT_NV"),       # 0x855E
+    ("",       X,      1,      "GL_EMBOSS_MAP_NV"),    # 0x855F
+    ("",       X,      1,      "GL_RED_MIN_CLAMP_INGR"),       # 0x8560
+    ("",       X,      1,      "GL_GREEN_MIN_CLAMP_INGR"),     # 0x8561
+    ("",       X,      1,      "GL_BLUE_MIN_CLAMP_INGR"),      # 0x8562
+    ("",       X,      1,      "GL_ALPHA_MIN_CLAMP_INGR"),     # 0x8563
+    ("",       X,      1,      "GL_RED_MAX_CLAMP_INGR"),       # 0x8564
+    ("",       X,      1,      "GL_GREEN_MAX_CLAMP_INGR"),     # 0x8565
+    ("",       X,      1,      "GL_BLUE_MAX_CLAMP_INGR"),      # 0x8566
+    ("",       X,      1,      "GL_ALPHA_MAX_CLAMP_INGR"),     # 0x8567
+    ("",       X,      1,      "GL_INTERLACE_READ_INGR"),      # 0x8568
+    ("",       X,      1,      "GL_COMBINE"),  # 0x8570
+    ("glGetTexEnv",    E,      1,      "GL_COMBINE_RGB"),      # 0x8571
+    ("glGetTexEnv",    E,      1,      "GL_COMBINE_ALPHA"),    # 0x8572
+    ("glGetTexEnv",    F,      1,      "GL_RGB_SCALE"),        # 0x8573
+    ("",       X,      1,      "GL_ADD_SIGNED"),       # 0x8574
+    ("",       X,      1,      "GL_INTERPOLATE"),      # 0x8575
+    ("",       X,      1,      "GL_CONSTANT"), # 0x8576
+    ("",       X,      1,      "GL_PRIMARY_COLOR"),    # 0x8577
+    ("",       X,      1,      "GL_PREVIOUS"), # 0x8578
+    ("glGetTexEnv",    E,      1,      "GL_SRC0_RGB"), # 0x8580
+    ("glGetTexEnv",    E,      1,      "GL_SRC1_RGB"), # 0x8581
+    ("glGetTexEnv",    E,      1,      "GL_SRC2_RGB"), # 0x8582
+    ("glGetTexEnv",    E,      1,      "GL_SOURCE3_RGB_NV"),   # 0x8583
+    ("glGetTexEnv",    E,      1,      "GL_SRC0_ALPHA"),       # 0x8588
+    ("glGetTexEnv",    E,      1,      "GL_SRC1_ALPHA"),       # 0x8589
+    ("glGetTexEnv",    E,      1,      "GL_SRC2_ALPHA"),       # 0x858A
+    ("glGetTexEnv",    E,      1,      "GL_SOURCE3_ALPHA_NV"), # 0x858B
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND0_RGB"),     # 0x8590
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND1_RGB"),     # 0x8591
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND2_RGB"),     # 0x8592
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND3_RGB_NV"),  # 0x8593
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND0_ALPHA"),   # 0x8598
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND1_ALPHA"),   # 0x8599
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND2_ALPHA"),   # 0x859A
+    ("glGetTexEnv",    E,      1,      "GL_OPERAND3_ALPHA_NV"),        # 0x859B
+    ("",       X,      1,      "GL_PACK_SUBSAMPLE_RATE_SGIX"), # 0x85A0
+    ("",       X,      1,      "GL_UNPACK_SUBSAMPLE_RATE_SGIX"),       # 0x85A1
+    ("",       X,      1,      "GL_PIXEL_SUBSAMPLE_4444_SGIX"),        # 0x85A2
+    ("",       X,      1,      "GL_PIXEL_SUBSAMPLE_2424_SGIX"),        # 0x85A3
+    ("",       X,      1,      "GL_PIXEL_SUBSAMPLE_4242_SGIX"),        # 0x85A4
+    ("",       X,      1,      "GL_PERTURB_EXT"),      # 0x85AE
+    ("",       X,      1,      "GL_TEXTURE_NORMAL_EXT"),       # 0x85AF
+    ("",       X,      1,      "GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE"),        # 0x85B0
+    ("",       X,      1,      "GL_TRANSFORM_HINT_APPLE"),     # 0x85B1
+    ("",       X,      1,      "GL_UNPACK_CLIENT_STORAGE_APPLE"),      # 0x85B2
+    ("",       X,      1,      "GL_BUFFER_OBJECT_APPLE"),      # 0x85B3
+    ("",       X,      1,      "GL_STORAGE_CLIENT_APPLE"),     # 0x85B4
+    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_BINDING"),     # 0x85B5
+    ("glGetTexParameter",      X,      1,      "GL_TEXTURE_RANGE_LENGTH_APPLE"),       # 0x85B7
+    ("",       P,      1,      "GL_TEXTURE_RANGE_POINTER_APPLE"),      # 0x85B8
+    ("",       X,      1,      "GL_YCBCR_422_APPLE"),  # 0x85B9
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_8_8_MESA"),  # 0x85BA
+    ("",       X,      1,      "GL_UNSIGNED_SHORT_8_8_REV_MESA"),      # 0x85BB
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_STORAGE_HINT_APPLE"),       # 0x85BC
+    ("",       X,      1,      "GL_STORAGE_PRIVATE_APPLE"),    # 0x85BD
+    ("",       X,      1,      "GL_STORAGE_CACHED_APPLE"),     # 0x85BE
+    ("",       X,      1,      "GL_STORAGE_SHARED_APPLE"),     # 0x85BF
+    ("",       X,      1,      "GL_REPLACEMENT_CODE_ARRAY_SUN"),       # 0x85C0
+    ("glGet",  E,      1,      "GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN"),  # 0x85C1
+    ("",       X,      1,      "GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN"),        # 0x85C2
+    ("",       X,      1,      "GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN"),       # 0x85C3
+    ("",       X,      1,      "GL_R1UI_V3F_SUN"),     # 0x85C4
+    ("",       X,      1,      "GL_R1UI_C4UB_V3F_SUN"),        # 0x85C5
+    ("",       X,      1,      "GL_R1UI_C3F_V3F_SUN"), # 0x85C6
+    ("",       X,      1,      "GL_R1UI_N3F_V3F_SUN"), # 0x85C7
+    ("",       X,      1,      "GL_R1UI_C4F_N3F_V3F_SUN"),     # 0x85C8
+    ("",       X,      1,      "GL_R1UI_T2F_V3F_SUN"), # 0x85C9
+    ("",       X,      1,      "GL_R1UI_T2F_N3F_V3F_SUN"),     # 0x85CA
+    ("",       X,      1,      "GL_R1UI_T2F_C4F_N3F_V3F_SUN"), # 0x85CB
+    ("",       X,      1,      "GL_SLICE_ACCUM_SUN"),  # 0x85CC
+    ("",       X,      1,      "GL_QUAD_MESH_SUN"),    # 0x8614
+    ("",       X,      1,      "GL_TRIANGLE_MESH_SUN"),        # 0x8615
+    ("_glGet", B,      1,      "GL_VERTEX_PROGRAM_ARB"),       # 0x8620
+    ("",       X,      1,      "GL_VERTEX_STATE_PROGRAM_NV"),  # 0x8621
+    ("glGetVertexAttrib",      B,      1,      "GL_VERTEX_ATTRIB_ARRAY_ENABLED"),      # 0x8622
+    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_SIZE"), # 0x8623
+    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_STRIDE"),       # 0x8624
+    ("glGetVertexAttrib",      E,      1,      "GL_VERTEX_ATTRIB_ARRAY_TYPE"), # 0x8625
+    ("glGetVertexAttrib",      D,      4,      "GL_CURRENT_VERTEX_ATTRIB"),    # 0x8626
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_LENGTH_ARB"),       # 0x8627
+    ("",       S,      1,      "GL_PROGRAM_STRING_ARB"),       # 0x8628
+    ("",       X,      1,      "GL_MODELVIEW_PROJECTION_NV"),  # 0x8629
+    ("",       X,      1,      "GL_IDENTITY_NV"),      # 0x862A
+    ("",       X,      1,      "GL_INVERSE_NV"),       # 0x862B
+    ("",       X,      1,      "GL_TRANSPOSE_NV"),     # 0x862C
+    ("",       X,      1,      "GL_INVERSE_TRANSPOSE_NV"),     # 0x862D
+    ("glGet",  I,      1,      "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB"),       # 0x862E
+    ("glGet",  I,      1,      "GL_MAX_PROGRAM_MATRICES_ARB"), # 0x862F
+    ("",       X,      1,      "GL_MATRIX0_NV"),       # 0x8630
+    ("",       X,      1,      "GL_MATRIX1_NV"),       # 0x8631
+    ("",       X,      1,      "GL_MATRIX2_NV"),       # 0x8632
+    ("",       X,      1,      "GL_MATRIX3_NV"),       # 0x8633
+    ("",       X,      1,      "GL_MATRIX4_NV"),       # 0x8634
+    ("",       X,      1,      "GL_MATRIX5_NV"),       # 0x8635
+    ("",       X,      1,      "GL_MATRIX6_NV"),       # 0x8636
+    ("",       X,      1,      "GL_MATRIX7_NV"),       # 0x8637
+    ("glGet",  I,      1,      "GL_CURRENT_MATRIX_STACK_DEPTH_ARB"),   # 0x8640
+    ("glGet",  F,      16,     "GL_CURRENT_MATRIX_ARB"),       # 0x8641
+    ("glGet",  B,      1,      "GL_PROGRAM_POINT_SIZE"),       # 0x8642
+    ("glGet",  B,      1,      "GL_VERTEX_PROGRAM_TWO_SIDE"),  # 0x8643
+    ("",       X,      1,      "GL_PROGRAM_PARAMETER_NV"),     # 0x8644
+    ("glGetVertexAttrib",      P,      1,      "GL_VERTEX_ATTRIB_ARRAY_POINTER"),      # 0x8645
+    ("glGetProgramNV", I,      1,      "GL_PROGRAM_TARGET_NV"),        # 0x8646
+    ("glGetProgramNV", B,      1,      "GL_PROGRAM_RESIDENT_NV"),      # 0x8647
+    ("",       X,      1,      "GL_TRACK_MATRIX_NV"),  # 0x8648
+    ("",       X,      1,      "GL_TRACK_MATRIX_TRANSFORM_NV"),        # 0x8649
+    ("glGet",  I,      1,      "GL_VERTEX_PROGRAM_BINDING_NV"),        # 0x864A
+    ("glGet",  I,      1,      "GL_PROGRAM_ERROR_POSITION_ARB"),       # 0x864B
+    ("",       X,      1,      "GL_OFFSET_TEXTURE_RECTANGLE_NV"),      # 0x864C
+    ("",       X,      1,      "GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV"),        # 0x864D
+    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV"), # 0x864E
+    ("glGet",  B,      1,      "GL_DEPTH_CLAMP"),      # 0x864F
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY0_NV"),  # 0x8650
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY1_NV"),  # 0x8651
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY2_NV"),  # 0x8652
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY3_NV"),  # 0x8653
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY4_NV"),  # 0x8654
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY5_NV"),  # 0x8655
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY6_NV"),  # 0x8656
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY7_NV"),  # 0x8657
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY8_NV"),  # 0x8658
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY9_NV"),  # 0x8659
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY10_NV"), # 0x865A
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY11_NV"), # 0x865B
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY12_NV"), # 0x865C
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY13_NV"), # 0x865D
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY14_NV"), # 0x865E
+    ("_glGet", B,      1,      "GL_VERTEX_ATTRIB_ARRAY15_NV"), # 0x865F
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB0_4_NV"), # 0x8660
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB1_4_NV"), # 0x8661
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB2_4_NV"), # 0x8662
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB3_4_NV"), # 0x8663
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB4_4_NV"), # 0x8664
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB5_4_NV"), # 0x8665
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB6_4_NV"), # 0x8666
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB7_4_NV"), # 0x8667
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB8_4_NV"), # 0x8668
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB9_4_NV"), # 0x8669
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB10_4_NV"),        # 0x866A
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB11_4_NV"),        # 0x866B
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB12_4_NV"),        # 0x866C
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB13_4_NV"),        # 0x866D
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB14_4_NV"),        # 0x866E
+    ("",       X,      1,      "GL_MAP1_VERTEX_ATTRIB15_4_NV"),        # 0x866F
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB0_4_NV"), # 0x8670
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB1_4_NV"), # 0x8671
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB2_4_NV"), # 0x8672
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB3_4_NV"), # 0x8673
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB4_4_NV"), # 0x8674
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB5_4_NV"), # 0x8675
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB6_4_NV"), # 0x8676
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_BINDING_ARB"),      # 0x8677
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB8_4_NV"), # 0x8678
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB9_4_NV"), # 0x8679
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB10_4_NV"),        # 0x867A
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB11_4_NV"),        # 0x867B
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB12_4_NV"),        # 0x867C
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB13_4_NV"),        # 0x867D
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB14_4_NV"),        # 0x867E
+    ("",       X,      1,      "GL_MAP2_VERTEX_ATTRIB15_4_NV"),        # 0x867F
+    ("",       X,      1,      "GL_TEXTURE_COMPRESSED_IMAGE_SIZE"),    # 0x86A0
+    ("glGetTexLevelParameter", B,      1,      "GL_TEXTURE_COMPRESSED"),       # 0x86A1
+    ("",       X,      1,      "GL_NUM_COMPRESSED_TEXTURE_FORMATS"),   # 0x86A2
+    #XXX: the list is GL_NUM_COMPRESSED_TEXTURES
+    #("glGet", E,      1,      "GL_COMPRESSED_TEXTURE_FORMATS"),       # 0x86A3
+    ("glGet",  I,      1,      "GL_MAX_VERTEX_UNITS_ARB"),     # 0x86A4
+    ("glGet",  I,      1,      "GL_ACTIVE_VERTEX_UNITS_ARB"),  # 0x86A5
+    ("glGet",  B,      1,      "GL_WEIGHT_SUM_UNITY_ARB"),     # 0x86A6
+    ("glGet",  B,      1,      "GL_VERTEX_BLEND_ARB"), # 0x86A7
+    ("glGet",  F,      1,      "GL_CURRENT_WEIGHT_ARB"),       # 0x86A8
+    ("glGet",  E,      1,      "GL_WEIGHT_ARRAY_TYPE_ARB"),    # 0x86A9
+    ("glGet",  I,      1,      "GL_WEIGHT_ARRAY_STRIDE_ARB"),  # 0x86AA
+    ("glGet",  I,      1,      "GL_WEIGHT_ARRAY_SIZE_ARB"),    # 0x86AB
+    ("glGet",  P,      1,      "GL_WEIGHT_ARRAY_POINTER_ARB"), # 0x86AC
+    ("glGet",  B,      1,      "GL_WEIGHT_ARRAY_ARB"), # 0x86AD
+    ("",       X,      1,      "GL_DOT3_RGB"), # 0x86AE
+    ("",       X,      1,      "GL_DOT3_RGBA"),        # 0x86AF
+    ("",       X,      1,      "GL_COMPRESSED_RGB_FXT1_3DFX"), # 0x86B0
+    ("",       X,      1,      "GL_COMPRESSED_RGBA_FXT1_3DFX"),        # 0x86B1
+    ("",       X,      1,      "GL_MULTISAMPLE_3DFX"), # 0x86B2
+    ("",       X,      1,      "GL_SAMPLE_BUFFERS_3DFX"),      # 0x86B3
+    ("",       X,      1,      "GL_SAMPLES_3DFX"),     # 0x86B4
+    ("",       X,      1,      "GL_EVAL_2D_NV"),       # 0x86C0
+    ("",       X,      1,      "GL_EVAL_TRIANGULAR_2D_NV"),    # 0x86C1
+    ("",       X,      1,      "GL_MAP_TESSELLATION_NV"),      # 0x86C2
+    ("",       X,      1,      "GL_MAP_ATTRIB_U_ORDER_NV"),    # 0x86C3
+    ("",       X,      1,      "GL_MAP_ATTRIB_V_ORDER_NV"),    # 0x86C4
+    ("",       X,      1,      "GL_EVAL_FRACTIONAL_TESSELLATION_NV"),  # 0x86C5
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB0_NV"),   # 0x86C6
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB1_NV"),   # 0x86C7
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB2_NV"),   # 0x86C8
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB3_NV"),   # 0x86C9
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB4_NV"),   # 0x86CA
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB5_NV"),   # 0x86CB
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB6_NV"),   # 0x86CC
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB7_NV"),   # 0x86CD
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB8_NV"),   # 0x86CE
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB9_NV"),   # 0x86CF
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB10_NV"),  # 0x86D0
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB11_NV"),  # 0x86D1
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB12_NV"),  # 0x86D2
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB13_NV"),  # 0x86D3
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB14_NV"),  # 0x86D4
+    ("",       X,      1,      "GL_EVAL_VERTEX_ATTRIB15_NV"),  # 0x86D5
+    ("",       X,      1,      "GL_MAX_MAP_TESSELLATION_NV"),  # 0x86D6
+    ("",       X,      1,      "GL_MAX_RATIONAL_EVAL_ORDER_NV"),       # 0x86D7
+    ("",       X,      1,      "GL_MAX_PROGRAM_PATCH_ATTRIBS_NV"),     # 0x86D8
+    ("glGetTexEnv",    E,      1,      "GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV"),     # 0x86D9
+    ("",       X,      1,      "GL_UNSIGNED_INT_S8_S8_8_8_NV"),        # 0x86DA
+    ("",       X,      1,      "GL_UNSIGNED_INT_8_8_S8_S8_REV_NV"),    # 0x86DB
+    ("",       X,      1,      "GL_DSDT_MAG_INTENSITY_NV"),    # 0x86DC
+    ("",       X,      1,      "GL_SHADER_CONSISTENT_NV"),     # 0x86DD
+    ("",       X,      1,      "GL_TEXTURE_SHADER_NV"),        # 0x86DE
+    ("glGetTexEnv",    E,      1,      "GL_SHADER_OPERATION_NV"),      # 0x86DF
+    ("glGetTexEnv",    E,      4,      "GL_CULL_MODES_NV"),    # 0x86E0
+    ("glGetTexEnv",    F,      4,      "GL_OFFSET_TEXTURE_MATRIX_NV"), # 0x86E1
+    ("glGetTexEnv",    F,      1,      "GL_OFFSET_TEXTURE_SCALE_NV"),  # 0x86E2
+    ("glGetTexEnv",    F,      1,      "GL_OFFSET_TEXTURE_BIAS_NV"),   # 0x86E3
+    ("glGetTexEnv",    E,      1,      "GL_PREVIOUS_TEXTURE_INPUT_NV"),        # 0x86E4
+    ("glGetTexEnv",    F,      3,      "GL_CONST_EYE_NV"),     # 0x86E5
+    ("",       X,      1,      "GL_PASS_THROUGH_NV"),  # 0x86E6
+    ("",       X,      1,      "GL_CULL_FRAGMENT_NV"), # 0x86E7
+    ("",       X,      1,      "GL_OFFSET_TEXTURE_2D_NV"),     # 0x86E8
+    ("",       X,      1,      "GL_DEPENDENT_AR_TEXTURE_2D_NV"),       # 0x86E9
+    ("",       X,      1,      "GL_DEPENDENT_GB_TEXTURE_2D_NV"),       # 0x86EA
+    ("",       X,      1,      "GL_SURFACE_STATE_NV"), # 0x86EB
+    ("",       X,      1,      "GL_DOT_PRODUCT_NV"),   # 0x86EC
+    ("",       X,      1,      "GL_DOT_PRODUCT_DEPTH_REPLACE_NV"),     # 0x86ED
+    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_2D_NV"),        # 0x86EE
+    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_3D_NV"),        # 0x86EF
+    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV"),  # 0x86F0
+    ("",       X,      1,      "GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV"),  # 0x86F1
+    ("",       X,      1,      "GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV"),  # 0x86F2
+    ("",       X,      1,      "GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV"),        # 0x86F3
+    ("",       X,      1,      "GL_HILO_NV"),  # 0x86F4
+    ("",       X,      1,      "GL_DSDT_NV"),  # 0x86F5
+    ("",       X,      1,      "GL_DSDT_MAG_NV"),      # 0x86F6
+    ("",       X,      1,      "GL_DSDT_MAG_VIB_NV"),  # 0x86F7
+    ("",       X,      1,      "GL_HILO16_NV"),        # 0x86F8
+    ("",       X,      1,      "GL_SIGNED_HILO_NV"),   # 0x86F9
+    ("",       X,      1,      "GL_SIGNED_HILO16_NV"), # 0x86FA
+    ("",       X,      1,      "GL_SIGNED_RGBA_NV"),   # 0x86FB
+    ("",       X,      1,      "GL_SIGNED_RGBA8_NV"),  # 0x86FC
+    ("",       X,      1,      "GL_SURFACE_REGISTERED_NV"),    # 0x86FD
+    ("",       X,      1,      "GL_SIGNED_RGB_NV"),    # 0x86FE
+    ("",       X,      1,      "GL_SIGNED_RGB8_NV"),   # 0x86FF
+    ("",       X,      1,      "GL_SURFACE_MAPPED_NV"),        # 0x8700
+    ("",       X,      1,      "GL_SIGNED_LUMINANCE_NV"),      # 0x8701
+    ("",       X,      1,      "GL_SIGNED_LUMINANCE8_NV"),     # 0x8702
+    ("",       X,      1,      "GL_SIGNED_LUMINANCE_ALPHA_NV"),        # 0x8703
+    ("",       X,      1,      "GL_SIGNED_LUMINANCE8_ALPHA8_NV"),      # 0x8704
+    ("",       X,      1,      "GL_SIGNED_ALPHA_NV"),  # 0x8705
+    ("",       X,      1,      "GL_SIGNED_ALPHA8_NV"), # 0x8706
+    ("",       X,      1,      "GL_SIGNED_INTENSITY_NV"),      # 0x8707
+    ("",       X,      1,      "GL_SIGNED_INTENSITY8_NV"),     # 0x8708
+    ("",       X,      1,      "GL_DSDT8_NV"), # 0x8709
+    ("",       X,      1,      "GL_DSDT8_MAG8_NV"),    # 0x870A
+    ("",       X,      1,      "GL_DSDT8_MAG8_INTENSITY8_NV"), # 0x870B
+    ("",       X,      1,      "GL_SIGNED_RGB_UNSIGNED_ALPHA_NV"),     # 0x870C
+    ("",       X,      1,      "GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV"),   # 0x870D
+    ("",       X,      1,      "GL_HI_SCALE_NV"),      # 0x870E
+    ("",       X,      1,      "GL_LO_SCALE_NV"),      # 0x870F
+    ("",       X,      1,      "GL_DS_SCALE_NV"),      # 0x8710
+    ("",       X,      1,      "GL_DT_SCALE_NV"),      # 0x8711
+    ("",       X,      1,      "GL_MAGNITUDE_SCALE_NV"),       # 0x8712
+    ("",       X,      1,      "GL_VIBRANCE_SCALE_NV"),        # 0x8713
+    ("",       X,      1,      "GL_HI_BIAS_NV"),       # 0x8714
+    ("",       X,      1,      "GL_LO_BIAS_NV"),       # 0x8715
+    ("",       X,      1,      "GL_DS_BIAS_NV"),       # 0x8716
+    ("",       X,      1,      "GL_DT_BIAS_NV"),       # 0x8717
+    ("",       X,      1,      "GL_MAGNITUDE_BIAS_NV"),        # 0x8718
+    ("",       X,      1,      "GL_VIBRANCE_BIAS_NV"), # 0x8719
+    ("",       X,      1,      "GL_TEXTURE_BORDER_VALUES_NV"), # 0x871A
+    ("",       X,      1,      "GL_TEXTURE_HI_SIZE_NV"),       # 0x871B
+    ("",       X,      1,      "GL_TEXTURE_LO_SIZE_NV"),       # 0x871C
+    ("",       X,      1,      "GL_TEXTURE_DS_SIZE_NV"),       # 0x871D
+    ("",       X,      1,      "GL_TEXTURE_DT_SIZE_NV"),       # 0x871E
+    ("",       X,      1,      "GL_TEXTURE_MAG_SIZE_NV"),      # 0x871F
+    ("_glGet", F,      16,     "GL_MODELVIEW2_ARB"),   # 0x8722
+    ("_glGet", F,      16,     "GL_MODELVIEW3_ARB"),   # 0x8723
+    ("_glGet", F,      16,     "GL_MODELVIEW4_ARB"),   # 0x8724
+    ("_glGet", F,      16,     "GL_MODELVIEW5_ARB"),   # 0x8725
+    ("_glGet", F,      16,     "GL_MODELVIEW6_ARB"),   # 0x8726
+    ("_glGet", F,      16,     "GL_MODELVIEW7_ARB"),   # 0x8727
+    ("_glGet", F,      16,     "GL_MODELVIEW8_ARB"),   # 0x8728
+    ("_glGet", F,      16,     "GL_MODELVIEW9_ARB"),   # 0x8729
+    ("_glGet", F,      16,     "GL_MODELVIEW10_ARB"),  # 0x872A
+    ("_glGet", F,      16,     "GL_MODELVIEW11_ARB"),  # 0x872B
+    ("_glGet", F,      16,     "GL_MODELVIEW12_ARB"),  # 0x872C
+    ("_glGet", F,      16,     "GL_MODELVIEW13_ARB"),  # 0x872D
+    ("_glGet", F,      16,     "GL_MODELVIEW14_ARB"),  # 0x872E
+    ("_glGet", F,      16,     "GL_MODELVIEW15_ARB"),  # 0x872F
+    ("_glGet", F,      16,     "GL_MODELVIEW16_ARB"),  # 0x8730
+    ("_glGet", F,      16,     "GL_MODELVIEW17_ARB"),  # 0x8731
+    ("_glGet", F,      16,     "GL_MODELVIEW18_ARB"),  # 0x8732
+    ("_glGet", F,      16,     "GL_MODELVIEW19_ARB"),  # 0x8733
+    ("_glGet", F,      16,     "GL_MODELVIEW20_ARB"),  # 0x8734
+    ("_glGet", F,      16,     "GL_MODELVIEW21_ARB"),  # 0x8735
+    ("_glGet", F,      16,     "GL_MODELVIEW22_ARB"),  # 0x8736
+    ("_glGet", F,      16,     "GL_MODELVIEW23_ARB"),  # 0x8737
+    ("_glGet", F,      16,     "GL_MODELVIEW24_ARB"),  # 0x8738
+    ("_glGet", F,      16,     "GL_MODELVIEW25_ARB"),  # 0x8739
+    ("_glGet", F,      16,     "GL_MODELVIEW26_ARB"),  # 0x873A
+    ("_glGet", F,      16,     "GL_MODELVIEW27_ARB"),  # 0x873B
+    ("_glGet", F,      16,     "GL_MODELVIEW28_ARB"),  # 0x873C
+    ("_glGet", F,      16,     "GL_MODELVIEW29_ARB"),  # 0x873D
+    ("_glGet", F,      16,     "GL_MODELVIEW30_ARB"),  # 0x873E
+    ("_glGet", F,      16,     "GL_MODELVIEW31_ARB"),  # 0x873F
+    ("",       X,      1,      "GL_DOT3_RGB_EXT"),     # 0x8740
+    ("",       X,      1,      "GL_DOT3_RGBA_EXT"),    # 0x8741
+    ("",       X,      1,      "GL_MIRROR_CLAMP_ATI"), # 0x8742
+    ("",       X,      1,      "GL_MIRROR_CLAMP_TO_EDGE_ATI"), # 0x8743
+    ("",       X,      1,      "GL_MODULATE_ADD_ATI"), # 0x8744
+    ("",       X,      1,      "GL_MODULATE_SIGNED_ADD_ATI"),  # 0x8745
+    ("",       X,      1,      "GL_MODULATE_SUBTRACT_ATI"),    # 0x8746
+    ("",       X,      1,      "GL_YCBCR_MESA"),       # 0x8757
+    ("glGet",  B,      1,      "GL_PACK_INVERT_MESA"), # 0x8758
+    ("",       X,      1,      "GL_TEXTURE_1D_STACK_MESAX"),   # 0x8759
+    ("",       X,      1,      "GL_TEXTURE_2D_STACK_MESAX"),   # 0x875A
+    ("",       X,      1,      "GL_PROXY_TEXTURE_1D_STACK_MESAX"),     # 0x875B
+    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_STACK_MESAX"),     # 0x875C
+    ("",       X,      1,      "GL_TEXTURE_1D_STACK_BINDING_MESAX"),   # 0x875D
+    ("",       X,      1,      "GL_TEXTURE_2D_STACK_BINDING_MESAX"),   # 0x875E
+    ("",       X,      1,      "GL_STATIC_ATI"),       # 0x8760
+    ("",       X,      1,      "GL_DYNAMIC_ATI"),      # 0x8761
+    ("",       X,      1,      "GL_PRESERVE_ATI"),     # 0x8762
+    ("",       X,      1,      "GL_DISCARD_ATI"),      # 0x8763
+    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_SIZE"),      # 0x8764
+    ("glGetBufferParameter",   E,      1,      "GL_BUFFER_USAGE"),     # 0x8765
+    ("",       X,      1,      "GL_ARRAY_OBJECT_BUFFER_ATI"),  # 0x8766
+    ("",       X,      1,      "GL_ARRAY_OBJECT_OFFSET_ATI"),  # 0x8767
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_ATI"),        # 0x8768
+    ("glGet",  E,      1,      "GL_ELEMENT_ARRAY_TYPE_ATI"),   # 0x8769
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_POINTER_ATI"),        # 0x876A
+    ("",       X,      1,      "GL_MAX_VERTEX_STREAMS_ATI"),   # 0x876B
+    ("",       X,      1,      "GL_VERTEX_STREAM0_ATI"),       # 0x876C
+    ("",       X,      1,      "GL_VERTEX_STREAM1_ATI"),       # 0x876D
+    ("",       X,      1,      "GL_VERTEX_STREAM2_ATI"),       # 0x876E
+    ("",       X,      1,      "GL_VERTEX_STREAM3_ATI"),       # 0x876F
+    ("",       X,      1,      "GL_VERTEX_STREAM4_ATI"),       # 0x8770
+    ("",       X,      1,      "GL_VERTEX_STREAM5_ATI"),       # 0x8771
+    ("",       X,      1,      "GL_VERTEX_STREAM6_ATI"),       # 0x8772
+    ("",       X,      1,      "GL_VERTEX_STREAM7_ATI"),       # 0x8773
+    ("",       X,      1,      "GL_VERTEX_SOURCE_ATI"),        # 0x8774
+    ("",       X,      1,      "GL_BUMP_ROT_MATRIX_ATI"),      # 0x8775
+    ("",       X,      1,      "GL_BUMP_ROT_MATRIX_SIZE_ATI"), # 0x8776
+    ("",       X,      1,      "GL_BUMP_NUM_TEX_UNITS_ATI"),   # 0x8777
+    ("",       X,      1,      "GL_BUMP_TEX_UNITS_ATI"),       # 0x8778
+    ("",       X,      1,      "GL_DUDV_ATI"), # 0x8779
+    ("",       X,      1,      "GL_DU8DV8_ATI"),       # 0x877A
+    ("",       X,      1,      "GL_BUMP_ENVMAP_ATI"),  # 0x877B
+    ("glGetTexEnv",    E,      1,      "GL_BUMP_TARGET_ATI"),  # 0x877C
+    ("",       X,      1,      "GL_VERTEX_SHADER_EXT"),        # 0x8780
+    ("glGet",  I,      1,      "GL_VERTEX_SHADER_BINDING_EXT"),        # 0x8781
+    ("",       X,      1,      "GL_OP_INDEX_EXT"),     # 0x8782
+    ("",       X,      1,      "GL_OP_NEGATE_EXT"),    # 0x8783
+    ("",       X,      1,      "GL_OP_DOT3_EXT"),      # 0x8784
+    ("",       X,      1,      "GL_OP_DOT4_EXT"),      # 0x8785
+    ("",       X,      1,      "GL_OP_MUL_EXT"),       # 0x8786
+    ("",       X,      1,      "GL_OP_ADD_EXT"),       # 0x8787
+    ("",       X,      1,      "GL_OP_MADD_EXT"),      # 0x8788
+    ("",       X,      1,      "GL_OP_FRAC_EXT"),      # 0x8789
+    ("",       X,      1,      "GL_OP_MAX_EXT"),       # 0x878A
+    ("",       X,      1,      "GL_OP_MIN_EXT"),       # 0x878B
+    ("",       X,      1,      "GL_OP_SET_GE_EXT"),    # 0x878C
+    ("",       X,      1,      "GL_OP_SET_LT_EXT"),    # 0x878D
+    ("",       X,      1,      "GL_OP_CLAMP_EXT"),     # 0x878E
+    ("",       X,      1,      "GL_OP_FLOOR_EXT"),     # 0x878F
+    ("",       X,      1,      "GL_OP_ROUND_EXT"),     # 0x8790
+    ("",       X,      1,      "GL_OP_EXP_BASE_2_EXT"),        # 0x8791
+    ("",       X,      1,      "GL_OP_LOG_BASE_2_EXT"),        # 0x8792
+    ("",       X,      1,      "GL_OP_POWER_EXT"),     # 0x8793
+    ("",       X,      1,      "GL_OP_RECIP_EXT"),     # 0x8794
+    ("",       X,      1,      "GL_OP_RECIP_SQRT_EXT"),        # 0x8795
+    ("",       X,      1,      "GL_OP_SUB_EXT"),       # 0x8796
+    ("",       X,      1,      "GL_OP_CROSS_PRODUCT_EXT"),     # 0x8797
+    ("",       X,      1,      "GL_OP_MULTIPLY_MATRIX_EXT"),   # 0x8798
+    ("",       X,      1,      "GL_OP_MOV_EXT"),       # 0x8799
+    ("",       X,      1,      "GL_OUTPUT_VERTEX_EXT"),        # 0x879A
+    ("",       X,      1,      "GL_OUTPUT_COLOR0_EXT"),        # 0x879B
+    ("",       X,      1,      "GL_OUTPUT_COLOR1_EXT"),        # 0x879C
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD0_EXT"),        # 0x879D
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD1_EXT"),        # 0x879E
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD2_EXT"),        # 0x879F
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD3_EXT"),        # 0x87A0
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD4_EXT"),        # 0x87A1
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD5_EXT"),        # 0x87A2
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD6_EXT"),        # 0x87A3
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD7_EXT"),        # 0x87A4
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD8_EXT"),        # 0x87A5
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD9_EXT"),        # 0x87A6
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD10_EXT"),       # 0x87A7
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD11_EXT"),       # 0x87A8
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD12_EXT"),       # 0x87A9
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD13_EXT"),       # 0x87AA
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD14_EXT"),       # 0x87AB
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD15_EXT"),       # 0x87AC
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD16_EXT"),       # 0x87AD
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD17_EXT"),       # 0x87AE
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD18_EXT"),       # 0x87AF
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD19_EXT"),       # 0x87B0
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD20_EXT"),       # 0x87B1
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD21_EXT"),       # 0x87B2
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD22_EXT"),       # 0x87B3
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD23_EXT"),       # 0x87B4
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD24_EXT"),       # 0x87B5
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD25_EXT"),       # 0x87B6
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD26_EXT"),       # 0x87B7
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD27_EXT"),       # 0x87B8
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD28_EXT"),       # 0x87B9
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD29_EXT"),       # 0x87BA
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD30_EXT"),       # 0x87BB
+    ("",       X,      1,      "GL_OUTPUT_TEXTURE_COORD31_EXT"),       # 0x87BC
+    ("",       X,      1,      "GL_OUTPUT_FOG_EXT"),   # 0x87BD
+    ("",       X,      1,      "GL_SCALAR_EXT"),       # 0x87BE
+    ("",       X,      1,      "GL_VECTOR_EXT"),       # 0x87BF
+    ("",       X,      1,      "GL_MATRIX_EXT"),       # 0x87C0
+    ("",       X,      1,      "GL_VARIANT_EXT"),      # 0x87C1
+    ("",       X,      1,      "GL_INVARIANT_EXT"),    # 0x87C2
+    ("",       X,      1,      "GL_LOCAL_CONSTANT_EXT"),       # 0x87C3
+    ("",       X,      1,      "GL_LOCAL_EXT"),        # 0x87C4
+    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT"),       # 0x87C5
+    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_VARIANTS_EXT"),   # 0x87C6
+    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_INVARIANTS_EXT"), # 0x87C7
+    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT"),    # 0x87C8
+    ("",       X,      1,      "GL_MAX_VERTEX_SHADER_LOCALS_EXT"),     # 0x87C9
+    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT"),     # 0x87CA
+    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT"), # 0x87CB
+    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT"),  # 0x87CC
+    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT"),       # 0x87CD
+    ("",       X,      1,      "GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT"),   # 0x87CE
+    ("",       X,      1,      "GL_VERTEX_SHADER_INSTRUCTIONS_EXT"),   # 0x87CF
+    ("",       X,      1,      "GL_VERTEX_SHADER_VARIANTS_EXT"),       # 0x87D0
+    ("",       X,      1,      "GL_VERTEX_SHADER_INVARIANTS_EXT"),     # 0x87D1
+    ("",       X,      1,      "GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT"),        # 0x87D2
+    ("",       X,      1,      "GL_VERTEX_SHADER_LOCALS_EXT"), # 0x87D3
+    ("",       X,      1,      "GL_VERTEX_SHADER_OPTIMIZED_EXT"),      # 0x87D4
+    ("",       X,      1,      "GL_X_EXT"),    # 0x87D5
+    ("",       X,      1,      "GL_Y_EXT"),    # 0x87D6
+    ("",       X,      1,      "GL_Z_EXT"),    # 0x87D7
+    ("",       X,      1,      "GL_W_EXT"),    # 0x87D8
+    ("",       X,      1,      "GL_NEGATIVE_X_EXT"),   # 0x87D9
+    ("",       X,      1,      "GL_NEGATIVE_Y_EXT"),   # 0x87DA
+    ("",       X,      1,      "GL_NEGATIVE_Z_EXT"),   # 0x87DB
+    ("",       X,      1,      "GL_NEGATIVE_W_EXT"),   # 0x87DC
+    ("",       X,      1,      "GL_ZERO_EXT"), # 0x87DD
+    ("",       X,      1,      "GL_ONE_EXT"),  # 0x87DE
+    ("",       X,      1,      "GL_NEGATIVE_ONE_EXT"), # 0x87DF
+    ("",       X,      1,      "GL_NORMALIZED_RANGE_EXT"),     # 0x87E0
+    ("",       X,      1,      "GL_FULL_RANGE_EXT"),   # 0x87E1
+    ("",       X,      1,      "GL_CURRENT_VERTEX_EXT"),       # 0x87E2
+    ("",       X,      1,      "GL_MVP_MATRIX_EXT"),   # 0x87E3
+    ("",       X,      1,      "GL_VARIANT_VALUE_EXT"),        # 0x87E4
+    ("",       X,      1,      "GL_VARIANT_DATATYPE_EXT"),     # 0x87E5
+    ("",       X,      1,      "GL_VARIANT_ARRAY_STRIDE_EXT"), # 0x87E6
+    ("glGet",  E,      1,      "GL_VARIANT_ARRAY_TYPE_EXT"),   # 0x87E7
+    ("",       X,      1,      "GL_VARIANT_ARRAY_EXT"),        # 0x87E8
+    ("",       X,      1,      "GL_VARIANT_ARRAY_POINTER_EXT"),        # 0x87E9
+    ("",       X,      1,      "GL_INVARIANT_VALUE_EXT"),      # 0x87EA
+    ("",       X,      1,      "GL_INVARIANT_DATATYPE_EXT"),   # 0x87EB
+    ("",       X,      1,      "GL_LOCAL_CONSTANT_VALUE_EXT"), # 0x87EC
+    ("",       X,      1,      "GL_LOCAL_CONSTANT_DATATYPE_EXT"),      # 0x87ED
+    ("",       X,      1,      "GL_PN_TRIANGLES_ATI"), # 0x87F0
+    ("",       X,      1,      "GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI"),   # 0x87F1
+    ("",       X,      1,      "GL_PN_TRIANGLES_POINT_MODE_ATI"),      # 0x87F2
+    ("",       X,      1,      "GL_PN_TRIANGLES_NORMAL_MODE_ATI"),     # 0x87F3
+    ("",       X,      1,      "GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI"),       # 0x87F4
+    ("",       X,      1,      "GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI"),       # 0x87F5
+    ("",       X,      1,      "GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI"),        # 0x87F6
+    ("",       X,      1,      "GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI"),      # 0x87F7
+    ("",       X,      1,      "GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI"),   # 0x87F8
+    ("",       X,      1,      "GL_VBO_FREE_MEMORY_ATI"),      # 0x87FB
+    ("",       X,      1,      "GL_TEXTURE_FREE_MEMORY_ATI"),  # 0x87FC
+    ("",       X,      1,      "GL_RENDERBUFFER_FREE_MEMORY_ATI"),     # 0x87FD
+    ("",       X,      1,      "GL_NUM_PROGRAM_BINARY_FORMATS"),       # 0x87FE
+    ("",       X,      1,      "GL_PROGRAM_BINARY_FORMATS"),   # 0x87FF
+    ("glGet",  E,      1,      "GL_STENCIL_BACK_FUNC"),        # 0x8800
+    ("glGet",  E,      1,      "GL_STENCIL_BACK_FAIL"),        # 0x8801
+    ("glGet",  E,      1,      "GL_STENCIL_BACK_PASS_DEPTH_FAIL"),     # 0x8802
+    ("glGet",  E,      1,      "GL_STENCIL_BACK_PASS_DEPTH_PASS"),     # 0x8803
+    ("_glGet", B,      1,      "GL_FRAGMENT_PROGRAM_ARB"),     # 0x8804
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_ALU_INSTRUCTIONS_ARB"),     # 0x8805
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_TEX_INSTRUCTIONS_ARB"),     # 0x8806
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_TEX_INDIRECTIONS_ARB"),     # 0x8807
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB"),      # 0x8808
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB"),      # 0x8809
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB"),      # 0x880A
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB"), # 0x880B
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB"), # 0x880C
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB"), # 0x880D
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB"),  # 0x880E
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB"),  # 0x880F
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB"),  # 0x8810
+    ("",       X,      1,      "GL_RGBA32F"),  # 0x8814
+    ("",       X,      1,      "GL_RGB32F"),   # 0x8815
+    ("",       X,      1,      "GL_ALPHA32F_ARB"),     # 0x8816
+    ("",       X,      1,      "GL_INTENSITY32F_ARB"), # 0x8817
+    ("",       X,      1,      "GL_LUMINANCE32F_ARB"), # 0x8818
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA32F_ARB"),   # 0x8819
+    ("",       X,      1,      "GL_RGBA16F"),  # 0x881A
+    ("",       X,      1,      "GL_RGB16F"),   # 0x881B
+    ("",       X,      1,      "GL_ALPHA16F_ARB"),     # 0x881C
+    ("",       X,      1,      "GL_INTENSITY16F_ARB"), # 0x881D
+    ("",       X,      1,      "GL_LUMINANCE16F_ARB"), # 0x881E
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA16F_ARB"),   # 0x881F
+    ("",       X,      1,      "GL_RGBA_FLOAT_MODE_ARB"),      # 0x8820
+    ("glGet",  I,      1,      "GL_MAX_DRAW_BUFFERS"), # 0x8824
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER0"),     # 0x8825
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER1"),     # 0x8826
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER2"),     # 0x8827
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER3"),     # 0x8828
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER4"),     # 0x8829
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER5"),     # 0x882A
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER6"),     # 0x882B
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER7"),     # 0x882C
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER8"),     # 0x882D
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER9"),     # 0x882E
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER10"),    # 0x882F
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER11"),    # 0x8830
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER12"),    # 0x8831
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER13"),    # 0x8832
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER14"),    # 0x8833
+    ("glGet",  E,      1,      "GL_DRAW_BUFFER15"),    # 0x8834
+    ("",       X,      1,      "GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI"),  # 0x8835
+    ("glGet",  E,      1,      "GL_BLEND_EQUATION_ALPHA"),     # 0x883D
+    ("glGet",  B,      1,      "GL_MATRIX_PALETTE_ARB"),       # 0x8840
+    ("glGet",  I,      1,      "GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB"),       # 0x8841
+    ("glGet",  I,      1,      "GL_MAX_PALETTE_MATRICES_ARB"), # 0x8842
+    ("glGet",  I,      1,      "GL_CURRENT_PALETTE_MATRIX_ARB"),       # 0x8843
+    ("glGet",  B,      1,      "GL_MATRIX_INDEX_ARRAY_ARB"),   # 0x8844
+    ("glGet",  I,      1,      "GL_CURRENT_MATRIX_INDEX_ARB"), # 0x8845
+    ("glGet",  I,      1,      "GL_MATRIX_INDEX_ARRAY_SIZE_ARB"),      # 0x8846
+    ("glGet",  E,      1,      "GL_MATRIX_INDEX_ARRAY_TYPE_ARB"),      # 0x8847
+    ("glGet",  I,      1,      "GL_MATRIX_INDEX_ARRAY_STRIDE_ARB"),    # 0x8848
+    ("glGet",  P,      1,      "GL_MATRIX_INDEX_ARRAY_POINTER_ARB"),   # 0x8849
+    ("glGetTexLevelParameter", I,      1,      "GL_TEXTURE_DEPTH_SIZE"),       # 0x884A
+    ("glGetTexParameter",      E,      1,      "GL_DEPTH_TEXTURE_MODE"),       # 0x884B
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_COMPARE_MODE"),     # 0x884C
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_COMPARE_FUNC"),     # 0x884D
+    ("",       X,      1,      "GL_COMPARE_REF_TO_TEXTURE"),   # 0x884E
+    ("glGet",  B,      1,      "GL_TEXTURE_CUBE_MAP_SEAMLESS"),        # 0x884F
+    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV"),  # 0x8850
+    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV"),    # 0x8851
+    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV"),   # 0x8852
+    ("",       X,      1,      "GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV"),     # 0x8853
+    ("",       X,      1,      "GL_OFFSET_HILO_TEXTURE_2D_NV"),        # 0x8854
+    ("",       X,      1,      "GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV"), # 0x8855
+    ("",       X,      1,      "GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV"),     # 0x8856
+    ("",       X,      1,      "GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV"),      # 0x8857
+    ("",       X,      1,      "GL_DEPENDENT_HILO_TEXTURE_2D_NV"),     # 0x8858
+    ("",       X,      1,      "GL_DEPENDENT_RGB_TEXTURE_3D_NV"),      # 0x8859
+    ("",       X,      1,      "GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV"),        # 0x885A
+    ("",       X,      1,      "GL_DOT_PRODUCT_PASS_THROUGH_NV"),      # 0x885B
+    ("",       X,      1,      "GL_DOT_PRODUCT_TEXTURE_1D_NV"),        # 0x885C
+    ("",       X,      1,      "GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV"),      # 0x885D
+    ("",       X,      1,      "GL_HILO8_NV"), # 0x885E
+    ("",       X,      1,      "GL_SIGNED_HILO8_NV"),  # 0x885F
+    ("",       X,      1,      "GL_FORCE_BLUE_TO_ONE_NV"),     # 0x8860
+    ("_glGet", B,      1,      "GL_POINT_SPRITE"),     # 0x8861
+    ("glGetTexEnv",    B,      1,      "GL_COORD_REPLACE"),    # 0x8862
+    ("glGet",  E,      1,      "GL_POINT_SPRITE_R_MODE_NV"),   # 0x8863
+    ("glGetQuery",     I,      1,      "GL_QUERY_COUNTER_BITS"),       # 0x8864
+    ("glGetQuery",     I,      1,      "GL_CURRENT_QUERY"),    # 0x8865
+    ("glGetQueryObject",       I,      1,      "GL_QUERY_RESULT"),     # 0x8866
+    ("glGetQueryObject",       B,      1,      "GL_QUERY_RESULT_AVAILABLE"),   # 0x8867
+    ("",       X,      1,      "GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV"), # 0x8868
+    ("glGet",  I,      1,      "GL_MAX_VERTEX_ATTRIBS"),       # 0x8869
+    ("glGetVertexAttrib",      B,      1,      "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"),   # 0x886A
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS"),        # 0x886C
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS"),     # 0x886D
+    ("",       X,      1,      "GL_DEPTH_STENCIL_TO_RGBA_NV"), # 0x886E
+    ("",       X,      1,      "GL_DEPTH_STENCIL_TO_BGRA_NV"), # 0x886F
+    ("",       X,      1,      "GL_FRAGMENT_PROGRAM_NV"),      # 0x8870
+    ("glGet",  I,      1,      "GL_MAX_TEXTURE_COORDS"),       # 0x8871
+    ("glGet",  I,      1,      "GL_MAX_TEXTURE_IMAGE_UNITS"),  # 0x8872
+    ("glGet",  I,      1,      "GL_FRAGMENT_PROGRAM_BINDING_NV"),      # 0x8873
+    ("glGet",  S,      1,      "GL_PROGRAM_ERROR_STRING_ARB"), # 0x8874
+    ("",       X,      1,      "GL_PROGRAM_FORMAT_ASCII_ARB"), # 0x8875
+    ("glGetProgramARB",        E,      1,      "GL_PROGRAM_FORMAT_ARB"),       # 0x8876
+    ("",       X,      1,      "GL_WRITE_PIXEL_DATA_RANGE_NV"),        # 0x8878
+    ("",       X,      1,      "GL_READ_PIXEL_DATA_RANGE_NV"), # 0x8879
+    ("",       X,      1,      "GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV"), # 0x887A
+    ("",       X,      1,      "GL_READ_PIXEL_DATA_RANGE_LENGTH_NV"),  # 0x887B
+    ("",       X,      1,      "GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV"),        # 0x887C
+    ("",       X,      1,      "GL_READ_PIXEL_DATA_RANGE_POINTER_NV"), # 0x887D
+    ("",       X,      1,      "GL_GEOMETRY_SHADER_INVOCATIONS"),      # 0x887F
+    ("",       X,      1,      "GL_FLOAT_R_NV"),       # 0x8880
+    ("",       X,      1,      "GL_FLOAT_RG_NV"),      # 0x8881
+    ("",       X,      1,      "GL_FLOAT_RGB_NV"),     # 0x8882
+    ("",       X,      1,      "GL_FLOAT_RGBA_NV"),    # 0x8883
+    ("",       X,      1,      "GL_FLOAT_R16_NV"),     # 0x8884
+    ("",       X,      1,      "GL_FLOAT_R32_NV"),     # 0x8885
+    ("",       X,      1,      "GL_FLOAT_RG16_NV"),    # 0x8886
+    ("",       X,      1,      "GL_FLOAT_RG32_NV"),    # 0x8887
+    ("",       X,      1,      "GL_FLOAT_RGB16_NV"),   # 0x8888
+    ("",       X,      1,      "GL_FLOAT_RGB32_NV"),   # 0x8889
+    ("",       X,      1,      "GL_FLOAT_RGBA16_NV"),  # 0x888A
+    ("",       X,      1,      "GL_FLOAT_RGBA32_NV"),  # 0x888B
+    ("",       X,      1,      "GL_TEXTURE_FLOAT_COMPONENTS_NV"),      # 0x888C
+    ("",       X,      1,      "GL_FLOAT_CLEAR_COLOR_VALUE_NV"),       # 0x888D
+    ("",       X,      1,      "GL_FLOAT_RGBA_MODE_NV"),       # 0x888E
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV"),   # 0x888F
+    ("glGet",  B,      1,      "GL_DEPTH_BOUNDS_TEST_EXT"),    # 0x8890
+    ("glGet",  F,      2,      "GL_DEPTH_BOUNDS_EXT"), # 0x8891
+    ("",       X,      1,      "GL_ARRAY_BUFFER"),     # 0x8892
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_BUFFER"),     # 0x8893
+    ("glGet",  I,      1,      "GL_ARRAY_BUFFER_BINDING"),     # 0x8894
+    ("glGet",  I,      1,      "GL_ELEMENT_ARRAY_BUFFER_BINDING"),     # 0x8895
+    ("glGet",  I,      1,      "GL_VERTEX_ARRAY_BUFFER_BINDING"),      # 0x8896
+    ("glGet",  I,      1,      "GL_NORMAL_ARRAY_BUFFER_BINDING"),      # 0x8897
+    ("glGet",  I,      1,      "GL_COLOR_ARRAY_BUFFER_BINDING"),       # 0x8898
+    ("glGet",  I,      1,      "GL_INDEX_ARRAY_BUFFER_BINDING"),       # 0x8899
+    ("glGet",  I,      1,      "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING"),       # 0x889A
+    ("glGet",  I,      1,      "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING"),   # 0x889B
+    ("glGet",  I,      1,      "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING"),     # 0x889C
+    ("glGet",  I,      1,      "GL_FOG_COORD_ARRAY_BUFFER_BINDING"),   # 0x889D
+    ("glGet",  I,      1,      "GL_WEIGHT_ARRAY_BUFFER_BINDING"),      # 0x889E
+    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"),       # 0x889F
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_INSTRUCTIONS_ARB"), # 0x88A0
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_INSTRUCTIONS_ARB"),     # 0x88A1
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB"),  # 0x88A2
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB"),      # 0x88A3
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_TEMPORARIES_ARB"),  # 0x88A4
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_TEMPORARIES_ARB"),      # 0x88A5
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_TEMPORARIES_ARB"),   # 0x88A6
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB"),       # 0x88A7
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_PARAMETERS_ARB"),   # 0x88A8
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_PARAMETERS_ARB"),       # 0x88A9
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_PARAMETERS_ARB"),    # 0x88AA
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB"),        # 0x88AB
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_ATTRIBS_ARB"),      # 0x88AC
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ATTRIBS_ARB"),  # 0x88AD
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_ATTRIBS_ARB"),       # 0x88AE
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB"),   # 0x88AF
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_ADDRESS_REGISTERS_ARB"),    # 0x88B0
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB"),        # 0x88B1
+    ("glGetProgramARB",        I,      1,      "GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB"),     # 0x88B2
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB"), # 0x88B3
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB"), # 0x88B4
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB"),   # 0x88B5
+    ("glGetProgramARB",        B,      1,      "GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB"),  # 0x88B6
+    ("glGet",  E,      1,      "GL_TRANSPOSE_CURRENT_MATRIX_ARB"),     # 0x88B7
+    ("",       X,      1,      "GL_READ_ONLY"),        # 0x88B8
+    ("",       X,      1,      "GL_WRITE_ONLY"),       # 0x88B9
+    ("",       X,      1,      "GL_READ_WRITE"),       # 0x88BA
+    ("glGetBufferParameter",   E,      1,      "GL_BUFFER_ACCESS"),    # 0x88BB
+    ("glGetBufferParameter",   B,      1,      "GL_BUFFER_MAPPED"),    # 0x88BC
+    ("glGetBufferParameter",   P,      1,      "GL_BUFFER_MAP_POINTER"),       # 0x88BD
+    ("",       X,      1,      "GL_WRITE_DISCARD_NV"), # 0x88BE
+    ("",       X,      1,      "GL_TIME_ELAPSED"),     # 0x88BF
+    ("",       X,      1,      "GL_MATRIX0_ARB"),      # 0x88C0
+    ("",       X,      1,      "GL_MATRIX1_ARB"),      # 0x88C1
+    ("",       X,      1,      "GL_MATRIX2_ARB"),      # 0x88C2
+    ("",       X,      1,      "GL_MATRIX3_ARB"),      # 0x88C3
+    ("",       X,      1,      "GL_MATRIX4_ARB"),      # 0x88C4
+    ("",       X,      1,      "GL_MATRIX5_ARB"),      # 0x88C5
+    ("",       X,      1,      "GL_MATRIX6_ARB"),      # 0x88C6
+    ("",       X,      1,      "GL_MATRIX7_ARB"),      # 0x88C7
+    ("",       X,      1,      "GL_MATRIX8_ARB"),      # 0x88C8
+    ("",       X,      1,      "GL_MATRIX9_ARB"),      # 0x88C9
+    ("",       X,      1,      "GL_MATRIX10_ARB"),     # 0x88CA
+    ("",       X,      1,      "GL_MATRIX11_ARB"),     # 0x88CB
+    ("",       X,      1,      "GL_MATRIX12_ARB"),     # 0x88CC
+    ("",       X,      1,      "GL_MATRIX13_ARB"),     # 0x88CD
+    ("",       X,      1,      "GL_MATRIX14_ARB"),     # 0x88CE
+    ("",       X,      1,      "GL_MATRIX15_ARB"),     # 0x88CF
+    ("",       X,      1,      "GL_MATRIX16_ARB"),     # 0x88D0
+    ("",       X,      1,      "GL_MATRIX17_ARB"),     # 0x88D1
+    ("",       X,      1,      "GL_MATRIX18_ARB"),     # 0x88D2
+    ("",       X,      1,      "GL_MATRIX19_ARB"),     # 0x88D3
+    ("",       X,      1,      "GL_MATRIX20_ARB"),     # 0x88D4
+    ("",       X,      1,      "GL_MATRIX21_ARB"),     # 0x88D5
+    ("",       X,      1,      "GL_MATRIX22_ARB"),     # 0x88D6
+    ("",       X,      1,      "GL_MATRIX23_ARB"),     # 0x88D7
+    ("",       X,      1,      "GL_MATRIX24_ARB"),     # 0x88D8
+    ("",       X,      1,      "GL_MATRIX25_ARB"),     # 0x88D9
+    ("",       X,      1,      "GL_MATRIX26_ARB"),     # 0x88DA
+    ("",       X,      1,      "GL_MATRIX27_ARB"),     # 0x88DB
+    ("",       X,      1,      "GL_MATRIX28_ARB"),     # 0x88DC
+    ("",       X,      1,      "GL_MATRIX29_ARB"),     # 0x88DD
+    ("",       X,      1,      "GL_MATRIX30_ARB"),     # 0x88DE
+    ("",       X,      1,      "GL_MATRIX31_ARB"),     # 0x88DF
+    ("",       X,      1,      "GL_STREAM_DRAW"),      # 0x88E0
+    ("",       X,      1,      "GL_STREAM_READ"),      # 0x88E1
+    ("",       X,      1,      "GL_STREAM_COPY"),      # 0x88E2
+    ("",       X,      1,      "GL_STATIC_DRAW"),      # 0x88E4
+    ("",       X,      1,      "GL_STATIC_READ"),      # 0x88E5
+    ("",       X,      1,      "GL_STATIC_COPY"),      # 0x88E6
+    ("",       X,      1,      "GL_DYNAMIC_DRAW"),     # 0x88E8
+    ("",       X,      1,      "GL_DYNAMIC_READ"),     # 0x88E9
+    ("",       X,      1,      "GL_DYNAMIC_COPY"),     # 0x88EA
+    ("",       X,      1,      "GL_PIXEL_PACK_BUFFER"),        # 0x88EB
+    ("",       X,      1,      "GL_PIXEL_UNPACK_BUFFER"),      # 0x88EC
+    ("glGet",  I,      1,      "GL_PIXEL_PACK_BUFFER_BINDING"),        # 0x88ED
+    ("glGet",  I,      1,      "GL_PIXEL_UNPACK_BUFFER_BINDING"),      # 0x88EF
+    ("",       X,      1,      "GL_DEPTH24_STENCIL8"), # 0x88F0
+    ("",       X,      1,      "GL_TEXTURE_STENCIL_SIZE"),     # 0x88F1
+    ("",       X,      1,      "GL_STENCIL_TAG_BITS_EXT"),     # 0x88F2
+    ("",       X,      1,      "GL_STENCIL_CLEAR_TAG_VALUE_EXT"),      # 0x88F3
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV"), # 0x88F4
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_CALL_DEPTH_NV"),        # 0x88F5
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_IF_DEPTH_NV"),  # 0x88F6
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_LOOP_DEPTH_NV"),        # 0x88F7
+    ("glGetProgramARB",        I,      1,      "GL_MAX_PROGRAM_LOOP_COUNT_NV"),        # 0x88F8
+    ("",       X,      1,      "GL_SRC1_COLOR"),       # 0x88F9
+    ("",       X,      1,      "GL_ONE_MINUS_SRC1_COLOR"),     # 0x88FA
+    ("",       X,      1,      "GL_ONE_MINUS_SRC1_ALPHA"),     # 0x88FB
+    ("",       X,      1,      "GL_MAX_DUAL_SOURCE_DRAW_BUFFERS"),     # 0x88FC
+    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_INTEGER"),      # 0x88FD
+    ("glGetVertexAttrib",      I,      1,      "GL_VERTEX_ATTRIB_ARRAY_DIVISOR"),      # 0x88FE
+    ("glGet",  I,      1,      "GL_MAX_ARRAY_TEXTURE_LAYERS"), # 0x88FF
+    ("glGet",  F,      1,      "GL_MIN_PROGRAM_TEXEL_OFFSET"), # 0x8904
+    ("glGet",  F,      1,      "GL_MAX_PROGRAM_TEXEL_OFFSET"), # 0x8905
+    ("",       X,      1,      "GL_PROGRAM_ATTRIB_COMPONENTS_NV"),     # 0x8906
+    ("",       X,      1,      "GL_PROGRAM_RESULT_COMPONENTS_NV"),     # 0x8907
+    ("",       X,      1,      "GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV"), # 0x8908
+    ("",       X,      1,      "GL_MAX_PROGRAM_RESULT_COMPONENTS_NV"), # 0x8909
+    ("glGet",  B,      1,      "GL_STENCIL_TEST_TWO_SIDE_EXT"),        # 0x8910
+    ("glGet",  E,      1,      "GL_ACTIVE_STENCIL_FACE_EXT"),  # 0x8911
+    ("",       X,      1,      "GL_MIRROR_CLAMP_TO_BORDER_EXT"),       # 0x8912
+    ("",       X,      1,      "GL_SAMPLES_PASSED"),   # 0x8914
+    ("",       X,      1,      "GL_GEOMETRY_VERTICES_OUT"),    # 0x8916
+    ("",       X,      1,      "GL_GEOMETRY_INPUT_TYPE"),      # 0x8917
+    ("",       X,      1,      "GL_GEOMETRY_OUTPUT_TYPE"),     # 0x8918
+    ("glGet",  I,      1,      "GL_SAMPLER_BINDING"),  # 0x8919
+    ("",       X,      1,      "GL_CLAMP_VERTEX_COLOR"),       # 0x891A
+    ("",       X,      1,      "GL_CLAMP_FRAGMENT_COLOR"),     # 0x891B
+    ("",       X,      1,      "GL_CLAMP_READ_COLOR"), # 0x891C
+    ("",       X,      1,      "GL_FIXED_ONLY"),       # 0x891D
+    ("",       X,      1,      "GL_TESS_CONTROL_PROGRAM_NV"),  # 0x891E
+    ("",       X,      1,      "GL_TESS_EVALUATION_PROGRAM_NV"),       # 0x891F
+    ("",       X,      1,      "GL_FRAGMENT_SHADER_ATI"),      # 0x8920
+    ("",       X,      1,      "GL_REG_0_ATI"),        # 0x8921
+    ("",       X,      1,      "GL_REG_1_ATI"),        # 0x8922
+    ("",       X,      1,      "GL_REG_2_ATI"),        # 0x8923
+    ("",       X,      1,      "GL_REG_3_ATI"),        # 0x8924
+    ("",       X,      1,      "GL_REG_4_ATI"),        # 0x8925
+    ("",       X,      1,      "GL_REG_5_ATI"),        # 0x8926
+    ("",       X,      1,      "GL_REG_6_ATI"),        # 0x8927
+    ("",       X,      1,      "GL_REG_7_ATI"),        # 0x8928
+    ("",       X,      1,      "GL_REG_8_ATI"),        # 0x8929
+    ("",       X,      1,      "GL_REG_9_ATI"),        # 0x892A
+    ("",       X,      1,      "GL_REG_10_ATI"),       # 0x892B
+    ("",       X,      1,      "GL_REG_11_ATI"),       # 0x892C
+    ("",       X,      1,      "GL_REG_12_ATI"),       # 0x892D
+    ("",       X,      1,      "GL_REG_13_ATI"),       # 0x892E
+    ("",       X,      1,      "GL_REG_14_ATI"),       # 0x892F
+    ("",       X,      1,      "GL_REG_15_ATI"),       # 0x8930
+    ("",       X,      1,      "GL_REG_16_ATI"),       # 0x8931
+    ("",       X,      1,      "GL_REG_17_ATI"),       # 0x8932
+    ("",       X,      1,      "GL_REG_18_ATI"),       # 0x8933
+    ("",       X,      1,      "GL_REG_19_ATI"),       # 0x8934
+    ("",       X,      1,      "GL_REG_20_ATI"),       # 0x8935
+    ("",       X,      1,      "GL_REG_21_ATI"),       # 0x8936
+    ("",       X,      1,      "GL_REG_22_ATI"),       # 0x8937
+    ("",       X,      1,      "GL_REG_23_ATI"),       # 0x8938
+    ("",       X,      1,      "GL_REG_24_ATI"),       # 0x8939
+    ("",       X,      1,      "GL_REG_25_ATI"),       # 0x893A
+    ("",       X,      1,      "GL_REG_26_ATI"),       # 0x893B
+    ("",       X,      1,      "GL_REG_27_ATI"),       # 0x893C
+    ("",       X,      1,      "GL_REG_28_ATI"),       # 0x893D
+    ("",       X,      1,      "GL_REG_29_ATI"),       # 0x893E
+    ("",       X,      1,      "GL_REG_30_ATI"),       # 0x893F
+    ("",       X,      1,      "GL_REG_31_ATI"),       # 0x8940
+    ("",       X,      1,      "GL_CON_0_ATI"),        # 0x8941
+    ("",       X,      1,      "GL_CON_1_ATI"),        # 0x8942
+    ("",       X,      1,      "GL_CON_2_ATI"),        # 0x8943
+    ("",       X,      1,      "GL_CON_3_ATI"),        # 0x8944
+    ("",       X,      1,      "GL_CON_4_ATI"),        # 0x8945
+    ("",       X,      1,      "GL_CON_5_ATI"),        # 0x8946
+    ("",       X,      1,      "GL_CON_6_ATI"),        # 0x8947
+    ("",       X,      1,      "GL_CON_7_ATI"),        # 0x8948
+    ("",       X,      1,      "GL_CON_8_ATI"),        # 0x8949
+    ("",       X,      1,      "GL_CON_9_ATI"),        # 0x894A
+    ("",       X,      1,      "GL_CON_10_ATI"),       # 0x894B
+    ("",       X,      1,      "GL_CON_11_ATI"),       # 0x894C
+    ("",       X,      1,      "GL_CON_12_ATI"),       # 0x894D
+    ("",       X,      1,      "GL_CON_13_ATI"),       # 0x894E
+    ("",       X,      1,      "GL_CON_14_ATI"),       # 0x894F
+    ("",       X,      1,      "GL_CON_15_ATI"),       # 0x8950
+    ("",       X,      1,      "GL_CON_16_ATI"),       # 0x8951
+    ("",       X,      1,      "GL_CON_17_ATI"),       # 0x8952
+    ("",       X,      1,      "GL_CON_18_ATI"),       # 0x8953
+    ("",       X,      1,      "GL_CON_19_ATI"),       # 0x8954
+    ("",       X,      1,      "GL_CON_20_ATI"),       # 0x8955
+    ("",       X,      1,      "GL_CON_21_ATI"),       # 0x8956
+    ("",       X,      1,      "GL_CON_22_ATI"),       # 0x8957
+    ("",       X,      1,      "GL_CON_23_ATI"),       # 0x8958
+    ("",       X,      1,      "GL_CON_24_ATI"),       # 0x8959
+    ("",       X,      1,      "GL_CON_25_ATI"),       # 0x895A
+    ("",       X,      1,      "GL_CON_26_ATI"),       # 0x895B
+    ("",       X,      1,      "GL_CON_27_ATI"),       # 0x895C
+    ("",       X,      1,      "GL_CON_28_ATI"),       # 0x895D
+    ("",       X,      1,      "GL_CON_29_ATI"),       # 0x895E
+    ("",       X,      1,      "GL_CON_30_ATI"),       # 0x895F
+    ("",       X,      1,      "GL_CON_31_ATI"),       # 0x8960
+    ("",       X,      1,      "GL_MOV_ATI"),  # 0x8961
+    ("",       X,      1,      "GL_ADD_ATI"),  # 0x8963
+    ("",       X,      1,      "GL_MUL_ATI"),  # 0x8964
+    ("",       X,      1,      "GL_SUB_ATI"),  # 0x8965
+    ("",       X,      1,      "GL_DOT3_ATI"), # 0x8966
+    ("",       X,      1,      "GL_DOT4_ATI"), # 0x8967
+    ("",       X,      1,      "GL_MAD_ATI"),  # 0x8968
+    ("",       X,      1,      "GL_LERP_ATI"), # 0x8969
+    ("",       X,      1,      "GL_CND_ATI"),  # 0x896A
+    ("",       X,      1,      "GL_CND0_ATI"), # 0x896B
+    ("",       X,      1,      "GL_DOT2_ADD_ATI"),     # 0x896C
+    ("",       X,      1,      "GL_SECONDARY_INTERPOLATOR_ATI"),       # 0x896D
+    ("",       X,      1,      "GL_NUM_FRAGMENT_REGISTERS_ATI"),       # 0x896E
+    ("",       X,      1,      "GL_NUM_FRAGMENT_CONSTANTS_ATI"),       # 0x896F
+    ("",       X,      1,      "GL_NUM_PASSES_ATI"),   # 0x8970
+    ("",       X,      1,      "GL_NUM_INSTRUCTIONS_PER_PASS_ATI"),    # 0x8971
+    ("",       X,      1,      "GL_NUM_INSTRUCTIONS_TOTAL_ATI"),       # 0x8972
+    ("",       X,      1,      "GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI"),    # 0x8973
+    ("",       X,      1,      "GL_NUM_LOOPBACK_COMPONENTS_ATI"),      # 0x8974
+    ("",       X,      1,      "GL_COLOR_ALPHA_PAIRING_ATI"),  # 0x8975
+    ("",       X,      1,      "GL_SWIZZLE_STR_ATI"),  # 0x8976
+    ("",       X,      1,      "GL_SWIZZLE_STQ_ATI"),  # 0x8977
+    ("",       X,      1,      "GL_SWIZZLE_STR_DR_ATI"),       # 0x8978
+    ("",       X,      1,      "GL_SWIZZLE_STQ_DQ_ATI"),       # 0x8979
+    ("",       X,      1,      "GL_SWIZZLE_STRQ_ATI"), # 0x897A
+    ("",       X,      1,      "GL_SWIZZLE_STRQ_DQ_ATI"),      # 0x897B
+    ("",       X,      1,      "GL_INTERLACE_OML"),    # 0x8980
+    ("",       X,      1,      "GL_INTERLACE_READ_OML"),       # 0x8981
+    ("",       X,      1,      "GL_FORMAT_SUBSAMPLE_24_24_OML"),       # 0x8982
+    ("",       X,      1,      "GL_FORMAT_SUBSAMPLE_244_244_OML"),     # 0x8983
+    ("",       X,      1,      "GL_PACK_RESAMPLE_OML"),        # 0x8984
+    ("",       X,      1,      "GL_UNPACK_RESAMPLE_OML"),      # 0x8985
+    ("",       X,      1,      "GL_RESAMPLE_REPLICATE_OML"),   # 0x8986
+    ("",       X,      1,      "GL_RESAMPLE_ZERO_FILL_OML"),   # 0x8987
+    ("",       X,      1,      "GL_RESAMPLE_AVERAGE_OML"),     # 0x8988
+    ("",       X,      1,      "GL_RESAMPLE_DECIMATE_OML"),    # 0x8989
+    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_TYPE_OES"),        # 0x898A
+    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_STRIDE_OES"),      # 0x898B
+    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_POINTER_OES"),     # 0x898C
+    #("",      X,      1,      "GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"),   # 0x898D
+    #("",      X,      1,      "GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"),  # 0x898E
+    #("",      X,      1,      "GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"),     # 0x898F
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_APPLE"), # 0x8A00
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_APPLE"), # 0x8A01
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE"),    # 0x8A02
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE"),   # 0x8A03
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE"),   # 0x8A04
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE"),  # 0x8A05
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE"),    # 0x8A06
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE"),   # 0x8A07
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE"),   # 0x8A08
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE"),  # 0x8A09
+    ("",       X,      1,      "GL_DRAW_PIXELS_APPLE"),        # 0x8A0A
+    ("",       X,      1,      "GL_FENCE_APPLE"),      # 0x8A0B
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_APPLE"),      # 0x8A0C
+    ("glGet",  E,      1,      "GL_ELEMENT_ARRAY_TYPE_APPLE"), # 0x8A0D
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_POINTER_APPLE"),      # 0x8A0E
+    ("",       X,      1,      "GL_COLOR_FLOAT_APPLE"),        # 0x8A0F
+    ("",       X,      1,      "GL_UNIFORM_BUFFER"),   # 0x8A11
+    ("",       X,      1,      "GL_BUFFER_SERIALIZED_MODIFY_APPLE"),   # 0x8A12
+    ("",       X,      1,      "GL_BUFFER_FLUSHING_UNMAP_APPLE"),      # 0x8A13
+    ("",       X,      1,      "GL_AUX_DEPTH_STENCIL_APPLE"),  # 0x8A14
+    ("",       X,      1,      "GL_PACK_ROW_BYTES_APPLE"),     # 0x8A15
+    ("",       X,      1,      "GL_UNPACK_ROW_BYTES_APPLE"),   # 0x8A16
+    ("",       X,      1,      "GL_RELEASED_APPLE"),   # 0x8A19
+    ("",       X,      1,      "GL_VOLATILE_APPLE"),   # 0x8A1A
+    ("",       X,      1,      "GL_RETAINED_APPLE"),   # 0x8A1B
+    ("",       X,      1,      "GL_UNDEFINED_APPLE"),  # 0x8A1C
+    ("",       X,      1,      "GL_PURGEABLE_APPLE"),  # 0x8A1D
+    ("",       X,      1,      "GL_RGB_422_APPLE"),    # 0x8A1F
+    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_BINDING"),   # 0x8A28
+    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_START"),     # 0x8A29
+    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_SIZE"),      # 0x8A2A
+    ("glGet",  I,      1,      "GL_MAX_VERTEX_UNIFORM_BLOCKS"),        # 0x8A2B
+    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_UNIFORM_BLOCKS"),      # 0x8A2C
+    ("glGet",  I,      1,      "GL_MAX_FRAGMENT_UNIFORM_BLOCKS"),      # 0x8A2D
+    ("glGet",  I,      1,      "GL_MAX_COMBINED_UNIFORM_BLOCKS"),      # 0x8A2E
+    ("glGet",  I,      1,      "GL_MAX_UNIFORM_BUFFER_BINDINGS"),      # 0x8A2F
+    ("glGet",  I,      1,      "GL_MAX_UNIFORM_BLOCK_SIZE"),   # 0x8A30
+    ("glGet",  I,      1,      "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"),   # 0x8A31
+    ("glGet",  I,      1,      "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS"), # 0x8A32
+    ("glGet",  I,      1,      "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS"), # 0x8A33
+    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT"),  # 0x8A34
+    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH"),     # 0x8A35
+    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORM_BLOCKS"),    # 0x8A36
+    ("glGetActiveUniforms",    E,      1,      "GL_UNIFORM_TYPE"),     # 0x8A37
+    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_SIZE"),     # 0x8A38
+    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_NAME_LENGTH"),      # 0x8A39
+    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_BLOCK_INDEX"),      # 0x8A3A
+    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_OFFSET"),   # 0x8A3B
+    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_ARRAY_STRIDE"),     # 0x8A3C
+    ("glGetActiveUniforms",    I,      1,      "GL_UNIFORM_MATRIX_STRIDE"),    # 0x8A3D
+    ("glGetActiveUniforms",    B,      1,      "GL_UNIFORM_IS_ROW_MAJOR"),     # 0x8A3E
+    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_BINDING"),    # 0x8A3F
+    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_DATA_SIZE"),  # 0x8A40
+    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_NAME_LENGTH"),        # 0x8A41
+    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS"),    # 0x8A42
+    ("glGetActiveUniformBlock",        I,      1,      "GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES"),     # 0x8A43
+    ("glGetActiveUniformBlock",        B,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER"),        # 0x8A44
+    ("glGetActiveUniformBlock",        B,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER"),      # 0x8A45
+    ("glGetActiveUniformBlock",        B,      1,      "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"),      # 0x8A46
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SRGB_DECODE_EXT"),  # 0x8A48
+    ("",       X,      1,      "GL_DECODE_EXT"),       # 0x8A49
+    ("",       X,      1,      "GL_SKIP_DECODE_EXT"),  # 0x8A4A
+    ("",       X,      1,      "GL_FRAGMENT_SHADER"),  # 0x8B30
+    ("",       X,      1,      "GL_VERTEX_SHADER"),    # 0x8B31
+    ("",       H,      1,      "GL_PROGRAM_OBJECT_ARB"),       # 0x8B40
+    ("",       X,      1,      "GL_SHADER_OBJECT_ARB"),        # 0x8B48
+    ("glGet",  I,      1,      "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS"),  # 0x8B49
+    ("glGet",  I,      1,      "GL_MAX_VERTEX_UNIFORM_COMPONENTS"),    # 0x8B4A
+    ("glGet",  I,      1,      "GL_MAX_VARYING_COMPONENTS"),   # 0x8B4B
+    ("glGet",  I,      1,      "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS"),   # 0x8B4C
+    ("glGet",  I,      1,      "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS"), # 0x8B4D
+    ("glGet",  E,      1,      "GL_OBJECT_TYPE_ARB"),  # 0x8B4E
+    ("glGetShader",    E,      1,      "GL_SHADER_TYPE"),      # 0x8B4F
+    ("",       X,      1,      "GL_FLOAT_VEC2"),       # 0x8B50
+    ("",       X,      1,      "GL_FLOAT_VEC3"),       # 0x8B51
+    ("",       X,      1,      "GL_FLOAT_VEC4"),       # 0x8B52
+    ("",       X,      1,      "GL_INT_VEC2"), # 0x8B53
+    ("",       X,      1,      "GL_INT_VEC3"), # 0x8B54
+    ("",       X,      1,      "GL_INT_VEC4"), # 0x8B55
+    ("",       X,      1,      "GL_BOOL"),     # 0x8B56
+    ("",       X,      1,      "GL_BOOL_VEC2"),        # 0x8B57
+    ("",       X,      1,      "GL_BOOL_VEC3"),        # 0x8B58
+    ("",       X,      1,      "GL_BOOL_VEC4"),        # 0x8B59
+    ("",       X,      1,      "GL_FLOAT_MAT2"),       # 0x8B5A
+    ("",       X,      1,      "GL_FLOAT_MAT3"),       # 0x8B5B
+    ("",       X,      1,      "GL_FLOAT_MAT4"),       # 0x8B5C
+    ("",       X,      1,      "GL_SAMPLER_1D"),       # 0x8B5D
+    ("",       X,      1,      "GL_SAMPLER_2D"),       # 0x8B5E
+    ("",       X,      1,      "GL_SAMPLER_3D"),       # 0x8B5F
+    ("",       X,      1,      "GL_SAMPLER_CUBE"),     # 0x8B60
+    ("",       X,      1,      "GL_SAMPLER_1D_SHADOW"),        # 0x8B61
+    ("",       X,      1,      "GL_SAMPLER_2D_SHADOW"),        # 0x8B62
+    ("",       X,      1,      "GL_SAMPLER_2D_RECT"),  # 0x8B63
+    ("",       X,      1,      "GL_SAMPLER_2D_RECT_SHADOW"),   # 0x8B64
+    ("",       X,      1,      "GL_FLOAT_MAT2x3"),     # 0x8B65
+    ("",       X,      1,      "GL_FLOAT_MAT2x4"),     # 0x8B66
+    ("",       X,      1,      "GL_FLOAT_MAT3x2"),     # 0x8B67
+    ("",       X,      1,      "GL_FLOAT_MAT3x4"),     # 0x8B68
+    ("",       X,      1,      "GL_FLOAT_MAT4x2"),     # 0x8B69
+    ("",       X,      1,      "GL_FLOAT_MAT4x3"),     # 0x8B6A
+    ("glGetShader,glGetProgram",       B,      1,      "GL_DELETE_STATUS"),    # 0x8B80
+    ("glGetShader,glGetProgram",       B,      1,      "GL_COMPILE_STATUS"),   # 0x8B81
+    ("glGetShader,glGetProgram",       B,      1,      "GL_LINK_STATUS"),      # 0x8B82
+    ("glGetShader,glGetProgram",       B,      1,      "GL_VALIDATE_STATUS"),  # 0x8B83
+    ("glGetShader,glGetProgram",       I,      1,      "GL_INFO_LOG_LENGTH"),  # 0x8B84
+    ("glGetProgram",   I,      1,      "GL_ATTACHED_SHADERS"), # 0x8B85
+    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORMS"),  # 0x8B86
+    ("glGetProgram",   I,      1,      "GL_ACTIVE_UNIFORM_MAX_LENGTH"),        # 0x8B87
+    ("glGetShader",    I,      1,      "GL_SHADER_SOURCE_LENGTH"),     # 0x8B88
+    ("glGetProgram",   I,      1,      "GL_ACTIVE_ATTRIBUTES"),        # 0x8B89
+    ("glGetProgram",   I,      1,      "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"),      # 0x8B8A
+    ("",       X,      1,      "GL_FRAGMENT_SHADER_DERIVATIVE_HINT"),  # 0x8B8B
+    ("",       X,      1,      "GL_SHADING_LANGUAGE_VERSION"), # 0x8B8C
+    ("glGet",  I,      1,      "GL_CURRENT_PROGRAM"),  # 0x8B8D
+    #("",      X,      1,      "GL_PALETTE4_RGB8_OES"),        # 0x8B90
+    #("",      X,      1,      "GL_PALETTE4_RGBA8_OES"),       # 0x8B91
+    #("",      X,      1,      "GL_PALETTE4_R5_G6_B5_OES"),    # 0x8B92
+    #("",      X,      1,      "GL_PALETTE4_RGBA4_OES"),       # 0x8B93
+    #("",      X,      1,      "GL_PALETTE4_RGB5_A1_OES"),     # 0x8B94
+    #("",      X,      1,      "GL_PALETTE8_RGB8_OES"),        # 0x8B95
+    #("",      X,      1,      "GL_PALETTE8_RGBA8_OES"),       # 0x8B96
+    #("",      X,      1,      "GL_PALETTE8_R5_G6_B5_OES"),    # 0x8B97
+    #("",      X,      1,      "GL_PALETTE8_RGBA4_OES"),       # 0x8B98
+    #("",      X,      1,      "GL_PALETTE8_RGB5_A1_OES"),     # 0x8B99
+    ("",       X,      1,      "GL_IMPLEMENTATION_COLOR_READ_TYPE"),   # 0x8B9A
+    ("",       X,      1,      "GL_IMPLEMENTATION_COLOR_READ_FORMAT"), # 0x8B9B
+    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_OES"),     # 0x8B9C
+    #("",      X,      1,      "GL_TEXTURE_CROP_RECT_OES"),    # 0x8B9D
+    #("",      X,      1,      "GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"),    # 0x8B9E
+    #("",      X,      1,      "GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES"),      # 0x8B9F
+    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_POSITION_MESA"),   # 0x8BB0
+    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_CALLBACK_MESA"),   # 0x8BB1
+    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA"),      # 0x8BB2
+    #("",      X,      1,      "GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA"),      # 0x8BB3
+    #("",      X,      1,      "GL_VERTEX_PROGRAM_CALLBACK_MESA"),     # 0x8BB4
+    #("",      X,      1,      "GL_VERTEX_PROGRAM_POSITION_MESA"),     # 0x8BB4
+    #("",      X,      1,      "GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA"),        # 0x8BB6
+    #("",      X,      1,      "GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA"),        # 0x8BB7
+    ("",       X,      1,      "GL_COUNTER_TYPE_AMD"), # 0x8BC0
+    ("",       X,      1,      "GL_COUNTER_RANGE_AMD"),        # 0x8BC1
+    ("",       X,      1,      "GL_UNSIGNED_INT64_AMD"),       # 0x8BC2
+    ("",       X,      1,      "GL_PERCENTAGE_AMD"),   # 0x8BC3
+    ("",       X,      1,      "GL_PERFMON_RESULT_AVAILABLE_AMD"),     # 0x8BC4
+    ("",       X,      1,      "GL_PERFMON_RESULT_SIZE_AMD"),  # 0x8BC5
+    ("",       X,      1,      "GL_PERFMON_RESULT_AMD"),       # 0x8BC6
+    #("",      X,      1,      "GL_TEXTURE_WIDTH_QCOM"),       # 0x8BD2
+    #("",      X,      1,      "GL_TEXTURE_HEIGHT_QCOM"),      # 0x8BD3
+    #("",      X,      1,      "GL_TEXTURE_DEPTH_QCOM"),       # 0x8BD4
+    #("",      X,      1,      "GL_TEXTURE_INTERNAL_FORMAT_QCOM"),     # 0x8BD5
+    #("",      X,      1,      "GL_TEXTURE_FORMAT_QCOM"),      # 0x8BD6
+    #("",      X,      1,      "GL_TEXTURE_TYPE_QCOM"),        # 0x8BD7
+    #("",      X,      1,      "GL_TEXTURE_IMAGE_VALID_QCOM"), # 0x8BD8
+    #("",      X,      1,      "GL_TEXTURE_NUM_LEVELS_QCOM"),  # 0x8BD9
+    #("",      X,      1,      "GL_TEXTURE_TARGET_QCOM"),      # 0x8BDA
+    #("",      X,      1,      "GL_TEXTURE_OBJECT_VALID_QCOM"),        # 0x8BDB
+    #("",      X,      1,      "GL_STATE_RESTORE"),    # 0x8BDC
+    #("",      X,      1,      "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG"),  # 0x8C00
+    #("",      X,      1,      "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG"),  # 0x8C01
+    #("",      X,      1,      "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"), # 0x8C02
+    #("",      X,      1,      "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"), # 0x8C03
+    #("",      X,      1,      "GL_MODULATE_COLOR_IMG"),       # 0x8C04
+    #("",      X,      1,      "GL_RECIP_ADD_SIGNED_ALPHA_IMG"),       # 0x8C05
+    #("",      X,      1,      "GL_TEXTURE_ALPHA_MODULATE_IMG"),       # 0x8C06
+    #("",      X,      1,      "GL_FACTOR_ALPHA_MODULATE_IMG"),        # 0x8C07
+    #("",      X,      1,      "GL_FRAGMENT_ALPHA_MODULATE_IMG"),      # 0x8C08
+    #("",      X,      1,      "GL_ADD_BLEND_IMG"),    # 0x8C09
+    #("",      X,      1,      "GL_SGX_BINARY_IMG"),   # 0x8C0A
+    ("",       X,      1,      "GL_TEXTURE_RED_TYPE"), # 0x8C10
+    ("",       X,      1,      "GL_TEXTURE_GREEN_TYPE"),       # 0x8C11
+    ("",       X,      1,      "GL_TEXTURE_BLUE_TYPE"),        # 0x8C12
+    ("",       X,      1,      "GL_TEXTURE_ALPHA_TYPE"),       # 0x8C13
+    ("",       X,      1,      "GL_TEXTURE_LUMINANCE_TYPE"),   # 0x8C14
+    ("",       X,      1,      "GL_TEXTURE_INTENSITY_TYPE"),   # 0x8C15
+    ("",       X,      1,      "GL_TEXTURE_DEPTH_TYPE"),       # 0x8C16
+    ("",       X,      1,      "GL_UNSIGNED_NORMALIZED"),      # 0x8C17
+    ("",       X,      1,      "GL_TEXTURE_1D_ARRAY"), # 0x8C18
+    ("",       X,      1,      "GL_PROXY_TEXTURE_1D_ARRAY"),   # 0x8C19
+    ("",       X,      1,      "GL_TEXTURE_2D_ARRAY"), # 0x8C1A
+    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_ARRAY"),   # 0x8C1B
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_1D_ARRAY"), # 0x8C1C
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_2D_ARRAY"), # 0x8C1D
+    ("",       X,      1,      "GL_GEOMETRY_PROGRAM_NV"),      # 0x8C26
+    ("",       X,      1,      "GL_MAX_PROGRAM_OUTPUT_VERTICES_NV"),   # 0x8C27
+    ("",       X,      1,      "GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV"),   # 0x8C28
+    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS"), # 0x8C29
+    ("",       X,      1,      "GL_TEXTURE_BUFFER"),   # 0x8C2A
+    ("",       X,      1,      "GL_MAX_TEXTURE_BUFFER_SIZE"),  # 0x8C2B
+    ("",       X,      1,      "GL_TEXTURE_BINDING_BUFFER"),   # 0x8C2C
+    ("glGet",  I,      1,      "GL_TEXTURE_BUFFER_DATA_STORE_BINDING"),        # 0x8C2D
+    ("",       X,      1,      "GL_TEXTURE_BUFFER_FORMAT"),    # 0x8C2E
+    ("",       X,      1,      "GL_ANY_SAMPLES_PASSED"),       # 0x8C2F
+    ("",       X,      1,      "GL_SAMPLE_SHADING"),   # 0x8C36
+    ("",       X,      1,      "GL_MIN_SAMPLE_SHADING_VALUE"), # 0x8C37
+    ("",       X,      1,      "GL_R11F_G11F_B10F"),   # 0x8C3A
+    ("",       X,      1,      "GL_UNSIGNED_INT_10F_11F_11F_REV"),     # 0x8C3B
+    ("",       X,      1,      "GL_RGBA_SIGNED_COMPONENTS_EXT"),       # 0x8C3C
+    ("",       X,      1,      "GL_RGB9_E5"),  # 0x8C3D
+    ("",       X,      1,      "GL_UNSIGNED_INT_5_9_9_9_REV"), # 0x8C3E
+    ("",       X,      1,      "GL_TEXTURE_SHARED_SIZE"),      # 0x8C3F
+    ("",       X,      1,      "GL_SRGB"),     # 0x8C40
+    ("",       X,      1,      "GL_SRGB8"),    # 0x8C41
+    ("",       X,      1,      "GL_SRGB_ALPHA"),       # 0x8C42
+    ("",       X,      1,      "GL_SRGB8_ALPHA8"),     # 0x8C43
+    ("",       X,      1,      "GL_SLUMINANCE_ALPHA"), # 0x8C44
+    ("",       X,      1,      "GL_SLUMINANCE8_ALPHA8"),       # 0x8C45
+    ("",       X,      1,      "GL_SLUMINANCE"),       # 0x8C46
+    ("",       X,      1,      "GL_SLUMINANCE8"),      # 0x8C47
+    ("",       X,      1,      "GL_COMPRESSED_SRGB"),  # 0x8C48
+    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA"),    # 0x8C49
+    ("",       X,      1,      "GL_COMPRESSED_SLUMINANCE"),    # 0x8C4A
+    ("",       X,      1,      "GL_COMPRESSED_SLUMINANCE_ALPHA"),      # 0x8C4B
+    ("",       X,      1,      "GL_COMPRESSED_SRGB_S3TC_DXT1_EXT"),    # 0x8C4C
+    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"),      # 0x8C4D
+    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"),      # 0x8C4E
+    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"),      # 0x8C4F
+    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE_LATC1_EXT"),   # 0x8C70
+    ("",       X,      1,      "GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT"),    # 0x8C71
+    ("",       X,      1,      "GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT"),     # 0x8C72
+    ("",       X,      1,      "GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT"),      # 0x8C73
+    ("",       X,      1,      "GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV"), # 0x8C74
+    ("",       X,      1,      "GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV"),      # 0x8C75
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH"),    # 0x8C76
+    ("",       X,      1,      "GL_BACK_PRIMARY_COLOR_NV"),    # 0x8C77
+    ("",       X,      1,      "GL_BACK_SECONDARY_COLOR_NV"),  # 0x8C78
+    ("",       X,      1,      "GL_TEXTURE_COORD_NV"), # 0x8C79
+    ("",       X,      1,      "GL_CLIP_DISTANCE_NV"), # 0x8C7A
+    ("",       X,      1,      "GL_VERTEX_ID_NV"),     # 0x8C7B
+    ("",       X,      1,      "GL_PRIMITIVE_ID_NV"),  # 0x8C7C
+    ("",       X,      1,      "GL_GENERIC_ATTRIB_NV"),        # 0x8C7D
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_ATTRIBS_NV"),    # 0x8C7F
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_MODE"),   # 0x8C7F
+    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"),       # 0x8C80
+    ("",       X,      1,      "GL_ACTIVE_VARYINGS_NV"),       # 0x8C81
+    ("",       X,      1,      "GL_ACTIVE_VARYING_MAX_LENGTH_NV"),     # 0x8C82
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_VARYINGS"),      # 0x8C83
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_START"),  # 0x8C84
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE"),   # 0x8C85
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_RECORD_NV"),     # 0x8C86
+    ("",       X,      1,      "GL_PRIMITIVES_GENERATED"),     # 0x8C87
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"),    # 0x8C88
+    ("",       X,      1,      "GL_RASTERIZER_DISCARD"),       # 0x8C89
+    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"),    # 0x8C8A
+    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"),  # 0x8C8B
+    ("",       X,      1,      "GL_INTERLEAVED_ATTRIBS"),      # 0x8C8C
+    ("",       X,      1,      "GL_SEPARATE_ATTRIBS"), # 0x8C8D
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER"),        # 0x8C8E
+    ("glGet",  I,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING"),        # 0x8C8F
+    #("",      X,      1,      "GL_ATC_RGB_AMD"),      # 0x8C92
+    #("",      X,      1,      "GL_ATC_RGBA_EXPLICIT_ALPHA_AMD"),      # 0x8C93
+    ("glGet",  E,      1,      "GL_POINT_SPRITE_COORD_ORIGIN"),        # 0x8CA0
+    ("",       X,      1,      "GL_LOWER_LEFT"),       # 0x8CA1
+    ("",       X,      1,      "GL_UPPER_LEFT"),       # 0x8CA2
+    ("",       X,      1,      "GL_STENCIL_BACK_REF"), # 0x8CA3
+    ("",       X,      1,      "GL_STENCIL_BACK_VALUE_MASK"),  # 0x8CA4
+    ("",       X,      1,      "GL_STENCIL_BACK_WRITEMASK"),   # 0x8CA5
+    ("glGet",  I,      1,      "GL_DRAW_FRAMEBUFFER_BINDING"), # 0x8CA6
+    ("glGet",  I,      1,      "GL_RENDERBUFFER_BINDING"),     # 0x8CA7
+    ("",       I,      1,      "GL_READ_FRAMEBUFFER"), # 0x8CA8
+    ("",       I,      1,      "GL_DRAW_FRAMEBUFFER"), # 0x8CA9
+    ("glGet",  I,      1,      "GL_READ_FRAMEBUFFER_BINDING"), # 0x8CAA
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_SAMPLES"),     # 0x8CAB
+    ("",       X,      1,      "GL_DEPTH_COMPONENT32F"),       # 0x8CAC
+    ("",       X,      1,      "GL_DEPTH32F_STENCIL8"),        # 0x8CAD
+    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"),       # 0x8CD0
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"),       # 0x8CD1
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"),     # 0x8CD2
+    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"),     # 0x8CD3
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"),     # 0x8CD4
+    ("",       X,      1,      "GL_FRAMEBUFFER_COMPLETE"),     # 0x8CD5
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"),        # 0x8CD6
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"),        # 0x8CD7
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT"),    # 0x8CD9
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT"),       # 0x8CDA
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"),       # 0x8CDB
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"),       # 0x8CDC
+    ("",       X,      1,      "GL_FRAMEBUFFER_UNSUPPORTED"),  # 0x8CDD
+    ("glGet",  I,      1,      "GL_MAX_COLOR_ATTACHMENTS"),    # 0x8CDF
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT0"),        # 0x8CE0
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT1"),        # 0x8CE1
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT2"),        # 0x8CE2
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT3"),        # 0x8CE3
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT4"),        # 0x8CE4
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT5"),        # 0x8CE5
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT6"),        # 0x8CE6
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT7"),        # 0x8CE7
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT8"),        # 0x8CE8
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT9"),        # 0x8CE9
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT10"),       # 0x8CEA
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT11"),       # 0x8CEB
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT12"),       # 0x8CEC
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT13"),       # 0x8CED
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT14"),       # 0x8CEE
+    ("",       X,      1,      "GL_COLOR_ATTACHMENT15"),       # 0x8CEF
+    ("",       X,      1,      "GL_DEPTH_ATTACHMENT"), # 0x8D00
+    ("",       X,      1,      "GL_STENCIL_ATTACHMENT"),       # 0x8D20
+    ("",       X,      1,      "GL_FRAMEBUFFER"),      # 0x8D40
+    ("",       X,      1,      "GL_RENDERBUFFER"),     # 0x8D41
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_WIDTH"),       # 0x8D42
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_HEIGHT"),      # 0x8D43
+    ("glGetRenderbufferParameter",     E,      1,      "GL_RENDERBUFFER_INTERNAL_FORMAT"),     # 0x8D44
+    ("",       X,      1,      "GL_STENCIL_INDEX1"),   # 0x8D46
+    ("",       X,      1,      "GL_STENCIL_INDEX4"),   # 0x8D47
+    ("",       X,      1,      "GL_STENCIL_INDEX8"),   # 0x8D48
+    ("",       X,      1,      "GL_STENCIL_INDEX16"),  # 0x8D49
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_RED_SIZE"),    # 0x8D50
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_GREEN_SIZE"),  # 0x8D51
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_BLUE_SIZE"),   # 0x8D52
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_ALPHA_SIZE"),  # 0x8D53
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_DEPTH_SIZE"),  # 0x8D54
+    ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_STENCIL_SIZE"),        # 0x8D55
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"),       # 0x8D56
+    ("glGet",  I,      1,      "GL_MAX_SAMPLES"),      # 0x8D57
+    #("",      X,      1,      "GL_TEXTURE_GEN_STR_OES"),      # 0x8D60
+    #("",      X,      1,      "GL_HALF_FLOAT_OES"),   # 0x8D61
+    #("",      X,      1,      "GL_RGB565_OES"),       # 0x8D62
+    #("",      X,      1,      "GL_ETC1_RGB8_OES"),    # 0x8D64
+    #("",      X,      1,      "GL_TEXTURE_EXTERNAL_OES"),     # 0x8D65
+    #("",      X,      1,      "GL_SAMPLER_EXTERNAL_OES"),     # 0x8D66
+    #("",      X,      1,      "GL_TEXTURE_BINDING_EXTERNAL_OES"),     # 0x8D67
+    #("",      X,      1,      "GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES"), # 0x8D68
+    ("",       X,      1,      "GL_RGBA32UI"), # 0x8D70
+    ("",       X,      1,      "GL_RGB32UI"),  # 0x8D71
+    ("",       X,      1,      "GL_ALPHA32UI_EXT"),    # 0x8D72
+    ("",       X,      1,      "GL_INTENSITY32UI_EXT"),        # 0x8D73
+    ("",       X,      1,      "GL_LUMINANCE32UI_EXT"),        # 0x8D74
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA32UI_EXT"),  # 0x8D75
+    ("",       X,      1,      "GL_RGBA16UI"), # 0x8D76
+    ("",       X,      1,      "GL_RGB16UI"),  # 0x8D77
+    ("",       X,      1,      "GL_ALPHA16UI_EXT"),    # 0x8D78
+    ("",       X,      1,      "GL_INTENSITY16UI_EXT"),        # 0x8D79
+    ("",       X,      1,      "GL_LUMINANCE16UI_EXT"),        # 0x8D7A
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA16UI_EXT"),  # 0x8D7B
+    ("",       X,      1,      "GL_RGBA8UI"),  # 0x8D7C
+    ("",       X,      1,      "GL_RGB8UI"),   # 0x8D7D
+    ("",       X,      1,      "GL_ALPHA8UI_EXT"),     # 0x8D7E
+    ("",       X,      1,      "GL_INTENSITY8UI_EXT"), # 0x8D7F
+    ("",       X,      1,      "GL_LUMINANCE8UI_EXT"), # 0x8D80
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA8UI_EXT"),   # 0x8D81
+    ("",       X,      1,      "GL_RGBA32I"),  # 0x8D82
+    ("",       X,      1,      "GL_RGB32I"),   # 0x8D83
+    ("",       X,      1,      "GL_ALPHA32I_EXT"),     # 0x8D84
+    ("",       X,      1,      "GL_INTENSITY32I_EXT"), # 0x8D85
+    ("",       X,      1,      "GL_LUMINANCE32I_EXT"), # 0x8D86
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA32I_EXT"),   # 0x8D87
+    ("",       X,      1,      "GL_RGBA16I"),  # 0x8D88
+    ("",       X,      1,      "GL_RGB16I"),   # 0x8D89
+    ("",       X,      1,      "GL_ALPHA16I_EXT"),     # 0x8D8A
+    ("",       X,      1,      "GL_INTENSITY16I_EXT"), # 0x8D8B
+    ("",       X,      1,      "GL_LUMINANCE16I_EXT"), # 0x8D8C
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA16I_EXT"),   # 0x8D8D
+    ("",       X,      1,      "GL_RGBA8I"),   # 0x8D8E
+    ("",       X,      1,      "GL_RGB8I"),    # 0x8D8F
+    ("",       X,      1,      "GL_ALPHA8I_EXT"),      # 0x8D90
+    ("",       X,      1,      "GL_INTENSITY8I_EXT"),  # 0x8D91
+    ("",       X,      1,      "GL_LUMINANCE8I_EXT"),  # 0x8D92
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA8I_EXT"),    # 0x8D93
+    ("",       X,      1,      "GL_RED_INTEGER"),      # 0x8D94
+    ("",       X,      1,      "GL_GREEN_INTEGER"),    # 0x8D95
+    ("",       X,      1,      "GL_BLUE_INTEGER"),     # 0x8D96
+    ("",       X,      1,      "GL_ALPHA_INTEGER"),    # 0x8D97
+    ("",       X,      1,      "GL_RGB_INTEGER"),      # 0x8D98
+    ("",       X,      1,      "GL_RGBA_INTEGER"),     # 0x8D99
+    ("",       X,      1,      "GL_BGR_INTEGER"),      # 0x8D9A
+    ("",       X,      1,      "GL_BGRA_INTEGER"),     # 0x8D9B
+    ("",       X,      1,      "GL_LUMINANCE_INTEGER_EXT"),    # 0x8D9C
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA_INTEGER_EXT"),      # 0x8D9D
+    ("glGet",  B,      1,      "GL_RGBA_INTEGER_MODE_EXT"),    # 0x8D9E
+    ("",       X,      1,      "GL_INT_2_10_10_10_REV"),       # 0x8D9F
+    ("",       X,      1,      "GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV"), # 0x8DA0
+    ("",       X,      1,      "GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV"),     # 0x8DA1
+    ("",       X,      1,      "GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV"),       # 0x8DA2
+    ("",       X,      1,      "GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV"),     # 0x8DA3
+    ("",       X,      1,      "GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV"),     # 0x8DA4
+    ("",       X,      1,      "GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV"),   # 0x8DA5
+    ("",       X,      1,      "GL_MAX_PROGRAM_GENERIC_RESULTS_NV"),   # 0x8DA6
+    ("glGetFramebufferAttachmentParameter",    B,      1,      "GL_FRAMEBUFFER_ATTACHMENT_LAYERED"),   # 0x8DA7
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"),     # 0x8DA8
+    ("",       X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB"),   # 0x8DA9
+    ("",       X,      1,      "GL_LAYER_NV"), # 0x8DAA
+    ("",       X,      1,      "GL_DEPTH_COMPONENT32F_NV"),    # 0x8DAB
+    ("",       X,      1,      "GL_DEPTH32F_STENCIL8_NV"),     # 0x8DAC
+    ("",       X,      1,      "GL_FLOAT_32_UNSIGNED_INT_24_8_REV"),   # 0x8DAD
+    ("",       X,      1,      "GL_SHADER_INCLUDE_ARB"),       # 0x8DAE
+    ("",       X,      1,      "GL_DEPTH_BUFFER_FLOAT_MODE_NV"),       # 0x8DAF
+    ("glGet",  B,      1,      "GL_FRAMEBUFFER_SRGB"), # 0x8DB9
+    ("glGet",  B,      1,      "GL_FRAMEBUFFER_SRGB_CAPABLE_EXT"),     # 0x8DBA
+    ("",       X,      1,      "GL_COMPRESSED_RED_RGTC1"),     # 0x8DBB
+    ("",       X,      1,      "GL_COMPRESSED_SIGNED_RED_RGTC1"),      # 0x8DBC
+    ("",       X,      1,      "GL_COMPRESSED_RG_RGTC2"),      # 0x8DBD
+    ("",       X,      1,      "GL_COMPRESSED_SIGNED_RG_RGTC2"),       # 0x8DBE
+    ("",       X,      1,      "GL_SAMPLER_1D_ARRAY"), # 0x8DC0
+    ("",       X,      1,      "GL_SAMPLER_2D_ARRAY"), # 0x8DC1
+    ("",       X,      1,      "GL_SAMPLER_BUFFER"),   # 0x8DC2
+    ("",       X,      1,      "GL_SAMPLER_1D_ARRAY_SHADOW"),  # 0x8DC3
+    ("",       X,      1,      "GL_SAMPLER_2D_ARRAY_SHADOW"),  # 0x8DC4
+    ("",       X,      1,      "GL_SAMPLER_CUBE_SHADOW"),      # 0x8DC5
+    ("",       X,      1,      "GL_UNSIGNED_INT_VEC2"),        # 0x8DC6
+    ("",       X,      1,      "GL_UNSIGNED_INT_VEC3"),        # 0x8DC7
+    ("",       X,      1,      "GL_UNSIGNED_INT_VEC4"),        # 0x8DC8
+    ("",       X,      1,      "GL_INT_SAMPLER_1D"),   # 0x8DC9
+    ("",       X,      1,      "GL_INT_SAMPLER_2D"),   # 0x8DCA
+    ("",       X,      1,      "GL_INT_SAMPLER_3D"),   # 0x8DCB
+    ("",       X,      1,      "GL_INT_SAMPLER_CUBE"), # 0x8DCC
+    ("",       X,      1,      "GL_INT_SAMPLER_2D_RECT"),      # 0x8DCD
+    ("",       X,      1,      "GL_INT_SAMPLER_1D_ARRAY"),     # 0x8DCE
+    ("",       X,      1,      "GL_INT_SAMPLER_2D_ARRAY"),     # 0x8DCF
+    ("",       X,      1,      "GL_INT_SAMPLER_BUFFER"),       # 0x8DD0
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_1D"),  # 0x8DD1
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D"),  # 0x8DD2
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_3D"),  # 0x8DD3
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_CUBE"),        # 0x8DD4
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_RECT"),     # 0x8DD5
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY"),    # 0x8DD6
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY"),    # 0x8DD7
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_BUFFER"),      # 0x8DD8
+    ("",       X,      1,      "GL_GEOMETRY_SHADER"),  # 0x8DD9
+    ("",       X,      1,      "GL_GEOMETRY_VERTICES_OUT_ARB"),        # 0x8DDA
+    ("",       X,      1,      "GL_GEOMETRY_INPUT_TYPE_ARB"),  # 0x8DDB
+    ("",       X,      1,      "GL_GEOMETRY_OUTPUT_TYPE_ARB"), # 0x8DDC
+    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB"),      # 0x8DDD
+    ("glGet",  I,      1,      "GL_MAX_VERTEX_VARYING_COMPONENTS_ARB"),        # 0x8DDE
+    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS"),  # 0x8DDF
+    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_OUTPUT_VERTICES"),     # 0x8DE0
+    ("glGet",  I,      1,      "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS"),     # 0x8DE1
+    ("",       X,      1,      "GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT"), # 0x8DE2
+    ("",       X,      1,      "GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT"),       # 0x8DE3
+    ("",       X,      1,      "GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT"),       # 0x8DE4
+    ("",       X,      1,      "GL_ACTIVE_SUBROUTINES"),       # 0x8DE5
+    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_UNIFORMS"),       # 0x8DE6
+    ("",       X,      1,      "GL_MAX_SUBROUTINES"),  # 0x8DE7
+    ("",       X,      1,      "GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS"), # 0x8DE8
+    ("",       X,      1,      "GL_NAMED_STRING_LENGTH_ARB"),  # 0x8DE9
+    ("",       X,      1,      "GL_NAMED_STRING_TYPE_ARB"),    # 0x8DEA
+    ("",       X,      1,      "GL_MAX_BINDABLE_UNIFORM_SIZE_EXT"),    # 0x8DED
+    ("",       X,      1,      "GL_UNIFORM_BUFFER_EXT"),       # 0x8DEE
+    ("glGet",  I,      1,      "GL_UNIFORM_BUFFER_BINDING_EXT"),       # 0x8DEF
+    ("",       X,      1,      "GL_LOW_FLOAT"),        # 0x8DF0
+    ("",       X,      1,      "GL_MEDIUM_FLOAT"),     # 0x8DF1
+    ("",       X,      1,      "GL_HIGH_FLOAT"),       # 0x8DF2
+    ("",       X,      1,      "GL_LOW_INT"),  # 0x8DF3
+    ("",       X,      1,      "GL_MEDIUM_INT"),       # 0x8DF4
+    ("",       X,      1,      "GL_HIGH_INT"), # 0x8DF5
+    ("",       X,      1,      "GL_NUM_SHADER_BINARY_FORMATS"),        # 0x8DF9
+    ("",       X,      1,      "GL_SHADER_COMPILER"),  # 0x8DFA
+    ("",       X,      1,      "GL_MAX_VERTEX_UNIFORM_VECTORS"),       # 0x8DFB
+    ("",       X,      1,      "GL_MAX_VARYING_VECTORS"),      # 0x8DFC
+    ("",       X,      1,      "GL_MAX_FRAGMENT_UNIFORM_VECTORS"),     # 0x8DFD
+    ("",       X,      1,      "GL_RENDERBUFFER_COLOR_SAMPLES_NV"),    # 0x8E10
+    ("",       X,      1,      "GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV"),        # 0x8E11
+    ("",       X,      1,      "GL_MULTISAMPLE_COVERAGE_MODES_NV"),    # 0x8E12
+    ("",       X,      1,      "GL_QUERY_WAIT"),       # 0x8E13
+    ("",       X,      1,      "GL_QUERY_NO_WAIT"),    # 0x8E14
+    ("",       X,      1,      "GL_QUERY_BY_REGION_WAIT"),     # 0x8E15
+    ("",       X,      1,      "GL_QUERY_BY_REGION_NO_WAIT"),  # 0x8E16
+    ("",       X,      1,      "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS"),     # 0x8E1E
+    ("",       X,      1,      "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS"),  # 0x8E1F
+    ("",       X,      1,      "GL_COLOR_SAMPLES_NV"), # 0x8E20
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK"),       # 0x8E22
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED"), # 0x8E23
+    ("",       X,      1,      "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE"), # 0x8E24
+    ("glGet",  I,      1,      "GL_TRANSFORM_FEEDBACK_BINDING"),       # 0x8E25
+    ("",       X,      1,      "GL_FRAME_NV"), # 0x8E26
+    ("",       X,      1,      "GL_FIELDS_NV"),        # 0x8E27
+    ("",       X,      1,      "GL_TIMESTAMP"),        # 0x8E28
+    ("",       X,      1,      "GL_NUM_FILL_STREAMS_NV"),      # 0x8E29
+    ("",       X,      1,      "GL_PRESENT_TIME_NV"),  # 0x8E2A
+    ("",       X,      1,      "GL_PRESENT_DURATION_NV"),      # 0x8E2B
+    ("",       X,      1,      "GL_PROGRAM_MATRIX_EXT"),       # 0x8E2D
+    ("",       X,      1,      "GL_TRANSPOSE_PROGRAM_MATRIX_EXT"),     # 0x8E2E
+    ("",       X,      1,      "GL_PROGRAM_MATRIX_STACK_DEPTH_EXT"),   # 0x8E2F
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_R"),        # 0x8E42
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_G"),        # 0x8E43
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_B"),        # 0x8E44
+    ("glGetTexParameter",      E,      1,      "GL_TEXTURE_SWIZZLE_A"),        # 0x8E45
+    ("glGetTexParameter",      E,      4,      "GL_TEXTURE_SWIZZLE_RGBA"),     # 0x8E46
+    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS"),      # 0x8E47
+    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_MAX_LENGTH"),     # 0x8E48
+    ("",       X,      1,      "GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH"),     # 0x8E49
+    ("",       X,      1,      "GL_NUM_COMPATIBLE_SUBROUTINES"),       # 0x8E4A
+    ("",       X,      1,      "GL_COMPATIBLE_SUBROUTINES"),   # 0x8E4B
+    ("glGet",  B,      1,      "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION"), # 0x8E4C
+    ("",       X,      1,      "GL_FIRST_VERTEX_CONVENTION"),  # 0x8E4D
+    ("",       X,      1,      "GL_LAST_VERTEX_CONVENTION"),   # 0x8E4E
+    ("glGet",  E,      1,      "GL_PROVOKING_VERTEX"), # 0x8E4F
+    ("",       X,      1,      "GL_SAMPLE_POSITION"),  # 0x8E50
+    ("",       X,      1,      "GL_SAMPLE_MASK"),      # 0x8E51
+    ("",       X,      1,      "GL_SAMPLE_MASK_VALUE"),        # 0x8E52
+    ("",       X,      1,      "GL_TEXTURE_BINDING_RENDERBUFFER_NV"),  # 0x8E53
+    ("glGet",  I,      1,      "GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV"),       # 0x8E54
+    ("",       X,      1,      "GL_TEXTURE_RENDERBUFFER_NV"),  # 0x8E55
+    ("",       X,      1,      "GL_SAMPLER_RENDERBUFFER_NV"),  # 0x8E56
+    ("",       X,      1,      "GL_INT_SAMPLER_RENDERBUFFER_NV"),      # 0x8E57
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV"),     # 0x8E58
+    ("",       X,      1,      "GL_MAX_SAMPLE_MASK_WORDS"),    # 0x8E59
+    ("",       X,      1,      "GL_MAX_GEOMETRY_SHADER_INVOCATIONS"),  # 0x8E5A
+    ("",       X,      1,      "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET"),        # 0x8E5B
+    ("",       X,      1,      "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET"),        # 0x8E5C
+    ("",       X,      1,      "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS"),       # 0x8E5D
+    ("",       X,      1,      "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET"),        # 0x8E5E
+    ("",       X,      1,      "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET"),        # 0x8E5F
+    ("",       X,      1,      "GL_MAX_TRANSFORM_FEEDBACK_BUFFERS"),   # 0x8E70
+    ("",       X,      1,      "GL_MAX_VERTEX_STREAMS"),       # 0x8E71
+    ("",       X,      1,      "GL_PATCH_VERTICES"),   # 0x8E72
+    ("",       F,      2,      "GL_PATCH_DEFAULT_INNER_LEVEL"),        # 0x8E73
+    ("glGetPatchParameter",    F,      4,      "GL_PATCH_DEFAULT_OUTER_LEVEL"),        # 0x8E74
+    ("glGetPatchParameter",    X,      1,      "GL_TESS_CONTROL_OUTPUT_VERTICES"),     # 0x8E75
+    ("",       X,      1,      "GL_TESS_GEN_MODE"),    # 0x8E76
+    ("",       X,      1,      "GL_TESS_GEN_SPACING"), # 0x8E77
+    ("",       X,      1,      "GL_TESS_GEN_VERTEX_ORDER"),    # 0x8E78
+    ("",       X,      1,      "GL_TESS_GEN_POINT_MODE"),      # 0x8E79
+    ("",       X,      1,      "GL_ISOLINES"), # 0x8E7A
+    ("",       X,      1,      "GL_FRACTIONAL_ODD"),   # 0x8E7B
+    ("",       X,      1,      "GL_FRACTIONAL_EVEN"),  # 0x8E7C
+    ("",       X,      1,      "GL_MAX_PATCH_VERTICES"),       # 0x8E7D
+    ("",       X,      1,      "GL_MAX_TESS_GEN_LEVEL"),       # 0x8E7E
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS"),      # 0x8E7F
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS"),   # 0x8E80
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS"),     # 0x8E81
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS"),  # 0x8E82
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS"),       # 0x8E83
+    ("",       X,      1,      "GL_MAX_TESS_PATCH_COMPONENTS"),        # 0x8E84
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS"), # 0x8E85
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS"),    # 0x8E86
+    ("",       X,      1,      "GL_TESS_EVALUATION_SHADER"),   # 0x8E87
+    ("",       X,      1,      "GL_TESS_CONTROL_SHADER"),      # 0x8E88
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS"),  # 0x8E89
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS"),       # 0x8E8A
+    ("",       X,      1,      "GL_COMPRESSED_RGBA_BPTC_UNORM_ARB"),   # 0x8E8C
+    ("",       X,      1,      "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB"),     # 0x8E8D
+    ("",       X,      1,      "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB"),     # 0x8E8E
+    ("",       X,      1,      "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB"),   # 0x8E8F
+    #("",      X,      1,      "GL_COVERAGE_COMPONENT_NV"),    # 0x8ED0
+    #("",      X,      1,      "GL_COVERAGE_COMPONENT4_NV"),   # 0x8ED1
+    #("",      X,      1,      "GL_COVERAGE_ATTACHMENT_NV"),   # 0x8ED2
+    #("",      X,      1,      "GL_COVERAGE_BUFFERS_NV"),      # 0x8ED3
+    #("",      X,      1,      "GL_COVERAGE_SAMPLES_NV"),      # 0x8ED4
+    #("",      X,      1,      "GL_COVERAGE_ALL_FRAGMENTS_NV"),        # 0x8ED5
+    #("",      X,      1,      "GL_COVERAGE_EDGE_FRAGMENTS_NV"),       # 0x8ED6
+    #("",      X,      1,      "GL_COVERAGE_AUTOMATIC_NV"),    # 0x8ED7
+    ("",       X,      1,      "GL_BUFFER_GPU_ADDRESS_NV"),    # 0x8F1D
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV"),   # 0x8F1E
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_UNIFIED_NV"), # 0x8F1F
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV"),   # 0x8F20
+    ("",       X,      1,      "GL_VERTEX_ARRAY_ADDRESS_NV"),  # 0x8F21
+    ("",       X,      1,      "GL_NORMAL_ARRAY_ADDRESS_NV"),  # 0x8F22
+    ("",       X,      1,      "GL_COLOR_ARRAY_ADDRESS_NV"),   # 0x8F23
+    ("",       X,      1,      "GL_INDEX_ARRAY_ADDRESS_NV"),   # 0x8F24
+    ("",       X,      1,      "GL_TEXTURE_COORD_ARRAY_ADDRESS_NV"),   # 0x8F25
+    ("",       X,      1,      "GL_EDGE_FLAG_ARRAY_ADDRESS_NV"),       # 0x8F26
+    ("",       X,      1,      "GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV"), # 0x8F27
+    ("",       X,      1,      "GL_FOG_COORD_ARRAY_ADDRESS_NV"),       # 0x8F28
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_ADDRESS_NV"), # 0x8F29
+    ("",       X,      1,      "GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV"),    # 0x8F2A
+    ("",       X,      1,      "GL_VERTEX_ARRAY_LENGTH_NV"),   # 0x8F2B
+    ("",       X,      1,      "GL_NORMAL_ARRAY_LENGTH_NV"),   # 0x8F2C
+    ("",       X,      1,      "GL_COLOR_ARRAY_LENGTH_NV"),    # 0x8F2D
+    ("",       X,      1,      "GL_INDEX_ARRAY_LENGTH_NV"),    # 0x8F2E
+    ("",       X,      1,      "GL_TEXTURE_COORD_ARRAY_LENGTH_NV"),    # 0x8F2F
+    ("",       X,      1,      "GL_EDGE_FLAG_ARRAY_LENGTH_NV"),        # 0x8F30
+    ("",       X,      1,      "GL_SECONDARY_COLOR_ARRAY_LENGTH_NV"),  # 0x8F31
+    ("",       X,      1,      "GL_FOG_COORD_ARRAY_LENGTH_NV"),        # 0x8F32
+    ("",       X,      1,      "GL_ELEMENT_ARRAY_LENGTH_NV"),  # 0x8F33
+    ("",       X,      1,      "GL_GPU_ADDRESS_NV"),   # 0x8F34
+    ("",       X,      1,      "GL_MAX_SHADER_BUFFER_ADDRESS_NV"),     # 0x8F35
+    ("",       X,      1,      "GL_COPY_READ_BUFFER"), # 0x8F36
+    ("",       X,      1,      "GL_COPY_WRITE_BUFFER"),        # 0x8F37
+    ("",       X,      1,      "GL_MAX_IMAGE_UNITS"),  # 0x8F38
+    ("",       X,      1,      "GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS"),    # 0x8F39
+    ("",       X,      1,      "GL_IMAGE_BINDING_NAME"),       # 0x8F3A
+    ("",       X,      1,      "GL_IMAGE_BINDING_LEVEL"),      # 0x8F3B
+    ("",       X,      1,      "GL_IMAGE_BINDING_LAYERED"),    # 0x8F3C
+    ("",       X,      1,      "GL_IMAGE_BINDING_LAYER"),      # 0x8F3D
+    ("",       X,      1,      "GL_IMAGE_BINDING_ACCESS"),     # 0x8F3E
+    ("",       X,      1,      "GL_DRAW_INDIRECT_BUFFER"),     # 0x8F3F
+    ("",       X,      1,      "GL_DRAW_INDIRECT_UNIFIED_NV"), # 0x8F40
+    ("",       X,      1,      "GL_DRAW_INDIRECT_ADDRESS_NV"), # 0x8F41
+    ("",       X,      1,      "GL_DRAW_INDIRECT_LENGTH_NV"),  # 0x8F42
+    ("glGet",  I,      1,      "GL_DRAW_INDIRECT_BUFFER_BINDING"),     # 0x8F43
+    ("",       X,      1,      "GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV"),     # 0x8F44
+    ("",       X,      1,      "GL_MAX_PROGRAM_SUBROUTINE_NUM_NV"),    # 0x8F45
+    ("",       X,      1,      "GL_DOUBLE_MAT2"),      # 0x8F46
+    ("",       X,      1,      "GL_DOUBLE_MAT3"),      # 0x8F47
+    ("",       X,      1,      "GL_DOUBLE_MAT4"),      # 0x8F48
+    ("",       X,      1,      "GL_DOUBLE_MAT2x3"),    # 0x8F49
+    ("",       X,      1,      "GL_DOUBLE_MAT2x4"),    # 0x8F4A
+    ("",       X,      1,      "GL_DOUBLE_MAT3x2"),    # 0x8F4B
+    ("",       X,      1,      "GL_DOUBLE_MAT3x4"),    # 0x8F4C
+    ("",       X,      1,      "GL_DOUBLE_MAT4x2"),    # 0x8F4D
+    ("",       X,      1,      "GL_DOUBLE_MAT4x3"),    # 0x8F4E
+    #("",      X,      1,      "GL_MALI_SHADER_BINARY_ARM"),   # 0x8F60
+    ("",       X,      1,      "GL_RED_SNORM"),        # 0x8F90
+    ("",       X,      1,      "GL_RG_SNORM"), # 0x8F91
+    ("",       X,      1,      "GL_RGB_SNORM"),        # 0x8F92
+    ("",       X,      1,      "GL_RGBA_SNORM"),       # 0x8F93
+    ("",       X,      1,      "GL_R8_SNORM"), # 0x8F94
+    ("",       X,      1,      "GL_RG8_SNORM"),        # 0x8F95
+    ("",       X,      1,      "GL_RGB8_SNORM"),       # 0x8F96
+    ("",       X,      1,      "GL_RGBA8_SNORM"),      # 0x8F97
+    ("",       X,      1,      "GL_R16_SNORM"),        # 0x8F98
+    ("",       X,      1,      "GL_RG16_SNORM"),       # 0x8F99
+    ("",       X,      1,      "GL_RGB16_SNORM"),      # 0x8F9A
+    ("",       X,      1,      "GL_RGBA16_SNORM"),     # 0x8F9B
+    ("",       X,      1,      "GL_SIGNED_NORMALIZED"),        # 0x8F9C
+    ("glGet",  B,      1,      "GL_PRIMITIVE_RESTART"),        # 0x8F9D
+    ("glGet",  I,      1,      "GL_PRIMITIVE_RESTART_INDEX"),  # 0x8F9E
+    #("",      X,      1,      "GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS"),    # 0x8F9F
+    #("",      X,      1,      "GL_PERFMON_GLOBAL_MODE_QCOM"), # 0x8FA0
+    #("",      X,      1,      "GL_SHADER_BINARY_VIV"),        # 0x8FC4
+    ("",       X,      1,      "GL_INT8_NV"),  # 0x8FE0
+    ("",       X,      1,      "GL_INT8_VEC2_NV"),     # 0x8FE1
+    ("",       X,      1,      "GL_INT8_VEC3_NV"),     # 0x8FE2
+    ("",       X,      1,      "GL_INT8_VEC4_NV"),     # 0x8FE3
+    ("",       X,      1,      "GL_INT16_NV"), # 0x8FE4
+    ("",       X,      1,      "GL_INT16_VEC2_NV"),    # 0x8FE5
+    ("",       X,      1,      "GL_INT16_VEC3_NV"),    # 0x8FE6
+    ("",       X,      1,      "GL_INT16_VEC4_NV"),    # 0x8FE7
+    ("",       X,      1,      "GL_INT64_VEC2_NV"),    # 0x8FE9
+    ("",       X,      1,      "GL_INT64_VEC3_NV"),    # 0x8FEA
+    ("",       X,      1,      "GL_INT64_VEC4_NV"),    # 0x8FEB
+    ("",       X,      1,      "GL_UNSIGNED_INT8_NV"), # 0x8FEC
+    ("",       X,      1,      "GL_UNSIGNED_INT8_VEC2_NV"),    # 0x8FED
+    ("",       X,      1,      "GL_UNSIGNED_INT8_VEC3_NV"),    # 0x8FEE
+    ("",       X,      1,      "GL_UNSIGNED_INT8_VEC4_NV"),    # 0x8FEF
+    ("",       X,      1,      "GL_UNSIGNED_INT16_NV"),        # 0x8FF0
+    ("",       X,      1,      "GL_UNSIGNED_INT16_VEC2_NV"),   # 0x8FF1
+    ("",       X,      1,      "GL_UNSIGNED_INT16_VEC3_NV"),   # 0x8FF2
+    ("",       X,      1,      "GL_UNSIGNED_INT16_VEC4_NV"),   # 0x8FF3
+    ("",       X,      1,      "GL_UNSIGNED_INT64_VEC2_NV"),   # 0x8FF5
+    ("",       X,      1,      "GL_UNSIGNED_INT64_VEC3_NV"),   # 0x8FF6
+    ("",       X,      1,      "GL_UNSIGNED_INT64_VEC4_NV"),   # 0x8FF7
+    ("",       X,      1,      "GL_FLOAT16_NV"),       # 0x8FF8
+    ("",       X,      1,      "GL_FLOAT16_VEC2_NV"),  # 0x8FF9
+    ("",       X,      1,      "GL_FLOAT16_VEC3_NV"),  # 0x8FFA
+    ("",       X,      1,      "GL_FLOAT16_VEC4_NV"),  # 0x8FFB
+    ("",       X,      1,      "GL_DOUBLE_VEC2"),      # 0x8FFC
+    ("",       X,      1,      "GL_DOUBLE_VEC3"),      # 0x8FFD
+    ("",       X,      1,      "GL_DOUBLE_VEC4"),      # 0x8FFE
+    ("",       X,      1,      "GL_SAMPLER_BUFFER_AMD"),       # 0x9001
+    ("",       X,      1,      "GL_INT_SAMPLER_BUFFER_AMD"),   # 0x9002
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD"),  # 0x9003
+    ("",       X,      1,      "GL_TESSELLATION_MODE_AMD"),    # 0x9004
+    ("",       X,      1,      "GL_TESSELLATION_FACTOR_AMD"),  # 0x9005
+    ("",       X,      1,      "GL_DISCRETE_AMD"),     # 0x9006
+    ("",       X,      1,      "GL_CONTINUOUS_AMD"),   # 0x9007
+    ("",       X,      1,      "GL_TEXTURE_CUBE_MAP_ARRAY"),   # 0x9009
+    ("_glGet", I,      1,      "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY"),   # 0x900A
+    ("",       X,      1,      "GL_PROXY_TEXTURE_CUBE_MAP_ARRAY"),     # 0x900B
+    ("",       X,      1,      "GL_SAMPLER_CUBE_MAP_ARRAY"),   # 0x900C
+    ("",       X,      1,      "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW"),    # 0x900D
+    ("",       X,      1,      "GL_INT_SAMPLER_CUBE_MAP_ARRAY"),       # 0x900E
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY"),      # 0x900F
+    ("",       X,      1,      "GL_ALPHA_SNORM"),      # 0x9010
+    ("",       X,      1,      "GL_LUMINANCE_SNORM"),  # 0x9011
+    ("",       X,      1,      "GL_LUMINANCE_ALPHA_SNORM"),    # 0x9012
+    ("",       X,      1,      "GL_INTENSITY_SNORM"),  # 0x9013
+    ("",       X,      1,      "GL_ALPHA8_SNORM"),     # 0x9014
+    ("",       X,      1,      "GL_LUMINANCE8_SNORM"), # 0x9015
+    ("",       X,      1,      "GL_LUMINANCE8_ALPHA8_SNORM"),  # 0x9016
+    ("",       X,      1,      "GL_INTENSITY8_SNORM"), # 0x9017
+    ("",       X,      1,      "GL_ALPHA16_SNORM"),    # 0x9018
+    ("",       X,      1,      "GL_LUMINANCE16_SNORM"),        # 0x9019
+    ("",       X,      1,      "GL_LUMINANCE16_ALPHA16_SNORM"),        # 0x901A
+    ("",       X,      1,      "GL_INTENSITY16_SNORM"),        # 0x901B
+    ("",       X,      1,      "GL_FACTOR_MIN_AMD"),   # 0x901C
+    ("",       X,      1,      "GL_FACTOR_MAX_AMD"),   # 0x901D
+    ("",       B,      1,      "GL_DEPTH_CLAMP_NEAR_AMD"),     # 0x901E
+    ("",       B,      1,      "GL_DEPTH_CLAMP_FAR_AMD"),      # 0x901F
+    ("",       X,      1,      "GL_VIDEO_BUFFER_NV"),  # 0x9020
+    ("glGet",  I,      1,      "GL_VIDEO_BUFFER_BINDING_NV"),  # 0x9021
+    ("",       X,      1,      "GL_FIELD_UPPER_NV"),   # 0x9022
+    ("",       X,      1,      "GL_FIELD_LOWER_NV"),   # 0x9023
+    ("",       X,      1,      "GL_NUM_VIDEO_CAPTURE_STREAMS_NV"),     # 0x9024
+    ("",       X,      1,      "GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV"),      # 0x9025
+    ("",       X,      1,      "GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV"),        # 0x9026
+    ("",       X,      1,      "GL_LAST_VIDEO_CAPTURE_STATUS_NV"),     # 0x9027
+    ("",       X,      1,      "GL_VIDEO_BUFFER_PITCH_NV"),    # 0x9028
+    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_MATRIX_NV"), # 0x9029
+    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_MAX_NV"),    # 0x902A
+    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_MIN_NV"),    # 0x902B
+    ("",       X,      1,      "GL_VIDEO_COLOR_CONVERSION_OFFSET_NV"), # 0x902C
+    ("",       X,      1,      "GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV"),  # 0x902D
+    ("",       X,      1,      "GL_PARTIAL_SUCCESS_NV"),       # 0x902E
+    ("",       X,      1,      "GL_SUCCESS_NV"),       # 0x902F
+    ("",       X,      1,      "GL_FAILURE_NV"),       # 0x9030
+    ("",       X,      1,      "GL_YCBYCR8_422_NV"),   # 0x9031
+    ("",       X,      1,      "GL_YCBAYCR8A_4224_NV"),        # 0x9032
+    ("",       X,      1,      "GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV"),    # 0x9033
+    ("",       X,      1,      "GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV"), # 0x9034
+    ("",       X,      1,      "GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV"),    # 0x9035
+    ("",       X,      1,      "GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV"), # 0x9036
+    ("",       X,      1,      "GL_Z4Y12Z4CB12Z4CR12_444_NV"), # 0x9037
+    ("",       X,      1,      "GL_VIDEO_CAPTURE_FRAME_WIDTH_NV"),     # 0x9038
+    ("",       X,      1,      "GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV"),    # 0x9039
+    ("",       X,      1,      "GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV"),      # 0x903A
+    ("",       X,      1,      "GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV"),      # 0x903B
+    ("",       X,      1,      "GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV"),  # 0x903C
+    ("",       X,      1,      "GL_TEXTURE_COVERAGE_SAMPLES_NV"),      # 0x9045
+    ("",       X,      1,      "GL_TEXTURE_COLOR_SAMPLES_NV"), # 0x9046
+    ("",       X,      1,      "GL_IMAGE_1D"), # 0x904C
+    ("",       X,      1,      "GL_IMAGE_2D"), # 0x904D
+    ("",       X,      1,      "GL_IMAGE_3D"), # 0x904E
+    ("",       X,      1,      "GL_IMAGE_2D_RECT"),    # 0x904F
+    ("",       X,      1,      "GL_IMAGE_CUBE"),       # 0x9050
+    ("",       X,      1,      "GL_IMAGE_BUFFER"),     # 0x9051
+    ("",       X,      1,      "GL_IMAGE_1D_ARRAY"),   # 0x9052
+    ("",       X,      1,      "GL_IMAGE_2D_ARRAY"),   # 0x9053
+    ("",       X,      1,      "GL_IMAGE_CUBE_MAP_ARRAY"),     # 0x9054
+    ("",       X,      1,      "GL_IMAGE_2D_MULTISAMPLE"),     # 0x9055
+    ("",       X,      1,      "GL_IMAGE_2D_MULTISAMPLE_ARRAY"),       # 0x9056
+    ("",       X,      1,      "GL_INT_IMAGE_1D"),     # 0x9057
+    ("",       X,      1,      "GL_INT_IMAGE_2D"),     # 0x9058
+    ("",       X,      1,      "GL_INT_IMAGE_3D"),     # 0x9059
+    ("",       X,      1,      "GL_INT_IMAGE_2D_RECT"),        # 0x905A
+    ("",       X,      1,      "GL_INT_IMAGE_CUBE"),   # 0x905B
+    ("",       X,      1,      "GL_INT_IMAGE_BUFFER"), # 0x905C
+    ("",       X,      1,      "GL_INT_IMAGE_1D_ARRAY"),       # 0x905D
+    ("",       X,      1,      "GL_INT_IMAGE_2D_ARRAY"),       # 0x905E
+    ("",       X,      1,      "GL_INT_IMAGE_CUBE_MAP_ARRAY"), # 0x905F
+    ("",       X,      1,      "GL_INT_IMAGE_2D_MULTISAMPLE"), # 0x9060
+    ("",       X,      1,      "GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY"),   # 0x9061
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_1D"),    # 0x9062
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D"),    # 0x9063
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_3D"),    # 0x9064
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_RECT"),       # 0x9065
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_CUBE"),  # 0x9066
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_BUFFER"),        # 0x9067
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_1D_ARRAY"),      # 0x9068
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_ARRAY"),      # 0x9069
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY"),        # 0x906A
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE"),        # 0x906B
+    ("",       X,      1,      "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY"),  # 0x906C
+    ("",       X,      1,      "GL_MAX_IMAGE_SAMPLES"),        # 0x906D
+    ("",       X,      1,      "GL_IMAGE_BINDING_FORMAT"),     # 0x906E
+    ("",       X,      1,      "GL_RGB10_A2UI"),       # 0x906F
+    ("",       X,      1,      "GL_SCALED_RESOLVE_FASTEST_EXT"),       # 0x90BA
+    ("",       X,      1,      "GL_SCALED_RESOLVE_NICEST_EXT"),        # 0x90BB
+    ("",       X,      1,      "GL_MIN_MAP_BUFFER_ALIGNMENT"), # 0x90BC
+    ("",       X,      1,      "GL_IMAGE_FORMAT_COMPATIBILITY_TYPE"),  # 0x90C7
+    ("",       X,      1,      "GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE"),       # 0x90C8
+    ("",       X,      1,      "GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS"),      # 0x90C9
+    ("",       X,      1,      "GL_MAX_VERTEX_IMAGE_UNIFORMS"),        # 0x90CA
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS"),  # 0x90CB
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS"),       # 0x90CC
+    ("",       X,      1,      "GL_MAX_GEOMETRY_IMAGE_UNIFORMS"),      # 0x90CD
+    ("",       X,      1,      "GL_MAX_FRAGMENT_IMAGE_UNIFORMS"),      # 0x90CE
+    ("",       X,      1,      "GL_MAX_COMBINED_IMAGE_UNIFORMS"),      # 0x90CF
+    ("",       X,      1,      "GL_SYNC_X11_FENCE_EXT"),       # 0x90E1
+    ("",       X,      1,      "GL_TEXTURE_2D_MULTISAMPLE"),   # 0x9100
+    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_MULTISAMPLE"),     # 0x9101
+    ("",       X,      1,      "GL_TEXTURE_2D_MULTISAMPLE_ARRAY"),     # 0x9102
+    ("",       X,      1,      "GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY"),       # 0x9103
+    ("",       X,      1,      "GL_TEXTURE_BINDING_2D_MULTISAMPLE"),   # 0x9104
+    ("",       X,      1,      "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY"),     # 0x9105
+    ("",       X,      1,      "GL_TEXTURE_SAMPLES"),  # 0x9106
+    ("",       X,      1,      "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS"),   # 0x9107
+    ("",       X,      1,      "GL_SAMPLER_2D_MULTISAMPLE"),   # 0x9108
+    ("",       X,      1,      "GL_INT_SAMPLER_2D_MULTISAMPLE"),       # 0x9109
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE"),      # 0x910A
+    ("",       X,      1,      "GL_SAMPLER_2D_MULTISAMPLE_ARRAY"),     # 0x910B
+    ("",       X,      1,      "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"), # 0x910C
+    ("",       X,      1,      "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY"),        # 0x910D
+    ("",       X,      1,      "GL_MAX_COLOR_TEXTURE_SAMPLES"),        # 0x910E
+    ("",       X,      1,      "GL_MAX_DEPTH_TEXTURE_SAMPLES"),        # 0x910F
+    ("",       X,      1,      "GL_MAX_INTEGER_SAMPLES"),      # 0x9110
+    ("_glGet", I64,    1,      "GL_MAX_SERVER_WAIT_TIMEOUT"),  # 0x9111
+    ("",       X,      1,      "GL_OBJECT_TYPE"),      # 0x9112
+    ("",       X,      1,      "GL_SYNC_CONDITION"),   # 0x9113
+    ("",       X,      1,      "GL_SYNC_STATUS"),      # 0x9114
+    ("",       X,      1,      "GL_SYNC_FLAGS"),       # 0x9115
+    ("",       X,      1,      "GL_SYNC_FENCE"),       # 0x9116
+    ("",       X,      1,      "GL_SYNC_GPU_COMMANDS_COMPLETE"),       # 0x9117
+    ("",       X,      1,      "GL_UNSIGNALED"),       # 0x9118
+    ("",       X,      1,      "GL_SIGNALED"), # 0x9119
+    ("",       X,      1,      "GL_ALREADY_SIGNALED"), # 0x911A
+    ("",       X,      1,      "GL_TIMEOUT_EXPIRED"),  # 0x911B
+    ("",       X,      1,      "GL_CONDITION_SATISFIED"),      # 0x911C
+    ("",       X,      1,      "GL_WAIT_FAILED"),      # 0x911D
+    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_ACCESS_FLAGS"),      # 0x911F
+    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_MAP_LENGTH"),        # 0x9120
+    ("glGetBufferParameter",   I,      1,      "GL_BUFFER_MAP_OFFSET"),        # 0x9121
+    ("",       X,      1,      "GL_MAX_VERTEX_OUTPUT_COMPONENTS"),     # 0x9122
+    ("",       X,      1,      "GL_MAX_GEOMETRY_INPUT_COMPONENTS"),    # 0x9123
+    ("",       X,      1,      "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS"),   # 0x9124
+    ("",       X,      1,      "GL_MAX_FRAGMENT_INPUT_COMPONENTS"),    # 0x9125
+    ("glGet",  I,      1,      "GL_CONTEXT_PROFILE_MASK"),     # 0x9126
+    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_WIDTH"),    # 0x9127
+    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_HEIGHT"),   # 0x9128
+    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_DEPTH"),    # 0x9129
+    ("",       X,      1,      "GL_UNPACK_COMPRESSED_BLOCK_SIZE"),     # 0x912A
+    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_WIDTH"),      # 0x912B
+    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_HEIGHT"),     # 0x912C
+    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_DEPTH"),      # 0x912D
+    ("",       X,      1,      "GL_PACK_COMPRESSED_BLOCK_SIZE"),       # 0x912E
+    ("",       X,      1,      "GL_TEXTURE_IMMUTABLE_FORMAT"), # 0x912F
+    #("",      X,      1,      "GL_SGX_PROGRAM_BINARY_IMG"),   # 0x9130
+    #("",      X,      1,      "GL_RENDERBUFFER_SAMPLES_IMG"), # 0x9133
+    #("",      X,      1,      "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG"),   # 0x9134
+    #("",      X,      1,      "GL_MAX_SAMPLES_IMG"),  # 0x9135
+    #("",      X,      1,      "GL_TEXTURE_SAMPLES_IMG"),      # 0x9136
+    ("",       X,      1,      "GL_MAX_DEBUG_MESSAGE_LENGTH_ARB"),     # 0x9143
+    ("",       X,      1,      "GL_MAX_DEBUG_LOGGED_MESSAGES_ARB"),    # 0x9144
+    ("",       X,      1,      "GL_DEBUG_LOGGED_MESSAGES_ARB"),        # 0x9145
+    ("",       X,      1,      "GL_DEBUG_SEVERITY_HIGH_ARB"),  # 0x9146
+    ("",       X,      1,      "GL_DEBUG_SEVERITY_MEDIUM_ARB"),        # 0x9147
+    ("",       X,      1,      "GL_DEBUG_SEVERITY_LOW_ARB"),   # 0x9148
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_API_ERROR_AMD"),     # 0x9149
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD"), # 0x914A
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_DEPRECATION_AMD"),   # 0x914B
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD"),    # 0x914C
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_PERFORMANCE_AMD"),   # 0x914D
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD"),       # 0x914E
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_APPLICATION_AMD"),   # 0x914F
+    ("",       X,      1,      "GL_DEBUG_CATEGORY_OTHER_AMD"), # 0x9150
+    ("",       X,      1,      "GL_DATA_BUFFER_AMD"),  # 0x9151
+    ("",       X,      1,      "GL_PERFORMANCE_MONITOR_AMD"),  # 0x9152
+    ("",       X,      1,      "GL_QUERY_OBJECT_AMD"), # 0x9153
+    ("",       X,      1,      "GL_VERTEX_ARRAY_OBJECT_AMD"),  # 0x9154
+    ("",       X,      1,      "GL_SAMPLER_OBJECT_AMD"),       # 0x9155
+    #("",      X,      1,      "GL_SHADER_BINARY_DMP"),        # 0x9250
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER"),    # 0x92C0
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_BINDING"),    # 0x92C1
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_START"),      # 0x92C2
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_SIZE"),       # 0x92C3
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE"),  # 0x92C4
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS"),     # 0x92C5
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES"),      # 0x92C6
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER"),        # 0x92C7
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER"),  # 0x92C8
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER"),       # 0x92C9
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER"),      # 0x92CA
+    ("",       X,      1,      "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER"),      # 0x92CB
+    ("",       X,      1,      "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS"),        # 0x92CC
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS"),  # 0x92CD
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS"),       # 0x92CE
+    ("",       X,      1,      "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS"),      # 0x92CF
+    ("",       X,      1,      "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS"),      # 0x92D0
+    ("",       X,      1,      "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS"),      # 0x92D1
+    ("",       X,      1,      "GL_MAX_VERTEX_ATOMIC_COUNTERS"),       # 0x92D2
+    ("",       X,      1,      "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS"), # 0x92D3
+    ("",       X,      1,      "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS"),      # 0x92D4
+    ("",       X,      1,      "GL_MAX_GEOMETRY_ATOMIC_COUNTERS"),     # 0x92D5
+    ("",       X,      1,      "GL_MAX_FRAGMENT_ATOMIC_COUNTERS"),     # 0x92D6
+    ("",       X,      1,      "GL_MAX_COMBINED_ATOMIC_COUNTERS"),     # 0x92D7
+    ("",       X,      1,      "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE"),   # 0x92D8
+    ("",       X,      1,      "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS"),    # 0x92D9
+    ("",       X,      1,      "GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX"),      # 0x92DA
+    ("",       X,      1,      "GL_UNSIGNED_INT_ATOMIC_COUNTER"),      # 0x92DB
+    ("",       X,      1,      "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS"),       # 0x92DC
+    ("",       X,      1,      "GL_NUM_SAMPLE_COUNTS"),        # 0x9380
+    ("",       X,      1,      "GL_INVALID_INDEX"),    # 0xFFFFFFFFu
+]
+
+
+# Add all enums to GLenum type descriptor
+for _function, _type, _count, _name in parameters:
+    GLenum.values.append(_name)
+
diff --git a/specs/gltypes.py b/specs/gltypes.py
new file mode 100644 (file)
index 0000000..e25cd7e
--- /dev/null
@@ -0,0 +1,203 @@
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+'''Describe GL types.'''
+
+
+import platform
+
+from stdapi import *
+
+
+GLboolean = Alias("GLboolean", Bool)
+GLvoid = Alias("GLvoid", Void)
+GLbyte = Alias("GLbyte", SChar)
+GLshort = Alias("GLshort", Short)
+GLint = Alias("GLint", Int)
+GLint64 = Alias("GLint64", Int64)
+GLubyte = Alias("GLubyte", UChar)
+GLushort = Alias("GLushort", UShort)
+GLuint = Alias("GLuint", UInt)
+GLuint64 = Alias("GLuint64", UInt64)
+GLsizei = Alias("GLsizei", Int)
+GLintptr = Alias("GLintptr", Int)
+GLsizeiptr = Alias("GLsizeiptr", Int)
+GLfloat = Alias("GLfloat", Float)
+GLclampf = Alias("GLclampf", Float)
+GLdouble = Alias("GLdouble", Double)
+GLclampd = Alias("GLclampd", Double)
+GLchar = Alias("GLchar", SChar)
+GLstring = String("GLchar *")
+
+GLcharARB = Alias("GLcharARB", SChar)
+GLstringARB = String("GLcharARB *")
+GLintptrARB = Alias("GLintptrARB", Int)
+GLsizeiptrARB = Alias("GLsizeiptrARB", Int)
+GLhandleARB = Handle("handleARB", Alias("GLhandleARB", UInt))
+GLhalfARB = Alias("GLhalfARB", UShort)
+GLhalfNV = Alias("GLhalfNV", UShort)
+GLint64EXT = Alias("GLint64EXT", Int64)
+GLuint64EXT = Alias("GLuint64EXT", UInt64)
+GLDEBUGPROCARB = Opaque("GLDEBUGPROCARB")
+GLDEBUGPROCAMD = Opaque("GLDEBUGPROCAMD")
+
+GLlist = Handle("list", GLuint)
+GLtexture = Handle("texture", GLuint)
+GLbuffer = Handle("buffer", GLuint)
+GLquery = Handle("query", GLuint)
+GLfenceNV = Handle("fenceNV", GLuint)
+GLprogram = Handle("program", GLuint)
+GLshader = Handle("shader", GLuint)
+GLlocation = Handle("location", GLint, key=('program', GLuint))
+GLlocationARB = Handle("locationARB", GLint, key=('programObj', GLhandleARB))
+GLprogramARB = Handle("programARB", GLuint)
+GLframebuffer = Handle("framebuffer", GLuint)
+GLrenderbuffer = Handle("renderbuffer", GLuint)
+GLfragmentShaderATI = Handle("fragmentShaderATI", GLuint)
+GLarray = Handle("array", GLuint)
+GLregion = Handle("region", GLuint)
+GLmap = Handle("map", OpaquePointer(GLvoid))
+GLpipeline = Handle("pipeline", GLuint)
+GLsampler = Handle("sampler", GLuint)
+GLfeedback = Handle("feedback", GLuint)
+
+GLsync_ = Opaque("GLsync")
+GLsync = Handle("sync", GLsync_)
+
+GLenum = Enum("GLenum", [
+    # Parameters are added later from glparams.py's parameter table
+])
+
+# Some functions take GLenum disguised as GLint.  Apple noticed and fixed it in
+# the gl.h header.  Regardless, C++ typechecking rules force the wrappers to
+# match the prototype precisely.
+if platform.system() == 'Darwin':
+    GLenum_int = GLenum
+else:
+    GLenum_int = Alias("GLint", GLenum)
+
+GLenum_mode = FakeEnum(GLenum, [
+    "GL_POINTS",                         # 0x0000
+    "GL_LINES",                          # 0x0001
+    "GL_LINE_LOOP",                      # 0x0002
+    "GL_LINE_STRIP",                     # 0x0003
+    "GL_TRIANGLES",                      # 0x0004
+    "GL_TRIANGLE_STRIP",                 # 0x0005
+    "GL_TRIANGLE_FAN",                   # 0x0006
+    "GL_QUADS",                          # 0x0007
+    "GL_QUAD_STRIP",                     # 0x0008
+    "GL_POLYGON",                        # 0x0009
+    "GL_LINES_ADJACENCY",                # 0x000A
+    "GL_LINE_STRIP_ADJACENCY",           # 0x000B
+    "GL_TRIANGLES_ADJACENCY",            # 0x000C
+    "GL_TRIANGLE_STRIP_ADJACENCY",       # 0x000D
+    "GL_PATCHES",                        # 0x000E
+])
+
+GLenum_error = FakeEnum(GLenum, [
+    "GL_NO_ERROR",                       # 0x0
+    "GL_INVALID_ENUM",                   # 0x0500
+    "GL_INVALID_VALUE",                  # 0x0501
+    "GL_INVALID_OPERATION",              # 0x0502
+    "GL_STACK_OVERFLOW",                 # 0x0503
+    "GL_STACK_UNDERFLOW",                # 0x0504
+    "GL_OUT_OF_MEMORY",                  # 0x0505
+    "GL_INVALID_FRAMEBUFFER_OPERATION",  # 0x0506
+    "GL_TABLE_TOO_LARGE",                # 0x8031
+])
+
+GLbitfield = Alias("GLbitfield", UInt)
+
+GLbitfield_attrib = Flags(GLbitfield, [
+    "GL_ALL_ATTRIB_BITS",     # 0x000FFFFF
+    "GL_CURRENT_BIT",         # 0x00000001
+    "GL_POINT_BIT",           # 0x00000002
+    "GL_LINE_BIT",            # 0x00000004
+    "GL_POLYGON_BIT",         # 0x00000008
+    "GL_POLYGON_STIPPLE_BIT", # 0x00000010
+    "GL_PIXEL_MODE_BIT",      # 0x00000020
+    "GL_LIGHTING_BIT",        # 0x00000040
+    "GL_FOG_BIT",             # 0x00000080
+    "GL_DEPTH_BUFFER_BIT",    # 0x00000100
+    "GL_ACCUM_BUFFER_BIT",    # 0x00000200
+    "GL_STENCIL_BUFFER_BIT",  # 0x00000400
+    "GL_VIEWPORT_BIT",        # 0x00000800
+    "GL_TRANSFORM_BIT",       # 0x00001000
+    "GL_ENABLE_BIT",          # 0x00002000
+    "GL_COLOR_BUFFER_BIT",    # 0x00004000
+    "GL_HINT_BIT",            # 0x00008000
+    "GL_EVAL_BIT",            # 0x00010000
+    "GL_LIST_BIT",            # 0x00020000
+    "GL_TEXTURE_BIT",         # 0x00040000
+    "GL_SCISSOR_BIT",         # 0x00080000
+    "GL_MULTISAMPLE_BIT",     # 0x20000000
+])
+
+GLbitfield_client_attrib = Flags(GLbitfield, [
+    "GL_CLIENT_ALL_ATTRIB_BITS",  # 0xFFFFFFFF
+    "GL_CLIENT_PIXEL_STORE_BIT",  # 0x00000001
+    "GL_CLIENT_VERTEX_ARRAY_BIT", # 0x00000002
+])
+
+GLbitfield_shader = Flags(GLbitfield, [
+    "GL_ALL_SHADER_BITS",                        # 0xFFFFFFFF
+    "GL_VERTEX_SHADER_BIT",                      # 0x00000001
+    "GL_FRAGMENT_SHADER_BIT",                    # 0x00000002
+    "GL_GEOMETRY_SHADER_BIT",                    # 0x00000004
+    "GL_TESS_CONTROL_SHADER_BIT",                # 0x00000008
+    "GL_TESS_EVALUATION_SHADER_BIT",             # 0x00000010
+])
+
+GLbitfield_access = Flags(GLbitfield, [
+    "GL_MAP_READ_BIT",                # 0x0001
+    "GL_MAP_WRITE_BIT",               # 0x0002
+    "GL_MAP_INVALIDATE_RANGE_BIT",    # 0x0004
+    "GL_MAP_INVALIDATE_BUFFER_BIT",   # 0x0008
+    "GL_MAP_FLUSH_EXPLICIT_BIT",      # 0x0010
+    "GL_MAP_UNSYNCHRONIZED_BIT",      # 0x0020
+])
+
+GLbitfield_sync_flush = Flags(GLbitfield, [
+    "GL_SYNC_FLUSH_COMMANDS_BIT",                              # 0x00000001
+])
+
+GLbitfield_barrier = Flags(GLbitfield, [
+    "GL_ALL_BARRIER_BITS",                      # 0xFFFFFFFF
+    "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT",       # 0x00000001
+    "GL_ELEMENT_ARRAY_BARRIER_BIT",             # 0x00000002
+    "GL_UNIFORM_BARRIER_BIT",                   # 0x00000004
+    "GL_TEXTURE_FETCH_BARRIER_BIT",             # 0x00000008
+    "GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV",   # 0x00000010
+    "GL_SHADER_IMAGE_ACCESS_BARRIER_BIT",       # 0x00000020
+    "GL_COMMAND_BARRIER_BIT",                   # 0x00000040
+    "GL_PIXEL_BUFFER_BARRIER_BIT",              # 0x00000080
+    "GL_TEXTURE_UPDATE_BARRIER_BIT",            # 0x00000100
+    "GL_BUFFER_UPDATE_BARRIER_BIT",             # 0x00000200
+    "GL_FRAMEBUFFER_BARRIER_BIT",               # 0x00000400
+    "GL_TRANSFORM_FEEDBACK_BARRIER_BIT",        # 0x00000800
+    "GL_ATOMIC_COUNTER_BARRIER_BIT",            # 0x00001000
+])
+
diff --git a/specs/glxapi.py b/specs/glxapi.py
new file mode 100644 (file)
index 0000000..361e89a
--- /dev/null
@@ -0,0 +1,445 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""GLX API description."""
+
+
+from stdapi import *
+from glapi import *
+
+VisualID = Alias("VisualID", UInt32)
+Display = Opaque("Display *")
+Visual = Opaque("Visual *")
+Font = Alias("Font", UInt32)
+Pixmap = Alias("Pixmap", UInt32)
+Window = Alias("Window", UInt32)
+
+GLXContext = Opaque("GLXContext")
+GLXPixmap = Alias("GLXPixmap", UInt32)
+GLXDrawable = Alias("GLXDrawable", UInt32)
+GLXFBConfig = Opaque("GLXFBConfig")
+GLXFBConfigSGIX = Opaque("GLXFBConfigSGIX")
+GLXFBConfigID = Alias("GLXFBConfigID", UInt32)
+GLXContextID = Alias("GLXContextID", UInt32)
+GLXWindow = Alias("GLXWindow", UInt32)
+GLXPbuffer = Alias("GLXPbuffer", UInt32)
+GLXPbufferSGIX = Alias("GLXPbufferSGIX", UInt32)
+GLXVideoSourceSGIX = Alias("GLXVideoSourceSGIX", UInt32)
+
+XVisualInfo = Struct("XVisualInfo", [
+  (Visual, "visual"),
+  (VisualID, "visualid"),
+  (Int, "screen"),
+  (Int, "depth"),
+  (Int, "c_class"),
+  (ULong, "red_mask"),
+  (ULong, "green_mask"),
+  (ULong, "blue_mask"),
+  (Int, "colormap_size"),
+  (Int, "bits_per_rgb"),
+])
+
+Bool = FakeEnum(Int, [
+    "False",
+    "True",
+])
+
+GLXAttrib = FakeEnum(Int, [
+    "GLX_USE_GL",
+    "GLX_BUFFER_SIZE",
+    "GLX_LEVEL",
+    "GLX_RGBA",
+    "GLX_DOUBLEBUFFER",
+    "GLX_STEREO",
+    "GLX_AUX_BUFFERS",
+    "GLX_RED_SIZE",
+    "GLX_GREEN_SIZE",
+    "GLX_BLUE_SIZE",
+    "GLX_ALPHA_SIZE",
+    "GLX_DEPTH_SIZE",
+    "GLX_STENCIL_SIZE",
+    "GLX_ACCUM_RED_SIZE",
+    "GLX_ACCUM_GREEN_SIZE",
+    "GLX_ACCUM_BLUE_SIZE",
+    "GLX_ACCUM_ALPHA_SIZE",
+
+    "GLX_CONFIG_CAVEAT",               # 0x20
+    "GLX_X_VISUAL_TYPE",               # 0x22
+    "GLX_TRANSPARENT_TYPE",            # 0x23
+    "GLX_TRANSPARENT_INDEX_VALUE",     # 0x24
+    "GLX_TRANSPARENT_RED_VALUE",       # 0x25
+    "GLX_TRANSPARENT_GREEN_VALUE",     # 0x26
+    "GLX_TRANSPARENT_BLUE_VALUE",      # 0x27
+    "GLX_TRANSPARENT_ALPHA_VALUE",     # 0x28
+
+    "GLX_BIND_TO_TEXTURE_RGB_EXT",        # 0x20D0
+    "GLX_BIND_TO_TEXTURE_RGBA_EXT",       # 0x20D1
+    "GLX_BIND_TO_MIPMAP_TEXTURE_EXT",     # 0x20D2
+    "GLX_BIND_TO_TEXTURE_TARGETS_EXT",    # 0x20D3
+    "GLX_Y_INVERTED_EXT",                 # 0x20D4
+    "GLX_TEXTURE_FORMAT_EXT",             # 0x20D5
+    "GLX_TEXTURE_TARGET_EXT",             # 0x20D6
+    "GLX_MIPMAP_TEXTURE_EXT",             # 0x20D7
+    "GLX_TEXTURE_FORMAT_NONE_EXT",        # 0x20D8
+    "GLX_TEXTURE_FORMAT_RGB_EXT",         # 0x20D9
+    "GLX_TEXTURE_FORMAT_RGBA_EXT",        # 0x20DA
+    "GLX_TEXTURE_1D_EXT",                 # 0x20DB
+    "GLX_TEXTURE_2D_EXT",                 # 0x20DC
+    "GLX_TEXTURE_RECTANGLE_EXT",          # 0x20DD
+    "GLX_FRONT_LEFT_EXT",                 # 0x20DE
+    "GLX_FRONT_RIGHT_EXT",                # 0x20DF
+    "GLX_BACK_LEFT_EXT",                  # 0x20E0
+    "GLX_BACK_RIGHT_EXT",                 # 0x20E1
+    "GLX_AUX0_EXT",                       # 0x20E2
+    "GLX_AUX1_EXT",                       # 0x20E3
+    "GLX_AUX2_EXT",                       # 0x20E4
+    "GLX_AUX3_EXT",                       # 0x20E5
+    "GLX_AUX4_EXT",                       # 0x20E6
+    "GLX_AUX5_EXT",                       # 0x20E7
+    "GLX_AUX6_EXT",                       # 0x20E8
+    "GLX_AUX7_EXT",                       # 0x20E9
+    "GLX_AUX8_EXT",                       # 0x20EA
+    "GLX_AUX9_EXT",                       # 0x20EB
+
+    "GLX_NONE",                        # 0x8000
+    "GLX_SLOW_CONFIG",                 # 0x8001
+    "GLX_TRUE_COLOR",                  # 0x8002
+    "GLX_DIRECT_COLOR",                # 0x8003
+    "GLX_PSEUDO_COLOR",                # 0x8004
+    "GLX_STATIC_COLOR",                # 0x8005
+    "GLX_GRAY_SCALE",                  # 0x8006
+    "GLX_STATIC_GRAY",                 # 0x8007
+    "GLX_TRANSPARENT_RGB",             # 0x8008
+    "GLX_TRANSPARENT_INDEX",           # 0x8009
+    "GLX_VISUAL_ID",                   # 0x800B
+    "GLX_SCREEN",                      # 0x800C
+    "GLX_NON_CONFORMANT_CONFIG",       # 0x800D
+    "GLX_DRAWABLE_TYPE",               # 0x8010
+    "GLX_RENDER_TYPE",                 # 0x8011
+    "GLX_X_RENDERABLE",                # 0x8012
+    "GLX_FBCONFIG_ID",                 # 0x8013
+    "GLX_RGBA_TYPE",                   # 0x8014
+    "GLX_COLOR_INDEX_TYPE",            # 0x8015
+    "GLX_MAX_PBUFFER_WIDTH",           # 0x8016
+    "GLX_MAX_PBUFFER_HEIGHT",          # 0x8017
+    "GLX_MAX_PBUFFER_PIXELS",          # 0x8018
+    "GLX_PRESERVED_CONTENTS",          # 0x801B
+    "GLX_LARGEST_PBUFFER",             # 0x801C
+    "GLX_WIDTH",                       # 0x801D
+    "GLX_HEIGHT",                      # 0x801E
+    "GLX_EVENT_MASK",                  # 0x801F
+    "GLX_DAMAGED",                     # 0x8020
+    "GLX_SAVED",                       # 0x8021
+    "GLX_WINDOW",                      # 0x8022
+    "GLX_PBUFFER",                     # 0x8023
+    "GLX_PBUFFER_HEIGHT",              # 0x8040
+    "GLX_PBUFFER_WIDTH",               # 0x8041
+
+    "GLX_SAMPLE_BUFFERS",              # 100000
+    "GLX_SAMPLES",                     # 100001
+
+    "GLX_DONT_CARE", # 0xFFFFFFFF
+])
+
+GLXError = FakeEnum(Int, [
+    "GLX_BAD_SCREEN",
+    "GLX_BAD_ATTRIBUTE",
+    "GLX_NO_EXTENSION",
+    "GLX_BAD_VISUAL",
+    "GLX_BAD_CONTEXT",
+    "GLX_BAD_VALUE",
+    "GLX_BAD_ENUM",
+])
+
+GLXname = FakeEnum(Int, [
+    "GLX_VENDOR",
+    "GLX_VERSION",
+    "GLX_EXTENSIONS",
+])
+
+GLXbuffer = Flags(Int, [
+    "GLX_WINDOW_BIT",
+    "GLX_PIXMAP_BIT",
+    "GLX_PBUFFER_BIT",
+    "GLX_AUX_BUFFERS_BIT",
+    "GLX_FRONT_LEFT_BUFFER_BIT",
+    "GLX_FRONT_RIGHT_BUFFER_BIT",
+    "GLX_BACK_LEFT_BUFFER_BIT",
+    "GLX_BACK_RIGHT_BUFFER_BIT",
+    "GLX_DEPTH_BUFFER_BIT",
+    "GLX_STENCIL_BUFFER_BIT",
+    "GLX_ACCUM_BUFFER_BIT",
+])
+
+GLXEnum = FakeEnum(Int, [
+    "GLX_NONE",
+    "GLX_SLOW_CONFIG",
+    "GLX_TRUE_COLOR",
+    "GLX_DIRECT_COLOR",
+    "GLX_PSEUDO_COLOR",
+    "GLX_STATIC_COLOR",
+    "GLX_GRAY_SCALE",
+    "GLX_STATIC_GRAY",
+    "GLX_TRANSPARENT_RGB",
+    "GLX_TRANSPARENT_INDEX",
+    "GLX_VISUAL_ID",
+    "GLX_SCREEN",
+    "GLX_NON_CONFORMANT_CONFIG",
+    "GLX_DRAWABLE_TYPE",
+    "GLX_RENDER_TYPE",
+    "GLX_X_RENDERABLE",
+    "GLX_FBCONFIG_ID",
+    "GLX_RGBA_TYPE",
+    "GLX_COLOR_INDEX_TYPE",
+    "GLX_MAX_PBUFFER_WIDTH",
+    "GLX_MAX_PBUFFER_HEIGHT",
+    "GLX_MAX_PBUFFER_PIXELS",
+    "GLX_PRESERVED_CONTENTS",
+    "GLX_LARGEST_PBUFFER",
+    "GLX_WIDTH",
+    "GLX_HEIGHT",
+    "GLX_EVENT_MASK",
+    "GLX_DAMAGED",
+    "GLX_SAVED",
+    "GLX_WINDOW",
+    "GLX_PBUFFER",
+    "GLX_PBUFFER_HEIGHT",
+    "GLX_PBUFFER_WIDTH",
+])
+
+GLXbuffer = Flags(Int, [
+    "GLX_RGBA_BIT",
+    "GLX_COLOR_INDEX_BIT",
+    "GLX_PBUFFER_CLOBBER_MASK",
+])
+
+glxapi = API("GLX")
+
+PROC = Opaque("__GLXextFuncPtr")
+
+glxapi.add_functions([
+    # GLX
+    Function(Pointer(XVisualInfo), "glXChooseVisual", [(Display, "dpy"), (Int, "screen"), (Array(GLXAttrib, "__AttribList_size(attribList)"), "attribList")]),
+    Function(GLXContext, "glXCreateContext", [(Display, "dpy"), (Pointer(XVisualInfo), "vis"), (GLXContext, "shareList"), (Bool, "direct")]),
+    Function(Void, "glXDestroyContext",  [(Display, "dpy"), (GLXContext, "ctx")]),
+    Function(Bool, "glXMakeCurrent", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLXContext, "ctx")]),
+    Function(Void, "glXCopyContext", [(Display, "dpy"), (GLXContext, "src"), (GLXContext, "dst"),
+                                      (ULong, "mask")]),
+    Function(Void, "glXSwapBuffers", [(Display, "dpy"), (GLXDrawable, "drawable")]),
+    Function(GLXPixmap, "glXCreateGLXPixmap", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"),
+                                               (Pixmap, "pixmap")]),
+    Function(Void, "glXDestroyGLXPixmap", [(Display, "dpy"), (GLXPixmap, "pixmap")]),
+    Function(Bool, "glXQueryExtension", [(Display, "dpy"), Out(Pointer(Int), "errorb"), Out(Pointer(Int), "event")]),
+    Function(Bool, "glXQueryVersion", [(Display, "dpy"), Out(Pointer(Int), "maj"), Out(Pointer(Int), "min")]),
+    Function(Bool, "glXIsDirect", [(Display, "dpy"), (GLXContext, "ctx")]),
+    Function(GLXError, "glXGetConfig", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"),
+                                    (GLXAttrib, "attrib"), Out(Pointer(Int), "value")]),
+    Function(GLXContext, "glXGetCurrentContext", [], sideeffects=False),
+    Function(GLXDrawable, "glXGetCurrentDrawable", [], sideeffects=False),
+    Function(Void, "glXWaitGL", []),
+    Function(Void, "glXWaitX", []),
+    Function(Void, "glXUseXFont", [(Font, "font"), (Int, "first"), (Int, "count"), (Int, "list")]),
+
+    # GLX 1.1 and later
+    Function((Const(String("char *"))), "glXQueryExtensionsString", [(Display, "dpy"), (Int, "screen")]),
+    Function((Const(String("char *"))), "glXQueryServerString",  [(Display, "dpy"), (Int, "screen"), (GLXname, "name")]),
+    Function((Const(String("char *"))), "glXGetClientString", [(Display, "dpy"), (GLXname, "name")]),
+
+    # GLX 1.2 and later
+    Function(Display, "glXGetCurrentDisplay", [], sideeffects=False),
+
+    # GLX 1.3 and later
+    Function(Array(GLXFBConfig, "*nitems"), "glXChooseFBConfig", [(Display, "dpy"), (Int, "screen"), (Array(Const(GLXAttrib), "__AttribList_size(attribList)"), "attribList"), Out(Pointer(Int), "nitems")]),
+    Function(Int, "glXGetFBConfigAttrib", [(Display, "dpy"), (GLXFBConfig, "config"), (GLXAttrib, "attribute"), Out(Pointer(Int), "value")]),
+    Function(Array(GLXFBConfig, "*nelements"), "glXGetFBConfigs", [(Display, "dpy"), (Int, "screen"), 
+                                                                   Out(Pointer(Int), "nelements")]),
+    Function(Pointer(XVisualInfo), "glXGetVisualFromFBConfig", [(Display, "dpy"),
+                                                                (GLXFBConfig, "config")]),
+    Function(GLXWindow, "glXCreateWindow", [(Display, "dpy"), (GLXFBConfig, "config"),
+                                            (Window, "win"), (Array(Const(Int), "__AttribList_size(attribList)"), "attribList")]),
+    Function(Void, "glXDestroyWindow", [(Display, "dpy"), (GLXWindow, "window")]),
+    Function(GLXPixmap, "glXCreatePixmap", [(Display, "dpy"), (GLXFBConfig, "config"),
+                                            (Pixmap, "pixmap"), (Array(Const(Int), "__AttribList_size(attribList)"), "attribList")]),
+    Function(Void, "glXDestroyPixmap", [(Display, "dpy"), (GLXPixmap, "pixmap")]),
+    Function(GLXPbuffer, "glXCreatePbuffer", [(Display, "dpy"), (GLXFBConfig, "config"),
+                                              (Array(Const(GLXEnum), "__AttribList_size(attribList)"), "attribList")]),
+    Function(Void, "glXDestroyPbuffer", [(Display, "dpy"), (GLXPbuffer, "pbuf")]),
+    Function(Void, "glXQueryDrawable", [(Display, "dpy"), (GLXDrawable, "draw"), (GLXEnum, "attribute"),
+                                        Out(Pointer(UInt), "value")]),
+    Function(GLXContext, "glXCreateNewContext", [(Display, "dpy"), (GLXFBConfig, "config"),
+                                                 (GLXEnum, "renderType"), (GLXContext, "shareList"),
+                                                 (Bool, "direct")]),
+    Function(Bool, "glXMakeContextCurrent", [(Display, "dpy"), (GLXDrawable, "draw"),
+                                             (GLXDrawable, "read"), (GLXContext, "ctx")]),
+    Function(GLXDrawable, "glXGetCurrentReadDrawable", []),
+    Function(Int, "glXQueryContext", [(Display, "dpy"), (GLXContext, "ctx"), (GLXEnum, "attribute"),
+                                      Out(Pointer(Int), "value")]),
+    Function(Void, "glXSelectEvent", [(Display, "dpy"), (GLXDrawable, "drawable"),
+                                      (ULong, "mask")]),
+    Function(Void, "glXGetSelectedEvent", [(Display, "dpy"), (GLXDrawable, "drawable"),
+                                           Out(Pointer(ULong), "mask")]),
+
+    # GLX_ARB_create_context
+    Function(GLXContext, "glXCreateContextAttribsARB", [(Display, "dpy"), (GLXFBConfig, "config"), (GLXContext, "share_context"), (Bool, "direct"), (OpaquePointer(Const(Int)), "attrib_list")]),
+
+    # GLX_SGI_swap_control
+    Function(Int, "glXSwapIntervalSGI", [(Int, "interval")]),
+
+    # GLX_SGI_video_sync
+    Function(Int, "glXGetVideoSyncSGI", [(OpaquePointer(UInt), "count")]),
+    Function(Int, "glXWaitVideoSyncSGI", [(Int, "divisor"), (Int, "remainder"), (OpaquePointer(UInt), "count")]),
+
+    # GLX_SGI_make_current_read
+    Function(Bool, "glXMakeCurrentReadSGI", [(Display, "dpy"), (GLXDrawable, "draw"), (GLXDrawable, "read"), (GLXContext, "ctx")]),
+    Function(GLXDrawable, "glXGetCurrentReadDrawableSGI", []),
+
+    # GLX_SGIX_video_source
+    #Function(GLXVideoSourceSGIX, "glXCreateGLXVideoSourceSGIX", [(Display, "display"), (Int, "screen"), (VLServer, "server"), (VLPath, "path"), (Int, "nodeClass"), (VLNode, "drainNode")]),
+    #Function(Void, "glXDestroyGLXVideoSourceSGIX", [(Display, "dpy"), (GLXVideoSourceSGIX, "glxvideosource")]),
+
+    # GLX_EXT_import_context
+    Function(Display, "glXGetCurrentDisplayEXT", []),
+    Function(Int, "glXQueryContextInfoEXT", [(Display, "dpy"), (GLXContext, "context"), (Int, "attribute"), (OpaquePointer(Int), "value")]),
+    Function(GLXContextID, "glXGetContextIDEXT", [(Const(GLXContext), "context")]),
+    Function(GLXContext, "glXImportContextEXT", [(Display, "dpy"), (GLXContextID, "contextID")]),
+    Function(Void, "glXFreeContextEXT", [(Display, "dpy"), (GLXContext, "context")]),
+
+    # GLX_SGIX_fbconfig
+    Function(Int, "glXGetFBConfigAttribSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Int, "attribute"), (OpaquePointer(Int), "value")]),
+    Function(OpaquePointer(GLXFBConfigSGIX), "glXChooseFBConfigSGIX", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "attrib_list"), (OpaquePointer(Int), "nelements")]),
+    Function(GLXPixmap, "glXCreateGLXPixmapWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Pixmap, "pixmap")]),
+    Function(GLXContext, "glXCreateContextWithConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (Int, "render_type"), (GLXContext, "share_list"), (Bool, "direct")]),
+    Function(OpaquePointer(XVisualInfo), "glXGetVisualFromFBConfigSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config")]),
+    Function(GLXFBConfigSGIX, "glXGetFBConfigFromVisualSGIX", [(Display, "dpy"), (OpaquePointer(XVisualInfo), "vis")]),
+
+    # GLX_SGIX_pbuffer
+    Function(GLXPbufferSGIX, "glXCreateGLXPbufferSGIX", [(Display, "dpy"), (GLXFBConfigSGIX, "config"), (UInt, "width"), (UInt, "height"), (OpaquePointer(Int), "attrib_list")]),
+    Function(Void, "glXDestroyGLXPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuf")]),
+    Function(Int, "glXQueryGLXPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuf"), (Int, "attribute"), (OpaquePointer(UInt), "value")]),
+    Function(Void, "glXSelectEventSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (ULong, "mask")]),
+    Function(Void, "glXGetSelectedEventSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(ULong), "mask")]),
+
+    # GLX_SGI_cushion
+    Function(Void, "glXCushionSGI", [(Display, "dpy"), (Window, "window"), (Float, "cushion")]),
+
+    # GLX_SGIX_video_resize
+    Function(Int, "glXBindChannelToWindowSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (Window, "window")]),
+    Function(Int, "glXChannelRectSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (Int, "x"), (Int, "y"), (Int, "w"), (Int, "h")]),
+    Function(Int, "glXQueryChannelRectSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (OpaquePointer(Int), "dx"), (OpaquePointer(Int), "dy"), (OpaquePointer(Int), "dw"), (OpaquePointer(Int), "dh")]),
+    Function(Int, "glXQueryChannelDeltasSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (OpaquePointer(Int), "x"), (OpaquePointer(Int), "y"), (OpaquePointer(Int), "w"), (OpaquePointer(Int), "h")]),
+    Function(Int, "glXChannelRectSyncSGIX", [(Display, "display"), (Int, "screen"), (Int, "channel"), (GLenum, "synctype")]),
+
+    # GLX_SGIX_dmbuffer
+    #Function(Bool, "glXAssociateDMPbufferSGIX", [(Display, "dpy"), (GLXPbufferSGIX, "pbuffer"), (OpaquePointer(DMparams), "params"), (DMbuffer, "dmbuffer")]),
+
+    # GLX_SGIX_swap_group
+    Function(Void, "glXJoinSwapGroupSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLXDrawable, "member")]),
+
+    # GLX_SGIX_swap_barrier
+    Function(Void, "glXBindSwapBarrierSGIX", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int, "barrier")]),
+    Function(Bool, "glXQueryMaxSwapBarriersSGIX", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "max")]),
+
+    # GLX_SUN_get_transparent_index
+    #Function(Status, "glXGetTransparentIndexSUN", [(Display, "dpy"), (Window, "overlay"), (Window, "underlay"), (OpaquePointer(Long), "pTransparentIndex")]),
+
+    # GLX_MESA_copy_sub_buffer
+    Function(Void, "glXCopySubBufferMESA", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int, "x"), (Int, "y"), (Int, "width"), (Int, "height")]),
+
+    # GLX_MESA_pixmap_colormap
+    #Function(GLXPixmap, "glXCreateGLXPixmapMESA", [(Display, "dpy"), (OpaquePointer(XVisualInfo), "visual"), (Pixmap, "pixmap"), (Colormap, "cmap")]),
+
+    # GLX_MESA_release_buffers
+    Function(Bool, "glXReleaseBuffersMESA", [(Display, "dpy"), (GLXDrawable, "drawable")]),
+
+    # GLX_MESA_set_3dfx_mode
+    Function(Bool, "glXSet3DfxModeMESA", [(Int, "mode")]),
+
+    # GLX_OML_sync_control
+    Function(Bool, "glXGetSyncValuesOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(Int64), "ust"), (OpaquePointer(Int64), "msc"), (OpaquePointer(Int64), "sbc")]),
+    Function(Bool, "glXGetMscRateOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(Int32), "numerator"), (OpaquePointer(Int32), "denominator")]),
+    Function(Int64, "glXSwapBuffersMscOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int64, "target_msc"), (Int64, "divisor"), (Int64, "remainder")]),
+    Function(Bool, "glXWaitForMscOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int64, "target_msc"), (Int64, "divisor"), (Int64, "remainder"), (OpaquePointer(Int64), "ust"), (OpaquePointer(Int64), "msc"), (OpaquePointer(Int64), "sbc")]),
+    Function(Bool, "glXWaitForSbcOML", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int64, "target_sbc"), (OpaquePointer(Int64), "ust"), (OpaquePointer(Int64), "msc"), (OpaquePointer(Int64), "sbc")]),
+
+    # GLX_SGIX_hyperpipe
+    #Function(OpaquePointer(GLXHyperpipeNetworkSGIX), "glXQueryHyperpipeNetworkSGIX", [(Display, "dpy"), (OpaquePointer(Int), "npipes")]),
+    #Function(Int, "glXHyperpipeConfigSGIX", [(Display, "dpy"), (Int, "networkId"), (Int, "npipes"), (OpaquePointer(GLXHyperpipeConfigSGIX), "cfg"), (OpaquePointer(Int), "hpId")]),
+    #Function(OpaquePointer(GLXHyperpipeConfigSGIX), "glXQueryHyperpipeConfigSGIX", [(Display, "dpy"), (Int, "hpId"), (OpaquePointer(Int), "npipes")]),
+    #Function(Int, "glXDestroyHyperpipeConfigSGIX", [(Display, "dpy"), (Int, "hpId")]),
+    #Function(Int, "glXBindHyperpipeSGIX", [(Display, "dpy"), (Int, "hpId")]),
+    #Function(Int, "glXQueryHyperpipeBestAttribSGIX", [(Display, "dpy"), (Int, "timeSlice"), (Int, "attrib"), (Int, "size"), (OpaquePointer(Void), "attribList"), (OpaquePointer(Void), "returnAttribList")]),
+    #Function(Int, "glXHyperpipeAttribSGIX", [(Display, "dpy"), (Int, "timeSlice"), (Int, "attrib"), (Int, "size"), (OpaquePointer(Void), "attribList")]),
+    #Function(Int, "glXQueryHyperpipeAttribSGIX", [(Display, "dpy"), (Int, "timeSlice"), (Int, "attrib"), (Int, "size"), (OpaquePointer(Void), "returnAttribList")]),
+
+    # GLX_MESA_agp_offset
+    Function(UInt, "glXGetAGPOffsetMESA", [(OpaquePointer(Const(Void)), "pointer")]),
+    
+    # EXT_texture_from_pixmap
+    Function(Void, "glXBindTexImageEXT", [(Display, "display"), (GLXDrawable, "drawable"), (Int, "buffer"), (Array(Const(Int), "__AttribList_size(attrib_list)"), "attrib_list")]),
+    Function(Void, "glXReleaseTexImageEXT", [(Display, "display"), (GLXDrawable, "drawable"), (Int, "buffer")]),
+
+    # GLX_NV_present_video
+    #Function(OpaquePointer(UInt), "glXEnumerateVideoDevicesNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "nelements")]),
+    #Function(Int, "glXBindVideoDeviceNV", [(Display, "dpy"), (UInt, "video_slot"), (UInt, "video_device"), (OpaquePointer(Const(Int)), "attrib_list")]),
+
+    # GLX_NV_video_output
+    #Function(Int, "glXGetVideoDeviceNV", [(Display, "dpy"), (Int, "screen"), (Int, "numVideoDevices"), (OpaquePointer(GLXVideoDeviceNV), "pVideoDevice")]),
+    #Function(Int, "glXReleaseVideoDeviceNV", [(Display, "dpy"), (Int, "screen"), (GLXVideoDeviceNV, "VideoDevice")]),
+    #Function(Int, "glXBindVideoImageNV", [(Display, "dpy"), (GLXVideoDeviceNV, "VideoDevice"), (GLXPbuffer, "pbuf"), (Int, "iVideoBuffer")]),
+    #Function(Int, "glXReleaseVideoImageNV", [(Display, "dpy"), (GLXPbuffer, "pbuf")]),
+    #Function(Int, "glXSendPbufferToVideoNV", [(Display, "dpy"), (GLXPbuffer, "pbuf"), (Int, "iBufferType"), (OpaquePointer(ULong), "pulCounterPbuffer"), (GLboolean, "bBlock")]),
+    #Function(Int, "glXGetVideoInfoNV", [(Display, "dpy"), (Int, "screen"), (GLXVideoDeviceNV, "VideoDevice"), (OpaquePointer(ULong), "pulCounterOutputPbuffer"), (OpaquePointer(ULong), "pulCounterOutputVideo")]),
+
+    # GLX_NV_swap_group
+    Function(Bool, "glXJoinSwapGroupNV", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLuint, "group")]),
+    Function(Bool, "glXBindSwapBarrierNV", [(Display, "dpy"), (GLuint, "group"), (GLuint, "barrier")]),
+    Function(Bool, "glXQuerySwapGroupNV", [(Display, "dpy"), (GLXDrawable, "drawable"), (OpaquePointer(GLuint), "group"), (OpaquePointer(GLuint), "barrier")]),
+    Function(Bool, "glXQueryMaxSwapGroupsNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(GLuint), "maxGroups"), (OpaquePointer(GLuint), "maxBarriers")]),
+    Function(Bool, "glXQueryFrameCountNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(GLuint), "count")]),
+    Function(Bool, "glXResetFrameCountNV", [(Display, "dpy"), (Int, "screen")]),
+
+    # GLX_NV_video_capture
+    #Function(Int, "glXBindVideoCaptureDeviceNV", [(Display, "dpy"), (UInt, "video_capture_slot"), (GLXVideoCaptureDeviceNV, "device")]),
+    #Function(OpaquePointer(GLXVideoCaptureDeviceNV), "glXEnumerateVideoCaptureDevicesNV", [(Display, "dpy"), (Int, "screen"), (OpaquePointer(Int), "nelements")]),
+    #Function(Void, "glXLockVideoCaptureDeviceNV", [(Display, "dpy"), (GLXVideoCaptureDeviceNV, "device")]),
+    #Function(Int, "glXQueryVideoCaptureDeviceNV", [(Display, "dpy"), (GLXVideoCaptureDeviceNV, "device"), (Int, "attribute"), (OpaquePointer(Int), "value")]),
+    #Function(Void, "glXReleaseVideoCaptureDeviceNV", [(Display, "dpy"), (GLXVideoCaptureDeviceNV, "device")]),
+
+    # GLX_EXT_swap_control
+    Function(Int, "glXSwapIntervalEXT", [(Display, "dpy"), (GLXDrawable, "drawable"), (Int, "interval")]),
+
+    # GLX_NV_copy_image
+    Function(Void, "glXCopyImageSubDataNV", [(Display, "dpy"), (GLXContext, "srcCtx"), (GLuint, "srcName"), (GLenum, "srcTarget"), (GLint, "srcLevel"), (GLint, "srcX"), (GLint, "srcY"), (GLint, "srcZ"), (GLXContext, "dstCtx"), (GLuint, "dstName"), (GLenum, "dstTarget"), (GLint, "dstLevel"), (GLint, "dstX"), (GLint, "dstY"), (GLint, "dstZ"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
+
+    # GLX_NV_vertex_array_range
+    Function(OpaquePointer(Void), "glXAllocateMemoryNV", [(GLsizei, "size"), (GLfloat, "readfreq"), (GLfloat, "writefreq"), (GLfloat, "priority")]),
+    Function(Void, "glXFreeMemoryNV", [(OpaquePointer(Void), "pointer")]),
+
+    # Must be last
+    Function(PROC, "glXGetProcAddressARB", [(Alias("const GLubyte *", CString), "procName")]),
+    Function(PROC, "glXGetProcAddress", [(Alias("const GLubyte *", CString), "procName")]),
+])
+
+
diff --git a/specs/scripts/.gitignore b/specs/scripts/.gitignore
new file mode 100644 (file)
index 0000000..1dbc0cf
--- /dev/null
@@ -0,0 +1,7 @@
+*.spec
+*.tm
+*.txt
+*api.py
+glparams.py
+wglenum.py
+!Makefile
diff --git a/specs/scripts/Makefile b/specs/scripts/Makefile
new file mode 100644 (file)
index 0000000..2ea2066
--- /dev/null
@@ -0,0 +1,51 @@
+
+all: \
+       download \
+       glapi.py glxapi.py wglapi.py \
+    glparams.py wglenum.py
+
+download: \
+       enum.spec \
+       enumext.spec \
+       gl.spec \
+       gl.tm \
+       glxenum.spec \
+       glxenumext.spec \
+       glx.spec \
+       glxext.spec \
+       glx.tm \
+       wglenum.spec \
+       wglenumext.spec \
+       wgl.spec \
+       wglext.spec \
+       wgl.tm
+
+%.spec:
+       wget -N http://www.opengl.org/registry/api/$@
+
+%.tm:
+       wget -N http://www.opengl.org/registry/api/$@
+
+glapi.py: glspec.py gl.tm gl.spec
+       python glspec.py gl gl.tm gl.spec > $@
+
+glxapi.py: glspec.py glx.tm glx.spec glxext.spec
+       python glspec.py glX glx.tm glx.spec glxext.spec > $@
+
+wglapi.py: glspec.py wgl.tm wgl.spec wglext.spec
+       python glspec.py wgl wgl.tm wgl.spec wglext.spec > $@
+
+glparams.py: glparams.sed enum.spec sort.sh
+       sed -n -f glparams.sed enum.spec | ./sort.sh > $@
+
+wglenum.py: wglenum.sh wglenumext.spec
+       ./wglenum.sh wglenumext.spec > $@
+
+clean:
+       rm -f \
+        glapi.py glxapi.py wglapi.py \
+        glparams.py wglenum.py
+
+.PRECIOUS: %.spec %.tm
+
+.PHONY: download clean
diff --git a/specs/scripts/README b/specs/scripts/README
new file mode 100644 (file)
index 0000000..6df2a3d
--- /dev/null
@@ -0,0 +1,12 @@
+This directory contains several helper scripts that facilitate the generation
+of the API descriptions from specs and/or header files.
+
+The specs/headers are not expressive enough, which is why we can't just code
+generate everything from them.
+
+For GL the typical procedure is to run
+
+  make -B
+
+and then manually crossport new functions / enums to the files in the top dir
+via a side-by-side diff tool, such as gvimdiff.
diff --git a/specs/scripts/cdecl.py b/specs/scripts/cdecl.py
new file mode 100755 (executable)
index 0000000..4f36b3c
--- /dev/null
@@ -0,0 +1,358 @@
+#!/usr/bin/env python
+##########################################################################
+#
+# Copyright 2011 Jose Fonseca
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+'''Script to parse C declarations and spew API definitions.
+'''
+
+
+import sys
+import re
+import optparse
+
+
+class Parser:
+
+    token_re = re.compile(r'(\w+|\s+|.)')
+
+    multi_comment_re = re.compile(r'/\*.*?\*/', flags = re.DOTALL)
+    single_comment_re = re.compile(r'//.*',)
+
+    def __init__(self):
+        self.tokens = []
+
+    def has_side_effects(self, name):
+        return True
+
+
+    def tokenize(self, s):
+        s = self.multi_comment_re.sub('', s)
+        s = self.single_comment_re.sub('', s)
+        self.tokens = self.token_re.split(s)
+        self.tokens = [token for token in self.tokens if self.filter_token(token)]
+
+    def filter_token(self, token):
+        if not token or token.isspace():
+            return False
+        if token.startswith('AVAILABLE_') or token.startswith('DEPRECATED_'):
+            return False
+        if token in ['FAR']:
+            return False
+        return True
+
+    def lookahead(self, index = 0):
+        try:
+            return self.tokens[index]
+        except KeyError:
+            return None
+
+    def match(self, *ref_tokens):
+        return self.lookahead() in ref_tokens
+
+    def consume(self, *ref_tokens):
+        if not self.tokens:
+            raise Exception('unexpected EOF')
+        token = self.tokens.pop(0)
+        if ref_tokens and token not in ref_tokens:
+            raise Exception('token mismatch', token, ref_tokens)
+        return token
+
+    def eof(self):
+        return not self.tokens
+
+
+    def parse(self, s):
+        self.tokenize(s)
+
+        while not self.eof():
+            #print self.tokens[0:10]
+            self.parse_declaration()
+
+    def parse_declaration(self):
+        self.parse_tags()
+        if self.match('enum'):
+            self.parse_enum()
+        elif self.match('interface'):
+            self.parse_interface()
+        elif self.match('mask'):
+            self.parse_value('mask', 'Flags')
+        elif self.match('struct'):
+            self.parse_struct()
+        elif self.match('value'):
+            self.parse_value('value', 'FakeEnum')
+        elif self.match('typedef'):
+            self.parse_typedef()
+        else:
+            self.parse_prototype()
+        if not self.eof() and self.match(';'):
+            self.consume(';')
+
+    def parse_typedef(self):
+        self.consume('typedef')
+        if self.lookahead(2) in (';', ','):
+            base_type = self.consume()
+            while True:
+                type = base_type
+                if self.match('*'):
+                    self.consume()
+                    type = 'Pointer(%s)' % type
+                name = self.consume()
+                print '%s = Alias("%s", %s)' % (name, name, type)
+                if self.match(','):
+                    self.consume()
+                else:
+                    break
+        else:
+            self.parse_declaration()
+            self.consume()
+
+    def parse_enum(self):
+        self.consume('enum')
+        name = self.consume()
+        self.consume('{')
+
+        print '%s = Enum("%s", [' % (name, name)
+
+        #value = 0
+        while self.lookahead() != '}':
+            name = self.consume()
+            if self.match('='):
+                self.consume('=')
+                value = self.consume()
+            if self.match(','):
+                self.consume(',')
+            tags = self.parse_tags()
+            #print '    "%s",\t# %s' % (name, value) 
+            print '    "%s",' % (name,) 
+            #value += 1
+        self.consume('}')
+
+        print '])'
+        print
+
+    def parse_value(self, ref_token, constructor):
+        self.consume(ref_token)
+        type = self.consume()
+        name = self.consume()
+        self.consume('{')
+
+        print '%s = %s(%s, [' % (name, constructor, type)
+
+        while self.lookahead() != '}':
+            self.consume('#')
+            self.consume('define')
+            name = self.consume()
+            value = self.consume()
+            #print '    "%s",\t# %s' % (name, value) 
+            print '    "%s",' % (name,) 
+        self.consume('}')
+
+        print '])'
+        print
+
+    def parse_struct(self):
+        self.consume('struct')
+        name = self.consume()
+        self.consume('{')
+
+        print '%s = Struct("%s", [' % (name, name)
+
+        value = 0
+        while self.lookahead() != '}':
+            type, name = self.parse_named_type()
+            if self.match(','):
+                self.consume(',')
+            self.consume(';')
+            print '    (%s, "%s"),' % (type, name) 
+            value += 1
+        self.consume('}')
+
+        print '])'
+        print
+
+    def parse_interface(self):
+        self.consume('interface')
+        name = self.consume()
+        if self.match(';'):
+            return
+        self.consume(':')
+        base = self.consume()
+        self.consume('{')
+
+        print '%s = Interface("%s", %s)' % (name, name, base)
+        print '%s.methods += [' % (name,)
+
+        while self.lookahead() != '}':
+            self.parse_prototype('Method')
+            self.consume(';')
+        self.consume('}')
+
+        print ']'
+        print
+
+    def parse_prototype(self, creator = 'Function'):
+        if self.match('extern'):
+            self.consume()
+
+        ret = self.parse_type()
+
+        if self.match('__stdcall'):
+            self.consume()
+            creator = 'StdFunction'
+
+        name = self.consume()
+        extra = ''
+        if not self.has_side_effects(name):
+            extra += ', sideeffects=False'
+        name = name
+
+        self.consume('(')
+        args = []
+        if self.match('void') and self.tokens[1] == ')':
+            self.consume()
+        while self.lookahead() != ')':
+            arg = self.parse_arg()
+            args.append(arg)
+            if self.match(','):
+                self.consume()
+        self.consume() == ')'
+        
+        print '    %s(%s, "%s", [%s]%s),' % (creator, ret, name, ', '.join(args), extra)
+
+    def parse_arg(self):
+        tags = self.parse_tags()
+
+        type, name = self.parse_named_type()
+
+        arg = '(%s, "%s")' % (type, name)
+        if 'out' in tags:
+            arg = 'Out' + arg
+        return arg
+
+    def parse_tags(self):
+        tags = []
+        if self.match('['):
+            self.consume()
+            while not self.match(']'):
+                tag = self.consume()
+                tags.append(tag)
+            self.consume(']')
+        return tags
+
+    def parse_named_type(self):
+        type = self.parse_type()
+        name = self.consume()
+        if self.match('['):
+            self.consume()
+            length = self.consume()
+            self.consume(']')
+            type = 'Array(%s, "%s")' % (type, length)
+        return type, name
+
+    int_tokens = ('unsigned', 'signed', 'int', 'long', 'short', 'char')
+
+    type_table = {
+        'float':    'Float',
+        'double':   'Double',
+        'int8_t':   'Int8',
+        'uint8_t':  'UInt8',
+        'int16_t':  'Int16',
+        'uint16_t': 'UInt16',
+        'int32_t':  'Int32',
+        'uint32_t': 'UInt32',
+        'int64_t' : 'Int64',
+        'uint64_t': 'UInt64',
+    }
+
+    def parse_type(self):
+        const = False
+        token = self.consume()
+        if token == 'const':
+            token = self.consume()
+            const = True
+        if token == 'void':
+            type = 'Void'
+        elif token in self.int_tokens:
+            unsigned = False
+            signed = False
+            long = 0
+            short = 0
+            char = False
+            while token in self.int_tokens:
+                if token == 'unsigned':
+                    unsigned = True
+                if token == 'signed':
+                    signed = True
+                if token == 'long':
+                    long += 1
+                if token == 'short':
+                    short += 1
+                if token == 'char':
+                    char = False
+                if self.lookahead() in self.int_tokens:
+                    token = self.consume()
+                else:
+                    token = None
+            if char:
+                type = 'Char'
+                if signed:
+                    type = 'S' + type
+            elif short:
+                type = 'Short'
+            elif long:
+                type = 'Long' * long
+            else:
+                type = 'Int'
+            if unsigned:
+                type = 'U' + type
+        else:
+            type = self.type_table.get(token, token)
+        if const:
+            type = 'Const(%s)' % type
+        while True:
+            if self.match('*'):
+                self.consume('*')
+                type = 'OpaquePointer(%s)' % type
+            elif self.match('const'):
+                self.consume('const')
+                type = 'Const(%s)' % type
+            else:
+                break
+        return type
+
+
+
+        
+
+
+def main():
+    parser = Parser()
+    for arg in sys.argv[1:]:
+        parser.parse(open(arg, 'rt').read())
+    
+
+if __name__ == '__main__':
+    main()
diff --git a/specs/scripts/glparams.sed b/specs/scripts/glparams.sed
new file mode 100644 (file)
index 0000000..8afde64
--- /dev/null
@@ -0,0 +1,2 @@
+s/^\s\+\(\w\+\)\s*=\s*\(0x\w\+\)\s\+#\s\+\([0-9]\+\)\s\+\([IF]\)\s*\(#.*\)\?$/    ("glGet",\t\4,\t\3,\t"GL_\1"),\t# \2/p
+s/^\s\+\(\w\+\)\s*=\s*\(0x\w\+\)\s*\(#.*\)\?$/    ("",\tX,\t1,\t"GL_\1"),\t# \2/p
diff --git a/specs/scripts/glspec.py b/specs/scripts/glspec.py
new file mode 100755 (executable)
index 0000000..dbd20ce
--- /dev/null
@@ -0,0 +1,283 @@
+#!/usr/bin/env python
+##########################################################################
+#
+# Copyright 2010 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+import sys
+import re
+import optparse
+
+
+def stderr(x):
+    sys.stderr.write(str(x) + '\n')
+
+
+class Parser:
+
+    def __init__(self, stream):
+        pass
+
+
+class LineParser:
+    """Base class for parsers that read line-based formats."""
+
+    def __init__(self, stream):
+        self._stream = stream
+        self._line = None
+        self._eof = False
+        # read lookahead
+        self.readline()
+    
+    def parse(self):
+        raise NotImplementedError
+
+    def readline(self):
+        line = self._stream.readline()
+        if not line:
+            self._line = ''
+            self._eof = True
+        self._line = line.rstrip('\r\n')
+
+    def lookahead(self):
+        assert self._line is not None
+        return self._line
+
+    def consume(self):
+        assert self._line is not None
+        line = self._line
+        self.readline()
+        return line
+
+    def eof(self):
+        assert self._line is not None
+        return self._eof
+    
+    def skip_whitespace(self):
+        while not self.eof() and self.match_whitespace() or self.match_comment():
+            self.consume()
+
+    def match_whitespace(self):
+        line = self.lookahead()
+        return not line.strip()
+
+    def match_comment(self):
+        return False
+
+
+class TypemapParser(LineParser):
+
+    def parse(self):
+        typemap = {}
+        self.skip_whitespace()
+        while not self.eof():
+            line = self.consume()
+            fields = [field.strip() for field in line.split(',')]
+            src = fields[0]
+            dst = fields[3]
+            if dst != '*':
+                typemap[src] = dst
+            self.skip_whitespace()
+        return typemap
+    
+    def match_comment(self):
+        line = self.lookahead()
+        return line.startswith('#')
+
+
+class SpecParser(LineParser):
+
+    property_re = re.compile(r'^\w+:')
+    prototype_re = re.compile(r'^(\w+)\((.*)\)$')
+
+    def __init__(self, stream, prefix='', typemap = None):
+        LineParser.__init__(self, stream)
+        if typemap is None:
+            self.typemap = {}
+        else:
+            self.typemap = typemap
+        self.prefix = prefix
+        self.category = None
+
+    def parse(self):
+        self.skip_whitespace()
+        while not self.eof():
+            line = self.lookahead()
+            if self.property_re.match(line):
+                self.parse_property()
+            elif self.prototype_re.match(line):
+                self.parse_prototype()
+            else:
+                self.consume()
+            self.skip_whitespace()
+
+    def parse_property(self):
+        line = self.consume()
+        name, value = line.split(':', 1)
+        if name == 'category':
+            values = value.split()
+            #self.prefix = values[0]
+
+    get_function_re = re.compile(r'^(Get|Is|Are)[A-Z]\w+')
+
+    def parse_prototype(self):
+        line = self.consume()
+        mo = self.prototype_re.match(line)
+        function_name, arg_names = mo.groups()
+        arg_names = [arg_name.strip() for arg_name in arg_names.split(',') if arg_name.strip()]
+        
+        extra = ''
+        if self.get_function_re.match(function_name):
+            extra += ', sideeffects=False'
+        function_name = self.prefix + function_name
+
+        ret_type = 'Void'
+        arg_types = {}
+        category = None
+        line = self.lookahead()
+        while line.startswith('\t'):
+            fields = line.split(None, 2)
+            if fields[0] == 'return':
+                ret_type = self.parse_type(fields[1])
+            elif fields[0] == 'param':
+                arg_name, arg_type = fields[1:3]
+                arg_types[fields[1]] = self.parse_arg(function_name, arg_name, arg_type)
+            elif fields[0] == 'category':
+                category = fields[1]
+            else:
+                pass
+            self.consume()
+            line = self.lookahead()
+        self.consume()
+        args = [arg_types[arg_name] for arg_name in arg_names]
+
+        if category is not None:
+            if category == self.prefix:
+                category = self.prefix.upper()
+            else:
+                category = self.prefix.upper() + '_' + category
+            if category != self.category:
+                if self.category is not None:
+                    print
+                print '    # %s' % category
+                self.category = category
+
+        if self.prefix == 'wgl':
+            constructor = 'StdFunction'
+        else:
+            constructor = 'GlFunction'
+
+        print '    %s(%s, "%s", [%s]%s),' % (constructor, ret_type, function_name, ', '.join(args), extra)
+
+    array_re = re.compile(r'^array\s+\[(.*)\]$')
+
+    string_typemap = {
+        'GLchar': 'GLstring',
+        'GLcharARB': 'GLstringARB',
+    }
+
+    def parse_arg(self, function_name, arg_name, arg_type):
+        orig_type, inout, kind = arg_type.split(' ', 2)
+
+        base_type = self.parse_type(orig_type)
+
+        if kind == 'value':
+            arg_type = base_type
+        elif kind == 'reference':
+            if inout == 'in':
+                base_type = 'Const(%s)' % base_type
+            arg_type = 'Pointer(%s)' % base_type
+        elif kind.startswith("array"):
+            if inout == 'in':
+                base_type = 'Const(%s)' % base_type
+
+            arg_type = 'OpaquePointer(%s)' % base_type
+
+            if base_type in ('Void', 'void', 'GLvoid'):
+                constructor = 'Blob'
+            else:
+                constructor = 'Array'
+
+            mo = self.array_re.match(kind)
+            if mo:
+                length = mo.group(1).strip()
+                if length == '':
+                    try:
+                        arg_type = self.string_typemap[base_type]
+                    except KeyError:
+                        pass
+                elif length == '1':
+                    arg_type = 'Pointer(%s)' % base_type
+                elif length.find("COMPSIZE") == -1:
+                    arg_type = '%s(%s, "%s")' % (constructor, base_type, length)
+                else:
+                    length = length.replace("COMPSIZE", "__%s_size" % function_name)
+                    length = length.replace("/", ", ")
+                    arg_type = 'Opaque%s(%s, "%s")' % (constructor, base_type, length)
+        else:
+            assert False
+        
+        arg = '(%s, "%s")' % (arg_type, arg_name)
+        if inout == 'out':
+            arg = 'Out' + arg
+        return arg
+
+    semantic_typemap = {
+        'String': 'CString',
+        'Texture': 'GLtexture',
+    }
+
+    post_typemap = {
+        'void': 'Void',
+        'int': 'Int',
+        'float': 'Float',
+    }
+
+    def parse_type(self, type):
+        try:
+            return self.semantic_typemap[type]
+        except KeyError:
+            pass
+        type = self.typemap.get(type, type)
+        type = self.post_typemap.get(type, type)
+        return type
+
+    def match_comment(self):
+        line = self.lookahead()
+        return line.startswith('#')
+
+
+def main():
+    prefix = sys.argv[1]
+
+    parser = TypemapParser(open(sys.argv[2], 'rt'))
+    typemap = parser.parse()
+
+    for arg in sys.argv[3:]:
+        parser = SpecParser(open(arg, 'rt'), prefix=prefix, typemap=typemap)
+        parser.parse()
+    
+
+if __name__ == '__main__':
+    main()
diff --git a/specs/scripts/gltxt.py b/specs/scripts/gltxt.py
new file mode 100755 (executable)
index 0000000..c6be7c1
--- /dev/null
@@ -0,0 +1,169 @@
+#!/usr/bin/env python
+##########################################################################
+#
+# Copyright 2010 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+import sys
+import re
+import optparse
+
+
+def stderr(x):
+    sys.stderr.write(str(x) + '\n')
+
+
+class Parser:
+
+    def __init__(self, stream):
+        pass
+
+
+class LineParser:
+    """Base class for parsers that read line-based formats."""
+
+    def __init__(self, stream):
+        self._stream = stream
+        self._line = None
+        self._eof = False
+        # read lookahead
+        self.readline()
+    
+    def parse(self):
+        raise NotImplementedError
+
+    def readline(self):
+        line = self._stream.readline()
+        if not line:
+            self._line = ''
+            self._eof = True
+        self._line = line.rstrip('\r\n')
+
+    def lookahead(self):
+        assert self._line is not None
+        return self._line
+
+    def consume(self):
+        assert self._line is not None
+        line = self._line
+        self.readline()
+        return line
+
+    def eof(self):
+        assert self._line is not None
+        return self._eof
+    
+    def skip_whitespace(self):
+        while not self.eof() and self.match_whitespace() or self.match_comment():
+            self.consume()
+
+    def match_whitespace(self):
+        line = self.lookahead()
+        return not line.strip()
+
+    def match_comment(self):
+        return False
+
+
+class TxtParser(LineParser):
+
+    property_re = re.compile(r'^\w+:')
+    prototype_re = re.compile(r'^(\w+)\((.*)\)$')
+
+    def __init__(self, stream, prefix=''):
+        LineParser.__init__(self, stream)
+        self.prefix = prefix
+
+    def parse(self):
+        line = self.consume()
+        while not line.startswith("New Procedures and Functions"):
+            line = self.consume()
+        self.parse_procs()
+
+    def parse_procs(self):
+        lines = []
+        while True:
+            line = self.consume()
+            if not line.strip():
+                continue
+            if not line.startswith(' '):
+                break
+            lines.append(line.strip())
+            if line.endswith(';'):
+                self.parse_proc(' '.join(lines))
+                lines = []
+
+    token_re = re.compile(r'(\w+|\s+|.)')
+    get_function_re = re.compile(r'^Get[A-Z]\w+')
+
+    def parse_proc(self, prototype):
+        #print prototype
+        tokens = self.token_re.split(prototype)
+        self.tokens = [token for token in tokens if token.strip()]
+        #print self.tokens
+
+        ret = self.parse_type()
+
+        name = self.tokens.pop(0)
+        extra = ''
+        if self.get_function_re.match(name):
+            extra += ', sideeffects=False'
+        name = self.prefix + name
+
+        assert self.tokens.pop(0) == '('
+        args = []
+        while self.tokens[0] != ')':
+            arg = self.parse_arg()
+            args.append(arg)
+            if self.tokens[0] == ',':
+                self.tokens.pop(0)
+        print '    GlFunction(%s, "%s", [%s]%s),' % (ret, name, ', '.join(args), extra)
+
+    def parse_arg(self):
+        type = self.parse_type()
+        name = self.tokens.pop(0)
+        return '(%s, "%s")' % (type, name)
+
+    def parse_type(self):
+        token = self.tokens.pop(0)
+        if token == 'const':
+            return 'Const(%s)' % self.parse_type()
+        if token == 'void':
+            type = 'Void'
+        else:
+            type = 'GL' + token
+        while self.tokens[0] == '*':
+            type = 'OpaquePointer(%s)' % type
+            self.tokens.pop(0)
+        return type
+
+
+def main():
+    for arg in sys.argv[1:]:
+        parser = TxtParser(open(arg, 'rt'), prefix='gl')
+        parser.parse()
+    
+
+if __name__ == '__main__':
+    main()
diff --git a/specs/scripts/reference-opengl-arb.sh b/specs/scripts/reference-opengl-arb.sh
new file mode 100755 (executable)
index 0000000..670ba17
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+# Script to extract reference URLs for functions documented in OpenGL ARB specs
+
+extract_urls () {
+    for URL
+    do
+            lynx -dump "$URL" | sed -n -e '/^References$/,$s/^ *[0-9]\+\. \+//p' | sed -e 's/ /%20/g'
+    done
+}
+
+extract_functions () {
+    sed -n -e '/^New Procedures and Functions$/,/^\w/ s/.* \(\w\+\)(.*$/\1/p' "$@" \
+    | sed -e '/^[A-Z]/s/^/gl/'
+}
+
+extract_urls http://www.opengl.org/registry/ \
+| grep '^http://www\.opengl\.org/registry/specs/ARB/.*\.txt$' \
+| sort -u \
+| while read URL
+do
+    wget --quiet -O - $URL \
+    | extract_functions \
+    | while read FUNCTION
+    do
+        echo "$FUNCTION  $URL"
+    done
+done
+    
+                
+
diff --git a/specs/scripts/reference-opengl-man.sh b/specs/scripts/reference-opengl-man.sh
new file mode 100755 (executable)
index 0000000..20bdaa6
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Script to extract reference URLS for functions documented in OpenGL man pages
+
+wget -N -r -np http://www.opengl.org/sdk/docs/{man,man2,man3,man4}/
+
+find www.opengl.org -type f -name '*.xml' \
+| xargs grep -o '<b class="fsfunc">[^<]*</b>' \
+| sed -e 's/<[^>]*>//g' -e 's@^\(.*\):\(.*\)$@\2\thttp://\1@'
diff --git a/specs/scripts/sort.sh b/specs/scripts/sort.sh
new file mode 100755 (executable)
index 0000000..5cdc6a4
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+sed -e 's/\(^.*#\) \(0x\w\+\)$/\2 \1/' "$@" | sort | sed -e 's/\(0x\w\+\) \(.*#\)$/\2 \1/'
diff --git a/specs/scripts/wglenum.sh b/specs/scripts/wglenum.sh
new file mode 100755 (executable)
index 0000000..97f969d
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+sed -n -e 's/^\s\+\(WGL_\S\+\)\s*=\s*\(0x2\w\w\w\)\s*$/\2 \1/p' "$@" \
+| sort -u \
+| sed -e 's/\(\S\+\)\s\+\(\S\+\)/    "\2",\t\t# \1/'
diff --git a/specs/stdapi.py b/specs/stdapi.py
new file mode 100644 (file)
index 0000000..d6973c1
--- /dev/null
@@ -0,0 +1,587 @@
+##########################################################################
+#
+# Copyright 2008-2010 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""C basic types"""
+
+
+import debug
+
+
+class Type:
+
+    __all = {}
+    __seq = 0
+
+    def __init__(self, expr, id = ''):
+        self.expr = expr
+        
+        for char in id:
+            assert char.isalnum() or char in '_ '
+
+        id = id.replace(' ', '_')
+        
+        if id in Type.__all:
+            Type.__seq += 1
+            id += str(Type.__seq)
+        
+        assert id not in Type.__all
+        Type.__all[id] = self
+
+        self.id = id
+
+    def __str__(self):
+        return self.expr
+
+    def visit(self, visitor, *args, **kwargs):
+        raise NotImplementedError
+
+
+
+class _Void(Type):
+
+    def __init__(self):
+        Type.__init__(self, "void")
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_void(self, *args, **kwargs)
+
+Void = _Void()
+
+
+class Literal(Type):
+
+    def __init__(self, expr, format, base=10):
+        Type.__init__(self, expr)
+        self.format = format
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_literal(self, *args, **kwargs)
+
+
+class Const(Type):
+
+    def __init__(self, type):
+        # While "const foo" and "foo const" are synonymous, "const foo *" and
+        # "foo * const" are not quite the same, and some compilers do enforce
+        # strict const correctness.
+        if isinstance(type, String) or type is WString:
+            # For strings we never intend to say a const pointer to chars, but
+            # rather a point to const chars.
+            expr = "const " + type.expr
+        elif type.expr.startswith("const ") or '*' in type.expr:
+            expr = type.expr + " const"
+        else:
+            # The most legible
+            expr = "const " + type.expr
+
+        Type.__init__(self, expr, 'C' + type.id)
+
+        self.type = type
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_const(self, *args, **kwargs)
+
+
+class Pointer(Type):
+
+    def __init__(self, type):
+        Type.__init__(self, type.expr + " *", 'P' + type.id)
+        self.type = type
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_pointer(self, *args, **kwargs)
+
+
+class Handle(Type):
+
+    def __init__(self, name, type, range=None, key=None):
+        Type.__init__(self, type.expr, 'P' + type.id)
+        self.name = name
+        self.type = type
+        self.range = range
+        self.key = key
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_handle(self, *args, **kwargs)
+
+
+def ConstPointer(type):
+    return Pointer(Const(type))
+
+
+class Enum(Type):
+
+    def __init__(self, name, values):
+        Type.__init__(self, name)
+        self.values = list(values)
+    
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_enum(self, *args, **kwargs)
+
+
+def FakeEnum(type, values):
+    return Enum(type.expr, values)
+
+
+class Bitmask(Type):
+
+    def __init__(self, type, values):
+        Type.__init__(self, type.expr)
+        self.type = type
+        self.values = values
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_bitmask(self, *args, **kwargs)
+
+Flags = Bitmask
+
+
+class Array(Type):
+
+    def __init__(self, type, length):
+        Type.__init__(self, type.expr + " *")
+        self.type = type
+        self.length = length
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_array(self, *args, **kwargs)
+
+
+class Blob(Type):
+
+    def __init__(self, type, size):
+        Type.__init__(self, type.expr + ' *')
+        self.type = type
+        self.size = size
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_blob(self, *args, **kwargs)
+
+
+class Struct(Type):
+
+    def __init__(self, name, members):
+        Type.__init__(self, name)
+        self.name = name
+        self.members = members
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_struct(self, *args, **kwargs)
+
+
+class Alias(Type):
+
+    def __init__(self, expr, type):
+        Type.__init__(self, expr)
+        self.type = type
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_alias(self, *args, **kwargs)
+
+
+def Out(type, name):
+    arg = Arg(type, name, output=True)
+    return arg
+
+
+class Arg:
+
+    def __init__(self, type, name, output=False):
+        self.type = type
+        self.name = name
+        self.output = output
+        self.index = None
+
+    def __str__(self):
+        return '%s %s' % (self.type, self.name)
+
+
+class Function:
+
+    __id = 0
+
+    def __init__(self, type, name, args, call = '', fail = None, sideeffects=True):
+        self.id = Function.__id
+        Function.__id += 1
+
+        self.type = type
+        self.name = name
+
+        self.args = []
+        index = 0
+        for arg in args:
+            if not isinstance(arg, Arg):
+                if isinstance(arg, tuple):
+                    arg_type, arg_name = arg
+                else:
+                    arg_type = arg
+                    arg_name = "arg%u" % index
+                arg = Arg(arg_type, arg_name)
+            arg.index = index
+            index += 1
+            self.args.append(arg)
+
+        self.call = call
+        self.fail = fail
+        self.sideeffects = sideeffects
+
+    def prototype(self, name=None):
+        if name is not None:
+            name = name.strip()
+        else:
+            name = self.name
+        s = name
+        if self.call:
+            s = self.call + ' ' + s
+        if name.startswith('*'):
+            s = '(' + s + ')'
+        s = self.type.expr + ' ' + s
+        s += "("
+        if self.args:
+            s += ", ".join(["%s %s" % (arg.type, arg.name) for arg in self.args])
+        else:
+            s += "void"
+        s += ")"
+        return s
+
+
+def StdFunction(*args, **kwargs):
+    kwargs.setdefault('call', '__stdcall')
+    return Function(*args, **kwargs)
+
+
+def FunctionPointer(type, name, args, **kwargs):
+    # XXX: We should probably treat function pointers (callbacks or not) in a generic fashion
+    return Opaque(name)
+
+
+class Interface(Type):
+
+    def __init__(self, name, base=None):
+        Type.__init__(self, name)
+        self.name = name
+        self.base = base
+        self.methods = []
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_interface(self, *args, **kwargs)
+
+    def itermethods(self):
+        if self.base is not None:
+            for method in self.base.itermethods():
+                yield method
+        for method in self.methods:
+            yield method
+        raise StopIteration
+
+
+class Method(Function):
+
+    def __init__(self, type, name, args):
+        Function.__init__(self, type, name, args, call = '__stdcall')
+        for index in range(len(self.args)):
+            self.args[index].index = index + 1
+
+
+def WrapPointer(type):
+    return Pointer(type)
+
+
+class String(Type):
+
+    def __init__(self, expr = "char *", length = None):
+        Type.__init__(self, expr)
+        self.length = length
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_string(self, *args, **kwargs)
+
+# C string (i.e., zero terminated)
+CString = String()
+
+
+class Opaque(Type):
+    '''Opaque pointer.'''
+
+    def __init__(self, expr):
+        Type.__init__(self, expr)
+
+    def visit(self, visitor, *args, **kwargs):
+        return visitor.visit_opaque(self, *args, **kwargs)
+
+
+def OpaquePointer(type, *args):
+    return Opaque(type.expr + ' *')
+
+def OpaqueArray(type, size):
+    return Opaque(type.expr + ' *')
+
+def OpaqueBlob(type, size):
+    return Opaque(type.expr + ' *')
+
+
+class Visitor:
+
+    def visit(self, type, *args, **kwargs):
+        return type.visit(self, *args, **kwargs)
+
+    def visit_void(self, void, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_literal(self, literal, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_string(self, string, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_const(self, const, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_struct(self, struct, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_array(self, array, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_blob(self, blob, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_enum(self, enum, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_bitmask(self, bitmask, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_pointer(self, pointer, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_handle(self, handle, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_alias(self, alias, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_opaque(self, opaque, *args, **kwargs):
+        raise NotImplementedError
+
+    def visit_interface(self, interface, *args, **kwargs):
+        raise NotImplementedError
+
+
+class OnceVisitor(Visitor):
+
+    def __init__(self):
+        self.__visited = set()
+
+    def visit(self, type, *args, **kwargs):
+        if type not in self.__visited:
+            self.__visited.add(type)
+            return type.visit(self, *args, **kwargs)
+        return None
+
+
+class Rebuilder(Visitor):
+
+    def visit_void(self, void):
+        return void
+
+    def visit_literal(self, literal):
+        return literal
+
+    def visit_string(self, string):
+        return string
+
+    def visit_const(self, const):
+        return Const(const.type)
+
+    def visit_struct(self, struct):
+        members = [(self.visit(type), name) for type, name in struct.members]
+        return Struct(struct.name, members)
+
+    def visit_array(self, array):
+        type = self.visit(array.type)
+        return Array(type, array.length)
+
+    def visit_blob(self, blob):
+        type = self.visit(blob.type)
+        return Blob(type, blob.size)
+
+    def visit_enum(self, enum):
+        return enum
+
+    def visit_bitmask(self, bitmask):
+        type = self.visit(bitmask.type)
+        return Bitmask(type, bitmask.values)
+
+    def visit_pointer(self, pointer):
+        type = self.visit(pointer.type)
+        return Pointer(type)
+
+    def visit_handle(self, handle):
+        type = self.visit(handle.type)
+        return Handle(handle.name, type, range=handle.range, key=handle.key)
+
+    def visit_alias(self, alias):
+        type = self.visit(alias.type)
+        return Alias(alias.expr, type)
+
+    def visit_opaque(self, opaque):
+        return opaque
+
+
+class Collector(Visitor):
+    '''Collect.'''
+
+    def __init__(self):
+        self.__visited = set()
+        self.types = []
+
+    def visit(self, type):
+        if type in self.__visited:
+            return
+        self.__visited.add(type)
+        Visitor.visit(self, type)
+        self.types.append(type)
+
+    def visit_void(self, literal):
+        pass
+
+    def visit_literal(self, literal):
+        pass
+
+    def visit_string(self, string):
+        pass
+
+    def visit_const(self, const):
+        self.visit(const.type)
+
+    def visit_struct(self, struct):
+        for type, name in struct.members:
+            self.visit(type)
+
+    def visit_array(self, array):
+        self.visit(array.type)
+
+    def visit_blob(self, array):
+        pass
+
+    def visit_enum(self, enum):
+        pass
+
+    def visit_bitmask(self, bitmask):
+        self.visit(bitmask.type)
+
+    def visit_pointer(self, pointer):
+        self.visit(pointer.type)
+
+    def visit_handle(self, handle):
+        self.visit(handle.type)
+
+    def visit_alias(self, alias):
+        self.visit(alias.type)
+
+    def visit_opaque(self, opaque):
+        pass
+
+    def visit_interface(self, interface):
+        if interface.base is not None:
+            self.visit(interface.base)
+        for method in interface.itermethods():
+            for arg in method.args:
+                self.visit(arg.type)
+            self.visit(method.type)
+
+
+class API:
+
+    def __init__(self, name = None):
+        self.name = name
+        self.headers = []
+        self.functions = []
+        self.interfaces = []
+
+    def all_types(self):
+        collector = Collector()
+        for function in self.functions:
+            for arg in function.args:
+                collector.visit(arg.type)
+            collector.visit(function.type)
+        for interface in self.interfaces:
+            collector.visit(interface)
+            for method in interface.itermethods():
+                for arg in method.args:
+                    collector.visit(arg.type)
+                collector.visit(method.type)
+        return collector.types
+
+    def add_function(self, function):
+        self.functions.append(function)
+
+    def add_functions(self, functions):
+        for function in functions:
+            self.add_function(function)
+
+    def add_interface(self, interface):
+        self.interfaces.append(interface)
+
+    def add_interfaces(self, interfaces):
+        self.interfaces.extend(interfaces)
+
+    def add_api(self, api):
+        self.headers.extend(api.headers)
+        self.add_functions(api.functions)
+        self.add_interfaces(api.interfaces)
+
+    def get_function_by_name(self, name):
+        for function in self.functions:
+            if function.name == name:
+                return function
+        return None
+
+
+Bool = Literal("bool", "Bool")
+SChar = Literal("signed char", "SInt")
+UChar = Literal("unsigned char", "UInt")
+Short = Literal("short", "SInt")
+Int = Literal("int", "SInt")
+Long = Literal("long", "SInt")
+LongLong = Literal("long long", "SInt")
+UShort = Literal("unsigned short", "UInt")
+UInt = Literal("unsigned int", "UInt")
+ULong = Literal("unsigned long", "UInt")
+ULongLong = Literal("unsigned long long", "UInt")
+Float = Literal("float", "Float")
+Double = Literal("double", "Double")
+SizeT = Literal("size_t", "UInt")
+WString = Literal("wchar_t *", "WString")
+
+Int8 = Literal("int8_t", "SInt")
+UInt8 = Literal("uint8_t", "UInt")
+Int16 = Literal("int16_t", "SInt")
+UInt16 = Literal("uint16_t", "UInt")
+Int32 = Literal("int32_t", "SInt")
+UInt32 = Literal("uint32_t", "UInt")
+Int64 = Literal("int64_t", "SInt")
+UInt64 = Literal("uint64_t", "UInt")
diff --git a/specs/wglapi.py b/specs/wglapi.py
new file mode 100644 (file)
index 0000000..7296aeb
--- /dev/null
@@ -0,0 +1,226 @@
+##########################################################################
+#
+# Copyright 2008-2010 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+"""WGL API description"""
+
+
+from glapi import *
+from winapi import *
+from wglenum import *
+
+
+wglapi = API("WGL")
+
+
+HGLRC = Alias("HGLRC", HANDLE)
+PROC = Opaque("PROC")
+
+PFD = Flags(DWORD, [
+    "PFD_DOUBLEBUFFER",
+    "PFD_STEREO",
+    "PFD_DRAW_TO_WINDOW",
+    "PFD_DRAW_TO_BITMAP",
+    "PFD_SUPPORT_GDI",
+    "PFD_SUPPORT_OPENGL",
+    "PFD_GENERIC_FORMAT",
+    "PFD_NEED_PALETTE",
+    "PFD_NEED_SYSTEM_PALETTE",
+    "PFD_SWAP_EXCHANGE",
+    "PFD_SWAP_COPY",
+    "PFD_SWAP_LAYER_BUFFERS",
+    "PFD_GENERIC_ACCELERATED",
+    "PFD_SUPPORT_DIRECTDRAW",
+    "PFD_SUPPORT_COMPOSITION",
+    "PFD_DEPTH_DONTCARE",
+    "PFD_DOUBLEBUFFER_DONTCARE",
+    "PFD_STEREO_DONTCARE",
+])
+
+PIXELFORMATDESCRIPTOR = Struct("PIXELFORMATDESCRIPTOR", [
+    (WORD, "nSize"),
+    (WORD, "nVersion"),
+    (PFD, "dwFlags"),
+    (BYTE, "iPixelType"),
+    (BYTE, "cColorBits"),
+    (BYTE, "cRedBits"),
+    (BYTE, "cRedShift"),
+    (BYTE, "cGreenBits"),
+    (BYTE, "cGreenShift"),
+    (BYTE, "cBlueBits"),
+    (BYTE, "cBlueShift"),
+    (BYTE, "cAlphaBits"),
+    (BYTE, "cAlphaShift"),
+    (BYTE, "cAccumBits"),
+    (BYTE, "cAccumRedBits"),
+    (BYTE, "cAccumGreenBits"),
+    (BYTE, "cAccumBlueBits"),
+    (BYTE, "cAccumAlphaBits"),
+    (BYTE, "cDepthBits"),
+    (BYTE, "cStencilBits"),
+    (BYTE, "cAuxBuffers"),
+    (BYTE, "iLayerType"),
+    (BYTE, "bReserved"),
+    (DWORD, "dwLayerMask"),
+    (DWORD, "dwVisibleMask"),
+    (DWORD, "dwDamageMask"),
+])
+
+POINTFLOAT = Struct("POINTFLOAT", [
+    (FLOAT, "x"),
+    (FLOAT, "y"),
+])
+
+GLYPHMETRICSFLOAT = Struct("GLYPHMETRICSFLOAT", [
+    (FLOAT, "gmfBlackBoxX"),
+    (FLOAT, "gmfBlackBoxY"),
+    (POINTFLOAT, "gmfptGlyphOrigin"),
+    (FLOAT, "gmfCellIncX"),
+    (FLOAT, "gmfCellIncY"),
+])
+LPGLYPHMETRICSFLOAT = Pointer(GLYPHMETRICSFLOAT)
+
+COLORREF = Alias("COLORREF", DWORD)
+
+
+LAYERPLANEDESCRIPTOR = Struct("LAYERPLANEDESCRIPTOR", [
+    (WORD, "nSize"),
+    (WORD, "nVersion"),
+    (DWORD, "dwFlags"),
+    (BYTE, "iPixelType"),
+    (BYTE, "cColorBits"),
+    (BYTE, "cRedBits"),
+    (BYTE, "cRedShift"),
+    (BYTE, "cGreenBits"),
+    (BYTE, "cGreenShift"),
+    (BYTE, "cBlueBits"),
+    (BYTE, "cBlueShift"),
+    (BYTE, "cAlphaBits"),
+    (BYTE, "cAlphaShift"),
+    (BYTE, "cAccumBits"),
+    (BYTE, "cAccumRedBits"),
+    (BYTE, "cAccumGreenBits"),
+    (BYTE, "cAccumBlueBits"),
+    (BYTE, "cAccumAlphaBits"),
+    (BYTE, "cDepthBits"),
+    (BYTE, "cStencilBits"),
+    (BYTE, "cAuxBuffers"),
+    (BYTE, "iLayerPlane"),
+    (BYTE, "bReserved"),
+    (COLORREF, "crTransparent"),
+])
+LPLAYERPLANEDESCRIPTOR = Pointer(LAYERPLANEDESCRIPTOR)
+
+WGLSWAP = Struct("WGLSWAP", [
+    (HDC, "hdc"),
+    (UINT, "uiFlags"),
+])
+
+HPBUFFERARB = Alias("HPBUFFERARB", HANDLE)
+
+
+wglapi.add_functions([
+    # WGL
+    StdFunction(HGLRC, "wglCreateContext", [(HDC, "hdc")]),
+    StdFunction(BOOL, "wglDeleteContext", [(HGLRC, "hglrc")]),
+    StdFunction(HGLRC, "wglGetCurrentContext", [], sideeffects=False),
+    StdFunction(BOOL, "wglMakeCurrent", [(HDC, "hdc"), (HGLRC, "hglrc")]),
+    StdFunction(BOOL, "wglCopyContext", [(HGLRC, "hglrcSrc"), (HGLRC, "hglrcDst"), (UINT, "mask")]),
+    StdFunction(Int, "wglChoosePixelFormat", [(HDC, "hdc"), (Pointer(Const(PIXELFORMATDESCRIPTOR)), "ppfd")]), 
+    StdFunction(Int, "wglDescribePixelFormat", [(HDC, "hdc"), (Int, "iPixelFormat"), (UINT, "nBytes"), Out(Pointer(PIXELFORMATDESCRIPTOR), "ppfd")]),
+    StdFunction(HDC, "wglGetCurrentDC", [], sideeffects=False),
+    StdFunction(PROC, "wglGetDefaultProcAddress", [(LPCSTR, "lpszProc")], sideeffects=False),
+    StdFunction(Int, "wglGetPixelFormat", [(HDC, "hdc")], sideeffects=False),
+    StdFunction(BOOL, "wglSetPixelFormat", [(HDC, "hdc"), (Int, "iPixelFormat"), (Pointer(Const(PIXELFORMATDESCRIPTOR)), "ppfd")]),
+    StdFunction(BOOL, "wglSwapBuffers", [(HDC, "hdc")]),
+    StdFunction(BOOL, "wglShareLists", [(HGLRC, "hglrc1"), (HGLRC, "hglrc2")]),
+    StdFunction(HGLRC, "wglCreateLayerContext", [(HDC, "hdc"), (Int, "iLayerPlane")]),
+    StdFunction(BOOL, "wglDescribeLayerPlane", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nBytes"), Out(Pointer(LAYERPLANEDESCRIPTOR), "plpd")]),
+    StdFunction(Int, "wglSetLayerPaletteEntries", [(HDC, "hdc"), (Int, "iLayerPlane"), (Int, "iStart"), (Int, "cEntries"), (Array(Const(COLORREF), "cEntries"), "pcr")]),
+    StdFunction(Int, "wglGetLayerPaletteEntries", [(HDC, "hdc"), (Int, "iLayerPlane"), (Int, "iStart"), (Int, "cEntries"), Out(Array(COLORREF, "cEntries"), "pcr")], sideeffects=False),
+    StdFunction(BOOL, "wglRealizeLayerPalette", [(HDC, "hdc"), (Int, "iLayerPlane"), (BOOL, "bRealize")]),
+    StdFunction(BOOL, "wglSwapLayerBuffers", [(HDC, "hdc"), (UINT, "fuPlanes")]),
+    StdFunction(BOOL, "wglUseFontBitmapsA", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase")]),
+    StdFunction(BOOL, "wglUseFontBitmapsW", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase")]),
+    StdFunction(DWORD, "wglSwapMultipleBuffers", [(UINT, "n"), (Array(Const(WGLSWAP), "n"), "ps")]),
+    StdFunction(BOOL, "wglUseFontOutlinesA", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase"), (FLOAT, "deviation"), (FLOAT, "extrusion"), (Int, "format"), (LPGLYPHMETRICSFLOAT, "lpgmf")]),
+    StdFunction(BOOL, "wglUseFontOutlinesW", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase"), (FLOAT, "deviation"), (FLOAT, "extrusion"), (Int, "format"), (LPGLYPHMETRICSFLOAT, "lpgmf")]),
+
+    # WGL_ARB_buffer_region
+    StdFunction(HANDLE, "wglCreateBufferRegionARB", [(HDC, "hDC"), (Int, "iLayerPlane"), (UINT, "uType")]),
+    StdFunction(VOID, "wglDeleteBufferRegionARB", [(HANDLE, "hRegion")]),
+    StdFunction(BOOL, "wglSaveBufferRegionARB", [(HANDLE, "hRegion"), (Int, "x"), (Int, "y"), (Int, "width"), (Int, "height")]),
+    StdFunction(BOOL, "wglRestoreBufferRegionARB", [(HANDLE, "hRegion"), (Int, "x"), (Int, "y"), (Int, "width"), (Int, "height"), (Int, "xSrc"), (Int, "ySrc")]),
+
+    # WGL_ARB_extensions_string
+    StdFunction(Const(CString), "wglGetExtensionsStringARB", [(HDC, "hdc")], sideeffects=False),
+
+    # WGL_ARB_pixel_format
+    StdFunction(BOOL, "wglGetPixelFormatAttribivARB", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(Int, "nAttributes"), "piValues")], sideeffects=False),
+    StdFunction(BOOL, "wglGetPixelFormatAttribfvARB", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(FLOAT, "nAttributes"), "pfValues")], sideeffects=False),
+    StdFunction(BOOL, "wglChoosePixelFormatARB", [(HDC, "hdc"), (Array(Const(WGLenum), "__AttribList_size(piAttribIList)"), "piAttribIList"), (Array(Const(FLOAT), "__AttribList_size(pfAttribFList)"), "pfAttribFList"), (UINT, "nMaxFormats"), Out(Array(Int, "(*nNumFormats)"), "piFormats"), Out(Pointer(UINT), "nNumFormats")]),
+
+    # WGL_ARB_make_current_read
+    StdFunction(BOOL, "wglMakeContextCurrentARB", [(HDC, "hDrawDC"), (HDC, "hReadDC"), (HGLRC, "hglrc")]),
+    StdFunction(HDC, "wglGetCurrentReadDCARB", [], sideeffects=False),
+
+    # WGL_ARB_pbuffer
+    StdFunction(HPBUFFERARB, "wglCreatePbufferARB", [(HDC, "hDC"), (Int, "iPixelFormat"), (Int, "iWidth"), (Int, "iHeight"), (Array(Const(WGLenum), "__AttribList_size(piAttribList)"), "piAttribList")]),
+    StdFunction(HDC, "wglGetPbufferDCARB", [(HPBUFFERARB, "hPbuffer")]),
+    StdFunction(Int, "wglReleasePbufferDCARB", [(HPBUFFERARB, "hPbuffer"), (HDC, "hDC")]),
+    StdFunction(BOOL, "wglDestroyPbufferARB", [(HPBUFFERARB, "hPbuffer")]),
+    StdFunction(BOOL, "wglQueryPbufferARB", [(HPBUFFERARB, "hPbuffer"), (WGLenum, "iAttribute"), Out(Pointer(Int), "piValue")], sideeffects=False),
+
+    # WGL_ARB_render_texture
+    StdFunction(BOOL, "wglBindTexImageARB", [(HPBUFFERARB, "hPbuffer"), (Int, "iBuffer")]),
+    StdFunction(BOOL, "wglReleaseTexImageARB", [(HPBUFFERARB, "hPbuffer"), (Int, "iBuffer")]),
+    StdFunction(BOOL, "wglSetPbufferAttribARB", [(HPBUFFERARB, "hPbuffer"), (Array(Const(WGLenum), "__AttribList_size(piAttribList)"), "piAttribList")]),
+
+    # WGL_ARB_create_context
+    StdFunction(HGLRC, "wglCreateContextAttribsARB", [(HDC, "hDC"), (HGLRC, "hShareContext"), (Array(Const(WGLenum), "__AttribList_size(attribList)"), "attribList")]),
+
+    # WGL_EXT_extensions_string
+    StdFunction(Const(CString), "wglGetExtensionsStringEXT", [], sideeffects=False),
+
+    # WGL_EXT_make_current_read
+    StdFunction(BOOL, "wglMakeContextCurrentEXT", [(HDC, "hDrawDC"), (HDC, "hReadDC"), (HGLRC, "hglrc")]),
+    StdFunction(HDC, "wglGetCurrentReadDCEXT", [], sideeffects=False),
+
+    # WGL_EXT_pixel_format
+    StdFunction(BOOL, "wglGetPixelFormatAttribivEXT", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(Int, "nAttributes"), "piValues")], sideeffects=False),
+    StdFunction(BOOL, "wglGetPixelFormatAttribfvEXT", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(FLOAT, "nAttributes"), "pfValues")], sideeffects=False),
+    StdFunction(BOOL, "wglChoosePixelFormatEXT", [(HDC, "hdc"), (Pointer(Const(WGLenum)), "piAttribIList"), (Pointer(Const(FLOAT)), "pfAttribFList"), (UINT, "nMaxFormats"), Out(Array(Int, "nMaxFormats"), "piFormats"), Out(Pointer(UINT), "nNumFormats")]),
+
+    # WGL_EXT_swap_control
+    StdFunction(BOOL, "wglSwapIntervalEXT", [(Int, "interval")]),
+    StdFunction(Int, "wglGetSwapIntervalEXT", [], sideeffects=False),
+
+    # WGL_NV_vertex_array_range
+    StdFunction(OpaquePointer(Void), "wglAllocateMemoryNV", [(GLsizei, "size"), (GLfloat, "readfreq"), (GLfloat, "writefreq"), (GLfloat, "priority")]),
+    StdFunction(Void, "wglFreeMemoryNV", [(OpaquePointer(Void), "pointer")]),
+
+    # must be last
+    StdFunction(PROC, "wglGetProcAddress", [(LPCSTR, "lpszProc")]),
+])
diff --git a/specs/wglenum.py b/specs/wglenum.py
new file mode 100644 (file)
index 0000000..1056092
--- /dev/null
@@ -0,0 +1,200 @@
+##########################################################################
+#
+# Copyright 2008-2011 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+
+"""WGL enum description"""
+
+
+from stdapi import *
+
+WGLenum = FakeEnum(Int, [
+    "WGL_NUMBER_PIXEL_FORMATS_ARB",            # 0x2000
+    "WGL_DRAW_TO_WINDOW_ARB",          # 0x2001
+    "WGL_DRAW_TO_BITMAP_ARB",          # 0x2002
+    "WGL_ACCELERATION_ARB",            # 0x2003
+    "WGL_NEED_PALETTE_ARB",            # 0x2004
+    "WGL_NEED_SYSTEM_PALETTE_ARB",             # 0x2005
+    "WGL_SWAP_LAYER_BUFFERS_ARB",              # 0x2006
+    "WGL_SWAP_METHOD_ARB",             # 0x2007
+    "WGL_NUMBER_OVERLAYS_ARB",         # 0x2008
+    "WGL_NUMBER_UNDERLAYS_ARB",                # 0x2009
+    "WGL_TRANSPARENT_ARB",             # 0x200A
+    "WGL_TRANSPARENT_VALUE_EXT",               # 0x200B
+    "WGL_SHARE_DEPTH_ARB",             # 0x200C
+    "WGL_SHARE_STENCIL_ARB",           # 0x200D
+    "WGL_SHARE_ACCUM_ARB",             # 0x200E
+    "WGL_SUPPORT_GDI_ARB",             # 0x200F
+    "WGL_SUPPORT_OPENGL_ARB",          # 0x2010
+    "WGL_DOUBLE_BUFFER_ARB",           # 0x2011
+    "WGL_STEREO_ARB",          # 0x2012
+    "WGL_PIXEL_TYPE_ARB",              # 0x2013
+    "WGL_COLOR_BITS_ARB",              # 0x2014
+    "WGL_RED_BITS_ARB",                # 0x2015
+    "WGL_RED_SHIFT_ARB",               # 0x2016
+    "WGL_GREEN_BITS_ARB",              # 0x2017
+    "WGL_GREEN_SHIFT_ARB",             # 0x2018
+    "WGL_BLUE_BITS_ARB",               # 0x2019
+    "WGL_BLUE_SHIFT_ARB",              # 0x201A
+    "WGL_ALPHA_BITS_ARB",              # 0x201B
+    "WGL_ALPHA_SHIFT_ARB",             # 0x201C
+    "WGL_ACCUM_BITS_ARB",              # 0x201D
+    "WGL_ACCUM_RED_BITS_ARB",          # 0x201E
+    "WGL_ACCUM_GREEN_BITS_ARB",                # 0x201F
+    "WGL_ACCUM_BLUE_BITS_ARB",         # 0x2020
+    "WGL_ACCUM_ALPHA_BITS_ARB",                # 0x2021
+    "WGL_DEPTH_BITS_ARB",              # 0x2022
+    "WGL_STENCIL_BITS_ARB",            # 0x2023
+    "WGL_AUX_BUFFERS_ARB",             # 0x2024
+    "WGL_NO_ACCELERATION_ARB",         # 0x2025
+    "WGL_GENERIC_ACCELERATION_ARB",            # 0x2026
+    "WGL_FULL_ACCELERATION_ARB",               # 0x2027
+    "WGL_SWAP_EXCHANGE_ARB",           # 0x2028
+    "WGL_SWAP_COPY_ARB",               # 0x2029
+    "WGL_SWAP_UNDEFINED_ARB",          # 0x202A
+    "WGL_TYPE_RGBA_ARB",               # 0x202B
+    "WGL_TYPE_COLORINDEX_ARB",         # 0x202C
+    "WGL_DRAW_TO_PBUFFER_ARB",         # 0x202D
+    "WGL_MAX_PBUFFER_PIXELS_ARB",              # 0x202E
+    "WGL_MAX_PBUFFER_WIDTH_ARB",               # 0x202F
+    "WGL_MAX_PBUFFER_HEIGHT_ARB",              # 0x2030
+    "WGL_OPTIMAL_PBUFFER_WIDTH_EXT",           # 0x2031
+    "WGL_OPTIMAL_PBUFFER_HEIGHT_EXT",          # 0x2032
+    "WGL_PBUFFER_LARGEST_ARB",         # 0x2033
+    "WGL_PBUFFER_WIDTH_ARB",           # 0x2034
+    "WGL_PBUFFER_HEIGHT_ARB",          # 0x2035
+    "WGL_PBUFFER_LOST_ARB",            # 0x2036
+    "WGL_TRANSPARENT_RED_VALUE_ARB",           # 0x2037
+    "WGL_TRANSPARENT_GREEN_VALUE_ARB",         # 0x2038
+    "WGL_TRANSPARENT_BLUE_VALUE_ARB",          # 0x2039
+    "WGL_TRANSPARENT_ALPHA_VALUE_ARB",         # 0x203A
+    "WGL_TRANSPARENT_INDEX_VALUE_ARB",         # 0x203B
+    "WGL_DEPTH_FLOAT_EXT",             # 0x2040
+    "WGL_SAMPLE_BUFFERS_ARB",          # 0x2041
+    "WGL_SAMPLES_ARB",         # 0x2042
+    "WGL_GENLOCK_SOURCE_MULTIVIEW_I3D",                # 0x2044
+    "WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D",             # 0x2045
+    "WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D",            # 0x2046
+    "WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D",              # 0x2047
+    "WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D",             # 0x2048
+    "WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D",            # 0x2049
+    "WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D",             # 0x204A
+    "WGL_GENLOCK_SOURCE_EDGE_RISING_I3D",              # 0x204B
+    "WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D",                # 0x204C
+    "WGL_GAMMA_TABLE_SIZE_I3D",                # 0x204E
+    "WGL_GAMMA_EXCLUDE_DESKTOP_I3D",           # 0x204F
+    "WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D",          # 0x2050
+    "WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D",                # 0x2051
+    "WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D",           # 0x2052
+    "WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D",           # 0x2053
+    "WGL_STEREO_EMITTER_ENABLE_3DL",           # 0x2055
+    "WGL_STEREO_EMITTER_DISABLE_3DL",          # 0x2056
+    "WGL_STEREO_POLARITY_NORMAL_3DL",          # 0x2057
+    "WGL_STEREO_POLARITY_INVERT_3DL",          # 0x2058
+    "WGL_SAMPLE_BUFFERS_3DFX",         # 0x2060
+    "WGL_SAMPLES_3DFX",                # 0x2061
+    "WGL_BIND_TO_TEXTURE_RGB_ARB",             # 0x2070
+    "WGL_BIND_TO_TEXTURE_RGBA_ARB",            # 0x2071
+    "WGL_TEXTURE_FORMAT_ARB",          # 0x2072
+    "WGL_TEXTURE_TARGET_ARB",          # 0x2073
+    "WGL_MIPMAP_TEXTURE_ARB",          # 0x2074
+    "WGL_TEXTURE_RGB_ARB",             # 0x2075
+    "WGL_TEXTURE_RGBA_ARB",            # 0x2076
+    "WGL_NO_TEXTURE_ARB",              # 0x2077
+    "WGL_TEXTURE_CUBE_MAP_ARB",                # 0x2078
+    "WGL_TEXTURE_1D_ARB",              # 0x2079
+    "WGL_TEXTURE_2D_ARB",              # 0x207A
+    "WGL_MIPMAP_LEVEL_ARB",            # 0x207B
+    "WGL_CUBE_MAP_FACE_ARB",           # 0x207C
+    "WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB",             # 0x207D
+    "WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB",             # 0x207E
+    "WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB",             # 0x207F
+    "WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB",             # 0x2080
+    "WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB",             # 0x2081
+    "WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB",             # 0x2082
+    "WGL_FRONT_LEFT_ARB",              # 0x2083
+    "WGL_FRONT_RIGHT_ARB",             # 0x2084
+    "WGL_BACK_LEFT_ARB",               # 0x2085
+    "WGL_BACK_RIGHT_ARB",              # 0x2086
+    "WGL_AUX0_ARB",            # 0x2087
+    "WGL_AUX1_ARB",            # 0x2088
+    "WGL_AUX2_ARB",            # 0x2089
+    "WGL_AUX3_ARB",            # 0x208A
+    "WGL_AUX4_ARB",            # 0x208B
+    "WGL_AUX5_ARB",            # 0x208C
+    "WGL_AUX6_ARB",            # 0x208D
+    "WGL_AUX7_ARB",            # 0x208E
+    "WGL_AUX8_ARB",            # 0x208F
+    "WGL_AUX9_ARB",            # 0x2090
+    "WGL_CONTEXT_MAJOR_VERSION_ARB",           # 0x2091
+    "WGL_CONTEXT_MINOR_VERSION_ARB",           # 0x2092
+    "WGL_CONTEXT_LAYER_PLANE_ARB",             # 0x2093
+    "WGL_CONTEXT_FLAGS_ARB",           # 0x2094
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV",            # 0x20A0
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV",           # 0x20A1
+    "WGL_TEXTURE_RECTANGLE_NV",                # 0x20A2
+    "WGL_BIND_TO_TEXTURE_DEPTH_NV",            # 0x20A3
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV",          # 0x20A4
+    "WGL_DEPTH_TEXTURE_FORMAT_NV",             # 0x20A5
+    "WGL_TEXTURE_DEPTH_COMPONENT_NV",          # 0x20A6
+    "WGL_DEPTH_COMPONENT_NV",          # 0x20A7
+    "WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT",                # 0x20A8
+    "WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB",                # 0x20A9
+    "WGL_FLOAT_COMPONENTS_NV",         # 0x20B0
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV",                # 0x20B1
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV",               # 0x20B2
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV",              # 0x20B3
+    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV",             # 0x20B4
+    "WGL_TEXTURE_FLOAT_R_NV",          # 0x20B5
+    "WGL_TEXTURE_FLOAT_RG_NV",         # 0x20B6
+    "WGL_TEXTURE_FLOAT_RGB_NV",                # 0x20B7
+    "WGL_TEXTURE_FLOAT_RGBA_NV",               # 0x20B8
+    "WGL_COLOR_SAMPLES_NV",            # 0x20B9
+    "WGL_BIND_TO_VIDEO_RGB_NV",                # 0x20C0
+    "WGL_BIND_TO_VIDEO_RGBA_NV",               # 0x20C1
+    "WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV",              # 0x20C2
+    "WGL_VIDEO_OUT_COLOR_NV",          # 0x20C3
+    "WGL_VIDEO_OUT_ALPHA_NV",          # 0x20C4
+    "WGL_VIDEO_OUT_DEPTH_NV",          # 0x20C5
+    "WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV",                # 0x20C6
+    "WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV",                # 0x20C7
+    "WGL_VIDEO_OUT_FRAME",             # 0x20C8
+    "WGL_VIDEO_OUT_FIELD_1",           # 0x20C9
+    "WGL_VIDEO_OUT_FIELD_2",           # 0x20CA
+    "WGL_VIDEO_OUT_STACKED_FIELDS_1_2",                # 0x20CB
+    "WGL_VIDEO_OUT_STACKED_FIELDS_2_1",                # 0x20CC
+    "WGL_UNIQUE_ID_NV",                # 0x20CE
+    "WGL_NUM_VIDEO_CAPTURE_SLOTS_NV",          # 0x20CF
+    "WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV",                # 0x20D0
+    "WGL_ERROR_MISSING_AFFINITY_MASK_NV",              # 0x20D1
+    "WGL_NUM_VIDEO_SLOTS_NV",          # 0x20F0
+    "WGL_TYPE_RGBA_FLOAT_ARB",         # 0x21A0
+    "WGL_GPU_FASTEST_TARGET_GPUS_AMD",         # 0x21A2
+    "WGL_GPU_RAM_AMD",         # 0x21A3
+    "WGL_GPU_CLOCK_AMD",               # 0x21A4
+    "WGL_GPU_NUM_PIPES_AMD",           # 0x21A5
+    "WGL_GPU_NUM_SIMD_AMD",            # 0x21A6
+    "WGL_GPU_NUM_RB_AMD",              # 0x21A7
+    "WGL_GPU_NUM_SPI_AMD",             # 0x21A8
+])
diff --git a/specs/winapi.py b/specs/winapi.py
new file mode 100644 (file)
index 0000000..17256aa
--- /dev/null
@@ -0,0 +1,165 @@
+##########################################################################
+#
+# Copyright 2008-2009 VMware, Inc.
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+##########################################################################/
+
+"""Win32 API type description."""
+
+from stdapi import *
+
+SHORT = Alias("SHORT", Short)
+USHORT = Alias("USHORT", UShort)
+INT = Alias("INT", Int)
+UINT = Alias("UINT", UInt)
+LONG = Alias("LONG", Long)
+ULONG = Alias("ULONG", ULong)
+LONGLONG = Alias("LONGLONG", LongLong)
+FLOAT = Alias("FLOAT", Float)
+
+INT8 = Alias("INT8", Int8)
+UINT8 = Alias("UINT8", UInt8)
+INT16 = Alias("INT16", Int16)
+UINT16 = Alias("UINT16", UInt16)
+INT32 = Alias("INT32", Int32)
+UINT32 = Alias("UINT32", UInt32)
+INT64 = Alias("INT64", Int64)
+UINT64 = Alias("UINT64", UInt64)
+
+BYTE = Literal("BYTE", "UInt", base=16)
+WORD = Literal("WORD", "UInt", base=16)
+DWORD = Literal("DWORD", "UInt", base=16)
+
+WCHAR = Literal("WCHAR", "SInt")
+
+BOOL = Alias("BOOL", Bool)
+
+LPLONG = Pointer(LONG)
+LPWORD = Pointer(WORD)
+LPDWORD = Pointer(DWORD)
+LPBOOL = Pointer(BOOL)
+
+LPSTR = CString
+LPCSTR = Const(CString)
+LPWSTR = WString
+LPCWSTR = Const(WString)
+
+LARGE_INTEGER = Struct("LARGE_INTEGER", [
+    (LONGLONG, 'QuadPart'),
+])
+
+SIZE_T = Alias("SIZE_T", SizeT)
+
+HRESULT = Alias("HRESULT", Int)
+
+VOID = Void
+PVOID = Opaque("PVOID")
+LPVOID = PVOID
+HANDLE = Opaque("HANDLE")
+HWND = Opaque("HWND")
+HDC = Opaque("HDC")
+HMONITOR = Opaque("HMONITOR")
+
+GUID = Struct("GUID", [
+    (DWORD, "Data1"),
+    (WORD, "Data2"),
+    (WORD, "Data3"),
+    (Array(BYTE, "8"), "Data4"),
+])
+LPGUID = Pointer(GUID)
+
+#REFGUID = Alias("REFGUID", Pointer(GUID))
+REFGUID = Alias("REFGUID", GUID)
+
+IID = Alias("IID", GUID)
+#REFIID = Alias("REFIID", Pointer(IID))
+REFIID = Alias("REFIID", IID)
+
+CLSID = Alias("CLSID", GUID)
+#REFCLSID = Alias("REFCLSID", Pointer(CLSID))
+REFCLSID = Alias("REFCLSID", CLSID)
+
+LUID = Struct("LUID", [
+    (DWORD, "LowPart"),
+    (LONG, "HighPart"),
+])
+
+POINT = Struct("POINT", (
+  (LONG, "x"),
+  (LONG, "y"),
+)) 
+LPPOINT = Pointer(POINT)
+
+SIZE = Struct("SIZE", (
+  (LONG, "cx"),
+  (LONG, "cy"),
+)) 
+LPSIZE = Pointer(SIZE)
+
+RECT = Struct("RECT", (
+  (LONG, "left"),
+  (LONG, "top"),
+  (LONG, "right"), 
+  (LONG, "bottom"), 
+)) 
+LPRECT = Pointer(RECT)
+
+PALETTEENTRY = Struct("PALETTEENTRY", (
+  (BYTE, "peRed"),
+  (BYTE, "peGreen"),
+  (BYTE, "peBlue"), 
+  (BYTE, "peFlags"), 
+)) 
+LPPALETTEENTRY = Pointer(PALETTEENTRY)
+
+
+RGNDATAHEADER = Struct("RGNDATAHEADER", [
+    (DWORD, "dwSize"),
+    (DWORD, "iType"),
+    (DWORD, "nCount"),
+    (DWORD, "nRgnSize"),
+    (RECT, "rcBound"),
+])
+
+RGNDATA = Struct("RGNDATA", [
+    (RGNDATAHEADER, "rdh"),
+    #(Char, "Buffer[1]"),
+])
+LPRGNDATA = Pointer(RGNDATA)
+
+HMODULE = Opaque("HMODULE")
+
+IUnknown = Interface("IUnknown")
+
+HRESULT_com = FakeEnum(HRESULT, [
+    "S_OK",
+    "E_NOINTERFACE",
+    "E_POINTER",
+])
+
+IUnknown.methods = (
+       Method(HRESULT_com, "QueryInterface", ((REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppvObj"))),
+       Method(ULONG, "AddRef", ()),
+       Method(ULONG, "Release", ()),
+)
+
+
diff --git a/stdapi.py b/stdapi.py
deleted file mode 100644 (file)
index d6973c1..0000000
--- a/stdapi.py
+++ /dev/null
@@ -1,587 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2010 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""C basic types"""
-
-
-import debug
-
-
-class Type:
-
-    __all = {}
-    __seq = 0
-
-    def __init__(self, expr, id = ''):
-        self.expr = expr
-        
-        for char in id:
-            assert char.isalnum() or char in '_ '
-
-        id = id.replace(' ', '_')
-        
-        if id in Type.__all:
-            Type.__seq += 1
-            id += str(Type.__seq)
-        
-        assert id not in Type.__all
-        Type.__all[id] = self
-
-        self.id = id
-
-    def __str__(self):
-        return self.expr
-
-    def visit(self, visitor, *args, **kwargs):
-        raise NotImplementedError
-
-
-
-class _Void(Type):
-
-    def __init__(self):
-        Type.__init__(self, "void")
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_void(self, *args, **kwargs)
-
-Void = _Void()
-
-
-class Literal(Type):
-
-    def __init__(self, expr, format, base=10):
-        Type.__init__(self, expr)
-        self.format = format
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_literal(self, *args, **kwargs)
-
-
-class Const(Type):
-
-    def __init__(self, type):
-        # While "const foo" and "foo const" are synonymous, "const foo *" and
-        # "foo * const" are not quite the same, and some compilers do enforce
-        # strict const correctness.
-        if isinstance(type, String) or type is WString:
-            # For strings we never intend to say a const pointer to chars, but
-            # rather a point to const chars.
-            expr = "const " + type.expr
-        elif type.expr.startswith("const ") or '*' in type.expr:
-            expr = type.expr + " const"
-        else:
-            # The most legible
-            expr = "const " + type.expr
-
-        Type.__init__(self, expr, 'C' + type.id)
-
-        self.type = type
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_const(self, *args, **kwargs)
-
-
-class Pointer(Type):
-
-    def __init__(self, type):
-        Type.__init__(self, type.expr + " *", 'P' + type.id)
-        self.type = type
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_pointer(self, *args, **kwargs)
-
-
-class Handle(Type):
-
-    def __init__(self, name, type, range=None, key=None):
-        Type.__init__(self, type.expr, 'P' + type.id)
-        self.name = name
-        self.type = type
-        self.range = range
-        self.key = key
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_handle(self, *args, **kwargs)
-
-
-def ConstPointer(type):
-    return Pointer(Const(type))
-
-
-class Enum(Type):
-
-    def __init__(self, name, values):
-        Type.__init__(self, name)
-        self.values = list(values)
-    
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_enum(self, *args, **kwargs)
-
-
-def FakeEnum(type, values):
-    return Enum(type.expr, values)
-
-
-class Bitmask(Type):
-
-    def __init__(self, type, values):
-        Type.__init__(self, type.expr)
-        self.type = type
-        self.values = values
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_bitmask(self, *args, **kwargs)
-
-Flags = Bitmask
-
-
-class Array(Type):
-
-    def __init__(self, type, length):
-        Type.__init__(self, type.expr + " *")
-        self.type = type
-        self.length = length
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_array(self, *args, **kwargs)
-
-
-class Blob(Type):
-
-    def __init__(self, type, size):
-        Type.__init__(self, type.expr + ' *')
-        self.type = type
-        self.size = size
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_blob(self, *args, **kwargs)
-
-
-class Struct(Type):
-
-    def __init__(self, name, members):
-        Type.__init__(self, name)
-        self.name = name
-        self.members = members
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_struct(self, *args, **kwargs)
-
-
-class Alias(Type):
-
-    def __init__(self, expr, type):
-        Type.__init__(self, expr)
-        self.type = type
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_alias(self, *args, **kwargs)
-
-
-def Out(type, name):
-    arg = Arg(type, name, output=True)
-    return arg
-
-
-class Arg:
-
-    def __init__(self, type, name, output=False):
-        self.type = type
-        self.name = name
-        self.output = output
-        self.index = None
-
-    def __str__(self):
-        return '%s %s' % (self.type, self.name)
-
-
-class Function:
-
-    __id = 0
-
-    def __init__(self, type, name, args, call = '', fail = None, sideeffects=True):
-        self.id = Function.__id
-        Function.__id += 1
-
-        self.type = type
-        self.name = name
-
-        self.args = []
-        index = 0
-        for arg in args:
-            if not isinstance(arg, Arg):
-                if isinstance(arg, tuple):
-                    arg_type, arg_name = arg
-                else:
-                    arg_type = arg
-                    arg_name = "arg%u" % index
-                arg = Arg(arg_type, arg_name)
-            arg.index = index
-            index += 1
-            self.args.append(arg)
-
-        self.call = call
-        self.fail = fail
-        self.sideeffects = sideeffects
-
-    def prototype(self, name=None):
-        if name is not None:
-            name = name.strip()
-        else:
-            name = self.name
-        s = name
-        if self.call:
-            s = self.call + ' ' + s
-        if name.startswith('*'):
-            s = '(' + s + ')'
-        s = self.type.expr + ' ' + s
-        s += "("
-        if self.args:
-            s += ", ".join(["%s %s" % (arg.type, arg.name) for arg in self.args])
-        else:
-            s += "void"
-        s += ")"
-        return s
-
-
-def StdFunction(*args, **kwargs):
-    kwargs.setdefault('call', '__stdcall')
-    return Function(*args, **kwargs)
-
-
-def FunctionPointer(type, name, args, **kwargs):
-    # XXX: We should probably treat function pointers (callbacks or not) in a generic fashion
-    return Opaque(name)
-
-
-class Interface(Type):
-
-    def __init__(self, name, base=None):
-        Type.__init__(self, name)
-        self.name = name
-        self.base = base
-        self.methods = []
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_interface(self, *args, **kwargs)
-
-    def itermethods(self):
-        if self.base is not None:
-            for method in self.base.itermethods():
-                yield method
-        for method in self.methods:
-            yield method
-        raise StopIteration
-
-
-class Method(Function):
-
-    def __init__(self, type, name, args):
-        Function.__init__(self, type, name, args, call = '__stdcall')
-        for index in range(len(self.args)):
-            self.args[index].index = index + 1
-
-
-def WrapPointer(type):
-    return Pointer(type)
-
-
-class String(Type):
-
-    def __init__(self, expr = "char *", length = None):
-        Type.__init__(self, expr)
-        self.length = length
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_string(self, *args, **kwargs)
-
-# C string (i.e., zero terminated)
-CString = String()
-
-
-class Opaque(Type):
-    '''Opaque pointer.'''
-
-    def __init__(self, expr):
-        Type.__init__(self, expr)
-
-    def visit(self, visitor, *args, **kwargs):
-        return visitor.visit_opaque(self, *args, **kwargs)
-
-
-def OpaquePointer(type, *args):
-    return Opaque(type.expr + ' *')
-
-def OpaqueArray(type, size):
-    return Opaque(type.expr + ' *')
-
-def OpaqueBlob(type, size):
-    return Opaque(type.expr + ' *')
-
-
-class Visitor:
-
-    def visit(self, type, *args, **kwargs):
-        return type.visit(self, *args, **kwargs)
-
-    def visit_void(self, void, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_literal(self, literal, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_string(self, string, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_const(self, const, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_struct(self, struct, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_array(self, array, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_blob(self, blob, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_enum(self, enum, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_bitmask(self, bitmask, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_pointer(self, pointer, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_handle(self, handle, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_alias(self, alias, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_opaque(self, opaque, *args, **kwargs):
-        raise NotImplementedError
-
-    def visit_interface(self, interface, *args, **kwargs):
-        raise NotImplementedError
-
-
-class OnceVisitor(Visitor):
-
-    def __init__(self):
-        self.__visited = set()
-
-    def visit(self, type, *args, **kwargs):
-        if type not in self.__visited:
-            self.__visited.add(type)
-            return type.visit(self, *args, **kwargs)
-        return None
-
-
-class Rebuilder(Visitor):
-
-    def visit_void(self, void):
-        return void
-
-    def visit_literal(self, literal):
-        return literal
-
-    def visit_string(self, string):
-        return string
-
-    def visit_const(self, const):
-        return Const(const.type)
-
-    def visit_struct(self, struct):
-        members = [(self.visit(type), name) for type, name in struct.members]
-        return Struct(struct.name, members)
-
-    def visit_array(self, array):
-        type = self.visit(array.type)
-        return Array(type, array.length)
-
-    def visit_blob(self, blob):
-        type = self.visit(blob.type)
-        return Blob(type, blob.size)
-
-    def visit_enum(self, enum):
-        return enum
-
-    def visit_bitmask(self, bitmask):
-        type = self.visit(bitmask.type)
-        return Bitmask(type, bitmask.values)
-
-    def visit_pointer(self, pointer):
-        type = self.visit(pointer.type)
-        return Pointer(type)
-
-    def visit_handle(self, handle):
-        type = self.visit(handle.type)
-        return Handle(handle.name, type, range=handle.range, key=handle.key)
-
-    def visit_alias(self, alias):
-        type = self.visit(alias.type)
-        return Alias(alias.expr, type)
-
-    def visit_opaque(self, opaque):
-        return opaque
-
-
-class Collector(Visitor):
-    '''Collect.'''
-
-    def __init__(self):
-        self.__visited = set()
-        self.types = []
-
-    def visit(self, type):
-        if type in self.__visited:
-            return
-        self.__visited.add(type)
-        Visitor.visit(self, type)
-        self.types.append(type)
-
-    def visit_void(self, literal):
-        pass
-
-    def visit_literal(self, literal):
-        pass
-
-    def visit_string(self, string):
-        pass
-
-    def visit_const(self, const):
-        self.visit(const.type)
-
-    def visit_struct(self, struct):
-        for type, name in struct.members:
-            self.visit(type)
-
-    def visit_array(self, array):
-        self.visit(array.type)
-
-    def visit_blob(self, array):
-        pass
-
-    def visit_enum(self, enum):
-        pass
-
-    def visit_bitmask(self, bitmask):
-        self.visit(bitmask.type)
-
-    def visit_pointer(self, pointer):
-        self.visit(pointer.type)
-
-    def visit_handle(self, handle):
-        self.visit(handle.type)
-
-    def visit_alias(self, alias):
-        self.visit(alias.type)
-
-    def visit_opaque(self, opaque):
-        pass
-
-    def visit_interface(self, interface):
-        if interface.base is not None:
-            self.visit(interface.base)
-        for method in interface.itermethods():
-            for arg in method.args:
-                self.visit(arg.type)
-            self.visit(method.type)
-
-
-class API:
-
-    def __init__(self, name = None):
-        self.name = name
-        self.headers = []
-        self.functions = []
-        self.interfaces = []
-
-    def all_types(self):
-        collector = Collector()
-        for function in self.functions:
-            for arg in function.args:
-                collector.visit(arg.type)
-            collector.visit(function.type)
-        for interface in self.interfaces:
-            collector.visit(interface)
-            for method in interface.itermethods():
-                for arg in method.args:
-                    collector.visit(arg.type)
-                collector.visit(method.type)
-        return collector.types
-
-    def add_function(self, function):
-        self.functions.append(function)
-
-    def add_functions(self, functions):
-        for function in functions:
-            self.add_function(function)
-
-    def add_interface(self, interface):
-        self.interfaces.append(interface)
-
-    def add_interfaces(self, interfaces):
-        self.interfaces.extend(interfaces)
-
-    def add_api(self, api):
-        self.headers.extend(api.headers)
-        self.add_functions(api.functions)
-        self.add_interfaces(api.interfaces)
-
-    def get_function_by_name(self, name):
-        for function in self.functions:
-            if function.name == name:
-                return function
-        return None
-
-
-Bool = Literal("bool", "Bool")
-SChar = Literal("signed char", "SInt")
-UChar = Literal("unsigned char", "UInt")
-Short = Literal("short", "SInt")
-Int = Literal("int", "SInt")
-Long = Literal("long", "SInt")
-LongLong = Literal("long long", "SInt")
-UShort = Literal("unsigned short", "UInt")
-UInt = Literal("unsigned int", "UInt")
-ULong = Literal("unsigned long", "UInt")
-ULongLong = Literal("unsigned long long", "UInt")
-Float = Literal("float", "Float")
-Double = Literal("double", "Double")
-SizeT = Literal("size_t", "UInt")
-WString = Literal("wchar_t *", "WString")
-
-Int8 = Literal("int8_t", "SInt")
-UInt8 = Literal("uint8_t", "UInt")
-Int16 = Literal("int16_t", "SInt")
-UInt16 = Literal("uint16_t", "UInt")
-Int32 = Literal("int32_t", "SInt")
-UInt32 = Literal("uint32_t", "UInt")
-Int64 = Literal("int64_t", "SInt")
-UInt64 = Literal("uint64_t", "UInt")
index 626f2ddf767ca577549de2887d83eb9ec933ef80..59e1a831e8cb084fad5f3a794676b22f462a6ba4 100644 (file)
--- a/trace.py
+++ b/trace.py
@@ -26,7 +26,7 @@
 """Common trace code generation."""
 
 
-import stdapi
+import specs.stdapi as stdapi
 from dispatch import Dispatcher
 
 
diff --git a/wglapi.py b/wglapi.py
deleted file mode 100644 (file)
index 7296aeb..0000000
--- a/wglapi.py
+++ /dev/null
@@ -1,226 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2010 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-"""WGL API description"""
-
-
-from glapi import *
-from winapi import *
-from wglenum import *
-
-
-wglapi = API("WGL")
-
-
-HGLRC = Alias("HGLRC", HANDLE)
-PROC = Opaque("PROC")
-
-PFD = Flags(DWORD, [
-    "PFD_DOUBLEBUFFER",
-    "PFD_STEREO",
-    "PFD_DRAW_TO_WINDOW",
-    "PFD_DRAW_TO_BITMAP",
-    "PFD_SUPPORT_GDI",
-    "PFD_SUPPORT_OPENGL",
-    "PFD_GENERIC_FORMAT",
-    "PFD_NEED_PALETTE",
-    "PFD_NEED_SYSTEM_PALETTE",
-    "PFD_SWAP_EXCHANGE",
-    "PFD_SWAP_COPY",
-    "PFD_SWAP_LAYER_BUFFERS",
-    "PFD_GENERIC_ACCELERATED",
-    "PFD_SUPPORT_DIRECTDRAW",
-    "PFD_SUPPORT_COMPOSITION",
-    "PFD_DEPTH_DONTCARE",
-    "PFD_DOUBLEBUFFER_DONTCARE",
-    "PFD_STEREO_DONTCARE",
-])
-
-PIXELFORMATDESCRIPTOR = Struct("PIXELFORMATDESCRIPTOR", [
-    (WORD, "nSize"),
-    (WORD, "nVersion"),
-    (PFD, "dwFlags"),
-    (BYTE, "iPixelType"),
-    (BYTE, "cColorBits"),
-    (BYTE, "cRedBits"),
-    (BYTE, "cRedShift"),
-    (BYTE, "cGreenBits"),
-    (BYTE, "cGreenShift"),
-    (BYTE, "cBlueBits"),
-    (BYTE, "cBlueShift"),
-    (BYTE, "cAlphaBits"),
-    (BYTE, "cAlphaShift"),
-    (BYTE, "cAccumBits"),
-    (BYTE, "cAccumRedBits"),
-    (BYTE, "cAccumGreenBits"),
-    (BYTE, "cAccumBlueBits"),
-    (BYTE, "cAccumAlphaBits"),
-    (BYTE, "cDepthBits"),
-    (BYTE, "cStencilBits"),
-    (BYTE, "cAuxBuffers"),
-    (BYTE, "iLayerType"),
-    (BYTE, "bReserved"),
-    (DWORD, "dwLayerMask"),
-    (DWORD, "dwVisibleMask"),
-    (DWORD, "dwDamageMask"),
-])
-
-POINTFLOAT = Struct("POINTFLOAT", [
-    (FLOAT, "x"),
-    (FLOAT, "y"),
-])
-
-GLYPHMETRICSFLOAT = Struct("GLYPHMETRICSFLOAT", [
-    (FLOAT, "gmfBlackBoxX"),
-    (FLOAT, "gmfBlackBoxY"),
-    (POINTFLOAT, "gmfptGlyphOrigin"),
-    (FLOAT, "gmfCellIncX"),
-    (FLOAT, "gmfCellIncY"),
-])
-LPGLYPHMETRICSFLOAT = Pointer(GLYPHMETRICSFLOAT)
-
-COLORREF = Alias("COLORREF", DWORD)
-
-
-LAYERPLANEDESCRIPTOR = Struct("LAYERPLANEDESCRIPTOR", [
-    (WORD, "nSize"),
-    (WORD, "nVersion"),
-    (DWORD, "dwFlags"),
-    (BYTE, "iPixelType"),
-    (BYTE, "cColorBits"),
-    (BYTE, "cRedBits"),
-    (BYTE, "cRedShift"),
-    (BYTE, "cGreenBits"),
-    (BYTE, "cGreenShift"),
-    (BYTE, "cBlueBits"),
-    (BYTE, "cBlueShift"),
-    (BYTE, "cAlphaBits"),
-    (BYTE, "cAlphaShift"),
-    (BYTE, "cAccumBits"),
-    (BYTE, "cAccumRedBits"),
-    (BYTE, "cAccumGreenBits"),
-    (BYTE, "cAccumBlueBits"),
-    (BYTE, "cAccumAlphaBits"),
-    (BYTE, "cDepthBits"),
-    (BYTE, "cStencilBits"),
-    (BYTE, "cAuxBuffers"),
-    (BYTE, "iLayerPlane"),
-    (BYTE, "bReserved"),
-    (COLORREF, "crTransparent"),
-])
-LPLAYERPLANEDESCRIPTOR = Pointer(LAYERPLANEDESCRIPTOR)
-
-WGLSWAP = Struct("WGLSWAP", [
-    (HDC, "hdc"),
-    (UINT, "uiFlags"),
-])
-
-HPBUFFERARB = Alias("HPBUFFERARB", HANDLE)
-
-
-wglapi.add_functions([
-    # WGL
-    StdFunction(HGLRC, "wglCreateContext", [(HDC, "hdc")]),
-    StdFunction(BOOL, "wglDeleteContext", [(HGLRC, "hglrc")]),
-    StdFunction(HGLRC, "wglGetCurrentContext", [], sideeffects=False),
-    StdFunction(BOOL, "wglMakeCurrent", [(HDC, "hdc"), (HGLRC, "hglrc")]),
-    StdFunction(BOOL, "wglCopyContext", [(HGLRC, "hglrcSrc"), (HGLRC, "hglrcDst"), (UINT, "mask")]),
-    StdFunction(Int, "wglChoosePixelFormat", [(HDC, "hdc"), (Pointer(Const(PIXELFORMATDESCRIPTOR)), "ppfd")]), 
-    StdFunction(Int, "wglDescribePixelFormat", [(HDC, "hdc"), (Int, "iPixelFormat"), (UINT, "nBytes"), Out(Pointer(PIXELFORMATDESCRIPTOR), "ppfd")]),
-    StdFunction(HDC, "wglGetCurrentDC", [], sideeffects=False),
-    StdFunction(PROC, "wglGetDefaultProcAddress", [(LPCSTR, "lpszProc")], sideeffects=False),
-    StdFunction(Int, "wglGetPixelFormat", [(HDC, "hdc")], sideeffects=False),
-    StdFunction(BOOL, "wglSetPixelFormat", [(HDC, "hdc"), (Int, "iPixelFormat"), (Pointer(Const(PIXELFORMATDESCRIPTOR)), "ppfd")]),
-    StdFunction(BOOL, "wglSwapBuffers", [(HDC, "hdc")]),
-    StdFunction(BOOL, "wglShareLists", [(HGLRC, "hglrc1"), (HGLRC, "hglrc2")]),
-    StdFunction(HGLRC, "wglCreateLayerContext", [(HDC, "hdc"), (Int, "iLayerPlane")]),
-    StdFunction(BOOL, "wglDescribeLayerPlane", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nBytes"), Out(Pointer(LAYERPLANEDESCRIPTOR), "plpd")]),
-    StdFunction(Int, "wglSetLayerPaletteEntries", [(HDC, "hdc"), (Int, "iLayerPlane"), (Int, "iStart"), (Int, "cEntries"), (Array(Const(COLORREF), "cEntries"), "pcr")]),
-    StdFunction(Int, "wglGetLayerPaletteEntries", [(HDC, "hdc"), (Int, "iLayerPlane"), (Int, "iStart"), (Int, "cEntries"), Out(Array(COLORREF, "cEntries"), "pcr")], sideeffects=False),
-    StdFunction(BOOL, "wglRealizeLayerPalette", [(HDC, "hdc"), (Int, "iLayerPlane"), (BOOL, "bRealize")]),
-    StdFunction(BOOL, "wglSwapLayerBuffers", [(HDC, "hdc"), (UINT, "fuPlanes")]),
-    StdFunction(BOOL, "wglUseFontBitmapsA", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase")]),
-    StdFunction(BOOL, "wglUseFontBitmapsW", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase")]),
-    StdFunction(DWORD, "wglSwapMultipleBuffers", [(UINT, "n"), (Array(Const(WGLSWAP), "n"), "ps")]),
-    StdFunction(BOOL, "wglUseFontOutlinesA", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase"), (FLOAT, "deviation"), (FLOAT, "extrusion"), (Int, "format"), (LPGLYPHMETRICSFLOAT, "lpgmf")]),
-    StdFunction(BOOL, "wglUseFontOutlinesW", [(HDC, "hdc"), (DWORD, "first"), (DWORD, "count"), (DWORD, "listBase"), (FLOAT, "deviation"), (FLOAT, "extrusion"), (Int, "format"), (LPGLYPHMETRICSFLOAT, "lpgmf")]),
-
-    # WGL_ARB_buffer_region
-    StdFunction(HANDLE, "wglCreateBufferRegionARB", [(HDC, "hDC"), (Int, "iLayerPlane"), (UINT, "uType")]),
-    StdFunction(VOID, "wglDeleteBufferRegionARB", [(HANDLE, "hRegion")]),
-    StdFunction(BOOL, "wglSaveBufferRegionARB", [(HANDLE, "hRegion"), (Int, "x"), (Int, "y"), (Int, "width"), (Int, "height")]),
-    StdFunction(BOOL, "wglRestoreBufferRegionARB", [(HANDLE, "hRegion"), (Int, "x"), (Int, "y"), (Int, "width"), (Int, "height"), (Int, "xSrc"), (Int, "ySrc")]),
-
-    # WGL_ARB_extensions_string
-    StdFunction(Const(CString), "wglGetExtensionsStringARB", [(HDC, "hdc")], sideeffects=False),
-
-    # WGL_ARB_pixel_format
-    StdFunction(BOOL, "wglGetPixelFormatAttribivARB", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(Int, "nAttributes"), "piValues")], sideeffects=False),
-    StdFunction(BOOL, "wglGetPixelFormatAttribfvARB", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(FLOAT, "nAttributes"), "pfValues")], sideeffects=False),
-    StdFunction(BOOL, "wglChoosePixelFormatARB", [(HDC, "hdc"), (Array(Const(WGLenum), "__AttribList_size(piAttribIList)"), "piAttribIList"), (Array(Const(FLOAT), "__AttribList_size(pfAttribFList)"), "pfAttribFList"), (UINT, "nMaxFormats"), Out(Array(Int, "(*nNumFormats)"), "piFormats"), Out(Pointer(UINT), "nNumFormats")]),
-
-    # WGL_ARB_make_current_read
-    StdFunction(BOOL, "wglMakeContextCurrentARB", [(HDC, "hDrawDC"), (HDC, "hReadDC"), (HGLRC, "hglrc")]),
-    StdFunction(HDC, "wglGetCurrentReadDCARB", [], sideeffects=False),
-
-    # WGL_ARB_pbuffer
-    StdFunction(HPBUFFERARB, "wglCreatePbufferARB", [(HDC, "hDC"), (Int, "iPixelFormat"), (Int, "iWidth"), (Int, "iHeight"), (Array(Const(WGLenum), "__AttribList_size(piAttribList)"), "piAttribList")]),
-    StdFunction(HDC, "wglGetPbufferDCARB", [(HPBUFFERARB, "hPbuffer")]),
-    StdFunction(Int, "wglReleasePbufferDCARB", [(HPBUFFERARB, "hPbuffer"), (HDC, "hDC")]),
-    StdFunction(BOOL, "wglDestroyPbufferARB", [(HPBUFFERARB, "hPbuffer")]),
-    StdFunction(BOOL, "wglQueryPbufferARB", [(HPBUFFERARB, "hPbuffer"), (WGLenum, "iAttribute"), Out(Pointer(Int), "piValue")], sideeffects=False),
-
-    # WGL_ARB_render_texture
-    StdFunction(BOOL, "wglBindTexImageARB", [(HPBUFFERARB, "hPbuffer"), (Int, "iBuffer")]),
-    StdFunction(BOOL, "wglReleaseTexImageARB", [(HPBUFFERARB, "hPbuffer"), (Int, "iBuffer")]),
-    StdFunction(BOOL, "wglSetPbufferAttribARB", [(HPBUFFERARB, "hPbuffer"), (Array(Const(WGLenum), "__AttribList_size(piAttribList)"), "piAttribList")]),
-
-    # WGL_ARB_create_context
-    StdFunction(HGLRC, "wglCreateContextAttribsARB", [(HDC, "hDC"), (HGLRC, "hShareContext"), (Array(Const(WGLenum), "__AttribList_size(attribList)"), "attribList")]),
-
-    # WGL_EXT_extensions_string
-    StdFunction(Const(CString), "wglGetExtensionsStringEXT", [], sideeffects=False),
-
-    # WGL_EXT_make_current_read
-    StdFunction(BOOL, "wglMakeContextCurrentEXT", [(HDC, "hDrawDC"), (HDC, "hReadDC"), (HGLRC, "hglrc")]),
-    StdFunction(HDC, "wglGetCurrentReadDCEXT", [], sideeffects=False),
-
-    # WGL_EXT_pixel_format
-    StdFunction(BOOL, "wglGetPixelFormatAttribivEXT", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(Int, "nAttributes"), "piValues")], sideeffects=False),
-    StdFunction(BOOL, "wglGetPixelFormatAttribfvEXT", [(HDC, "hdc"), (Int, "iPixelFormat"), (Int, "iLayerPlane"), (UINT, "nAttributes"), (Array(WGLenum, "nAttributes"), "piAttributes"), Out(Array(FLOAT, "nAttributes"), "pfValues")], sideeffects=False),
-    StdFunction(BOOL, "wglChoosePixelFormatEXT", [(HDC, "hdc"), (Pointer(Const(WGLenum)), "piAttribIList"), (Pointer(Const(FLOAT)), "pfAttribFList"), (UINT, "nMaxFormats"), Out(Array(Int, "nMaxFormats"), "piFormats"), Out(Pointer(UINT), "nNumFormats")]),
-
-    # WGL_EXT_swap_control
-    StdFunction(BOOL, "wglSwapIntervalEXT", [(Int, "interval")]),
-    StdFunction(Int, "wglGetSwapIntervalEXT", [], sideeffects=False),
-
-    # WGL_NV_vertex_array_range
-    StdFunction(OpaquePointer(Void), "wglAllocateMemoryNV", [(GLsizei, "size"), (GLfloat, "readfreq"), (GLfloat, "writefreq"), (GLfloat, "priority")]),
-    StdFunction(Void, "wglFreeMemoryNV", [(OpaquePointer(Void), "pointer")]),
-
-    # must be last
-    StdFunction(PROC, "wglGetProcAddress", [(LPCSTR, "lpszProc")]),
-])
diff --git a/wglenum.py b/wglenum.py
deleted file mode 100644 (file)
index 1056092..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2011 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-
-"""WGL enum description"""
-
-
-from stdapi import *
-
-WGLenum = FakeEnum(Int, [
-    "WGL_NUMBER_PIXEL_FORMATS_ARB",            # 0x2000
-    "WGL_DRAW_TO_WINDOW_ARB",          # 0x2001
-    "WGL_DRAW_TO_BITMAP_ARB",          # 0x2002
-    "WGL_ACCELERATION_ARB",            # 0x2003
-    "WGL_NEED_PALETTE_ARB",            # 0x2004
-    "WGL_NEED_SYSTEM_PALETTE_ARB",             # 0x2005
-    "WGL_SWAP_LAYER_BUFFERS_ARB",              # 0x2006
-    "WGL_SWAP_METHOD_ARB",             # 0x2007
-    "WGL_NUMBER_OVERLAYS_ARB",         # 0x2008
-    "WGL_NUMBER_UNDERLAYS_ARB",                # 0x2009
-    "WGL_TRANSPARENT_ARB",             # 0x200A
-    "WGL_TRANSPARENT_VALUE_EXT",               # 0x200B
-    "WGL_SHARE_DEPTH_ARB",             # 0x200C
-    "WGL_SHARE_STENCIL_ARB",           # 0x200D
-    "WGL_SHARE_ACCUM_ARB",             # 0x200E
-    "WGL_SUPPORT_GDI_ARB",             # 0x200F
-    "WGL_SUPPORT_OPENGL_ARB",          # 0x2010
-    "WGL_DOUBLE_BUFFER_ARB",           # 0x2011
-    "WGL_STEREO_ARB",          # 0x2012
-    "WGL_PIXEL_TYPE_ARB",              # 0x2013
-    "WGL_COLOR_BITS_ARB",              # 0x2014
-    "WGL_RED_BITS_ARB",                # 0x2015
-    "WGL_RED_SHIFT_ARB",               # 0x2016
-    "WGL_GREEN_BITS_ARB",              # 0x2017
-    "WGL_GREEN_SHIFT_ARB",             # 0x2018
-    "WGL_BLUE_BITS_ARB",               # 0x2019
-    "WGL_BLUE_SHIFT_ARB",              # 0x201A
-    "WGL_ALPHA_BITS_ARB",              # 0x201B
-    "WGL_ALPHA_SHIFT_ARB",             # 0x201C
-    "WGL_ACCUM_BITS_ARB",              # 0x201D
-    "WGL_ACCUM_RED_BITS_ARB",          # 0x201E
-    "WGL_ACCUM_GREEN_BITS_ARB",                # 0x201F
-    "WGL_ACCUM_BLUE_BITS_ARB",         # 0x2020
-    "WGL_ACCUM_ALPHA_BITS_ARB",                # 0x2021
-    "WGL_DEPTH_BITS_ARB",              # 0x2022
-    "WGL_STENCIL_BITS_ARB",            # 0x2023
-    "WGL_AUX_BUFFERS_ARB",             # 0x2024
-    "WGL_NO_ACCELERATION_ARB",         # 0x2025
-    "WGL_GENERIC_ACCELERATION_ARB",            # 0x2026
-    "WGL_FULL_ACCELERATION_ARB",               # 0x2027
-    "WGL_SWAP_EXCHANGE_ARB",           # 0x2028
-    "WGL_SWAP_COPY_ARB",               # 0x2029
-    "WGL_SWAP_UNDEFINED_ARB",          # 0x202A
-    "WGL_TYPE_RGBA_ARB",               # 0x202B
-    "WGL_TYPE_COLORINDEX_ARB",         # 0x202C
-    "WGL_DRAW_TO_PBUFFER_ARB",         # 0x202D
-    "WGL_MAX_PBUFFER_PIXELS_ARB",              # 0x202E
-    "WGL_MAX_PBUFFER_WIDTH_ARB",               # 0x202F
-    "WGL_MAX_PBUFFER_HEIGHT_ARB",              # 0x2030
-    "WGL_OPTIMAL_PBUFFER_WIDTH_EXT",           # 0x2031
-    "WGL_OPTIMAL_PBUFFER_HEIGHT_EXT",          # 0x2032
-    "WGL_PBUFFER_LARGEST_ARB",         # 0x2033
-    "WGL_PBUFFER_WIDTH_ARB",           # 0x2034
-    "WGL_PBUFFER_HEIGHT_ARB",          # 0x2035
-    "WGL_PBUFFER_LOST_ARB",            # 0x2036
-    "WGL_TRANSPARENT_RED_VALUE_ARB",           # 0x2037
-    "WGL_TRANSPARENT_GREEN_VALUE_ARB",         # 0x2038
-    "WGL_TRANSPARENT_BLUE_VALUE_ARB",          # 0x2039
-    "WGL_TRANSPARENT_ALPHA_VALUE_ARB",         # 0x203A
-    "WGL_TRANSPARENT_INDEX_VALUE_ARB",         # 0x203B
-    "WGL_DEPTH_FLOAT_EXT",             # 0x2040
-    "WGL_SAMPLE_BUFFERS_ARB",          # 0x2041
-    "WGL_SAMPLES_ARB",         # 0x2042
-    "WGL_GENLOCK_SOURCE_MULTIVIEW_I3D",                # 0x2044
-    "WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D",             # 0x2045
-    "WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D",            # 0x2046
-    "WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D",              # 0x2047
-    "WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D",             # 0x2048
-    "WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D",            # 0x2049
-    "WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D",             # 0x204A
-    "WGL_GENLOCK_SOURCE_EDGE_RISING_I3D",              # 0x204B
-    "WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D",                # 0x204C
-    "WGL_GAMMA_TABLE_SIZE_I3D",                # 0x204E
-    "WGL_GAMMA_EXCLUDE_DESKTOP_I3D",           # 0x204F
-    "WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D",          # 0x2050
-    "WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D",                # 0x2051
-    "WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D",           # 0x2052
-    "WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D",           # 0x2053
-    "WGL_STEREO_EMITTER_ENABLE_3DL",           # 0x2055
-    "WGL_STEREO_EMITTER_DISABLE_3DL",          # 0x2056
-    "WGL_STEREO_POLARITY_NORMAL_3DL",          # 0x2057
-    "WGL_STEREO_POLARITY_INVERT_3DL",          # 0x2058
-    "WGL_SAMPLE_BUFFERS_3DFX",         # 0x2060
-    "WGL_SAMPLES_3DFX",                # 0x2061
-    "WGL_BIND_TO_TEXTURE_RGB_ARB",             # 0x2070
-    "WGL_BIND_TO_TEXTURE_RGBA_ARB",            # 0x2071
-    "WGL_TEXTURE_FORMAT_ARB",          # 0x2072
-    "WGL_TEXTURE_TARGET_ARB",          # 0x2073
-    "WGL_MIPMAP_TEXTURE_ARB",          # 0x2074
-    "WGL_TEXTURE_RGB_ARB",             # 0x2075
-    "WGL_TEXTURE_RGBA_ARB",            # 0x2076
-    "WGL_NO_TEXTURE_ARB",              # 0x2077
-    "WGL_TEXTURE_CUBE_MAP_ARB",                # 0x2078
-    "WGL_TEXTURE_1D_ARB",              # 0x2079
-    "WGL_TEXTURE_2D_ARB",              # 0x207A
-    "WGL_MIPMAP_LEVEL_ARB",            # 0x207B
-    "WGL_CUBE_MAP_FACE_ARB",           # 0x207C
-    "WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB",             # 0x207D
-    "WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB",             # 0x207E
-    "WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB",             # 0x207F
-    "WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB",             # 0x2080
-    "WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB",             # 0x2081
-    "WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB",             # 0x2082
-    "WGL_FRONT_LEFT_ARB",              # 0x2083
-    "WGL_FRONT_RIGHT_ARB",             # 0x2084
-    "WGL_BACK_LEFT_ARB",               # 0x2085
-    "WGL_BACK_RIGHT_ARB",              # 0x2086
-    "WGL_AUX0_ARB",            # 0x2087
-    "WGL_AUX1_ARB",            # 0x2088
-    "WGL_AUX2_ARB",            # 0x2089
-    "WGL_AUX3_ARB",            # 0x208A
-    "WGL_AUX4_ARB",            # 0x208B
-    "WGL_AUX5_ARB",            # 0x208C
-    "WGL_AUX6_ARB",            # 0x208D
-    "WGL_AUX7_ARB",            # 0x208E
-    "WGL_AUX8_ARB",            # 0x208F
-    "WGL_AUX9_ARB",            # 0x2090
-    "WGL_CONTEXT_MAJOR_VERSION_ARB",           # 0x2091
-    "WGL_CONTEXT_MINOR_VERSION_ARB",           # 0x2092
-    "WGL_CONTEXT_LAYER_PLANE_ARB",             # 0x2093
-    "WGL_CONTEXT_FLAGS_ARB",           # 0x2094
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV",            # 0x20A0
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV",           # 0x20A1
-    "WGL_TEXTURE_RECTANGLE_NV",                # 0x20A2
-    "WGL_BIND_TO_TEXTURE_DEPTH_NV",            # 0x20A3
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV",          # 0x20A4
-    "WGL_DEPTH_TEXTURE_FORMAT_NV",             # 0x20A5
-    "WGL_TEXTURE_DEPTH_COMPONENT_NV",          # 0x20A6
-    "WGL_DEPTH_COMPONENT_NV",          # 0x20A7
-    "WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT",                # 0x20A8
-    "WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB",                # 0x20A9
-    "WGL_FLOAT_COMPONENTS_NV",         # 0x20B0
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV",                # 0x20B1
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV",               # 0x20B2
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV",              # 0x20B3
-    "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV",             # 0x20B4
-    "WGL_TEXTURE_FLOAT_R_NV",          # 0x20B5
-    "WGL_TEXTURE_FLOAT_RG_NV",         # 0x20B6
-    "WGL_TEXTURE_FLOAT_RGB_NV",                # 0x20B7
-    "WGL_TEXTURE_FLOAT_RGBA_NV",               # 0x20B8
-    "WGL_COLOR_SAMPLES_NV",            # 0x20B9
-    "WGL_BIND_TO_VIDEO_RGB_NV",                # 0x20C0
-    "WGL_BIND_TO_VIDEO_RGBA_NV",               # 0x20C1
-    "WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV",              # 0x20C2
-    "WGL_VIDEO_OUT_COLOR_NV",          # 0x20C3
-    "WGL_VIDEO_OUT_ALPHA_NV",          # 0x20C4
-    "WGL_VIDEO_OUT_DEPTH_NV",          # 0x20C5
-    "WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV",                # 0x20C6
-    "WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV",                # 0x20C7
-    "WGL_VIDEO_OUT_FRAME",             # 0x20C8
-    "WGL_VIDEO_OUT_FIELD_1",           # 0x20C9
-    "WGL_VIDEO_OUT_FIELD_2",           # 0x20CA
-    "WGL_VIDEO_OUT_STACKED_FIELDS_1_2",                # 0x20CB
-    "WGL_VIDEO_OUT_STACKED_FIELDS_2_1",                # 0x20CC
-    "WGL_UNIQUE_ID_NV",                # 0x20CE
-    "WGL_NUM_VIDEO_CAPTURE_SLOTS_NV",          # 0x20CF
-    "WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV",                # 0x20D0
-    "WGL_ERROR_MISSING_AFFINITY_MASK_NV",              # 0x20D1
-    "WGL_NUM_VIDEO_SLOTS_NV",          # 0x20F0
-    "WGL_TYPE_RGBA_FLOAT_ARB",         # 0x21A0
-    "WGL_GPU_FASTEST_TARGET_GPUS_AMD",         # 0x21A2
-    "WGL_GPU_RAM_AMD",         # 0x21A3
-    "WGL_GPU_CLOCK_AMD",               # 0x21A4
-    "WGL_GPU_NUM_PIPES_AMD",           # 0x21A5
-    "WGL_GPU_NUM_SIMD_AMD",            # 0x21A6
-    "WGL_GPU_NUM_RB_AMD",              # 0x21A7
-    "WGL_GPU_NUM_SPI_AMD",             # 0x21A8
-])
index 17d1acc7b6a054570767b0ff3c4a33c7aa955da0..3a49c87b2289ef5524d8e1a99429f75c4ea2c9c1 100644 (file)
@@ -27,9 +27,9 @@
 """WGL tracing code generator."""
 
 
-from stdapi import API
-from glapi import glapi
-from wglapi import wglapi
+from specs.stdapi import API
+from specs.glapi import glapi
+from specs.wglapi import wglapi
 from dispatch import function_pointer_type, function_pointer_value
 from gltrace import GlTracer
 from codegen import *
diff --git a/winapi.py b/winapi.py
deleted file mode 100644 (file)
index 17256aa..0000000
--- a/winapi.py
+++ /dev/null
@@ -1,165 +0,0 @@
-##########################################################################
-#
-# Copyright 2008-2009 VMware, Inc.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-##########################################################################/
-
-"""Win32 API type description."""
-
-from stdapi import *
-
-SHORT = Alias("SHORT", Short)
-USHORT = Alias("USHORT", UShort)
-INT = Alias("INT", Int)
-UINT = Alias("UINT", UInt)
-LONG = Alias("LONG", Long)
-ULONG = Alias("ULONG", ULong)
-LONGLONG = Alias("LONGLONG", LongLong)
-FLOAT = Alias("FLOAT", Float)
-
-INT8 = Alias("INT8", Int8)
-UINT8 = Alias("UINT8", UInt8)
-INT16 = Alias("INT16", Int16)
-UINT16 = Alias("UINT16", UInt16)
-INT32 = Alias("INT32", Int32)
-UINT32 = Alias("UINT32", UInt32)
-INT64 = Alias("INT64", Int64)
-UINT64 = Alias("UINT64", UInt64)
-
-BYTE = Literal("BYTE", "UInt", base=16)
-WORD = Literal("WORD", "UInt", base=16)
-DWORD = Literal("DWORD", "UInt", base=16)
-
-WCHAR = Literal("WCHAR", "SInt")
-
-BOOL = Alias("BOOL", Bool)
-
-LPLONG = Pointer(LONG)
-LPWORD = Pointer(WORD)
-LPDWORD = Pointer(DWORD)
-LPBOOL = Pointer(BOOL)
-
-LPSTR = CString
-LPCSTR = Const(CString)
-LPWSTR = WString
-LPCWSTR = Const(WString)
-
-LARGE_INTEGER = Struct("LARGE_INTEGER", [
-    (LONGLONG, 'QuadPart'),
-])
-
-SIZE_T = Alias("SIZE_T", SizeT)
-
-HRESULT = Alias("HRESULT", Int)
-
-VOID = Void
-PVOID = Opaque("PVOID")
-LPVOID = PVOID
-HANDLE = Opaque("HANDLE")
-HWND = Opaque("HWND")
-HDC = Opaque("HDC")
-HMONITOR = Opaque("HMONITOR")
-
-GUID = Struct("GUID", [
-    (DWORD, "Data1"),
-    (WORD, "Data2"),
-    (WORD, "Data3"),
-    (Array(BYTE, "8"), "Data4"),
-])
-LPGUID = Pointer(GUID)
-
-#REFGUID = Alias("REFGUID", Pointer(GUID))
-REFGUID = Alias("REFGUID", GUID)
-
-IID = Alias("IID", GUID)
-#REFIID = Alias("REFIID", Pointer(IID))
-REFIID = Alias("REFIID", IID)
-
-CLSID = Alias("CLSID", GUID)
-#REFCLSID = Alias("REFCLSID", Pointer(CLSID))
-REFCLSID = Alias("REFCLSID", CLSID)
-
-LUID = Struct("LUID", [
-    (DWORD, "LowPart"),
-    (LONG, "HighPart"),
-])
-
-POINT = Struct("POINT", (
-  (LONG, "x"),
-  (LONG, "y"),
-)) 
-LPPOINT = Pointer(POINT)
-
-SIZE = Struct("SIZE", (
-  (LONG, "cx"),
-  (LONG, "cy"),
-)) 
-LPSIZE = Pointer(SIZE)
-
-RECT = Struct("RECT", (
-  (LONG, "left"),
-  (LONG, "top"),
-  (LONG, "right"), 
-  (LONG, "bottom"), 
-)) 
-LPRECT = Pointer(RECT)
-
-PALETTEENTRY = Struct("PALETTEENTRY", (
-  (BYTE, "peRed"),
-  (BYTE, "peGreen"),
-  (BYTE, "peBlue"), 
-  (BYTE, "peFlags"), 
-)) 
-LPPALETTEENTRY = Pointer(PALETTEENTRY)
-
-
-RGNDATAHEADER = Struct("RGNDATAHEADER", [
-    (DWORD, "dwSize"),
-    (DWORD, "iType"),
-    (DWORD, "nCount"),
-    (DWORD, "nRgnSize"),
-    (RECT, "rcBound"),
-])
-
-RGNDATA = Struct("RGNDATA", [
-    (RGNDATAHEADER, "rdh"),
-    #(Char, "Buffer[1]"),
-])
-LPRGNDATA = Pointer(RGNDATA)
-
-HMODULE = Opaque("HMODULE")
-
-IUnknown = Interface("IUnknown")
-
-HRESULT_com = FakeEnum(HRESULT, [
-    "S_OK",
-    "E_NOINTERFACE",
-    "E_POINTER",
-])
-
-IUnknown.methods = (
-       Method(HRESULT_com, "QueryInterface", ((REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppvObj"))),
-       Method(ULONG, "AddRef", ()),
-       Method(ULONG, "Release", ()),
-)
-
-