]> git.tdb.fi Git - gldbg.git/commitdiff
Support multiple .spec files
authorMikko Rasa <tdb@tdb.fi>
Mon, 26 Oct 2009 07:49:58 +0000 (07:49 +0000)
committerMikko Rasa <tdb@tdb.fi>
Mon, 26 Oct 2009 07:49:58 +0000 (07:49 +0000)
Fix and improve typemapping
Add glX stuff

Makefile
genwrap.py
glx.files [new file with mode: 0644]
glx.io [new file with mode: 0644]
glx.spec [new file with mode: 0644]
glx.tm [new file with mode: 0644]
glxext.spec [new file with mode: 0644]
source/gldecoder.h
source/glwrap.c

index aa0001a3b2f303bbf452f9f584acb187590ef2ff..b6cb9453a28976f7cfba6838341cabae985c24c6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -36,8 +36,8 @@ source/commandinterpreter.o: source/commandinterpreter.cpp source/gldbg.h
 source/process.o: source/process.cpp source/process.h
        $(CXX) -c $(CXXFLAGS) $(CXXFLAGS_gldbg) -o $@ $<
 
-gensrc/%: source/%.t gensrc/.created genwrap.py gl.files gl.tm gl.io gl.spec
-       python ./genwrap.py $< gl.files >$@
+gensrc/%: source/%.t gensrc/.created genwrap.py gl.files gl.tm gl.io gl.spec glx.files glx.tm glx.io glx.spec glxext.spec
+       python ./genwrap.py $< gl.files glx.files >$@
 
 gensrc/enums.table: enum.spec genenum.py
        python ./genenum.py enum.spec >$@
index 81c4e33f8a285bba41d5d65b2cf8979962aacce0..ec239853875a386fdca9a4961b733a77622177c5 100755 (executable)
@@ -66,11 +66,13 @@ class Typemap:
                return a==b
 
        def __getitem__(self, key):
-               return self.map[(key[0], "*", "*")]
-               for k, v in self.map.iteritems():
-                       if strip_name(k[0])==strip_name(key[0]) and self.wildcard_match(k[1], key[1]) and self.wildcard_match(k[2], key[2]):
-                               return v
-               raise KeyError, key
+               try:
+                       return self.map[(key[0], "*", "*")]
+               except KeyError:
+                       for k, v in self.map.iteritems():
+                               if strip_name(k[0])==strip_name(key[0]) and self.wildcard_match(k[1], key[1]) and self.wildcard_match(k[2], key[2]):
+                                       return v
+                       raise KeyError, key
 
        def update(self, other):
                self.map.update(other.map)
@@ -113,7 +115,12 @@ class Function:
                                self.size = size
 
                def derive_ctype(self):
-                       self.ctype = typemap[(self.type, self.direction, self.kind)][0]
+                       m = typemap[(self.type, self.direction, self.kind)]
+                       self.ctype = m[0]
+                       if m[1]!="*":
+                               self.direction = m[1]
+                       if m[2]!="*":
+                               self.kind = m[2]
                        self.base_ctype = self.ctype
                        if self.kind=="value":
                                if self.base_ctype.startswith("const "):
@@ -255,7 +262,7 @@ class Files:
        def __init__(self, fn):
                self.typemap = None
                self.iomap = None
-               self.spec = None
+               self.specs = []
                self.prefix = None
                self.ignore_categs = []
                self.ignore_funcs = []
@@ -267,7 +274,7 @@ class Files:
                        elif parts[0]=="iomap":
                                self.iomap = parts[1]
                        elif parts[0]=="spec":
-                               self.spec = parts[1]
+                               self.specs.append(parts[1])
                        elif parts[0]=="prefix":
                                self.prefix = parts[1]
                        elif parts[0]=="ignore":
@@ -316,14 +323,18 @@ def read_spec(fn, prefix):
        return funcs
 
 template = Template(sys.argv[1])
+functions = []
 for i in sys.argv[2:]:
        files = Files(i)
 
        typemap = Typemap(files.typemap)
        iomap = IOmap(files.iomap)
