blob: 80548c4ccc0bac52d71fae82809dd7d66c5da5dc [file] [log] [blame]
José Fonseca99771fc2010-11-25 20:32:59 +00001##########################################################################
2#
3# Copyright 2008-2009 VMware, Inc.
4# All Rights Reserved.
5#
6# Permission is hereby granted, free of charge, to any person obtaining a copy
7# of this software and associated documentation files (the "Software"), to deal
8# in the Software without restriction, including without limitation the rights
9# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10# copies of the Software, and to permit persons to whom the Software is
11# furnished to do so, subject to the following conditions:
12#
13# The above copyright notice and this permission notice shall be included in
14# all copies or substantial portions of the Software.
15#
16# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22# THE SOFTWARE.
23#
24##########################################################################/
25
José Fonseca4a826ed2010-11-30 16:58:22 +000026"""GLX API description."""
27
José Fonseca99771fc2010-11-25 20:32:59 +000028
29from stdapi import *
30from glapi import glapi
31
José Fonsecae90885a2010-11-26 15:01:18 +000032VisualID = Alias("VisualID", UInt32)
José Fonsecae90885a2010-11-26 15:01:18 +000033Display = Opaque("Display *")
34Visual = Opaque("Visual *")
Zack Rusinf3f2e462011-03-23 18:35:39 -040035Font = Alias("Font", UInt32)
36Pixmap = Alias("Pixmap", UInt32)
37Window = Alias("Window", UInt32)
38
39GLXContext = Opaque("GLXContext")
40GLXPixmap = Alias("GLXPixmap", UInt32)
41GLXDrawable = Alias("GLXDrawable", UInt32)
42GLXFBConfig = Opaque("GLXFBConfig")
43GLXFBConfigID = Alias("GLXFBConfigID", UInt32)
44GLXContextID = Alias("GLXContextID", UInt32)
45GLXWindow = Alias("GLXWindow", UInt32)
46GLXPbuffer = Alias("GLXPbuffer", UInt32)
José Fonsecae90885a2010-11-26 15:01:18 +000047
48XVisualInfo = Struct("XVisualInfo", [
49 (Visual, "visual"),
50 (VisualID, "visualid"),
51 (Int, "screen"),
52 (Int, "depth"),
53 (Int, "c_class"),
54 (ULong, "red_mask"),
55 (ULong, "green_mask"),
56 (ULong, "blue_mask"),
57 (Int, "colormap_size"),
58 (Int, "bits_per_rgb"),
59])
60
José Fonseca32871ed2011-04-10 13:40:52 +010061Bool_ = FakeEnum(Int, [
José Fonseca0d4ef5b2011-03-27 12:45:40 +010062 "False",
63 "True",
64])
65
66GLXAttrib = FakeEnum(Int, [
67 "GLX_USE_GL",
68 "GLX_BUFFER_SIZE",
69 "GLX_LEVEL",
70 "GLX_RGBA",
71 "GLX_DOUBLEBUFFER",
72 "GLX_STEREO",
73 "GLX_AUX_BUFFERS",
74 "GLX_RED_SIZE",
75 "GLX_GREEN_SIZE",
76 "GLX_BLUE_SIZE",
77 "GLX_ALPHA_SIZE",
78 "GLX_DEPTH_SIZE",
79 "GLX_STENCIL_SIZE",
80 "GLX_ACCUM_RED_SIZE",
81 "GLX_ACCUM_GREEN_SIZE",
82 "GLX_ACCUM_BLUE_SIZE",
83 "GLX_ACCUM_ALPHA_SIZE",
José Fonsecaafffa742011-05-09 23:43:39 +010084
85 "GLX_CONFIG_CAVEAT", # 0x20
86 "GLX_X_VISUAL_TYPE", # 0x22
87 "GLX_TRANSPARENT_TYPE", # 0x23
88 "GLX_TRANSPARENT_INDEX_VALUE", # 0x24
89 "GLX_TRANSPARENT_RED_VALUE", # 0x25
90 "GLX_TRANSPARENT_GREEN_VALUE", # 0x26
91 "GLX_TRANSPARENT_BLUE_VALUE", # 0x27
92 "GLX_TRANSPARENT_ALPHA_VALUE", # 0x28
93
94 "GLX_NONE", # 0x8000
95 "GLX_SLOW_CONFIG", # 0x8001
96 "GLX_TRUE_COLOR", # 0x8002
97 "GLX_DIRECT_COLOR", # 0x8003
98 "GLX_PSEUDO_COLOR", # 0x8004
99 "GLX_STATIC_COLOR", # 0x8005
100 "GLX_GRAY_SCALE", # 0x8006
101 "GLX_STATIC_GRAY", # 0x8007
102 "GLX_TRANSPARENT_RGB", # 0x8008
103 "GLX_TRANSPARENT_INDEX", # 0x8009
104 "GLX_VISUAL_ID", # 0x800B
105 "GLX_SCREEN", # 0x800C
106 "GLX_NON_CONFORMANT_CONFIG", # 0x800D
107 "GLX_DRAWABLE_TYPE", # 0x8010
108 "GLX_RENDER_TYPE", # 0x8011
109 "GLX_X_RENDERABLE", # 0x8012
110 "GLX_FBCONFIG_ID", # 0x8013
111 "GLX_RGBA_TYPE", # 0x8014
112 "GLX_COLOR_INDEX_TYPE", # 0x8015
113 "GLX_MAX_PBUFFER_WIDTH", # 0x8016
114 "GLX_MAX_PBUFFER_HEIGHT", # 0x8017
115 "GLX_MAX_PBUFFER_PIXELS", # 0x8018
116 "GLX_PRESERVED_CONTENTS", # 0x801B
117 "GLX_LARGEST_PBUFFER", # 0x801C
118 "GLX_WIDTH", # 0x801D
119 "GLX_HEIGHT", # 0x801E
120 "GLX_EVENT_MASK", # 0x801F
121 "GLX_DAMAGED", # 0x8020
122 "GLX_SAVED", # 0x8021
123 "GLX_WINDOW", # 0x8022
124 "GLX_PBUFFER", # 0x8023
125 "GLX_PBUFFER_HEIGHT", # 0x8040
126 "GLX_PBUFFER_WIDTH", # 0x8041
127
128 "GLX_SAMPLE_BUFFERS", # 100000
129 "GLX_SAMPLES", # 100001
130
131 "GLX_DONT_CARE", # 0xFFFFFFFF
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100132])
133
134GLXError = FakeEnum(Int, [
135 "GLX_BAD_SCREEN",
136 "GLX_BAD_ATTRIBUTE",
137 "GLX_NO_EXTENSION",
138 "GLX_BAD_VISUAL",
139 "GLX_BAD_CONTEXT",
140 "GLX_BAD_VALUE",
141 "GLX_BAD_ENUM",
142])
143
José Fonseca64674062011-05-10 20:33:43 +0100144GLXname = FakeEnum(Int, [
145 "GLX_VENDOR",
146 "GLX_VERSION",
147 "GLX_EXTENSIONS",
148])
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100149
150GLXbuffer = Flags(Int, [
151 "GLX_WINDOW_BIT",
152 "GLX_PIXMAP_BIT",
153 "GLX_PBUFFER_BIT",
154 "GLX_AUX_BUFFERS_BIT",
155 "GLX_FRONT_LEFT_BUFFER_BIT",
156 "GLX_FRONT_RIGHT_BUFFER_BIT",
157 "GLX_BACK_LEFT_BUFFER_BIT",
158 "GLX_BACK_RIGHT_BUFFER_BIT",
159 "GLX_DEPTH_BUFFER_BIT",
160 "GLX_STENCIL_BUFFER_BIT",
161 "GLX_ACCUM_BUFFER_BIT",
162])
163
164GLXEnum = FakeEnum(Int, [
165 "GLX_NONE",
166 "GLX_SLOW_CONFIG",
167 "GLX_TRUE_COLOR",
168 "GLX_DIRECT_COLOR",
169 "GLX_PSEUDO_COLOR",
170 "GLX_STATIC_COLOR",
171 "GLX_GRAY_SCALE",
172 "GLX_STATIC_GRAY",
173 "GLX_TRANSPARENT_RGB",
174 "GLX_TRANSPARENT_INDEX",
175 "GLX_VISUAL_ID",
176 "GLX_SCREEN",
177 "GLX_NON_CONFORMANT_CONFIG",
178 "GLX_DRAWABLE_TYPE",
179 "GLX_RENDER_TYPE",
180 "GLX_X_RENDERABLE",
181 "GLX_FBCONFIG_ID",
182 "GLX_RGBA_TYPE",
183 "GLX_COLOR_INDEX_TYPE",
184 "GLX_MAX_PBUFFER_WIDTH",
185 "GLX_MAX_PBUFFER_HEIGHT",
186 "GLX_MAX_PBUFFER_PIXELS",
187 "GLX_PRESERVED_CONTENTS",
188 "GLX_LARGEST_PBUFFER",
189 "GLX_WIDTH",
190 "GLX_HEIGHT",
191 "GLX_EVENT_MASK",
192 "GLX_DAMAGED",
193 "GLX_SAVED",
194 "GLX_WINDOW",
195 "GLX_PBUFFER",
196 "GLX_PBUFFER_HEIGHT",
197 "GLX_PBUFFER_WIDTH",
198])
199
200GLXbuffer = Flags(Int, [
201 "GLX_RGBA_BIT",
202 "GLX_COLOR_INDEX_BIT",
203 "GLX_PBUFFER_CLOBBER_MASK",
204])
José Fonseca99771fc2010-11-25 20:32:59 +0000205
206glxapi = API("GLX")
207
208PROC = Opaque("__GLXextFuncPtr")
209
José Fonseca99771fc2010-11-25 20:32:59 +0000210glxapi.add_functions([
Zack Rusinf3f2e462011-03-23 18:35:39 -0400211 # GLX
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100212 Function(Pointer(XVisualInfo), "glXChooseVisual", [(Display, "dpy"), (Int, "screen"), (Array(GLXAttrib, "__AttribList_size(attribList)"), "attribList")]),
José Fonsecae90885a2010-11-26 15:01:18 +0000213 Function(GLXContext, "glXCreateContext", [(Display, "dpy"), (Pointer(XVisualInfo), "vis"), (GLXContext, "shareList"), (Bool_, "direct")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400214 Function(Void, "glXDestroyContext", [(Display, "dpy"), (GLXContext, "ctx")]),
215 Function(Bool_, "glXMakeCurrent", [(Display, "dpy"), (GLXDrawable, "drawable"), (GLXContext, "ctx")]),
216 Function(Void, "glXCopyContext", [(Display, "dpy"), (GLXContext, "src"), (GLXContext, "dst"),
217 (ULong, "mask")]),
218 Function(Void, "glXSwapBuffers", [(Display, "dpy"), (GLXDrawable, "drawable")]),
219 Function(GLXPixmap, "glXCreateGLXPixmap", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"),
220 (Pixmap, "pixmap")]),
221 Function(Void, "glXDestroyGLXPixmap", [(Display, "dpy"), (GLXPixmap, "pixmap")]),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100222 Function(Bool_, "glXQueryExtension", [(Display, "dpy"), Out(Pointer(Int), "errorb"), Out(Pointer(Int), "event")]),
223 Function(Bool_, "glXQueryVersion", [(Display, "dpy"), Out(Pointer(Int), "maj"), Out(Pointer(Int), "min")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400224 Function(Bool_, "glXIsDirect", [(Display, "dpy"), (GLXContext, "ctx")]),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100225 Function(GLXError, "glXGetConfig", [(Display, "dpy"), (Pointer(XVisualInfo), "visual"),
226 (GLXAttrib, "attrib"), Out(Pointer(Int), "value")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400227 Function(GLXContext, "glXGetCurrentContext", [], sideeffects=False),
228 Function(GLXDrawable, "glXGetCurrentDrawable", [], sideeffects=False),
229 Function(Void, "glXWaitGL", []),
230 Function(Void, "glXWaitX", []),
231 Function(Void, "glXUseXFont", [(Font, "font"), (Int, "first"), (Int, "count"), (Int, "list")]),
232
233 # GLX 1.1 and later
234 Function((Const(String("char *"))), "glXQueryExtensionsString", [(Display, "dpy"), (Int, "screen")]),
José Fonseca64674062011-05-10 20:33:43 +0100235 Function((Const(String("char *"))), "glXQueryServerString", [(Display, "dpy"), (Int, "screen"), (GLXname, "name")]),
236 Function((Const(String("char *"))), "glXGetClientString", [(Display, "dpy"), (GLXname, "name")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400237
238 # GLX 1.2 and later
239 Function(Display, "glXGetCurrentDisplay", [], sideeffects=False),
240
241 # GLX 1.3 and later
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100242 Function(Array(GLXFBConfig, "*nitems"), "glXChooseFBConfig", [(Display, "dpy"), (Int, "screen"), (Const(Array(GLXAttrib, "__AttribList_size(attribList)")), "attribList"), Out(Pointer(Int), "nitems")]),
243 Function(Int, "glXGetFBConfigAttrib", [(Display, "dpy"), (GLXFBConfig, "config"), (GLXAttrib, "attribute"), Out(Pointer(Int), "value")]),
244 Function(Array(GLXFBConfig, "*nelements"), "glXGetFBConfigs", [(Display, "dpy"), (Int, "screen"),
245 Out(Pointer(Int), "nelements")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400246 Function(Pointer(XVisualInfo), "glXGetVisualFromFBConfig", [(Display, "dpy"),
247 (GLXFBConfig, "config")]),
248 Function(GLXWindow, "glXCreateWindow", [(Display, "dpy"), (GLXFBConfig, "config"),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100249 (Window, "win"), (Const(Array(Int, "__AttribList_size(attribList)")), "attribList")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400250 Function(Void, "glXDestroyWindow", [(Display, "dpy"), (GLXWindow, "window")]),
251 Function(GLXPixmap, "glXCreatePixmap", [(Display, "dpy"), (GLXFBConfig, "config"),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100252 (Pixmap, "pixmap"), (Const(Array(Int, "__AttribList_size(attribList)")), "attribList")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400253 Function(Void, "glXDestroyPixmap", [(Display, "dpy"), (GLXPixmap, "pixmap")]),
254 Function(GLXPbuffer, "glXCreatePbuffer", [(Display, "dpy"), (GLXFBConfig, "config"),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100255 (Const(Array(GLXEnum, "__AttribList_size(attribList)")), "attribList")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400256 Function(Void, "glXDestroyPbuffer", [(Display, "dpy"), (GLXPbuffer, "pbuf")]),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100257 Function(Void, "glXQueryDrawable", [(Display, "dpy"), (GLXDrawable, "draw"), (GLXEnum, "attribute"),
258 Out(Pointer(UInt), "value")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400259 Function(GLXContext, "glXCreateNewContext", [(Display, "dpy"), (GLXFBConfig, "config"),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100260 (GLXEnum, "renderType"), (GLXContext, "shareList"),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400261 (Bool_, "direct")]),
262 Function(Bool_, "glXMakeContextCurrent", [(Display, "dpy"), (GLXDrawable, "draw"),
263 (GLXDrawable, "read"), (GLXContext, "ctx")]),
264 Function(GLXDrawable, "glXGetCurrentReadDrawable", []),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100265 Function(Int, "glXQueryContext", [(Display, "dpy"), (GLXContext, "ctx"), (GLXEnum, "attribute"),
266 Out(Pointer(Int), "value")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400267 Function(Void, "glXSelectEvent", [(Display, "dpy"), (GLXDrawable, "drawable"),
268 (ULong, "mask")]),
269 Function(Void, "glXGetSelectedEvent", [(Display, "dpy"), (GLXDrawable, "drawable"),
José Fonseca0d4ef5b2011-03-27 12:45:40 +0100270 Out(Pointer(ULong), "mask")]),
Zack Rusinf3f2e462011-03-23 18:35:39 -0400271 # TODO: extensions
José Fonsecae90885a2010-11-26 15:01:18 +0000272
José Fonseca4a826ed2010-11-30 16:58:22 +0000273 # Must be last
José Fonseca99771fc2010-11-25 20:32:59 +0000274 Function(PROC, "glXGetProcAddressARB", [(Alias("const GLubyte *", CString), "procName")]),
275 Function(PROC, "glXGetProcAddress", [(Alias("const GLubyte *", CString), "procName")]),
276])
277
278