1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file is auto-generated from
6 // ui/gl/generate_bindings.py
7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename
13 #include "base/trace_event/trace_event.h"
14 #include "ui/gl/gl_bindings.h"
15 #include "ui/gl/gl_context.h"
16 #include "ui/gl/gl_enums.h"
17 #include "ui/gl/gl_glx_api_implementation.h"
18 #include "ui/gl/gl_implementation.h"
19 #include "ui/gl/gl_version_info.h"
23 static bool g_debugBindingsInitialized
;
24 DriverGLX g_driver_glx
;
26 void DriverGLX::InitializeStaticBindings() {
27 fn
.glXBindTexImageEXTFn
= 0;
28 fn
.glXChooseFBConfigFn
= reinterpret_cast<glXChooseFBConfigProc
>(
29 GetGLProcAddress("glXChooseFBConfig"));
30 fn
.glXChooseVisualFn
= reinterpret_cast<glXChooseVisualProc
>(
31 GetGLProcAddress("glXChooseVisual"));
33 reinterpret_cast<glXCopyContextProc
>(GetGLProcAddress("glXCopyContext"));
34 fn
.glXCopySubBufferMESAFn
= 0;
35 fn
.glXCreateContextFn
= reinterpret_cast<glXCreateContextProc
>(
36 GetGLProcAddress("glXCreateContext"));
37 fn
.glXCreateContextAttribsARBFn
= 0;
38 fn
.glXCreateGLXPixmapFn
= reinterpret_cast<glXCreateGLXPixmapProc
>(
39 GetGLProcAddress("glXCreateGLXPixmap"));
40 fn
.glXCreateNewContextFn
= reinterpret_cast<glXCreateNewContextProc
>(
41 GetGLProcAddress("glXCreateNewContext"));
42 fn
.glXCreatePbufferFn
= reinterpret_cast<glXCreatePbufferProc
>(
43 GetGLProcAddress("glXCreatePbuffer"));
44 fn
.glXCreatePixmapFn
= reinterpret_cast<glXCreatePixmapProc
>(
45 GetGLProcAddress("glXCreatePixmap"));
46 fn
.glXCreateWindowFn
= reinterpret_cast<glXCreateWindowProc
>(
47 GetGLProcAddress("glXCreateWindow"));
48 fn
.glXDestroyContextFn
= reinterpret_cast<glXDestroyContextProc
>(
49 GetGLProcAddress("glXDestroyContext"));
50 fn
.glXDestroyGLXPixmapFn
= reinterpret_cast<glXDestroyGLXPixmapProc
>(
51 GetGLProcAddress("glXDestroyGLXPixmap"));
52 fn
.glXDestroyPbufferFn
= reinterpret_cast<glXDestroyPbufferProc
>(
53 GetGLProcAddress("glXDestroyPbuffer"));
54 fn
.glXDestroyPixmapFn
= reinterpret_cast<glXDestroyPixmapProc
>(
55 GetGLProcAddress("glXDestroyPixmap"));
56 fn
.glXDestroyWindowFn
= reinterpret_cast<glXDestroyWindowProc
>(
57 GetGLProcAddress("glXDestroyWindow"));
58 fn
.glXGetClientStringFn
= reinterpret_cast<glXGetClientStringProc
>(
59 GetGLProcAddress("glXGetClientString"));
61 reinterpret_cast<glXGetConfigProc
>(GetGLProcAddress("glXGetConfig"));
62 fn
.glXGetCurrentContextFn
= reinterpret_cast<glXGetCurrentContextProc
>(
63 GetGLProcAddress("glXGetCurrentContext"));
64 fn
.glXGetCurrentDisplayFn
= reinterpret_cast<glXGetCurrentDisplayProc
>(
65 GetGLProcAddress("glXGetCurrentDisplay"));
66 fn
.glXGetCurrentDrawableFn
= reinterpret_cast<glXGetCurrentDrawableProc
>(
67 GetGLProcAddress("glXGetCurrentDrawable"));
68 fn
.glXGetCurrentReadDrawableFn
=
69 reinterpret_cast<glXGetCurrentReadDrawableProc
>(
70 GetGLProcAddress("glXGetCurrentReadDrawable"));
71 fn
.glXGetFBConfigAttribFn
= reinterpret_cast<glXGetFBConfigAttribProc
>(
72 GetGLProcAddress("glXGetFBConfigAttrib"));
73 fn
.glXGetFBConfigFromVisualSGIXFn
= 0;
74 fn
.glXGetFBConfigsFn
= reinterpret_cast<glXGetFBConfigsProc
>(
75 GetGLProcAddress("glXGetFBConfigs"));
76 fn
.glXGetMscRateOMLFn
= 0;
77 fn
.glXGetSelectedEventFn
= reinterpret_cast<glXGetSelectedEventProc
>(
78 GetGLProcAddress("glXGetSelectedEvent"));
79 fn
.glXGetSyncValuesOMLFn
= 0;
80 fn
.glXGetVisualFromFBConfigFn
=
81 reinterpret_cast<glXGetVisualFromFBConfigProc
>(
82 GetGLProcAddress("glXGetVisualFromFBConfig"));
84 reinterpret_cast<glXIsDirectProc
>(GetGLProcAddress("glXIsDirect"));
85 fn
.glXMakeContextCurrentFn
= reinterpret_cast<glXMakeContextCurrentProc
>(
86 GetGLProcAddress("glXMakeContextCurrent"));
88 reinterpret_cast<glXMakeCurrentProc
>(GetGLProcAddress("glXMakeCurrent"));
89 fn
.glXQueryContextFn
= reinterpret_cast<glXQueryContextProc
>(
90 GetGLProcAddress("glXQueryContext"));
91 fn
.glXQueryDrawableFn
= reinterpret_cast<glXQueryDrawableProc
>(
92 GetGLProcAddress("glXQueryDrawable"));
93 fn
.glXQueryExtensionFn
= reinterpret_cast<glXQueryExtensionProc
>(
94 GetGLProcAddress("glXQueryExtension"));
95 fn
.glXQueryExtensionsStringFn
=
96 reinterpret_cast<glXQueryExtensionsStringProc
>(
97 GetGLProcAddress("glXQueryExtensionsString"));
98 fn
.glXQueryServerStringFn
= reinterpret_cast<glXQueryServerStringProc
>(
99 GetGLProcAddress("glXQueryServerString"));
100 fn
.glXQueryVersionFn
= reinterpret_cast<glXQueryVersionProc
>(
101 GetGLProcAddress("glXQueryVersion"));
102 fn
.glXReleaseTexImageEXTFn
= 0;
103 fn
.glXSelectEventFn
=
104 reinterpret_cast<glXSelectEventProc
>(GetGLProcAddress("glXSelectEvent"));
105 fn
.glXSwapBuffersFn
=
106 reinterpret_cast<glXSwapBuffersProc
>(GetGLProcAddress("glXSwapBuffers"));
107 fn
.glXSwapIntervalEXTFn
= 0;
108 fn
.glXSwapIntervalMESAFn
= 0;
110 reinterpret_cast<glXUseXFontProc
>(GetGLProcAddress("glXUseXFont"));
112 reinterpret_cast<glXWaitGLProc
>(GetGLProcAddress("glXWaitGL"));
113 fn
.glXWaitVideoSyncSGIFn
= 0;
114 fn
.glXWaitXFn
= reinterpret_cast<glXWaitXProc
>(GetGLProcAddress("glXWaitX"));
115 std::string
extensions(GetPlatformExtensions());
117 ALLOW_UNUSED_LOCAL(extensions
);
119 ext
.b_GLX_ARB_create_context
=
120 extensions
.find("GLX_ARB_create_context ") != std::string::npos
;
121 ext
.b_GLX_EXT_swap_control
=
122 extensions
.find("GLX_EXT_swap_control ") != std::string::npos
;
123 ext
.b_GLX_EXT_texture_from_pixmap
=
124 extensions
.find("GLX_EXT_texture_from_pixmap ") != std::string::npos
;
125 ext
.b_GLX_MESA_copy_sub_buffer
=
126 extensions
.find("GLX_MESA_copy_sub_buffer ") != std::string::npos
;
127 ext
.b_GLX_MESA_swap_control
=
128 extensions
.find("GLX_MESA_swap_control ") != std::string::npos
;
129 ext
.b_GLX_OML_sync_control
=
130 extensions
.find("GLX_OML_sync_control ") != std::string::npos
;
131 ext
.b_GLX_SGIX_fbconfig
=
132 extensions
.find("GLX_SGIX_fbconfig ") != std::string::npos
;
133 ext
.b_GLX_SGI_video_sync
=
134 extensions
.find("GLX_SGI_video_sync ") != std::string::npos
;
136 debug_fn
.glXBindTexImageEXTFn
= 0;
137 if (ext
.b_GLX_EXT_texture_from_pixmap
) {
138 fn
.glXBindTexImageEXTFn
= reinterpret_cast<glXBindTexImageEXTProc
>(
139 GetGLProcAddress("glXBindTexImageEXT"));
140 DCHECK(fn
.glXBindTexImageEXTFn
);
143 debug_fn
.glXCopySubBufferMESAFn
= 0;
144 if (ext
.b_GLX_MESA_copy_sub_buffer
) {
145 fn
.glXCopySubBufferMESAFn
= reinterpret_cast<glXCopySubBufferMESAProc
>(
146 GetGLProcAddress("glXCopySubBufferMESA"));
147 DCHECK(fn
.glXCopySubBufferMESAFn
);
150 debug_fn
.glXCreateContextAttribsARBFn
= 0;
151 if (ext
.b_GLX_ARB_create_context
) {
152 fn
.glXCreateContextAttribsARBFn
=
153 reinterpret_cast<glXCreateContextAttribsARBProc
>(
154 GetGLProcAddress("glXCreateContextAttribsARB"));
155 DCHECK(fn
.glXCreateContextAttribsARBFn
);
158 debug_fn
.glXGetFBConfigFromVisualSGIXFn
= 0;
159 if (ext
.b_GLX_SGIX_fbconfig
) {
160 fn
.glXGetFBConfigFromVisualSGIXFn
=
161 reinterpret_cast<glXGetFBConfigFromVisualSGIXProc
>(
162 GetGLProcAddress("glXGetFBConfigFromVisualSGIX"));
163 DCHECK(fn
.glXGetFBConfigFromVisualSGIXFn
);
166 debug_fn
.glXGetMscRateOMLFn
= 0;
167 if (ext
.b_GLX_OML_sync_control
) {
168 fn
.glXGetMscRateOMLFn
= reinterpret_cast<glXGetMscRateOMLProc
>(
169 GetGLProcAddress("glXGetMscRateOML"));
170 DCHECK(fn
.glXGetMscRateOMLFn
);
173 debug_fn
.glXGetSyncValuesOMLFn
= 0;
174 if (ext
.b_GLX_OML_sync_control
) {
175 fn
.glXGetSyncValuesOMLFn
= reinterpret_cast<glXGetSyncValuesOMLProc
>(
176 GetGLProcAddress("glXGetSyncValuesOML"));
177 DCHECK(fn
.glXGetSyncValuesOMLFn
);
180 debug_fn
.glXReleaseTexImageEXTFn
= 0;
181 if (ext
.b_GLX_EXT_texture_from_pixmap
) {
182 fn
.glXReleaseTexImageEXTFn
= reinterpret_cast<glXReleaseTexImageEXTProc
>(
183 GetGLProcAddress("glXReleaseTexImageEXT"));
184 DCHECK(fn
.glXReleaseTexImageEXTFn
);
187 debug_fn
.glXSwapIntervalEXTFn
= 0;
188 if (ext
.b_GLX_EXT_swap_control
) {
189 fn
.glXSwapIntervalEXTFn
= reinterpret_cast<glXSwapIntervalEXTProc
>(
190 GetGLProcAddress("glXSwapIntervalEXT"));
191 DCHECK(fn
.glXSwapIntervalEXTFn
);
194 debug_fn
.glXSwapIntervalMESAFn
= 0;
195 if (ext
.b_GLX_MESA_swap_control
) {
196 fn
.glXSwapIntervalMESAFn
= reinterpret_cast<glXSwapIntervalMESAProc
>(
197 GetGLProcAddress("glXSwapIntervalMESA"));
198 DCHECK(fn
.glXSwapIntervalMESAFn
);
201 debug_fn
.glXWaitVideoSyncSGIFn
= 0;
202 if (ext
.b_GLX_SGI_video_sync
) {
203 fn
.glXWaitVideoSyncSGIFn
= reinterpret_cast<glXWaitVideoSyncSGIProc
>(
204 GetGLProcAddress("glXWaitVideoSyncSGI"));
205 DCHECK(fn
.glXWaitVideoSyncSGIFn
);
208 if (g_debugBindingsInitialized
)
209 InitializeDebugBindings();
214 static void GL_BINDING_CALL
Debug_glXBindTexImageEXT(Display
* dpy
,
215 GLXDrawable drawable
,
218 GL_SERVICE_LOG("glXBindTexImageEXT"
219 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
220 << ", " << buffer
<< ", "
221 << static_cast<const void*>(attribList
) << ")");
222 g_driver_glx
.debug_fn
.glXBindTexImageEXTFn(dpy
, drawable
, buffer
, attribList
);
225 static GLXFBConfig
* GL_BINDING_CALL
226 Debug_glXChooseFBConfig(Display
* dpy
,
228 const int* attribList
,
230 GL_SERVICE_LOG("glXChooseFBConfig"
231 << "(" << static_cast<const void*>(dpy
) << ", " << screen
232 << ", " << static_cast<const void*>(attribList
) << ", "
233 << static_cast<const void*>(nitems
) << ")");
234 GLXFBConfig
* result
= g_driver_glx
.debug_fn
.glXChooseFBConfigFn(
235 dpy
, screen
, attribList
, nitems
);
236 GL_SERVICE_LOG("GL_RESULT: " << result
);
240 static XVisualInfo
* GL_BINDING_CALL
241 Debug_glXChooseVisual(Display
* dpy
, int screen
, int* attribList
) {
242 GL_SERVICE_LOG("glXChooseVisual"
243 << "(" << static_cast<const void*>(dpy
) << ", " << screen
244 << ", " << static_cast<const void*>(attribList
) << ")");
245 XVisualInfo
* result
=
246 g_driver_glx
.debug_fn
.glXChooseVisualFn(dpy
, screen
, attribList
);
247 GL_SERVICE_LOG("GL_RESULT: " << result
);
251 static void GL_BINDING_CALL
Debug_glXCopyContext(Display
* dpy
,
254 unsigned long mask
) {
255 GL_SERVICE_LOG("glXCopyContext"
256 << "(" << static_cast<const void*>(dpy
) << ", " << src
<< ", "
257 << dst
<< ", " << mask
<< ")");
258 g_driver_glx
.debug_fn
.glXCopyContextFn(dpy
, src
, dst
, mask
);
261 static void GL_BINDING_CALL
Debug_glXCopySubBufferMESA(Display
* dpy
,
262 GLXDrawable drawable
,
267 GL_SERVICE_LOG("glXCopySubBufferMESA"
268 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
269 << ", " << x
<< ", " << y
<< ", " << width
<< ", " << height
271 g_driver_glx
.debug_fn
.glXCopySubBufferMESAFn(dpy
, drawable
, x
, y
, width
,
275 static GLXContext GL_BINDING_CALL
Debug_glXCreateContext(Display
* dpy
,
277 GLXContext shareList
,
279 GL_SERVICE_LOG("glXCreateContext"
280 << "(" << static_cast<const void*>(dpy
) << ", "
281 << static_cast<const void*>(vis
) << ", " << shareList
<< ", "
284 g_driver_glx
.debug_fn
.glXCreateContextFn(dpy
, vis
, shareList
, direct
);
285 GL_SERVICE_LOG("GL_RESULT: " << result
);
289 static GLXContext GL_BINDING_CALL
290 Debug_glXCreateContextAttribsARB(Display
* dpy
,
292 GLXContext share_context
,
294 const int* attrib_list
) {
295 GL_SERVICE_LOG("glXCreateContextAttribsARB"
296 << "(" << static_cast<const void*>(dpy
) << ", " << config
297 << ", " << share_context
<< ", " << direct
<< ", "
298 << static_cast<const void*>(attrib_list
) << ")");
299 GLXContext result
= g_driver_glx
.debug_fn
.glXCreateContextAttribsARBFn(
300 dpy
, config
, share_context
, direct
, attrib_list
);
301 GL_SERVICE_LOG("GL_RESULT: " << result
);
305 static GLXPixmap GL_BINDING_CALL
306 Debug_glXCreateGLXPixmap(Display
* dpy
, XVisualInfo
* visual
, Pixmap pixmap
) {
307 GL_SERVICE_LOG("glXCreateGLXPixmap"
308 << "(" << static_cast<const void*>(dpy
) << ", "
309 << static_cast<const void*>(visual
) << ", " << pixmap
<< ")");
311 g_driver_glx
.debug_fn
.glXCreateGLXPixmapFn(dpy
, visual
, pixmap
);
312 GL_SERVICE_LOG("GL_RESULT: " << result
);
316 static GLXContext GL_BINDING_CALL
317 Debug_glXCreateNewContext(Display
* dpy
,
320 GLXContext shareList
,
322 GL_SERVICE_LOG("glXCreateNewContext"
323 << "(" << static_cast<const void*>(dpy
) << ", " << config
324 << ", " << renderType
<< ", " << shareList
<< ", " << direct
326 GLXContext result
= g_driver_glx
.debug_fn
.glXCreateNewContextFn(
327 dpy
, config
, renderType
, shareList
, direct
);
328 GL_SERVICE_LOG("GL_RESULT: " << result
);
332 static GLXPbuffer GL_BINDING_CALL
333 Debug_glXCreatePbuffer(Display
* dpy
,
335 const int* attribList
) {
336 GL_SERVICE_LOG("glXCreatePbuffer"
337 << "(" << static_cast<const void*>(dpy
) << ", " << config
338 << ", " << static_cast<const void*>(attribList
) << ")");
340 g_driver_glx
.debug_fn
.glXCreatePbufferFn(dpy
, config
, attribList
);
341 GL_SERVICE_LOG("GL_RESULT: " << result
);
345 static GLXPixmap GL_BINDING_CALL
Debug_glXCreatePixmap(Display
* dpy
,
348 const int* attribList
) {
349 GL_SERVICE_LOG("glXCreatePixmap"
350 << "(" << static_cast<const void*>(dpy
) << ", " << config
351 << ", " << pixmap
<< ", "
352 << static_cast<const void*>(attribList
) << ")");
354 g_driver_glx
.debug_fn
.glXCreatePixmapFn(dpy
, config
, pixmap
, attribList
);
355 GL_SERVICE_LOG("GL_RESULT: " << result
);
359 static GLXWindow GL_BINDING_CALL
Debug_glXCreateWindow(Display
* dpy
,
362 const int* attribList
) {
363 GL_SERVICE_LOG("glXCreateWindow"
364 << "(" << static_cast<const void*>(dpy
) << ", " << config
365 << ", " << win
<< ", " << static_cast<const void*>(attribList
)
368 g_driver_glx
.debug_fn
.glXCreateWindowFn(dpy
, config
, win
, attribList
);
369 GL_SERVICE_LOG("GL_RESULT: " << result
);
373 static void GL_BINDING_CALL
374 Debug_glXDestroyContext(Display
* dpy
, GLXContext ctx
) {
375 GL_SERVICE_LOG("glXDestroyContext"
376 << "(" << static_cast<const void*>(dpy
) << ", " << ctx
<< ")");
377 g_driver_glx
.debug_fn
.glXDestroyContextFn(dpy
, ctx
);
380 static void GL_BINDING_CALL
381 Debug_glXDestroyGLXPixmap(Display
* dpy
, GLXPixmap pixmap
) {
382 GL_SERVICE_LOG("glXDestroyGLXPixmap"
383 << "(" << static_cast<const void*>(dpy
) << ", " << pixmap
385 g_driver_glx
.debug_fn
.glXDestroyGLXPixmapFn(dpy
, pixmap
);
388 static void GL_BINDING_CALL
389 Debug_glXDestroyPbuffer(Display
* dpy
, GLXPbuffer pbuf
) {
390 GL_SERVICE_LOG("glXDestroyPbuffer"
391 << "(" << static_cast<const void*>(dpy
) << ", " << pbuf
393 g_driver_glx
.debug_fn
.glXDestroyPbufferFn(dpy
, pbuf
);
396 static void GL_BINDING_CALL
397 Debug_glXDestroyPixmap(Display
* dpy
, GLXPixmap pixmap
) {
398 GL_SERVICE_LOG("glXDestroyPixmap"
399 << "(" << static_cast<const void*>(dpy
) << ", " << pixmap
401 g_driver_glx
.debug_fn
.glXDestroyPixmapFn(dpy
, pixmap
);
404 static void GL_BINDING_CALL
405 Debug_glXDestroyWindow(Display
* dpy
, GLXWindow window
) {
406 GL_SERVICE_LOG("glXDestroyWindow"
407 << "(" << static_cast<const void*>(dpy
) << ", " << window
409 g_driver_glx
.debug_fn
.glXDestroyWindowFn(dpy
, window
);
412 static const char* GL_BINDING_CALL
413 Debug_glXGetClientString(Display
* dpy
, int name
) {
414 GL_SERVICE_LOG("glXGetClientString"
415 << "(" << static_cast<const void*>(dpy
) << ", " << name
417 const char* result
= g_driver_glx
.debug_fn
.glXGetClientStringFn(dpy
, name
);
418 GL_SERVICE_LOG("GL_RESULT: " << result
);
422 static int GL_BINDING_CALL
423 Debug_glXGetConfig(Display
* dpy
, XVisualInfo
* visual
, int attrib
, int* value
) {
424 GL_SERVICE_LOG("glXGetConfig"
425 << "(" << static_cast<const void*>(dpy
) << ", "
426 << static_cast<const void*>(visual
) << ", " << attrib
<< ", "
427 << static_cast<const void*>(value
) << ")");
428 int result
= g_driver_glx
.debug_fn
.glXGetConfigFn(dpy
, visual
, attrib
, value
);
429 GL_SERVICE_LOG("GL_RESULT: " << result
);
433 static GLXContext GL_BINDING_CALL
Debug_glXGetCurrentContext(void) {
434 GL_SERVICE_LOG("glXGetCurrentContext"
437 GLXContext result
= g_driver_glx
.debug_fn
.glXGetCurrentContextFn();
438 GL_SERVICE_LOG("GL_RESULT: " << result
);
442 static Display
* GL_BINDING_CALL
Debug_glXGetCurrentDisplay(void) {
443 GL_SERVICE_LOG("glXGetCurrentDisplay"
446 Display
* result
= g_driver_glx
.debug_fn
.glXGetCurrentDisplayFn();
447 GL_SERVICE_LOG("GL_RESULT: " << result
);
451 static GLXDrawable GL_BINDING_CALL
Debug_glXGetCurrentDrawable(void) {
452 GL_SERVICE_LOG("glXGetCurrentDrawable"
455 GLXDrawable result
= g_driver_glx
.debug_fn
.glXGetCurrentDrawableFn();
456 GL_SERVICE_LOG("GL_RESULT: " << result
);
460 static GLXDrawable GL_BINDING_CALL
Debug_glXGetCurrentReadDrawable(void) {
461 GL_SERVICE_LOG("glXGetCurrentReadDrawable"
464 GLXDrawable result
= g_driver_glx
.debug_fn
.glXGetCurrentReadDrawableFn();
465 GL_SERVICE_LOG("GL_RESULT: " << result
);
469 static int GL_BINDING_CALL
Debug_glXGetFBConfigAttrib(Display
* dpy
,
473 GL_SERVICE_LOG("glXGetFBConfigAttrib"
474 << "(" << static_cast<const void*>(dpy
) << ", " << config
475 << ", " << attribute
<< ", " << static_cast<const void*>(value
)
477 int result
= g_driver_glx
.debug_fn
.glXGetFBConfigAttribFn(dpy
, config
,
479 GL_SERVICE_LOG("GL_RESULT: " << result
);
483 static GLXFBConfig GL_BINDING_CALL
484 Debug_glXGetFBConfigFromVisualSGIX(Display
* dpy
, XVisualInfo
* visualInfo
) {
485 GL_SERVICE_LOG("glXGetFBConfigFromVisualSGIX"
486 << "(" << static_cast<const void*>(dpy
) << ", "
487 << static_cast<const void*>(visualInfo
) << ")");
489 g_driver_glx
.debug_fn
.glXGetFBConfigFromVisualSGIXFn(dpy
, visualInfo
);
490 GL_SERVICE_LOG("GL_RESULT: " << result
);
494 static GLXFBConfig
* GL_BINDING_CALL
495 Debug_glXGetFBConfigs(Display
* dpy
, int screen
, int* nelements
) {
496 GL_SERVICE_LOG("glXGetFBConfigs"
497 << "(" << static_cast<const void*>(dpy
) << ", " << screen
498 << ", " << static_cast<const void*>(nelements
) << ")");
499 GLXFBConfig
* result
=
500 g_driver_glx
.debug_fn
.glXGetFBConfigsFn(dpy
, screen
, nelements
);
501 GL_SERVICE_LOG("GL_RESULT: " << result
);
505 static bool GL_BINDING_CALL
Debug_glXGetMscRateOML(Display
* dpy
,
506 GLXDrawable drawable
,
508 int32
* denominator
) {
509 GL_SERVICE_LOG("glXGetMscRateOML"
510 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
511 << ", " << static_cast<const void*>(numerator
) << ", "
512 << static_cast<const void*>(denominator
) << ")");
513 bool result
= g_driver_glx
.debug_fn
.glXGetMscRateOMLFn(
514 dpy
, drawable
, numerator
, denominator
);
515 GL_SERVICE_LOG("GL_RESULT: " << result
);
519 static void GL_BINDING_CALL
Debug_glXGetSelectedEvent(Display
* dpy
,
520 GLXDrawable drawable
,
521 unsigned long* mask
) {
522 GL_SERVICE_LOG("glXGetSelectedEvent"
523 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
524 << ", " << static_cast<const void*>(mask
) << ")");
525 g_driver_glx
.debug_fn
.glXGetSelectedEventFn(dpy
, drawable
, mask
);
528 static bool GL_BINDING_CALL
Debug_glXGetSyncValuesOML(Display
* dpy
,
529 GLXDrawable drawable
,
533 GL_SERVICE_LOG("glXGetSyncValuesOML"
534 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
535 << ", " << static_cast<const void*>(ust
) << ", "
536 << static_cast<const void*>(msc
) << ", "
537 << static_cast<const void*>(sbc
) << ")");
539 g_driver_glx
.debug_fn
.glXGetSyncValuesOMLFn(dpy
, drawable
, ust
, msc
, sbc
);
540 GL_SERVICE_LOG("GL_RESULT: " << result
);
544 static XVisualInfo
* GL_BINDING_CALL
545 Debug_glXGetVisualFromFBConfig(Display
* dpy
, GLXFBConfig config
) {
546 GL_SERVICE_LOG("glXGetVisualFromFBConfig"
547 << "(" << static_cast<const void*>(dpy
) << ", " << config
549 XVisualInfo
* result
=
550 g_driver_glx
.debug_fn
.glXGetVisualFromFBConfigFn(dpy
, config
);
551 GL_SERVICE_LOG("GL_RESULT: " << result
);
555 static int GL_BINDING_CALL
Debug_glXIsDirect(Display
* dpy
, GLXContext ctx
) {
556 GL_SERVICE_LOG("glXIsDirect"
557 << "(" << static_cast<const void*>(dpy
) << ", " << ctx
<< ")");
558 int result
= g_driver_glx
.debug_fn
.glXIsDirectFn(dpy
, ctx
);
559 GL_SERVICE_LOG("GL_RESULT: " << result
);
563 static int GL_BINDING_CALL
Debug_glXMakeContextCurrent(Display
* dpy
,
567 GL_SERVICE_LOG("glXMakeContextCurrent"
568 << "(" << static_cast<const void*>(dpy
) << ", " << draw
<< ", "
569 << read
<< ", " << ctx
<< ")");
571 g_driver_glx
.debug_fn
.glXMakeContextCurrentFn(dpy
, draw
, read
, ctx
);
572 GL_SERVICE_LOG("GL_RESULT: " << result
);
576 static int GL_BINDING_CALL
577 Debug_glXMakeCurrent(Display
* dpy
, GLXDrawable drawable
, GLXContext ctx
) {
578 GL_SERVICE_LOG("glXMakeCurrent"
579 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
580 << ", " << ctx
<< ")");
581 int result
= g_driver_glx
.debug_fn
.glXMakeCurrentFn(dpy
, drawable
, ctx
);
582 GL_SERVICE_LOG("GL_RESULT: " << result
);
586 static int GL_BINDING_CALL
587 Debug_glXQueryContext(Display
* dpy
, GLXContext ctx
, int attribute
, int* value
) {
588 GL_SERVICE_LOG("glXQueryContext"
589 << "(" << static_cast<const void*>(dpy
) << ", " << ctx
<< ", "
590 << attribute
<< ", " << static_cast<const void*>(value
)
593 g_driver_glx
.debug_fn
.glXQueryContextFn(dpy
, ctx
, attribute
, value
);
594 GL_SERVICE_LOG("GL_RESULT: " << result
);
598 static void GL_BINDING_CALL
Debug_glXQueryDrawable(Display
* dpy
,
601 unsigned int* value
) {
602 GL_SERVICE_LOG("glXQueryDrawable"
603 << "(" << static_cast<const void*>(dpy
) << ", " << draw
<< ", "
604 << attribute
<< ", " << static_cast<const void*>(value
)
606 g_driver_glx
.debug_fn
.glXQueryDrawableFn(dpy
, draw
, attribute
, value
);
609 static int GL_BINDING_CALL
610 Debug_glXQueryExtension(Display
* dpy
, int* errorb
, int* event
) {
611 GL_SERVICE_LOG("glXQueryExtension"
612 << "(" << static_cast<const void*>(dpy
) << ", "
613 << static_cast<const void*>(errorb
) << ", "
614 << static_cast<const void*>(event
) << ")");
615 int result
= g_driver_glx
.debug_fn
.glXQueryExtensionFn(dpy
, errorb
, event
);
616 GL_SERVICE_LOG("GL_RESULT: " << result
);
620 static const char* GL_BINDING_CALL
621 Debug_glXQueryExtensionsString(Display
* dpy
, int screen
) {
622 GL_SERVICE_LOG("glXQueryExtensionsString"
623 << "(" << static_cast<const void*>(dpy
) << ", " << screen
626 g_driver_glx
.debug_fn
.glXQueryExtensionsStringFn(dpy
, screen
);
627 GL_SERVICE_LOG("GL_RESULT: " << result
);
631 static const char* GL_BINDING_CALL
632 Debug_glXQueryServerString(Display
* dpy
, int screen
, int name
) {
633 GL_SERVICE_LOG("glXQueryServerString"
634 << "(" << static_cast<const void*>(dpy
) << ", " << screen
635 << ", " << name
<< ")");
637 g_driver_glx
.debug_fn
.glXQueryServerStringFn(dpy
, screen
, name
);
638 GL_SERVICE_LOG("GL_RESULT: " << result
);
642 static int GL_BINDING_CALL
643 Debug_glXQueryVersion(Display
* dpy
, int* maj
, int* min
) {
644 GL_SERVICE_LOG("glXQueryVersion"
645 << "(" << static_cast<const void*>(dpy
) << ", "
646 << static_cast<const void*>(maj
) << ", "
647 << static_cast<const void*>(min
) << ")");
648 int result
= g_driver_glx
.debug_fn
.glXQueryVersionFn(dpy
, maj
, min
);
649 GL_SERVICE_LOG("GL_RESULT: " << result
);
653 static void GL_BINDING_CALL
654 Debug_glXReleaseTexImageEXT(Display
* dpy
, GLXDrawable drawable
, int buffer
) {
655 GL_SERVICE_LOG("glXReleaseTexImageEXT"
656 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
657 << ", " << buffer
<< ")");
658 g_driver_glx
.debug_fn
.glXReleaseTexImageEXTFn(dpy
, drawable
, buffer
);
661 static void GL_BINDING_CALL
662 Debug_glXSelectEvent(Display
* dpy
, GLXDrawable drawable
, unsigned long mask
) {
663 GL_SERVICE_LOG("glXSelectEvent"
664 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
665 << ", " << mask
<< ")");
666 g_driver_glx
.debug_fn
.glXSelectEventFn(dpy
, drawable
, mask
);
669 static void GL_BINDING_CALL
670 Debug_glXSwapBuffers(Display
* dpy
, GLXDrawable drawable
) {
671 GL_SERVICE_LOG("glXSwapBuffers"
672 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
674 g_driver_glx
.debug_fn
.glXSwapBuffersFn(dpy
, drawable
);
677 static void GL_BINDING_CALL
678 Debug_glXSwapIntervalEXT(Display
* dpy
, GLXDrawable drawable
, int interval
) {
679 GL_SERVICE_LOG("glXSwapIntervalEXT"
680 << "(" << static_cast<const void*>(dpy
) << ", " << drawable
681 << ", " << interval
<< ")");
682 g_driver_glx
.debug_fn
.glXSwapIntervalEXTFn(dpy
, drawable
, interval
);
685 static void GL_BINDING_CALL
Debug_glXSwapIntervalMESA(unsigned int interval
) {
686 GL_SERVICE_LOG("glXSwapIntervalMESA"
687 << "(" << interval
<< ")");
688 g_driver_glx
.debug_fn
.glXSwapIntervalMESAFn(interval
);
691 static void GL_BINDING_CALL
692 Debug_glXUseXFont(Font font
, int first
, int count
, int list
) {
693 GL_SERVICE_LOG("glXUseXFont"
694 << "(" << font
<< ", " << first
<< ", " << count
<< ", "
696 g_driver_glx
.debug_fn
.glXUseXFontFn(font
, first
, count
, list
);
699 static void GL_BINDING_CALL
Debug_glXWaitGL(void) {
700 GL_SERVICE_LOG("glXWaitGL"
703 g_driver_glx
.debug_fn
.glXWaitGLFn();
706 static int GL_BINDING_CALL
707 Debug_glXWaitVideoSyncSGI(int divisor
, int remainder
, unsigned int* count
) {
708 GL_SERVICE_LOG("glXWaitVideoSyncSGI"
709 << "(" << divisor
<< ", " << remainder
<< ", "
710 << static_cast<const void*>(count
) << ")");
712 g_driver_glx
.debug_fn
.glXWaitVideoSyncSGIFn(divisor
, remainder
, count
);
713 GL_SERVICE_LOG("GL_RESULT: " << result
);
717 static void GL_BINDING_CALL
Debug_glXWaitX(void) {
718 GL_SERVICE_LOG("glXWaitX"
721 g_driver_glx
.debug_fn
.glXWaitXFn();
725 void DriverGLX::InitializeDebugBindings() {
726 if (!debug_fn
.glXBindTexImageEXTFn
) {
727 debug_fn
.glXBindTexImageEXTFn
= fn
.glXBindTexImageEXTFn
;
728 fn
.glXBindTexImageEXTFn
= Debug_glXBindTexImageEXT
;
730 if (!debug_fn
.glXChooseFBConfigFn
) {
731 debug_fn
.glXChooseFBConfigFn
= fn
.glXChooseFBConfigFn
;
732 fn
.glXChooseFBConfigFn
= Debug_glXChooseFBConfig
;
734 if (!debug_fn
.glXChooseVisualFn
) {
735 debug_fn
.glXChooseVisualFn
= fn
.glXChooseVisualFn
;
736 fn
.glXChooseVisualFn
= Debug_glXChooseVisual
;
738 if (!debug_fn
.glXCopyContextFn
) {
739 debug_fn
.glXCopyContextFn
= fn
.glXCopyContextFn
;
740 fn
.glXCopyContextFn
= Debug_glXCopyContext
;
742 if (!debug_fn
.glXCopySubBufferMESAFn
) {
743 debug_fn
.glXCopySubBufferMESAFn
= fn
.glXCopySubBufferMESAFn
;
744 fn
.glXCopySubBufferMESAFn
= Debug_glXCopySubBufferMESA
;
746 if (!debug_fn
.glXCreateContextFn
) {
747 debug_fn
.glXCreateContextFn
= fn
.glXCreateContextFn
;
748 fn
.glXCreateContextFn
= Debug_glXCreateContext
;
750 if (!debug_fn
.glXCreateContextAttribsARBFn
) {
751 debug_fn
.glXCreateContextAttribsARBFn
= fn
.glXCreateContextAttribsARBFn
;
752 fn
.glXCreateContextAttribsARBFn
= Debug_glXCreateContextAttribsARB
;
754 if (!debug_fn
.glXCreateGLXPixmapFn
) {
755 debug_fn
.glXCreateGLXPixmapFn
= fn
.glXCreateGLXPixmapFn
;
756 fn
.glXCreateGLXPixmapFn
= Debug_glXCreateGLXPixmap
;
758 if (!debug_fn
.glXCreateNewContextFn
) {
759 debug_fn
.glXCreateNewContextFn
= fn
.glXCreateNewContextFn
;
760 fn
.glXCreateNewContextFn
= Debug_glXCreateNewContext
;
762 if (!debug_fn
.glXCreatePbufferFn
) {
763 debug_fn
.glXCreatePbufferFn
= fn
.glXCreatePbufferFn
;
764 fn
.glXCreatePbufferFn
= Debug_glXCreatePbuffer
;
766 if (!debug_fn
.glXCreatePixmapFn
) {
767 debug_fn
.glXCreatePixmapFn
= fn
.glXCreatePixmapFn
;
768 fn
.glXCreatePixmapFn
= Debug_glXCreatePixmap
;
770 if (!debug_fn
.glXCreateWindowFn
) {
771 debug_fn
.glXCreateWindowFn
= fn
.glXCreateWindowFn
;
772 fn
.glXCreateWindowFn
= Debug_glXCreateWindow
;
774 if (!debug_fn
.glXDestroyContextFn
) {
775 debug_fn
.glXDestroyContextFn
= fn
.glXDestroyContextFn
;
776 fn
.glXDestroyContextFn
= Debug_glXDestroyContext
;
778 if (!debug_fn
.glXDestroyGLXPixmapFn
) {
779 debug_fn
.glXDestroyGLXPixmapFn
= fn
.glXDestroyGLXPixmapFn
;
780 fn
.glXDestroyGLXPixmapFn
= Debug_glXDestroyGLXPixmap
;
782 if (!debug_fn
.glXDestroyPbufferFn
) {
783 debug_fn
.glXDestroyPbufferFn
= fn
.glXDestroyPbufferFn
;
784 fn
.glXDestroyPbufferFn
= Debug_glXDestroyPbuffer
;
786 if (!debug_fn
.glXDestroyPixmapFn
) {
787 debug_fn
.glXDestroyPixmapFn
= fn
.glXDestroyPixmapFn
;
788 fn
.glXDestroyPixmapFn
= Debug_glXDestroyPixmap
;
790 if (!debug_fn
.glXDestroyWindowFn
) {
791 debug_fn
.glXDestroyWindowFn
= fn
.glXDestroyWindowFn
;
792 fn
.glXDestroyWindowFn
= Debug_glXDestroyWindow
;
794 if (!debug_fn
.glXGetClientStringFn
) {
795 debug_fn
.glXGetClientStringFn
= fn
.glXGetClientStringFn
;
796 fn
.glXGetClientStringFn
= Debug_glXGetClientString
;
798 if (!debug_fn
.glXGetConfigFn
) {
799 debug_fn
.glXGetConfigFn
= fn
.glXGetConfigFn
;
800 fn
.glXGetConfigFn
= Debug_glXGetConfig
;
802 if (!debug_fn
.glXGetCurrentContextFn
) {
803 debug_fn
.glXGetCurrentContextFn
= fn
.glXGetCurrentContextFn
;
804 fn
.glXGetCurrentContextFn
= Debug_glXGetCurrentContext
;
806 if (!debug_fn
.glXGetCurrentDisplayFn
) {
807 debug_fn
.glXGetCurrentDisplayFn
= fn
.glXGetCurrentDisplayFn
;
808 fn
.glXGetCurrentDisplayFn
= Debug_glXGetCurrentDisplay
;
810 if (!debug_fn
.glXGetCurrentDrawableFn
) {
811 debug_fn
.glXGetCurrentDrawableFn
= fn
.glXGetCurrentDrawableFn
;
812 fn
.glXGetCurrentDrawableFn
= Debug_glXGetCurrentDrawable
;
814 if (!debug_fn
.glXGetCurrentReadDrawableFn
) {
815 debug_fn
.glXGetCurrentReadDrawableFn
= fn
.glXGetCurrentReadDrawableFn
;
816 fn
.glXGetCurrentReadDrawableFn
= Debug_glXGetCurrentReadDrawable
;
818 if (!debug_fn
.glXGetFBConfigAttribFn
) {
819 debug_fn
.glXGetFBConfigAttribFn
= fn
.glXGetFBConfigAttribFn
;
820 fn
.glXGetFBConfigAttribFn
= Debug_glXGetFBConfigAttrib
;
822 if (!debug_fn
.glXGetFBConfigFromVisualSGIXFn
) {
823 debug_fn
.glXGetFBConfigFromVisualSGIXFn
= fn
.glXGetFBConfigFromVisualSGIXFn
;
824 fn
.glXGetFBConfigFromVisualSGIXFn
= Debug_glXGetFBConfigFromVisualSGIX
;
826 if (!debug_fn
.glXGetFBConfigsFn
) {
827 debug_fn
.glXGetFBConfigsFn
= fn
.glXGetFBConfigsFn
;
828 fn
.glXGetFBConfigsFn
= Debug_glXGetFBConfigs
;
830 if (!debug_fn
.glXGetMscRateOMLFn
) {
831 debug_fn
.glXGetMscRateOMLFn
= fn
.glXGetMscRateOMLFn
;
832 fn
.glXGetMscRateOMLFn
= Debug_glXGetMscRateOML
;
834 if (!debug_fn
.glXGetSelectedEventFn
) {
835 debug_fn
.glXGetSelectedEventFn
= fn
.glXGetSelectedEventFn
;
836 fn
.glXGetSelectedEventFn
= Debug_glXGetSelectedEvent
;
838 if (!debug_fn
.glXGetSyncValuesOMLFn
) {
839 debug_fn
.glXGetSyncValuesOMLFn
= fn
.glXGetSyncValuesOMLFn
;
840 fn
.glXGetSyncValuesOMLFn
= Debug_glXGetSyncValuesOML
;
842 if (!debug_fn
.glXGetVisualFromFBConfigFn
) {
843 debug_fn
.glXGetVisualFromFBConfigFn
= fn
.glXGetVisualFromFBConfigFn
;
844 fn
.glXGetVisualFromFBConfigFn
= Debug_glXGetVisualFromFBConfig
;
846 if (!debug_fn
.glXIsDirectFn
) {
847 debug_fn
.glXIsDirectFn
= fn
.glXIsDirectFn
;
848 fn
.glXIsDirectFn
= Debug_glXIsDirect
;
850 if (!debug_fn
.glXMakeContextCurrentFn
) {
851 debug_fn
.glXMakeContextCurrentFn
= fn
.glXMakeContextCurrentFn
;
852 fn
.glXMakeContextCurrentFn
= Debug_glXMakeContextCurrent
;
854 if (!debug_fn
.glXMakeCurrentFn
) {
855 debug_fn
.glXMakeCurrentFn
= fn
.glXMakeCurrentFn
;
856 fn
.glXMakeCurrentFn
= Debug_glXMakeCurrent
;
858 if (!debug_fn
.glXQueryContextFn
) {
859 debug_fn
.glXQueryContextFn
= fn
.glXQueryContextFn
;
860 fn
.glXQueryContextFn
= Debug_glXQueryContext
;
862 if (!debug_fn
.glXQueryDrawableFn
) {
863 debug_fn
.glXQueryDrawableFn
= fn
.glXQueryDrawableFn
;
864 fn
.glXQueryDrawableFn
= Debug_glXQueryDrawable
;
866 if (!debug_fn
.glXQueryExtensionFn
) {
867 debug_fn
.glXQueryExtensionFn
= fn
.glXQueryExtensionFn
;
868 fn
.glXQueryExtensionFn
= Debug_glXQueryExtension
;
870 if (!debug_fn
.glXQueryExtensionsStringFn
) {
871 debug_fn
.glXQueryExtensionsStringFn
= fn
.glXQueryExtensionsStringFn
;
872 fn
.glXQueryExtensionsStringFn
= Debug_glXQueryExtensionsString
;
874 if (!debug_fn
.glXQueryServerStringFn
) {
875 debug_fn
.glXQueryServerStringFn
= fn
.glXQueryServerStringFn
;
876 fn
.glXQueryServerStringFn
= Debug_glXQueryServerString
;
878 if (!debug_fn
.glXQueryVersionFn
) {
879 debug_fn
.glXQueryVersionFn
= fn
.glXQueryVersionFn
;
880 fn
.glXQueryVersionFn
= Debug_glXQueryVersion
;
882 if (!debug_fn
.glXReleaseTexImageEXTFn
) {
883 debug_fn
.glXReleaseTexImageEXTFn
= fn
.glXReleaseTexImageEXTFn
;
884 fn
.glXReleaseTexImageEXTFn
= Debug_glXReleaseTexImageEXT
;
886 if (!debug_fn
.glXSelectEventFn
) {
887 debug_fn
.glXSelectEventFn
= fn
.glXSelectEventFn
;
888 fn
.glXSelectEventFn
= Debug_glXSelectEvent
;
890 if (!debug_fn
.glXSwapBuffersFn
) {
891 debug_fn
.glXSwapBuffersFn
= fn
.glXSwapBuffersFn
;
892 fn
.glXSwapBuffersFn
= Debug_glXSwapBuffers
;
894 if (!debug_fn
.glXSwapIntervalEXTFn
) {
895 debug_fn
.glXSwapIntervalEXTFn
= fn
.glXSwapIntervalEXTFn
;
896 fn
.glXSwapIntervalEXTFn
= Debug_glXSwapIntervalEXT
;
898 if (!debug_fn
.glXSwapIntervalMESAFn
) {
899 debug_fn
.glXSwapIntervalMESAFn
= fn
.glXSwapIntervalMESAFn
;
900 fn
.glXSwapIntervalMESAFn
= Debug_glXSwapIntervalMESA
;
902 if (!debug_fn
.glXUseXFontFn
) {
903 debug_fn
.glXUseXFontFn
= fn
.glXUseXFontFn
;
904 fn
.glXUseXFontFn
= Debug_glXUseXFont
;
906 if (!debug_fn
.glXWaitGLFn
) {
907 debug_fn
.glXWaitGLFn
= fn
.glXWaitGLFn
;
908 fn
.glXWaitGLFn
= Debug_glXWaitGL
;
910 if (!debug_fn
.glXWaitVideoSyncSGIFn
) {
911 debug_fn
.glXWaitVideoSyncSGIFn
= fn
.glXWaitVideoSyncSGIFn
;
912 fn
.glXWaitVideoSyncSGIFn
= Debug_glXWaitVideoSyncSGI
;
914 if (!debug_fn
.glXWaitXFn
) {
915 debug_fn
.glXWaitXFn
= fn
.glXWaitXFn
;
916 fn
.glXWaitXFn
= Debug_glXWaitX
;
918 g_debugBindingsInitialized
= true;
921 void DriverGLX::ClearBindings() {
922 memset(this, 0, sizeof(*this));
925 void GLXApiBase::glXBindTexImageEXTFn(Display
* dpy
,
926 GLXDrawable drawable
,
929 driver_
->fn
.glXBindTexImageEXTFn(dpy
, drawable
, buffer
, attribList
);
932 GLXFBConfig
* GLXApiBase::glXChooseFBConfigFn(Display
* dpy
,
934 const int* attribList
,
936 return driver_
->fn
.glXChooseFBConfigFn(dpy
, screen
, attribList
, nitems
);
939 XVisualInfo
* GLXApiBase::glXChooseVisualFn(Display
* dpy
,
942 return driver_
->fn
.glXChooseVisualFn(dpy
, screen
, attribList
);
945 void GLXApiBase::glXCopyContextFn(Display
* dpy
,
948 unsigned long mask
) {
949 driver_
->fn
.glXCopyContextFn(dpy
, src
, dst
, mask
);
952 void GLXApiBase::glXCopySubBufferMESAFn(Display
* dpy
,
953 GLXDrawable drawable
,
958 driver_
->fn
.glXCopySubBufferMESAFn(dpy
, drawable
, x
, y
, width
, height
);
961 GLXContext
GLXApiBase::glXCreateContextFn(Display
* dpy
,
963 GLXContext shareList
,
965 return driver_
->fn
.glXCreateContextFn(dpy
, vis
, shareList
, direct
);
968 GLXContext
GLXApiBase::glXCreateContextAttribsARBFn(Display
* dpy
,
970 GLXContext share_context
,
972 const int* attrib_list
) {
973 return driver_
->fn
.glXCreateContextAttribsARBFn(dpy
, config
, share_context
,
974 direct
, attrib_list
);
977 GLXPixmap
GLXApiBase::glXCreateGLXPixmapFn(Display
* dpy
,
980 return driver_
->fn
.glXCreateGLXPixmapFn(dpy
, visual
, pixmap
);
983 GLXContext
GLXApiBase::glXCreateNewContextFn(Display
* dpy
,
986 GLXContext shareList
,
988 return driver_
->fn
.glXCreateNewContextFn(dpy
, config
, renderType
, shareList
,
992 GLXPbuffer
GLXApiBase::glXCreatePbufferFn(Display
* dpy
,
994 const int* attribList
) {
995 return driver_
->fn
.glXCreatePbufferFn(dpy
, config
, attribList
);
998 GLXPixmap
GLXApiBase::glXCreatePixmapFn(Display
* dpy
,
1001 const int* attribList
) {
1002 return driver_
->fn
.glXCreatePixmapFn(dpy
, config
, pixmap
, attribList
);
1005 GLXWindow
GLXApiBase::glXCreateWindowFn(Display
* dpy
,
1008 const int* attribList
) {
1009 return driver_
->fn
.glXCreateWindowFn(dpy
, config
, win
, attribList
);
1012 void GLXApiBase::glXDestroyContextFn(Display
* dpy
, GLXContext ctx
) {
1013 driver_
->fn
.glXDestroyContextFn(dpy
, ctx
);
1016 void GLXApiBase::glXDestroyGLXPixmapFn(Display
* dpy
, GLXPixmap pixmap
) {
1017 driver_
->fn
.glXDestroyGLXPixmapFn(dpy
, pixmap
);
1020 void GLXApiBase::glXDestroyPbufferFn(Display
* dpy
, GLXPbuffer pbuf
) {
1021 driver_
->fn
.glXDestroyPbufferFn(dpy
, pbuf
);
1024 void GLXApiBase::glXDestroyPixmapFn(Display
* dpy
, GLXPixmap pixmap
) {
1025 driver_
->fn
.glXDestroyPixmapFn(dpy
, pixmap
);
1028 void GLXApiBase::glXDestroyWindowFn(Display
* dpy
, GLXWindow window
) {
1029 driver_
->fn
.glXDestroyWindowFn(dpy
, window
);
1032 const char* GLXApiBase::glXGetClientStringFn(Display
* dpy
, int name
) {
1033 return driver_
->fn
.glXGetClientStringFn(dpy
, name
);
1036 int GLXApiBase::glXGetConfigFn(Display
* dpy
,
1037 XVisualInfo
* visual
,
1040 return driver_
->fn
.glXGetConfigFn(dpy
, visual
, attrib
, value
);
1043 GLXContext
GLXApiBase::glXGetCurrentContextFn(void) {
1044 return driver_
->fn
.glXGetCurrentContextFn();
1047 Display
* GLXApiBase::glXGetCurrentDisplayFn(void) {
1048 return driver_
->fn
.glXGetCurrentDisplayFn();
1051 GLXDrawable
GLXApiBase::glXGetCurrentDrawableFn(void) {
1052 return driver_
->fn
.glXGetCurrentDrawableFn();
1055 GLXDrawable
GLXApiBase::glXGetCurrentReadDrawableFn(void) {
1056 return driver_
->fn
.glXGetCurrentReadDrawableFn();
1059 int GLXApiBase::glXGetFBConfigAttribFn(Display
* dpy
,
1063 return driver_
->fn
.glXGetFBConfigAttribFn(dpy
, config
, attribute
, value
);
1066 GLXFBConfig
GLXApiBase::glXGetFBConfigFromVisualSGIXFn(
1068 XVisualInfo
* visualInfo
) {
1069 return driver_
->fn
.glXGetFBConfigFromVisualSGIXFn(dpy
, visualInfo
);
1072 GLXFBConfig
* GLXApiBase::glXGetFBConfigsFn(Display
* dpy
,
1075 return driver_
->fn
.glXGetFBConfigsFn(dpy
, screen
, nelements
);
1078 bool GLXApiBase::glXGetMscRateOMLFn(Display
* dpy
,
1079 GLXDrawable drawable
,
1081 int32
* denominator
) {
1082 return driver_
->fn
.glXGetMscRateOMLFn(dpy
, drawable
, numerator
, denominator
);
1085 void GLXApiBase::glXGetSelectedEventFn(Display
* dpy
,
1086 GLXDrawable drawable
,
1087 unsigned long* mask
) {
1088 driver_
->fn
.glXGetSelectedEventFn(dpy
, drawable
, mask
);
1091 bool GLXApiBase::glXGetSyncValuesOMLFn(Display
* dpy
,
1092 GLXDrawable drawable
,
1096 return driver_
->fn
.glXGetSyncValuesOMLFn(dpy
, drawable
, ust
, msc
, sbc
);
1099 XVisualInfo
* GLXApiBase::glXGetVisualFromFBConfigFn(Display
* dpy
,
1100 GLXFBConfig config
) {
1101 return driver_
->fn
.glXGetVisualFromFBConfigFn(dpy
, config
);
1104 int GLXApiBase::glXIsDirectFn(Display
* dpy
, GLXContext ctx
) {
1105 return driver_
->fn
.glXIsDirectFn(dpy
, ctx
);
1108 int GLXApiBase::glXMakeContextCurrentFn(Display
* dpy
,
1112 return driver_
->fn
.glXMakeContextCurrentFn(dpy
, draw
, read
, ctx
);
1115 int GLXApiBase::glXMakeCurrentFn(Display
* dpy
,
1116 GLXDrawable drawable
,
1118 return driver_
->fn
.glXMakeCurrentFn(dpy
, drawable
, ctx
);
1121 int GLXApiBase::glXQueryContextFn(Display
* dpy
,
1125 return driver_
->fn
.glXQueryContextFn(dpy
, ctx
, attribute
, value
);
1128 void GLXApiBase::glXQueryDrawableFn(Display
* dpy
,
1131 unsigned int* value
) {
1132 driver_
->fn
.glXQueryDrawableFn(dpy
, draw
, attribute
, value
);
1135 int GLXApiBase::glXQueryExtensionFn(Display
* dpy
, int* errorb
, int* event
) {
1136 return driver_
->fn
.glXQueryExtensionFn(dpy
, errorb
, event
);
1139 const char* GLXApiBase::glXQueryExtensionsStringFn(Display
* dpy
, int screen
) {
1140 return driver_
->fn
.glXQueryExtensionsStringFn(dpy
, screen
);
1143 const char* GLXApiBase::glXQueryServerStringFn(Display
* dpy
,
1146 return driver_
->fn
.glXQueryServerStringFn(dpy
, screen
, name
);
1149 int GLXApiBase::glXQueryVersionFn(Display
* dpy
, int* maj
, int* min
) {
1150 return driver_
->fn
.glXQueryVersionFn(dpy
, maj
, min
);
1153 void GLXApiBase::glXReleaseTexImageEXTFn(Display
* dpy
,
1154 GLXDrawable drawable
,
1156 driver_
->fn
.glXReleaseTexImageEXTFn(dpy
, drawable
, buffer
);
1159 void GLXApiBase::glXSelectEventFn(Display
* dpy
,
1160 GLXDrawable drawable
,
1161 unsigned long mask
) {
1162 driver_
->fn
.glXSelectEventFn(dpy
, drawable
, mask
);
1165 void GLXApiBase::glXSwapBuffersFn(Display
* dpy
, GLXDrawable drawable
) {
1166 driver_
->fn
.glXSwapBuffersFn(dpy
, drawable
);
1169 void GLXApiBase::glXSwapIntervalEXTFn(Display
* dpy
,
1170 GLXDrawable drawable
,
1172 driver_
->fn
.glXSwapIntervalEXTFn(dpy
, drawable
, interval
);
1175 void GLXApiBase::glXSwapIntervalMESAFn(unsigned int interval
) {
1176 driver_
->fn
.glXSwapIntervalMESAFn(interval
);
1179 void GLXApiBase::glXUseXFontFn(Font font
, int first
, int count
, int list
) {
1180 driver_
->fn
.glXUseXFontFn(font
, first
, count
, list
);
1183 void GLXApiBase::glXWaitGLFn(void) {
1184 driver_
->fn
.glXWaitGLFn();
1187 int GLXApiBase::glXWaitVideoSyncSGIFn(int divisor
,
1189 unsigned int* count
) {
1190 return driver_
->fn
.glXWaitVideoSyncSGIFn(divisor
, remainder
, count
);
1193 void GLXApiBase::glXWaitXFn(void) {
1194 driver_
->fn
.glXWaitXFn();
1197 void TraceGLXApi::glXBindTexImageEXTFn(Display
* dpy
,
1198 GLXDrawable drawable
,
1201 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXBindTexImageEXT")
1202 glx_api_
->glXBindTexImageEXTFn(dpy
, drawable
, buffer
, attribList
);
1205 GLXFBConfig
* TraceGLXApi::glXChooseFBConfigFn(Display
* dpy
,
1207 const int* attribList
,
1209 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXChooseFBConfig")
1210 return glx_api_
->glXChooseFBConfigFn(dpy
, screen
, attribList
, nitems
);
1213 XVisualInfo
* TraceGLXApi::glXChooseVisualFn(Display
* dpy
,
1216 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXChooseVisual")
1217 return glx_api_
->glXChooseVisualFn(dpy
, screen
, attribList
);
1220 void TraceGLXApi::glXCopyContextFn(Display
* dpy
,
1223 unsigned long mask
) {
1224 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCopyContext")
1225 glx_api_
->glXCopyContextFn(dpy
, src
, dst
, mask
);
1228 void TraceGLXApi::glXCopySubBufferMESAFn(Display
* dpy
,
1229 GLXDrawable drawable
,
1234 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCopySubBufferMESA")
1235 glx_api_
->glXCopySubBufferMESAFn(dpy
, drawable
, x
, y
, width
, height
);
1238 GLXContext
TraceGLXApi::glXCreateContextFn(Display
* dpy
,
1240 GLXContext shareList
,
1242 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateContext")
1243 return glx_api_
->glXCreateContextFn(dpy
, vis
, shareList
, direct
);
1246 GLXContext
TraceGLXApi::glXCreateContextAttribsARBFn(Display
* dpy
,
1248 GLXContext share_context
,
1250 const int* attrib_list
) {
1251 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateContextAttribsARB")
1252 return glx_api_
->glXCreateContextAttribsARBFn(dpy
, config
, share_context
,
1253 direct
, attrib_list
);
1256 GLXPixmap
TraceGLXApi::glXCreateGLXPixmapFn(Display
* dpy
,
1257 XVisualInfo
* visual
,
1259 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateGLXPixmap")
1260 return glx_api_
->glXCreateGLXPixmapFn(dpy
, visual
, pixmap
);
1263 GLXContext
TraceGLXApi::glXCreateNewContextFn(Display
* dpy
,
1266 GLXContext shareList
,
1268 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateNewContext")
1269 return glx_api_
->glXCreateNewContextFn(dpy
, config
, renderType
, shareList
,
1273 GLXPbuffer
TraceGLXApi::glXCreatePbufferFn(Display
* dpy
,
1275 const int* attribList
) {
1276 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreatePbuffer")
1277 return glx_api_
->glXCreatePbufferFn(dpy
, config
, attribList
);
1280 GLXPixmap
TraceGLXApi::glXCreatePixmapFn(Display
* dpy
,
1283 const int* attribList
) {
1284 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreatePixmap")
1285 return glx_api_
->glXCreatePixmapFn(dpy
, config
, pixmap
, attribList
);
1288 GLXWindow
TraceGLXApi::glXCreateWindowFn(Display
* dpy
,
1291 const int* attribList
) {
1292 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateWindow")
1293 return glx_api_
->glXCreateWindowFn(dpy
, config
, win
, attribList
);
1296 void TraceGLXApi::glXDestroyContextFn(Display
* dpy
, GLXContext ctx
) {
1297 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyContext")
1298 glx_api_
->glXDestroyContextFn(dpy
, ctx
);
1301 void TraceGLXApi::glXDestroyGLXPixmapFn(Display
* dpy
, GLXPixmap pixmap
) {
1302 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyGLXPixmap")
1303 glx_api_
->glXDestroyGLXPixmapFn(dpy
, pixmap
);
1306 void TraceGLXApi::glXDestroyPbufferFn(Display
* dpy
, GLXPbuffer pbuf
) {
1307 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyPbuffer")
1308 glx_api_
->glXDestroyPbufferFn(dpy
, pbuf
);
1311 void TraceGLXApi::glXDestroyPixmapFn(Display
* dpy
, GLXPixmap pixmap
) {
1312 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyPixmap")
1313 glx_api_
->glXDestroyPixmapFn(dpy
, pixmap
);
1316 void TraceGLXApi::glXDestroyWindowFn(Display
* dpy
, GLXWindow window
) {
1317 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyWindow")
1318 glx_api_
->glXDestroyWindowFn(dpy
, window
);
1321 const char* TraceGLXApi::glXGetClientStringFn(Display
* dpy
, int name
) {
1322 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetClientString")
1323 return glx_api_
->glXGetClientStringFn(dpy
, name
);
1326 int TraceGLXApi::glXGetConfigFn(Display
* dpy
,
1327 XVisualInfo
* visual
,
1330 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetConfig")
1331 return glx_api_
->glXGetConfigFn(dpy
, visual
, attrib
, value
);
1334 GLXContext
TraceGLXApi::glXGetCurrentContextFn(void) {
1335 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentContext")
1336 return glx_api_
->glXGetCurrentContextFn();
1339 Display
* TraceGLXApi::glXGetCurrentDisplayFn(void) {
1340 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentDisplay")
1341 return glx_api_
->glXGetCurrentDisplayFn();
1344 GLXDrawable
TraceGLXApi::glXGetCurrentDrawableFn(void) {
1345 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentDrawable")
1346 return glx_api_
->glXGetCurrentDrawableFn();
1349 GLXDrawable
TraceGLXApi::glXGetCurrentReadDrawableFn(void) {
1350 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentReadDrawable")
1351 return glx_api_
->glXGetCurrentReadDrawableFn();
1354 int TraceGLXApi::glXGetFBConfigAttribFn(Display
* dpy
,
1358 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigAttrib")
1359 return glx_api_
->glXGetFBConfigAttribFn(dpy
, config
, attribute
, value
);
1362 GLXFBConfig
TraceGLXApi::glXGetFBConfigFromVisualSGIXFn(
1364 XVisualInfo
* visualInfo
) {
1365 TRACE_EVENT_BINARY_EFFICIENT0("gpu",
1366 "TraceGLAPI::glXGetFBConfigFromVisualSGIX")
1367 return glx_api_
->glXGetFBConfigFromVisualSGIXFn(dpy
, visualInfo
);
1370 GLXFBConfig
* TraceGLXApi::glXGetFBConfigsFn(Display
* dpy
,
1373 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigs")
1374 return glx_api_
->glXGetFBConfigsFn(dpy
, screen
, nelements
);
1377 bool TraceGLXApi::glXGetMscRateOMLFn(Display
* dpy
,
1378 GLXDrawable drawable
,
1380 int32
* denominator
) {
1381 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetMscRateOML")
1382 return glx_api_
->glXGetMscRateOMLFn(dpy
, drawable
, numerator
, denominator
);
1385 void TraceGLXApi::glXGetSelectedEventFn(Display
* dpy
,
1386 GLXDrawable drawable
,
1387 unsigned long* mask
) {
1388 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSelectedEvent")
1389 glx_api_
->glXGetSelectedEventFn(dpy
, drawable
, mask
);
1392 bool TraceGLXApi::glXGetSyncValuesOMLFn(Display
* dpy
,
1393 GLXDrawable drawable
,
1397 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSyncValuesOML")
1398 return glx_api_
->glXGetSyncValuesOMLFn(dpy
, drawable
, ust
, msc
, sbc
);
1401 XVisualInfo
* TraceGLXApi::glXGetVisualFromFBConfigFn(Display
* dpy
,
1402 GLXFBConfig config
) {
1403 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetVisualFromFBConfig")
1404 return glx_api_
->glXGetVisualFromFBConfigFn(dpy
, config
);
1407 int TraceGLXApi::glXIsDirectFn(Display
* dpy
, GLXContext ctx
) {
1408 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXIsDirect")
1409 return glx_api_
->glXIsDirectFn(dpy
, ctx
);
1412 int TraceGLXApi::glXMakeContextCurrentFn(Display
* dpy
,
1416 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXMakeContextCurrent")
1417 return glx_api_
->glXMakeContextCurrentFn(dpy
, draw
, read
, ctx
);
1420 int TraceGLXApi::glXMakeCurrentFn(Display
* dpy
,
1421 GLXDrawable drawable
,
1423 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXMakeCurrent")
1424 return glx_api_
->glXMakeCurrentFn(dpy
, drawable
, ctx
);
1427 int TraceGLXApi::glXQueryContextFn(Display
* dpy
,
1431 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryContext")
1432 return glx_api_
->glXQueryContextFn(dpy
, ctx
, attribute
, value
);
1435 void TraceGLXApi::glXQueryDrawableFn(Display
* dpy
,
1438 unsigned int* value
) {
1439 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryDrawable")
1440 glx_api_
->glXQueryDrawableFn(dpy
, draw
, attribute
, value
);
1443 int TraceGLXApi::glXQueryExtensionFn(Display
* dpy
, int* errorb
, int* event
) {
1444 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryExtension")
1445 return glx_api_
->glXQueryExtensionFn(dpy
, errorb
, event
);
1448 const char* TraceGLXApi::glXQueryExtensionsStringFn(Display
* dpy
, int screen
) {
1449 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryExtensionsString")
1450 return glx_api_
->glXQueryExtensionsStringFn(dpy
, screen
);
1453 const char* TraceGLXApi::glXQueryServerStringFn(Display
* dpy
,
1456 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryServerString")
1457 return glx_api_
->glXQueryServerStringFn(dpy
, screen
, name
);
1460 int TraceGLXApi::glXQueryVersionFn(Display
* dpy
, int* maj
, int* min
) {
1461 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryVersion")
1462 return glx_api_
->glXQueryVersionFn(dpy
, maj
, min
);
1465 void TraceGLXApi::glXReleaseTexImageEXTFn(Display
* dpy
,
1466 GLXDrawable drawable
,
1468 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXReleaseTexImageEXT")
1469 glx_api_
->glXReleaseTexImageEXTFn(dpy
, drawable
, buffer
);
1472 void TraceGLXApi::glXSelectEventFn(Display
* dpy
,
1473 GLXDrawable drawable
,
1474 unsigned long mask
) {
1475 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSelectEvent")
1476 glx_api_
->glXSelectEventFn(dpy
, drawable
, mask
);
1479 void TraceGLXApi::glXSwapBuffersFn(Display
* dpy
, GLXDrawable drawable
) {
1480 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapBuffers")
1481 glx_api_
->glXSwapBuffersFn(dpy
, drawable
);
1484 void TraceGLXApi::glXSwapIntervalEXTFn(Display
* dpy
,
1485 GLXDrawable drawable
,
1487 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapIntervalEXT")
1488 glx_api_
->glXSwapIntervalEXTFn(dpy
, drawable
, interval
);
1491 void TraceGLXApi::glXSwapIntervalMESAFn(unsigned int interval
) {
1492 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapIntervalMESA")
1493 glx_api_
->glXSwapIntervalMESAFn(interval
);
1496 void TraceGLXApi::glXUseXFontFn(Font font
, int first
, int count
, int list
) {
1497 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXUseXFont")
1498 glx_api_
->glXUseXFontFn(font
, first
, count
, list
);
1501 void TraceGLXApi::glXWaitGLFn(void) {
1502 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitGL")
1503 glx_api_
->glXWaitGLFn();
1506 int TraceGLXApi::glXWaitVideoSyncSGIFn(int divisor
,
1508 unsigned int* count
) {
1509 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitVideoSyncSGI")
1510 return glx_api_
->glXWaitVideoSyncSGIFn(divisor
, remainder
, count
);
1513 void TraceGLXApi::glXWaitXFn(void) {
1514 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitX")
1515 glx_api_
->glXWaitXFn();