-       functions = read_spec(files.spec, files.prefix)
-       functions = [f for f in functions if f.name not in files.ignore_funcs and f.category not in files.ignore_categs]
-       for f in functions:
-               f.finalize()
-
-       template.process(functions)
+       for s in files.specs:
+               funcs = read_spec(s, files.prefix)
+               funcs = [f for f in funcs if f.name not in files.ignore_funcs and f.category not in files.ignore_categs]
+               for f in funcs:
+                       f.finalize()
+               names = [f.name for f in funcs]
+               functions = [f for f in functions if f.name not in names]+funcs
+
+template.process(functions)
diff --git a/glx.files b/glx.files
new file mode 100644 (file)
index 0000000..3d7d138
--- /dev/null
+++ b/glx.files
@@ -0,0 +1,13 @@
+typemap glx.tm
+iomap glx.io
+spec glx.spec
+spec glxext.spec
+prefix glX
+ignore category glxext
+ignore category SGIX_video_source
+ignore category SGIX_dmbuffer
+ignore category SGIX_hyperpipe
+ignore category NV_video_output
+ignore category NV_video_capture
+ignore function glXGetProcAddress
+ignore function glXGetProcAddressARB
diff --git a/glx.io b/glx.io
new file mode 100644 (file)
index 0000000..7322c3a
--- /dev/null
+++ b/glx.io
@@ -0,0 +1,27 @@
+enum, int, %#x
+boolean, char, %i
+int, int, %i
+uint, int, %u
+unsigned int, int, %u
+unsigned long, long, %lu
+int64_t, longlong, %lli
+sizei, int, %i
+float, float, %g
+unsigned int *, pointer, %p
+char *, string, \"%s\"
+Bool, int, %i
+Display *, pointer, %p
+XVisualInfo *, pointer, %p
+Font, long, %#lx
+Window, long, %#lx
+Pixmap, long, %#lx
+Status, int, %i
+Colormap, long, %#lx
+GLXFBConfig *, pointer, %p
+GLXFBConfig, pointer, %p
+GLXContext, pointer, %p
+GLXContextID, long, %#lx
+GLXDrawable, long, %#lx
+GLXPbuffer, long, %#lx
+GLXWindow, long, %#lx
+GLXPixmap, long, %#lx
diff --git a/glx.spec b/glx.spec
new file mode 100644 (file)
index 0000000..0c4fa03
--- /dev/null
+++ b/glx.spec
@@ -0,0 +1,642 @@
+# Copyright (C) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+
+required-props:
+param:         retval retained
+dlflags:       notlistable handcode nop
+glxflags:      client-handcode server-handcode
+glxvendorglx:  *
+vectorequiv:   *
+category:      pixel-rw bgn-end display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform glx glxopcode
+glxopcode:             *
+
+###############################################################################
+#
+# GLX1.0 commands
+#
+###############################################################################
+Render()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        1
+
+
+RenderLarge()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        2
+
+
+CreateContext(dpy, visual, share_list, direct)
+       return           GLXContext
+       param            dpy            DisplayPointer in value
+       param            visual         XVisualInfoPointer in value
+       param            share_list     GLXContext in value
+       param            direct         Bool in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        3
+
+
+DestroyContext(dpy, ctx)
+       return           void
+       param            dpy            DisplayPointer in value
+       param            ctx            GLXContext in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        4
+
+
+MakeCurrent(dpy, drawable, ctx)
+       return           Bool
+       param            dpy            DisplayPointer in value
+       param            drawable       GLXDrawable in value
+       param            ctx            GLXContext in value
+       category         glx
+       dlflags          notlistable
+       glxopcode        5
+
+
+IsDirect(dpy, ctx)
+       return           Bool
+       param            dpy            DisplayPointer in value
+       param            ctx            GLXContext in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        6
+
+
+QueryVersion(dpy, major, minor)
+       return           Bool
+       param            dpy            DisplayPointer in value
+       param            major          int out reference
+       param            minor          int out reference
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        7
+
+
+WaitGL()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        8
+
+
+WaitX()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        9
+
+
+CopyContext(dpy, source, dest, mask)
+       return           void
+       param            dpy            DisplayPointer in value
+       param            source         GLXContext in value
+       param            dest           GLXContext in value
+       param            mask           ulong in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        10
+
+
+SwapBuffers(dpy, drawable)
+       return           void
+       param            dpy            DisplayPointer in value
+       param            drawable       GLXDrawable in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        11
+
+
+UseXFont(font, first, count, list_base)
+       return           void
+       param            font           Font in value
+       param            first          int in value
+       param            count          int in value
+       param            list_base      int in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        12
+
+
+CreateGLXPixmap(dpy, visual, pixmap)
+       return           GLXPixmap
+       param            dpy            DisplayPointer in value
+       param            visual         XVisualInfoPointer in value
+       param            pixmap         Pixmap in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        13
+
+GetVisualConfigs()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        14
+
+
+DestroyGLXPixmap(dpy, pixmap)
+       return           void
+       param            dpy            DisplayPointer in value
+       param            pixmap         GLXPixmap in value
+       glxflags         client-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        15
+
+
+VendorPrivate()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       16
+
+
+VendorPrivateWithReply()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       17
+
+###############################################################################
+#
+# GLX1.1 commands
+#
+###############################################################################
+QueryExtensionsString(dpy, screen)
+       return          GLXstring
+       param           dpy             DisplayPointer in value
+       param           screen          int in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       18
+
+QueryServerString(dpy, screen, name)
+       return          GLXstring
+       param           dpy             DisplayPointer in value
+       param           screen          int in value
+       param           name            int in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       19
+
+ClientInfo()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       20
+
+###############################################################################
+#
+# GLX1.3 commands
+#
+###############################################################################
+GetFBConfigs(dpy, screen, nelements)
+       return          GLXFBConfigPointer
+       param           dpy             DisplayPointer in value
+       param           screen          int in value
+       param           nelements       int out reference
+       category        glx
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       glxopcode       21
+
+CreatePixmap(dpy, config, pixmap, attriblist)
+       return          GLXPixmap
+       param           dpy             DisplayPointer in value
+       param           config          GLXFBConfig in value
+       param           pixmap          Pixmap in value
+       param           attriblist      int in array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       22
+
+DestroyPixmap(dpy, pixmap)
+       return          void
+       param           dpy             DisplayPointer in value
+       param           pixmap          Pixmap in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       23
+
+CreateNewContext(dpy, config, render_type, share_list, direct)
+       return          GLXContext
+       param           dpy             DisplayPointer in value
+       param           config          GLXFBConfig in value
+       param           render_type     int in value
+       param           share_list      GLXContext in value
+       param           direct          Bool in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       24
+
+QueryContext(dpy, context, attribute, value)
+       return          int
+       param           dpy             DisplayPointer in value
+       param           context         GLXContext in value
+       param           attribute       int in value
+       param           value           int out reference
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       25
+
+MakeContextCurrent(dpy, drawdrawable, readdrawable, context)
+       return          Bool
+       param           dpy             DisplayPointer in value
+       param           drawdrawable    GLXDrawable in value
+       param           readdrawable    GLXDrawable in value
+       param           context         GLXContext in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       26
+
+CreatePbuffer(dpy, config, attrib_list)
+       return          GLXPbuffer
+       param           dpy             DisplayPointer in value
+       param           config          GLXFBConfig in value
+       param           attrib_list     int in array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       27
+
+DestroyPbuffer(dpy, pbuffer)
+       return          void
+       param           dpy             DisplayPointer in value
+       param           pbuffer         GLXPbuffer in value
+       dlflags         notlistable
+       glxflags        client-handcode
+       category        glx
+       glxopcode       28
+
+GetDrawableAttributes(drawable)
+       return          void
+       param           drawable        int in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       29
+
+ChangeDrawableAttributes(drawable)
+       return          void
+       param           drawable        int in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       30
+
+CreateWindow(dpy, config, window, attrib_list)
+       return          GLXWindow
+       param           dpy             DisplayPointer in value
+       param           config          GLXFBConfig in value
+       param           window          Window in value
+       param           attrib_list     int in array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       31
+
+DestroyWindow(dpy, window)
+       return          void
+       param           dpy             DisplayPointer in value
+       param           window          Window in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       32
+
+ChooseVisual(dpy, screen, attriblist)
+       return          XVisualInfoPointer
+       param           dpy             DisplayPointer in value
+       param           screen          int in value
+       param           attriblist      int out array
+       category        glx
+
+###############################################################################
+#
+# IRIX5.3 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# SGI_swap_control extension commands
+#
+###############################################################################
+SwapIntervalSGI()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65536
+
+###############################################################################
+#
+# IRIX5.3-PATCH154 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# SGI_make_current_read extension commands
+#
+###############################################################################
+MakeCurrentReadSGI(drawable, readdrawable, context)
+       return          void
+       param           drawable        Int32 in value
+       param           readdrawable    Int32 in value
+       param           context         Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65537
+
+###############################################################################
+#
+# SGIX_video_source extension commands
+#
+###############################################################################
+CreateGLXVideoSourceSGIX(dpy, screen, server, path, class, node)
+       return          void
+       param           dpy                     Int32 in value
+       param           screen                  Int32 in value
+       param           server                  Int32 in value
+       param           path                    Int32 in value
+       param           class                   Int32 in value
+       param           node                    Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65538
+
+DestroyGLXVideoSourceSGIX(dpy, glxvideosource)
+       return          void
+       param           dpy                     Int32 in value
+       param           glxvideosource          Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65539
+
+###############################################################################
+#
+# IRIX6.2 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# EXT_import_context extension commands
+#
+###############################################################################
+QueryContextInfoEXT(dpy, context, attribute, value)
+       return           Int32
+       param           dpy             DisplayPointer in value
+       param           context         GLXContext in value
+       param           attribute       Int32 in value
+       param           value           Int32 out reference
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxvendorglx     1024
+
+###############################################################################
+#
+# SGIX_fbconfig extension commands
+#
+###############################################################################
+GetFBConfigsSGIX()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxvendorglx     65540
+
+CreateContextWithConfigSGIX(dpy, config, renderType, share_list, allow_direct)
+       return           GLXContext
+       param            dpy            DisplayPointer in value
+       param            config         GLXFBConfigSGIX in value
+       param            renderType     Int32 in value
+       param            share_list     GLXContext in value
+       param            allow_direct   Bool in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxvendorglx     65541
+
+CreateGLXPixmapWithConfigSGIX(dpy, config, pixmap, attriblist)
+       return          GLXPixmap
+       param           dpy             DisplayPointer in value
+       param           config          GLXFBConfigSGIX in value
+       param           pixmap          Pixmap in value
+       param           attriblist      Int32 in array
+       category        glx
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65542
+
+###############################################################################
+#
+# SGIX_pbuffer extension commands
+#
+###############################################################################
+
+CreateGLXPbufferSGIX(dpy, config, width, height, attriblist)
+       return           GLXPbuffer
+       param            dpy            DisplayPointer in value
+       param            config         GLXFBConfig in value
+       param            width          UInt32 in value
+       param            height         UInt32 in value
+       param            attriblist     Int32 in array
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       category         glx
+       glxvendorglx     65543
+
+DestroyGLXPbufferSGIX(dpy, pbuffer)
+       return           void
+       param            dpy            DisplayPointer in value
+       param            pbuffer        GLXPbuffer in value
+       dlflags          notlistable
+       glxflags         client-handcode
+       category         glx
+       glxvendorglx     65544
+
+ChangeDrawableAttributesSGIX(drawable)
+       return           void
+       param            drawable       Int32 in value
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       category         glx
+       glxvendorglx     65545
+
+GetDrawableAttributesSGIX(drawable)
+       return           void
+       param            drawable       Int32 in value
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       category         glx
+       glxvendorglx     65546
+
+###############################################################################
+#
+# SGIX_swap_group extension commands
+#
+###############################################################################
+
+JoinSwapGroupSGIX(dpy, drawable, member)
+       return          void
+       param           dpy             DisplayPointer in value
+       param           drawable        GLXDrawable in value
+       param           member          GLXDrawable in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65547
+
+###############################################################################
+#
+# SGIX_swap_barrier extension commands
+#
+###############################################################################
+
+BindSwapBarrierSGIX(dpy, drawable, barrier)
+       return          void
+       param           dpy             DisplayPointer in value
+       param           drawable        GLXDrawable in value
+       param           barrier         Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65548
+
+QueryMaxSwapBarriersSGIX(dpy, screen, max)
+       return          Bool
+       param           dpy             DisplayPointer in value
+       param           screen          Int32 in value
+       param           max             Int32 out value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65549
+
+###############################################################################
+#
+# SGIX_hyperpipe extension commands
+#
+###############################################################################
+
+QueryHyperpipeNetworkSGIX(dpy, npipes)
+       return          GLXHyperpipeNetworkPointer
+       param           dpy             Display out reference
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65550
+
+HyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           networkId       int in value
+       param           npipes          int in value
+       param           cfg             GLXHyperpipeConfig in array[npipes]
+       param           hpId            int out reference
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65552
+
+QueryHyperpipeConfigSGIX(dpy, hpId, npipes)
+       return          GLXHyperpipeConfigPointer
+       param           dpy             Display out reference
+       param           hpId            int in value
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65551
+
+DestroyHyperpipeConfigSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65553
+
+BindHyperpipeSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
+
+QueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      Void in array[size]
+       param           returnAttribList Void out array[size]
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
+
+HyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      void in array[size]
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
+
+QueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           returnAttribList void in array[size]
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
diff --git a/glx.tm b/glx.tm
new file mode 100644 (file)
index 0000000..7ba7c61
--- /dev/null
+++ b/glx.tm
@@ -0,0 +1,53 @@
+Bool,*,*,                  Bool,*,*
+Colormap,*,*,              Colormap,*,*
+DMbuffer,*,*,              DMbuffer,*,*
+DMparams,*,*,              DMparams,*,*
+Display,*,reference,       Display *,*,value
+DisplayPointer,*,*,        Display *,*,*
+FunctionPointer,*,*,       __GLXextFuncPtr,*,*
+GLXContext,*,*,                    GLXContext,*,*
+constGLXContext,*,*,       const GLXContext,*,*
+GLXContextID,*,*,          GLXContextID,*,*
+GLXDrawable,*,*,           GLXDrawable,*,*
+GLXFBConfig,*,*,           GLXFBConfig,*,*
+GLXFBConfigPointer,*,*,     GLXFBConfig *,*,*
+GLXFBConfigSGIX,*,*,       GLXFBConfigSGIX,*,*
+GLXFBConfigSGIXPointer,*,*, GLXFBConfigSGIX *,*,*
+GLXHyperpipeNetworkSGIXPointer,*,*, GLXHyperpipeNetworkSGIX *,*,*
+GLXHyperpipeConfigSGIX,*,*,        GLXHyperpipeConfigSGIX,*,*
+GLXHyperpipeConfigSGIXPointer,*,*,  GLXHyperpipeConfigSGIX *,*,*
+GLXPbuffer,*,*,                    GLXPbuffer,*,*
+GLXPbufferSGIX,*,*,        GLXPbufferSGIX,*,*
+GLXPixmap,*,*,             GLXPixmap,*,*
+GLXVideoCaptureDeviceNV,*,*,       GLXVideoCaptureDeviceNV,*,*
+GLXVideoCaptureDeviceNVPointer,*,*, GLXVideoCaptureDeviceNV *,*,*
+GLXVideoDeviceNV,*,*,      GLXVideoDeviceNV,*,*
+GLXVideoSourceSGIX,*,*,     GLXVideoSourceSGIX,*,*
+GLXWindow,*,*,             GLXWindow,*,*
+GLXstring,*,*,             const char *,*,*
+GLboolean,*,*,             GLboolean,*,*
+GLenum,*,*,                GLenum,*,*
+GLfunction,*,*,                    GLfunction,*,*
+GLint,*,*,                 GLint,*,*
+GLsizei,*,*,               GLsizei,*,*
+GLubyte,*,*,               GLubyte,*,*
+GLuint,*,*,                GLuint,*,*
+Pixmap,*,*,                Pixmap,*,*
+Status,*,*,                Status,*,*
+Uint,*,*,                  unsigned int,*,*
+VLNode,*,*,                VLNode,*,*
+VLPath,*,*,                VLPath,*,*
+VLServer,*,*,              VLServer,*,*
+Window,*,*,                Window,*,*
+Font,*,*,                  Font,*,*
+XVisualInfo,*,*,           XVisualInfo,*,*
+XVisualInfoPointer,*,*,     XVisualInfo *,*,*
+float,*,*,                 float,*,*
+int,*,*,                   int,*,*
+uint,*,*,                  unsigned int,*,*
+uintPointer,*,*,           unsigned int *,*,*
+int32_t,*,*,               int32_t,*,*
+int64_t,*,*,               int64_t,*,*
+long,*,*,                  long,*,*
+ulong,*,*,                 unsigned long,*,*
+void,*,*,                  void,*,*
diff --git a/glxext.spec b/glxext.spec
new file mode 100644 (file)
index 0000000..7483b4d
--- /dev/null
@@ -0,0 +1,1320 @@
+# glxext.spec file
+# DON'T REMOVE PREVIOUS LINE!!! libspec depends on it!
+#
+# Copyright (C) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+
+required-props:
+param:         retval retained
+glxflags:      client-handcode client-intercept server-handcode
+glxvendorglx:  *
+vectorequiv:   *
+category:      VERSION_1_3 VERSION_1_4 ARB_get_proc_address ARB_multisample ARB_fbconfig_float EXT_import_context SGIX_dmbuffer SGIX_fbconfig SGIX_pbuffer SGIX_swap_barrier SGIX_swap_group SGIX_video_resize SGIX_video_source SGI_cushion SGI_make_current_read SGI_swap_control SGI_video_sync SUN_get_transparent_index MESA_agp_offset MESA_copy_sub_buffer MESA_pixmap_colormap MESA_release_buffers MESA_set_3dfx_mode SGIX_visual_select_group OML_sync_control SGIX_hyperpipe EXT_texture_from_pixmap NV_swap_group NV_video_output NV_present_video ARB_create_context NV_video_capture NV_copy_image
+glxopcode:     *
+
+#
+# Boilerplate to define types used by some extensions. This is done
+#   up front, since it involves some complexities in protecting
+#   the declarations whether or not the -protect flag is given to
+#   the generator scripts.
+#
+
+passthru: #ifndef GLX_ARB_get_proc_address
+passthru: typedef void (*__GLXextFuncPtr)(void);
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_video_source
+passthru: typedef XID GLXVideoSourceSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_fbconfig
+passthru: typedef XID GLXFBConfigIDSGIX;
+passthru: typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_pbuffer
+passthru: typedef XID GLXPbufferSGIX;
+passthru: typedef struct {
+passthru:     int type;
+passthru:     unsigned long serial;      /* # of last request processed by server */
+passthru:     Bool send_event;           /* true if this came for SendEvent request */
+passthru:     Display *display;                  /* display the event was read from */
+passthru:     GLXDrawable drawable;      /* i.d. of Drawable */
+passthru:     int event_type;            /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
+passthru:     int draw_type;             /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
+passthru:     unsigned int mask;         /* mask indicating which buffers are affected*/
+passthru:     int x, y;
+passthru:     int width, height;
+passthru:     int count;                 /* if nonzero, at least this many more */
+passthru: } GLXBufferClobberEventSGIX;
+passthru: #endif
+passthru:
+passthru: /* The next two typedefs are placeholders until NVIDIA clarifies these types */
+passthru: #ifndef GLX_NV_video_output
+passthru: typedef struct { unsigned int dummy; } *GLXVideoDeviceNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_NV_video_capture
+passthru: typedef struct { unsigned int dummy; } *GLXVideoCaptureDeviceNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLEXT_64_TYPES_DEFINED
+passthru: /* This code block is duplicated in glext.h, so must be protected */
+passthru: #define GLEXT_64_TYPES_DEFINED
+passthru: /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+passthru: /* (as used in the GLX_OML_sync_control extension). */
+passthru: #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+passthru: #include <inttypes.h>
+passthru: #elif defined(__sun__) || defined(__digital__)
+passthru: #include <inttypes.h>
+passthru: #if defined(__STDC__)
+passthru: #if defined(__arch64__) || defined(_LP64)
+passthru: typedef long int int64_t;
+passthru: typedef unsigned long int uint64_t;
+passthru: #else
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #endif /* __arch64__ */
+passthru: #endif /* __STDC__ */
+passthru: #elif defined( __VMS ) || defined(__sgi)
+passthru: #include <inttypes.h>
+passthru: #elif defined(__SCO__) || defined(__USLC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(__UNIXOS2__) || defined(__SOL64__)
+passthru: typedef long int int32_t;
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #elif defined(_WIN32) && defined(__GNUC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(_WIN32)
+passthru: typedef __int32 int32_t;
+passthru: typedef __int64 int64_t;
+passthru: typedef unsigned __int64 uint64_t;
+passthru: #else
+passthru: #include <inttypes.h>     /* Fallback option */
+passthru: #endif
+passthru: #endif
+passthru:
+
+###############################################################################
+#
+# GLX 1.3 commands
+#
+###############################################################################
+
+GetFBConfigs(dpy, screen, nelements)
+       return          GLXFBConfigPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           nelements       int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       21
+
+ChooseFBConfig(dpy, screen, attrib_list, nelements)
+       return          GLXFBConfigPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           attrib_list     int in reference
+       param           nelements       int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+GetFBConfigAttrib(dpy, config, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+GetVisualFromFBConfig(dpy, config)
+       return          XVisualInfoPointer
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+CreateWindow(dpy, config, win, attrib_list)
+       return          GLXWindow
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           win             Window in value
+       param           attrib_list     int in reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       31
+
+DestroyWindow(dpy, win)
+       return          void
+       param           dpy             Display out reference
+       param           win             GLXWindow in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       32
+
+CreatePixmap(dpy, config, pixmap, attrib_list)
+       return          GLXPixmap
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           pixmap          Pixmap in value
+       param           attrib_list     int in reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       22
+
+DestroyPixmap(dpy, pixmap)
+       return          void
+       param           dpy             Display out reference
+       param           pixmap          GLXPixmap in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       23
+
+CreatePbuffer(dpy, config, attrib_list)
+       return          GLXPbuffer
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           attrib_list     int in reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       27
+
+DestroyPbuffer(dpy, pbuf)
+       return          void
+       param           dpy             Display out reference
+       param           pbuf            GLXPbuffer in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       28
+
+# glXGetDrawableAttributes -> GLX opcode 29
+# glXChangeDrawableAttributes -> GLX opcode 30
+
+# Uses glXGetDrawableAttributes protocol
+QueryDrawable(dpy, draw, attribute, value)
+       return          void
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           attribute       int in value
+       param           value           uint out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+CreateNewContext(dpy, config, render_type, share_list, direct)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           render_type     int in value
+       param           share_list      GLXContext in value
+       param           direct          Bool in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       24
+
+MakeContextCurrent(dpy, draw, read, ctx)
+       return          Bool
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           read            GLXDrawable in value
+       param           ctx             GLXContext in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       26
+
+GetCurrentReadDrawable()
+       return          GLXDrawable
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+GetCurrentDisplay()
+       return          DisplayPointer
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+QueryContext(dpy, ctx, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           ctx             GLXContext in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       25
+
+# Uses glXChangeDrawableAttributes protocol
+SelectEvent(dpy, draw, event_mask)
+       return          void
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           event_mask      ulong in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+
+# Uses glXGetDrawableAttributes protocol
+GetSelectedEvent(dpy, draw, event_mask)
+       return          void
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           event_mask      ulong out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# GLX 1.4 commands
+#
+###############################################################################
+
+GetProcAddress(procName)
+       return          FunctionPointer
+       param           procName        GLubyte in reference
+       category        VERSION_1_4
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# ARB Extension #2
+# ARB_get_proc_address commands
+# @promoted to core in GLX 1.4, but there's no provision for aliasing
+# @in GLX spec files, yet
+#
+###############################################################################
+
+GetProcAddressARB(procName)
+       return          FunctionPointer
+       param           procName        GLubyte in reference
+       category        ARB_get_proc_address
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# ARB Extension #5
+# ARB_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_multisample
+
+###############################################################################
+#
+# ARB Extension #39
+# ARB_fbconfig_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fbconfig_float
+
+###############################################################################
+#
+# ARB Extension #56
+# ARB_create_context commands
+#
+###############################################################################
+
+CreateContextAttribsARB(dpy, config, share_context, direct, attrib_list)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           share_context   GLXContext in value
+       param           direct          Bool in value
+       param           attrib_list     int in reference
+       category        ARB_create_context
+       glxflags        client-handcode client-intercept server-handcode
+       glxopcode       34
+
+###############################################################################
+#
+# ARB Extension #75
+# ARB_create_context_profile commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_create_context_profile
+
+
+###############################################################################
+#
+# Extension #25
+# SGIS_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_multisample
+
+###############################################################################
+#
+# Extension #28
+# EXT_visual_info commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_visual_info
+
+###############################################################################
+#
+# Extension #40
+# SGI_swap_control commands
+#
+###############################################################################
+
+SwapIntervalSGI(interval)
+       return          int
+       param           interval        int in value
+       category        SGI_swap_control
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65536
+
+###############################################################################
+#
+# Extension #41
+# SGI_video_sync commands
+#
+###############################################################################
+
+GetVideoSyncSGI(count)
+       return          int
+       param           count           uint out reference
+       category        SGI_video_sync
+       glxflags        client-handcode client-intercept server-handcode
+
+WaitVideoSyncSGI(divisor, remainder, count)
+       return          int
+       param           divisor         int in value
+       param           remainder       int in value
+       param           count           uint out reference
+       category        SGI_video_sync
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #42
+# SGI_make_current_read commands
+#
+###############################################################################
+
+MakeCurrentReadSGI(dpy, draw, read, ctx)
+       return          Bool
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           read            GLXDrawable in value
+       param           ctx             GLXContext in value
+       category        SGI_make_current_read
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65537
+
+GetCurrentReadDrawableSGI()
+       return          GLXDrawable
+       category        SGI_make_current_read
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #43
+# SGIX_video_source commands
+#
+###############################################################################
+
+newcategory: SGIX_video_source
+passthru: #ifdef _VL_H
+
+CreateGLXVideoSourceSGIX(display, screen, server, path, nodeClass, drainNode)
+       return          GLXVideoSourceSGIX
+       param           display         Display out reference
+       param           screen          int in value
+       param           server          VLServer in value
+       param           path            VLPath in value
+       param           nodeClass       int in value
+       param           drainNode       VLNode in value
+       category        SGIX_video_source
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65538
+
+DestroyGLXVideoSourceSGIX(dpy, glxvideosource)
+       return          void
+       param           dpy             Display out reference
+       param           glxvideosource  GLXVideoSourceSGIX in value
+       category        SGIX_video_source
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65539
+
+passend: #endif /* _VL_H */
+endcategory:
+
+###############################################################################
+#
+# Extension #44
+# EXT_visual_rating commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_visual_rating
+
+###############################################################################
+#
+# Extension #47
+# EXT_import_context commands
+#
+###############################################################################
+
+GetCurrentDisplayEXT()
+       return          DisplayPointer
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+QueryContextInfoEXT(dpy, context, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           context         GLXContext in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        EXT_import_context
+       glxflags        client-handcode server-handcode
+       glxvendorglx    1024
+
+# 'constGLXContext' is a hack; the extension specification and glx.h
+# should be fixed instead.
+GetContextIDEXT(context)
+       return          GLXContextID
+       param           context         constGLXContext in value
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+ImportContextEXT(dpy, contextID)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           contextID       GLXContextID in value
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+FreeContextEXT(dpy, context)
+       return          void
+       param           dpy             Display out reference
+       param           context         GLXContext in value
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #49
+# SGIX_fbconfig commands
+#
+###############################################################################
+
+# GetFBConfigsSGIX protocol -> VendorPrivate opcode 65540
+
+GetFBConfigAttribSGIX(dpy, config, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+ChooseFBConfigSGIX(dpy, screen, attrib_list, nelements)
+       return          GLXFBConfigSGIXPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           attrib_list     int out reference
+       param           nelements       int out reference
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+CreateGLXPixmapWithConfigSGIX(dpy, config, pixmap)
+       return          GLXPixmap
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           pixmap          Pixmap in value
+       category        SGIX_fbconfig
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65542
+
+CreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           render_type     int in value
+       param           share_list      GLXContext in value
+       param           direct          Bool in value
+       category        SGIX_fbconfig
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65541
+
+GetVisualFromFBConfigSGIX(dpy, config)
+       return          XVisualInfoPointer
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+GetFBConfigFromVisualSGIX(dpy, vis)
+       return          GLXFBConfigSGIX
+       param           dpy             Display out reference
+       param           vis             XVisualInfo out reference
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #50
+# SGIX_pbuffer commands
+#
+###############################################################################
+
+# ChangeDrawableAttributesSGIX protocol -> VendorPrivate opcode 65545
+# GetDrawableAttributesSGIX protocol -> VendorPrivate opcode 65546
+
+CreateGLXPbufferSGIX(dpy, config, width,  height, attrib_list)
+       return          GLXPbufferSGIX
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           width           uint in value
+       param           height          uint in value
+       param           attrib_list     int out reference
+       category        SGIX_pbuffer
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65543
+
+DestroyGLXPbufferSGIX(dpy, pbuf)
+       return          void
+       param           dpy             Display out reference
+       param           pbuf            GLXPbufferSGIX in value
+       category        SGIX_pbuffer
+       glxflags        client-handcode
+       glxvendorglx    65544
+
+QueryGLXPbufferSGIX(dpy, pbuf, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           pbuf            GLXPbufferSGIX in value
+       param           attribute       int in value
+       param           value           uint out reference
+       category        SGIX_pbuffer
+
+SelectEventSGIX(dpy, drawable, mask)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           mask            ulong in value
+       category        SGIX_pbuffer
+
+GetSelectedEventSGIX(dpy, drawable, mask)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           mask            ulong out reference
+       category        SGIX_pbuffer
+
+###############################################################################
+#
+# Extension #62
+# SGI_cushion commands
+#
+###############################################################################
+
+CushionSGI(dpy, window, cushion)
+       return          void
+       param           dpy             Display out reference
+       param           window          Window in value
+       param           cushion         float in value
+       category        SGI_cushion
+
+###############################################################################
+#
+# Extension #83
+# SGIX_video_resize commands
+#
+###############################################################################
+
+BindChannelToWindowSGIX(display, screen, channel, window)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           window          Window in value
+       category        SGIX_video_resize
+
+ChannelRectSGIX(display, screen, channel, x, y, w, h)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           x               int in value
+       param           y               int in value
+       param           w               int in value
+       param           h               int in value
+       category        SGIX_video_resize
+
+QueryChannelRectSGIX(display, screen, channel, dx, dy, dw, dh)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           dx              int out reference
+       param           dy              int out reference
+       param           dw              int out reference
+       param           dh              int out reference
+       category        SGIX_video_resize
+
+QueryChannelDeltasSGIX(display, screen, channel, x, y, w, h)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           x               int out reference
+       param           y               int out reference
+       param           w               int out reference
+       param           h               int out reference
+       category        SGIX_video_resize
+
+# @@@ Not in man page - this entry point may not be shipping?
+ChannelRectSyncSGIX(display, screen, channel, synctype)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           synctype        GLenum in value
+       category        SGIX_video_resize
+
+###############################################################################
+#
+# Extension #86
+# SGIX_dmbuffer commands
+#
+###############################################################################
+
+newcategory: SGIX_dmbuffer
+passthru: #ifdef _DM_BUFFER_H_
+
+AssociateDMPbufferSGIX(dpy, pbuffer, params, dmbuffer)
+       return          Bool
+       param           dpy             Display out reference
+       param           pbuffer         GLXPbufferSGIX in value
+       param           params          DMparams out reference
+       param           dmbuffer        DMbuffer in value
+       category        SGIX_dmbuffer
+
+passend: #endif /* _DM_BUFFER_H_ */
+endcategory:
+
+###############################################################################
+#
+# Extension #91
+# SGIX_swap_group commands
+#
+###############################################################################
+
+JoinSwapGroupSGIX(dpy, drawable, member)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           member          GLXDrawable in value
+       category        SGIX_swap_group
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65547
+
+###############################################################################
+#
+# Extension #92
+# SGIX_swap_barrier commands
+#
+###############################################################################
+
+BindSwapBarrierSGIX(dpy, drawable, barrier)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           barrier         int in value
+       category        SGIX_swap_barrier
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65548
+
+QueryMaxSwapBarriersSGIX(dpy, screen, max)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           max             int out reference
+       category        SGIX_swap_barrier
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65549
+
+###############################################################################
+#
+# Extension #183
+# SUN_get_transparent_index commands
+#
+###############################################################################
+
+GetTransparentIndexSUN(dpy, overlay, underlay, pTransparentIndex)
+       return          Status
+       param           dpy             Display out reference
+       param           overlay         Window in value
+       param           underlay        Window in value
+       param           pTransparentIndex       long out reference
+       category        SUN_get_transparent_index
+
+###############################################################################
+#
+# Extension #215
+# MESA_copy_sub_buffer commands
+#
+###############################################################################
+
+CopySubBufferMESA(dpy, drawable, x, y, width, height)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           x               int in value
+       param           y               int in value
+       param           width           int in value
+       param           height          int in value
+       category        MESA_copy_sub_buffer
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #216
+# MESA_pixmap_colormap commands
+#
+###############################################################################
+
+CreateGLXPixmapMESA(dpy, visual, pixmap, cmap)
+       return          GLXPixmap
+       param           dpy             Display out reference
+       param           visual          XVisualInfo out reference
+       param           pixmap          Pixmap in value
+       param           cmap            Colormap in value
+       category        MESA_pixmap_colormap
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #217
+# MESA_release_buffers commands
+#
+###############################################################################
+
+ReleaseBuffersMESA(dpy, drawable)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       category        MESA_release_buffers
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #218
+# MESA_set_3dfx_mode commands
+#
+###############################################################################
+
+# Brian's spec has this as returning 'GLboolean' and taking 'GLint mode'
+Set3DfxModeMESA(mode)
+       return          Bool
+       param           mode            int in value
+       category        MESA_set_3dfx_mode
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #234
+# SGIX_visual_select_group commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_visual_select_group
+
+###############################################################################
+#
+# Extension #237
+# OML_swap_method commands
+#
+###############################################################################
+
+# (none)
+newcategory:  OML_swap_method
+
+###############################################################################
+#
+# Extension #238
+# OML_sync_control commands
+#
+###############################################################################
+
+GetSyncValuesOML(dpy, drawable, ust, msc, sbc)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           ust             int64_t out reference
+       param           msc             int64_t out reference
+       param           sbc             int64_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+GetMscRateOML(dpy, drawable, numerator, denominator)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           numerator       int32_t out reference
+       param           denominator     int32_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+SwapBuffersMscOML(dpy, drawable, target_msc, divisor, remainder)
+       return          int64_t
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           target_msc      int64_t in value
+       param           divisor         int64_t in value
+       param           remainder       int64_t in value
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+WaitForMscOML(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           target_msc      int64_t in value
+       param           divisor         int64_t in value
+       param           remainder       int64_t in value
+       param           ust             int64_t out reference
+       param           msc             int64_t out reference
+       param           sbc             int64_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+WaitForSbcOML(dpy, drawable, target_sbc, ust, msc, sbc)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           target_sbc      int64_t in value
+       param           ust             int64_t out reference
+       param           msc             int64_t out reference
+       param           sbc             int64_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #281
+# NV_float_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_float_buffer
+
+###############################################################################
+#
+# Extension #307
+# SGIX_hyperpipe commands
+#
+###############################################################################
+
+newcategory: SGIX_hyperpipe
+passthru:
+passthru: typedef struct {
+passthru:     char    pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int     networkId;
+passthru: } GLXHyperpipeNetworkSGIX;
+passthru:
+passthru: typedef struct {
+passthru:     char    pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int     channel;
+passthru:     unsigned int
+passthru:            participationType;
+passthru:     int     timeSlice;
+passthru: } GLXHyperpipeConfigSGIX;
+passthru:
+passthru: typedef struct {
+passthru:     char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
+passthru:     int destXOrigin, destYOrigin, destWidth, destHeight;
+passthru: } GLXPipeRect;
+passthru:
+passthru: typedef struct {
+passthru:     char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int XOrigin, YOrigin, maxHeight, maxWidth;
+passthru: } GLXPipeRectLimits;
+passthru:
+
+QueryHyperpipeNetworkSGIX(dpy, npipes)
+       return          GLXHyperpipeNetworkSGIXPointer
+       param           dpy             Display out reference
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65550
+
+HyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           networkId       int in value
+       param           npipes          int in value
+       param           cfg             GLXHyperpipeConfigSGIX out array [COMPSIZE(npipes)]
+       param           hpId            int out reference
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65552
+
+QueryHyperpipeConfigSGIX(dpy, hpId, npipes)
+       return          GLXHyperpipeConfigSGIXPointer
+       param           dpy             Display out reference
+       param           hpId            int in value
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65551
+
+DestroyHyperpipeConfigSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65553
+
+BindHyperpipeSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+QueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      void out array [COMPSIZE(size)]
+       param           returnAttribList void out array [COMPSIZE(size)]
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+HyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      void out array [COMPSIZE(size)]
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+QueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           returnAttribList void out array [COMPSIZE(size)]
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+###############################################################################
+#
+# Extension #308
+# MESA_agp_offset commands
+#
+###############################################################################
+
+GetAGPOffsetMESA(pointer)
+       return          uint
+       param           pointer         void in reference
+       glxflags        client-handcode client-intercept server-handcode
+       category        MESA_agp_offset
+
+###############################################################################
+#
+# Extension #328
+# EXT_fbconfig_packed_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_fbconfig_packed_float
+
+###############################################################################
+#
+# Extension #337
+# EXT_framebuffer_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_framebuffer_sRGB
+
+###############################################################################
+#
+# Extension #344
+# EXT_texture_from_pixmap commands
+#
+###############################################################################
+
+BindTexImageEXT(dpy, drawable, buffer, attrib_list)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           buffer          int in value
+       param           attrib_list     int in reference
+       category        EXT_texture_from_pixmap
+       glxflags        client-handcode server-handcode
+       glxvendorglx    1330
+
+ReleaseTexImageEXT(dpy, drawable, buffer)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           buffer          int in value
+       category        EXT_texture_from_pixmap
+       glxflags        client-handcode server-handcode
+       glxvendorglx    1331
+
+###############################################################################
+#
+# Extension #347
+# NV_present_video commands
+#
+###############################################################################
+
+EnumerateVideoDevicesNV(dpy, screen, nelements)
+       return          uintPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           nelements       int out reference
+       category        NV_present_video
+       glxflags        client-handcode server-handcode
+
+BindVideoDeviceNV(dpy, video_slot, video_device, attrib_list)
+       return          int
+       param           dpy             Display out reference
+       param           video_slot      uint in value
+       param           video_device    uint in value
+       param           attrib_list     int in reference
+       category        NV_present_video
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #348
+# NV_video_output commands
+#
+###############################################################################
+
+GetVideoDeviceNV(dpy, screen, numVideoDevices, pVideoDevice)
+       return          int
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           numVideoDevices int in value
+       param           pVideoDevice    GLXVideoDeviceNV out array [COMPSIZE(numVideoDevices)]
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+ReleaseVideoDeviceNV(dpy, screen, VideoDevice)
+       return          int
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           VideoDevice     GLXVideoDeviceNV in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+BindVideoImageNV(dpy, VideoDevice, pbuf, iVideoBuffer)
+       return          int
+       param           dpy             Display out reference
+       param           VideoDevice     GLXVideoDeviceNV in value
+       param           pbuf            GLXPbuffer in value
+       param           iVideoBuffer    int in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+ReleaseVideoImageNV(dpy, pbuf)
+       return          int
+       param           dpy             Display out reference
+       param           pbuf            GLXPbuffer in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+SendPbufferToVideoNV(dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock)
+       return          int
+       param           dpy             Display out reference
+       param           pbuf            GLXPbuffer in value
+       param           iBufferType     int in value
+       param           pulCounterPbuffer ulong out reference
+       param           bBlock          GLboolean in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+GetVideoInfoNV(dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo)
+       return          int
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           VideoDevice     GLXVideoDeviceNV in value
+       param           pulCounterOutputPbuffer ulong out reference
+       param           pulCounterOutputVideo   ulong out reference
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #350
+# NV_swap_group commands
+#
+###############################################################################
+
+JoinSwapGroupNV(dpy, drawable, group)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           group           GLuint in value
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+BindSwapBarrierNV(dpy, group, barrier)
+       return          Bool
+       param           dpy             Display out reference
+       param           group           GLuint in value
+       param           barrier         GLuint in value
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+QuerySwapGroupNV(dpy, drawable, group, barrier)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           group           GLuint out reference
+       param           barrier         GLuint out reference
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+QueryMaxSwapGroupsNV(dpy, screen, maxGroups, maxBarriers)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           maxGroups       GLuint out reference
+       param           maxBarriers     GLuint out reference
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+QueryFrameCountNV(dpy, screen, count)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           count           GLuint out reference
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+ResetFrameCountNV(dpy, screen)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #374
+# NV_video_capture commands
+#
+###############################################################################
+
+BindVideoCaptureDeviceNV(dpy, video_capture_slot, device)
+       return          int
+       param           dpy             Display out reference
+       param           video_capture_slot uint in value
+       param           device          GLXVideoCaptureDeviceNV in value
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+EnumerateVideoCaptureDevicesNV(dpy, screen, nelements)
+       return          GLXVideoCaptureDeviceNVPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           nelements       int out reference
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+LockVideoCaptureDeviceNV(dpy, device)
+       return          void
+       param           dpy             Display out reference
+       param           device          GLXVideoCaptureDeviceNV in value
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+QueryVideoCaptureDeviceNV(dpy, device, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           device          GLXVideoCaptureDeviceNV in value
+       param           attribute       int in value
+       param           value           int out array [COMPSIZE(attribute)]
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+ReleaseVideoCaptureDeviceNV(dpy, device)
+       return          void
+       param           dpy             Display out reference
+       param           device          GLXVideoCaptureDeviceNV in value
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #375
+# EXT_swap_control commands
+#
+###############################################################################
+
+# Enums not assigned, extension not ready to publish yet
+# SwapIntervalEXT(dpy, drawable, interval)
+#        return          int
+#        param           dpy             Display out reference
+#        param           drawable        GLXDrawable in value
+#        param           interval        int in value
+#        category        EXT_swap_control
+#        glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #376
+# GLX_NV_copy_image commands
+#
+###############################################################################
+
+CopyImageSubDataNV(dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth)
+       return          void
+       param           dpy             Display out reference
+       param           srcCtx          GLXContext in value
+       param           srcName         GLuint in value
+       param           srcTarget       GLenum in value
+       param           srcLevel        GLint in value
+       param           srcX            GLint in value
+       param           srcY            GLint in value
+       param           srcZ            GLint in value
+       param           dstCtx          GLXContext in value
+       param           dstName         GLuint in value
+       param           dstTarget       GLenum in value
+       param           dstLevel        GLint in value
+       param           dstX            GLint in value
+       param           dstY            GLint in value
+       param           dstZ            GLint in value
+       param           width           GLsizei in value
+       param           height          GLsizei in value
+       param           depth           GLsizei in value
+       category        NV_copy_image
+       glxflags        client-handcode server-handcode
+
index d97c0b3ff45fd30bdc1232114123d6c84df64dce..9eb7d89c83906127399c53cf0b721c23e5895e05 100644 (file)
@@ -9,6 +9,7 @@ Distributed under the GPL
 #define GLDECODER_H_
 
 #include <GL/gl.h>
+#include <GL/glx.h>
 
 #ifdef __cplusplus
 extern "C" {
index 59bf1fb12cedc3333a77abf1e1a044edf26edc22..224a0faacbfda31f33e75691d5674875aafa2302 100644 (file)
@@ -10,7 +10,9 @@ Distributed under the GPL
 #include <string.h>
 #include <dlfcn.h>
 #include <sys/uio.h>
+#include <X11/Xlib.h>
 #include <GL/gl.h>
+#include <GL/glx.h>
 #include "functions.h"
 
 static inline void *glsym(const char *sym)