2 * THIS FILE IS AUTOMATICALLY GENERATED BY gen_scrn_dispatch.pl
8 #include "glxglvnddispatchfuncs.h"
9 #include "g_glxglvnddispatchindices.h"
11 const int DI_FUNCTION_COUNT
= DI_LAST_INDEX
;
12 int __glXDispatchTableIndices
[DI_LAST_INDEX
];
13 const __GLXapiExports
*__glXGLVNDAPIExports
;
15 const char * const __glXDispatchTableStrings
[DI_LAST_INDEX
] = {
16 #define __ATTRIB(field) \
17 [DI_##field] = "glX"#field
19 __ATTRIB(BindTexImageEXT
),
20 // glXChooseFBConfig implemented by libglvnd
21 __ATTRIB(ChooseFBConfigSGIX
),
22 // glXChooseVisual implemented by libglvnd
23 // glXCopyContext implemented by libglvnd
24 // glXCreateContext implemented by libglvnd
25 __ATTRIB(CreateContextAttribsARB
),
26 __ATTRIB(CreateContextWithConfigSGIX
),
27 __ATTRIB(CreateGLXPbufferSGIX
),
28 // glXCreateGLXPixmap implemented by libglvnd
29 __ATTRIB(CreateGLXPixmapWithConfigSGIX
),
30 // glXCreateNewContext implemented by libglvnd
31 // glXCreatePbuffer implemented by libglvnd
32 // glXCreatePixmap implemented by libglvnd
33 // glXCreateWindow implemented by libglvnd
34 // glXDestroyContext implemented by libglvnd
35 __ATTRIB(DestroyGLXPbufferSGIX
),
36 // glXDestroyGLXPixmap implemented by libglvnd
37 // glXDestroyPbuffer implemented by libglvnd
38 // glXDestroyPixmap implemented by libglvnd
39 // glXDestroyWindow implemented by libglvnd
40 // glXFreeContextEXT implemented by libglvnd
41 // glXGetClientString implemented by libglvnd
42 // glXGetConfig implemented by libglvnd
43 __ATTRIB(GetContextIDEXT
),
44 // glXGetCurrentContext implemented by libglvnd
45 // glXGetCurrentDisplay implemented by libglvnd
46 __ATTRIB(GetCurrentDisplayEXT
),
47 // glXGetCurrentDrawable implemented by libglvnd
48 // glXGetCurrentReadDrawable implemented by libglvnd
49 // glXGetFBConfigAttrib implemented by libglvnd
50 __ATTRIB(GetFBConfigAttribSGIX
),
51 __ATTRIB(GetFBConfigFromVisualSGIX
),
52 // glXGetFBConfigs implemented by libglvnd
53 // glXGetProcAddress implemented by libglvnd
54 // glXGetProcAddressARB implemented by libglvnd
55 // glXGetSelectedEvent implemented by libglvnd
56 __ATTRIB(GetSelectedEventSGIX
),
57 __ATTRIB(GetVideoSyncSGI
),
58 // glXGetVisualFromFBConfig implemented by libglvnd
59 __ATTRIB(GetVisualFromFBConfigSGIX
),
60 // glXImportContextEXT implemented by libglvnd
61 // glXIsDirect implemented by libglvnd
62 // glXMakeContextCurrent implemented by libglvnd
63 // glXMakeCurrent implemented by libglvnd
64 // glXQueryContext implemented by libglvnd
65 __ATTRIB(QueryContextInfoEXT
),
66 // glXQueryDrawable implemented by libglvnd
67 // glXQueryExtension implemented by libglvnd
68 // glXQueryExtensionsString implemented by libglvnd
69 __ATTRIB(QueryGLXPbufferSGIX
),
70 // glXQueryServerString implemented by libglvnd
71 // glXQueryVersion implemented by libglvnd
72 __ATTRIB(ReleaseTexImageEXT
),
73 // glXSelectEvent implemented by libglvnd
74 __ATTRIB(SelectEventSGIX
),
75 // glXSwapBuffers implemented by libglvnd
76 __ATTRIB(SwapIntervalSGI
),
77 // glXUseXFont implemented by libglvnd
78 // glXWaitGL implemented by libglvnd
79 __ATTRIB(WaitVideoSyncSGI
),
80 // glXWaitX implemented by libglvnd
82 __ATTRIB(glXBindSwapBarrierSGIX
),
83 __ATTRIB(glXCopySubBufferMESA
),
84 __ATTRIB(glXCreateGLXPixmapMESA
),
85 __ATTRIB(glXGetMscRateOML
),
86 __ATTRIB(glXGetScreenDriver
),
87 __ATTRIB(glXGetSwapIntervalMESA
),
88 __ATTRIB(glXGetSyncValuesOML
),
89 __ATTRIB(glXJoinSwapGroupSGIX
),
90 __ATTRIB(glXQueryCurrentRendererIntegerMESA
),
91 __ATTRIB(glXQueryCurrentRendererStringMESA
),
92 __ATTRIB(glXQueryMaxSwapBarriersSGIX
),
93 __ATTRIB(glXQueryRendererIntegerMESA
),
94 __ATTRIB(glXQueryRendererStringMESA
),
95 __ATTRIB(glXReleaseBuffersMESA
),
96 __ATTRIB(glXSwapBuffersMscOML
),
97 __ATTRIB(glXSwapIntervalMESA
),
98 __ATTRIB(glXWaitForMscOML
),
99 __ATTRIB(glXWaitForSbcOML
),
104 #define __FETCH_FUNCTION_PTR(func_name) \
105 p##func_name = (void *) \
106 __VND->fetchDispatchEntry(dd, __glXDispatchTableIndices[DI_##func_name])
109 static void dispatch_BindTexImageEXT(Display
*dpy
, GLXDrawable drawable
,
110 int buffer
, const int *attrib_list
)
112 PFNGLXBINDTEXIMAGEEXTPROC pBindTexImageEXT
;
115 dd
= GetDispatchFromDrawable(dpy
, drawable
);
119 __FETCH_FUNCTION_PTR(BindTexImageEXT
);
120 if (pBindTexImageEXT
== NULL
)
123 (*pBindTexImageEXT
)(dpy
, drawable
, buffer
, attrib_list
);
128 static GLXFBConfigSGIX
*dispatch_ChooseFBConfigSGIX(Display
*dpy
, int screen
,
129 const int *attrib_list
,
132 PFNGLXCHOOSEFBCONFIGSGIXPROC pChooseFBConfigSGIX
;
134 GLXFBConfigSGIX
*ret
;
136 dd
= __VND
->getDynDispatch(dpy
, screen
);
140 __FETCH_FUNCTION_PTR(ChooseFBConfigSGIX
);
141 if (pChooseFBConfigSGIX
== NULL
)
144 ret
= (*pChooseFBConfigSGIX
)(dpy
, screen
, attrib_list
, nelements
);
145 if (AddFBConfigsMapping(dpy
, ret
, nelements
, dd
)) {
155 static GLXContext
dispatch_CreateContextAttribsARB(Display
*dpy
,
157 GLXContext share_list
,
159 const int *attrib_list
)
161 PFNGLXCREATECONTEXTATTRIBSARBPROC pCreateContextAttribsARB
;
165 dd
= GetDispatchFromFBConfig(dpy
, config
);
169 __FETCH_FUNCTION_PTR(CreateContextAttribsARB
);
170 if (pCreateContextAttribsARB
== NULL
)
173 ret
= (*pCreateContextAttribsARB
)(dpy
, config
, share_list
, direct
, attrib_list
);
174 if (AddContextMapping(dpy
, ret
, dd
)) {
175 /* XXX: Call glXDestroyContext which lives in libglvnd. If we're not
176 * allowed to call it from here, should we extend __glXDispatchTableIndices ?
186 static GLXContext
dispatch_CreateContextWithConfigSGIX(Display
*dpy
,
187 GLXFBConfigSGIX config
,
189 GLXContext share_list
,
192 PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC pCreateContextWithConfigSGIX
;
196 dd
= GetDispatchFromFBConfig(dpy
, config
);
200 __FETCH_FUNCTION_PTR(CreateContextWithConfigSGIX
);
201 if (pCreateContextWithConfigSGIX
== NULL
)
204 ret
= (*pCreateContextWithConfigSGIX
)(dpy
, config
, render_type
, share_list
, direct
);
205 if (AddContextMapping(dpy
, ret
, dd
)) {
206 /* XXX: Call glXDestroyContext which lives in libglvnd. If we're not
207 * allowed to call it from here, should we extend __glXDispatchTableIndices ?
217 static GLXPbuffer
dispatch_CreateGLXPbufferSGIX(Display
*dpy
,
221 const int *attrib_list
)
223 PFNGLXCREATEGLXPBUFFERSGIXPROC pCreateGLXPbufferSGIX
;
227 dd
= GetDispatchFromFBConfig(dpy
, config
);
231 __FETCH_FUNCTION_PTR(CreateGLXPbufferSGIX
);
232 if (pCreateGLXPbufferSGIX
== NULL
)
235 ret
= (*pCreateGLXPbufferSGIX
)(dpy
, config
, width
, height
, attrib_list
);
236 if (AddDrawableMapping(dpy
, ret
, dd
)) {
237 PFNGLXDESTROYGLXPBUFFERSGIXPROC pDestroyGLXPbufferSGIX
;
239 __FETCH_FUNCTION_PTR(DestroyGLXPbufferSGIX
);
240 if (pDestroyGLXPbufferSGIX
)
241 (*pDestroyGLXPbufferSGIX
)(dpy
, ret
);
251 static GLXPixmap
dispatch_CreateGLXPixmapWithConfigSGIX(Display
*dpy
,
252 GLXFBConfigSGIX config
,
255 PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC pCreateGLXPixmapWithConfigSGIX
;
259 dd
= GetDispatchFromFBConfig(dpy
, config
);
263 __FETCH_FUNCTION_PTR(CreateGLXPixmapWithConfigSGIX
);
264 if (pCreateGLXPixmapWithConfigSGIX
== NULL
)
267 ret
= (*pCreateGLXPixmapWithConfigSGIX
)(dpy
, config
, pixmap
);
268 if (AddDrawableMapping(dpy
, ret
, dd
)) {
269 /* XXX: Call glXDestroyGLXPixmap which lives in libglvnd. If we're not
270 * allowed to call it from here, should we extend __glXDispatchTableIndices ?
280 static void dispatch_DestroyGLXPbufferSGIX(Display
*dpy
, GLXPbuffer pbuf
)
282 PFNGLXDESTROYGLXPBUFFERSGIXPROC pDestroyGLXPbufferSGIX
;
285 dd
= GetDispatchFromDrawable(dpy
, pbuf
);
289 __FETCH_FUNCTION_PTR(DestroyGLXPbufferSGIX
);
290 if (pDestroyGLXPbufferSGIX
== NULL
)
293 (*pDestroyGLXPbufferSGIX
)(dpy
, pbuf
);
298 static GLXContextID
dispatch_GetContextIDEXT(const GLXContext ctx
)
300 PFNGLXGETCONTEXTIDEXTPROC pGetContextIDEXT
;
303 dd
= GetDispatchFromContext(ctx
);
307 __FETCH_FUNCTION_PTR(GetContextIDEXT
);
308 if (pGetContextIDEXT
== NULL
)
311 return (*pGetContextIDEXT
)(ctx
);
316 static Display
*dispatch_GetCurrentDisplayEXT(void)
318 PFNGLXGETCURRENTDISPLAYEXTPROC pGetCurrentDisplayEXT
;
321 if (!__VND
->getCurrentContext())
324 dd
= __VND
->getCurrentDynDispatch();
328 __FETCH_FUNCTION_PTR(GetCurrentDisplayEXT
);
329 if (pGetCurrentDisplayEXT
== NULL
)
332 return (*pGetCurrentDisplayEXT
)();
337 static int dispatch_GetFBConfigAttribSGIX(Display
*dpy
, GLXFBConfigSGIX config
,
338 int attribute
, int *value_return
)
340 PFNGLXGETFBCONFIGATTRIBSGIXPROC pGetFBConfigAttribSGIX
;
343 dd
= GetDispatchFromFBConfig(dpy
, config
);
345 return GLX_NO_EXTENSION
;
347 __FETCH_FUNCTION_PTR(GetFBConfigAttribSGIX
);
348 if (pGetFBConfigAttribSGIX
== NULL
)
349 return GLX_NO_EXTENSION
;
351 return (*pGetFBConfigAttribSGIX
)(dpy
, config
, attribute
, value_return
);
356 static GLXFBConfigSGIX
dispatch_GetFBConfigFromVisualSGIX(Display
*dpy
,
359 PFNGLXGETFBCONFIGFROMVISUALSGIXPROC pGetFBConfigFromVisualSGIX
;
361 GLXFBConfigSGIX ret
= NULL
;
363 dd
= GetDispatchFromVisual(dpy
, vis
);
367 __FETCH_FUNCTION_PTR(GetFBConfigFromVisualSGIX
);
368 if (pGetFBConfigFromVisualSGIX
== NULL
)
371 ret
= (*pGetFBConfigFromVisualSGIX
)(dpy
, vis
);
372 if (AddFBConfigMapping(dpy
, ret
, dd
))
373 /* XXX: dealloc ret ? */
381 static void dispatch_GetSelectedEventSGIX(Display
*dpy
, GLXDrawable drawable
,
384 PFNGLXGETSELECTEDEVENTSGIXPROC pGetSelectedEventSGIX
;
387 dd
= GetDispatchFromDrawable(dpy
, drawable
);
391 __FETCH_FUNCTION_PTR(GetSelectedEventSGIX
);
392 if (pGetSelectedEventSGIX
== NULL
)
395 (*pGetSelectedEventSGIX
)(dpy
, drawable
, mask
);
400 static int dispatch_GetVideoSyncSGI(unsigned int *count
)
402 PFNGLXGETVIDEOSYNCSGIPROC pGetVideoSyncSGI
;
405 if (!__VND
->getCurrentContext())
406 return GLX_BAD_CONTEXT
;
408 dd
= __VND
->getCurrentDynDispatch();
410 return GLX_NO_EXTENSION
;
412 __FETCH_FUNCTION_PTR(GetVideoSyncSGI
);
413 if (pGetVideoSyncSGI
== NULL
)
414 return GLX_NO_EXTENSION
;
416 return (*pGetVideoSyncSGI
)(count
);
421 static XVisualInfo
*dispatch_GetVisualFromFBConfigSGIX(Display
*dpy
,
422 GLXFBConfigSGIX config
)
424 PFNGLXGETVISUALFROMFBCONFIGSGIXPROC pGetVisualFromFBConfigSGIX
;
427 dd
= GetDispatchFromFBConfig(dpy
, config
);
431 __FETCH_FUNCTION_PTR(GetVisualFromFBConfigSGIX
);
432 if (pGetVisualFromFBConfigSGIX
== NULL
)
435 return (*pGetVisualFromFBConfigSGIX
)(dpy
, config
);
440 static int dispatch_QueryContextInfoEXT(Display
*dpy
, GLXContext ctx
,
441 int attribute
, int *value
)
443 PFNGLXQUERYCONTEXTINFOEXTPROC pQueryContextInfoEXT
;
446 dd
= GetDispatchFromContext(ctx
);
448 return GLX_NO_EXTENSION
;
450 __FETCH_FUNCTION_PTR(QueryContextInfoEXT
);
451 if (pQueryContextInfoEXT
== NULL
)
452 return GLX_NO_EXTENSION
;
454 return (*pQueryContextInfoEXT
)(dpy
, ctx
, attribute
, value
);
459 static void dispatch_QueryGLXPbufferSGIX(Display
*dpy
, GLXPbuffer pbuf
,
460 int attribute
, unsigned int *value
)
462 PFNGLXQUERYGLXPBUFFERSGIXPROC pQueryGLXPbufferSGIX
;
465 dd
= GetDispatchFromDrawable(dpy
, pbuf
);
469 __FETCH_FUNCTION_PTR(QueryGLXPbufferSGIX
);
470 if (pQueryGLXPbufferSGIX
== NULL
)
473 (*pQueryGLXPbufferSGIX
)(dpy
, pbuf
, attribute
, value
);
478 static void dispatch_ReleaseTexImageEXT(Display
*dpy
, GLXDrawable drawable
,
481 PFNGLXRELEASETEXIMAGEEXTPROC pReleaseTexImageEXT
;
484 dd
= GetDispatchFromDrawable(dpy
, drawable
);
488 __FETCH_FUNCTION_PTR(ReleaseTexImageEXT
);
489 if (pReleaseTexImageEXT
== NULL
)
492 (*pReleaseTexImageEXT
)(dpy
, drawable
, buffer
);
497 static void dispatch_SelectEventSGIX(Display
*dpy
, GLXDrawable drawable
,
500 PFNGLXSELECTEVENTSGIXPROC pSelectEventSGIX
;
503 dd
= GetDispatchFromDrawable(dpy
, drawable
);
507 __FETCH_FUNCTION_PTR(SelectEventSGIX
);
508 if (pSelectEventSGIX
== NULL
)
511 (*pSelectEventSGIX
)(dpy
, drawable
, mask
);
516 static int dispatch_SwapIntervalSGI(int interval
)
518 PFNGLXSWAPINTERVALSGIPROC pSwapIntervalSGI
;
521 if (!__VND
->getCurrentContext())
522 return GLX_BAD_CONTEXT
;
524 dd
= __VND
->getCurrentDynDispatch();
526 return GLX_NO_EXTENSION
;
528 __FETCH_FUNCTION_PTR(SwapIntervalSGI
);
529 if (pSwapIntervalSGI
== NULL
)
530 return GLX_NO_EXTENSION
;
532 return (*pSwapIntervalSGI
)(interval
);
537 static int dispatch_WaitVideoSyncSGI(int divisor
, int remainder
,
540 PFNGLXWAITVIDEOSYNCSGIPROC pWaitVideoSyncSGI
;
543 if (!__VND
->getCurrentContext())
544 return GLX_BAD_CONTEXT
;
546 dd
= __VND
->getCurrentDynDispatch();
548 return GLX_NO_EXTENSION
;
550 __FETCH_FUNCTION_PTR(WaitVideoSyncSGI
);
551 if (pWaitVideoSyncSGI
== NULL
)
552 return GLX_NO_EXTENSION
;
554 return (*pWaitVideoSyncSGI
)(divisor
, remainder
, count
);
559 static void dispatch_glXBindSwapBarrierSGIX(Display
*dpy
, GLXDrawable drawable
,
562 PFNGLXBINDSWAPBARRIERSGIXPROC pglXBindSwapBarrierSGIX
;
565 dd
= GetDispatchFromDrawable(dpy
, drawable
);
569 __FETCH_FUNCTION_PTR(glXBindSwapBarrierSGIX
);
570 if (pglXBindSwapBarrierSGIX
== NULL
)
573 (*pglXBindSwapBarrierSGIX
)(dpy
, drawable
, barrier
);
578 static void dispatch_glXCopySubBufferMESA(Display
*dpy
, GLXDrawable drawable
,
579 int x
, int y
, int width
, int height
)
581 PFNGLXCOPYSUBBUFFERMESAPROC pglXCopySubBufferMESA
;
584 dd
= GetDispatchFromDrawable(dpy
, drawable
);
588 __FETCH_FUNCTION_PTR(glXCopySubBufferMESA
);
589 if (pglXCopySubBufferMESA
== NULL
)
592 (*pglXCopySubBufferMESA
)(dpy
, drawable
, x
, y
, width
, height
);
597 static GLXPixmap
dispatch_glXCreateGLXPixmapMESA(Display
*dpy
,
598 XVisualInfo
*visinfo
,
599 Pixmap pixmap
, Colormap cmap
)
601 PFNGLXCREATEGLXPIXMAPMESAPROC pglXCreateGLXPixmapMESA
;
605 dd
= GetDispatchFromVisual(dpy
, visinfo
);
609 __FETCH_FUNCTION_PTR(glXCreateGLXPixmapMESA
);
610 if (pglXCreateGLXPixmapMESA
== NULL
)
613 ret
= (*pglXCreateGLXPixmapMESA
)(dpy
, visinfo
, pixmap
, cmap
);
614 if (AddDrawableMapping(dpy
, ret
, dd
)) {
615 /* XXX: Call glXDestroyGLXPixmap which lives in libglvnd. If we're not
616 * allowed to call it from here, should we extend __glXDispatchTableIndices ?
626 static GLboolean
dispatch_glXGetMscRateOML(Display
*dpy
, GLXDrawable drawable
,
627 int32_t *numerator
, int32_t *denominator
)
629 PFNGLXGETMSCRATEOMLPROC pglXGetMscRateOML
;
632 dd
= GetDispatchFromDrawable(dpy
, drawable
);
636 __FETCH_FUNCTION_PTR(glXGetMscRateOML
);
637 if (pglXGetMscRateOML
== NULL
)
640 return (*pglXGetMscRateOML
)(dpy
, drawable
, numerator
, denominator
);
645 static const char *dispatch_glXGetScreenDriver(Display
*dpy
, int scrNum
)
647 typedef const char *(*fn_glXGetScreenDriver_ptr
)(Display
*dpy
, int scrNum
);
648 fn_glXGetScreenDriver_ptr pglXGetScreenDriver
;
651 dd
= __VND
->getDynDispatch(dpy
, scrNum
);
655 __FETCH_FUNCTION_PTR(glXGetScreenDriver
);
656 if (pglXGetScreenDriver
== NULL
)
659 return (*pglXGetScreenDriver
)(dpy
, scrNum
);
664 static int dispatch_glXGetSwapIntervalMESA(void)
666 PFNGLXGETSWAPINTERVALMESAPROC pglXGetSwapIntervalMESA
;
669 if (!__VND
->getCurrentContext())
670 return GLX_BAD_CONTEXT
;
672 dd
= __VND
->getCurrentDynDispatch();
676 __FETCH_FUNCTION_PTR(glXGetSwapIntervalMESA
);
677 if (pglXGetSwapIntervalMESA
== NULL
)
680 return (*pglXGetSwapIntervalMESA
)();
685 static Bool
dispatch_glXGetSyncValuesOML(Display
*dpy
, GLXDrawable drawable
,
686 int64_t *ust
, int64_t *msc
, int64_t *sbc
)
688 PFNGLXGETSYNCVALUESOMLPROC pglXGetSyncValuesOML
;
691 dd
= GetDispatchFromDrawable(dpy
, drawable
);
695 __FETCH_FUNCTION_PTR(glXGetSyncValuesOML
);
696 if (pglXGetSyncValuesOML
== NULL
)
699 return (*pglXGetSyncValuesOML
)(dpy
, drawable
, ust
, msc
, sbc
);
704 static void dispatch_glXJoinSwapGroupSGIX(Display
*dpy
, GLXDrawable drawable
,
707 PFNGLXJOINSWAPGROUPSGIXPROC pglXJoinSwapGroupSGIX
;
710 dd
= GetDispatchFromDrawable(dpy
, drawable
);
714 __FETCH_FUNCTION_PTR(glXJoinSwapGroupSGIX
);
715 if (pglXJoinSwapGroupSGIX
== NULL
)
718 (*pglXJoinSwapGroupSGIX
)(dpy
, drawable
, member
);
723 static Bool
dispatch_glXQueryCurrentRendererIntegerMESA(int attribute
,
726 PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC pglXQueryCurrentRendererIntegerMESA
;
729 if (!__VND
->getCurrentContext())
732 dd
= __VND
->getCurrentDynDispatch();
736 __FETCH_FUNCTION_PTR(glXQueryCurrentRendererIntegerMESA
);
737 if (pglXQueryCurrentRendererIntegerMESA
== NULL
)
740 return (*pglXQueryCurrentRendererIntegerMESA
)(attribute
, value
);
745 static const char *dispatch_glXQueryCurrentRendererStringMESA(int attribute
)
747 PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC pglXQueryCurrentRendererStringMESA
;
750 if (!__VND
->getCurrentContext())
753 dd
= __VND
->getCurrentDynDispatch();
757 __FETCH_FUNCTION_PTR(glXQueryCurrentRendererStringMESA
);
758 if (pglXQueryCurrentRendererStringMESA
== NULL
)
761 return (*pglXQueryCurrentRendererStringMESA
)(attribute
);
766 static Bool
dispatch_glXQueryMaxSwapBarriersSGIX(Display
*dpy
, int screen
,
769 PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC pglXQueryMaxSwapBarriersSGIX
;
772 dd
= __VND
->getDynDispatch(dpy
, screen
);
776 __FETCH_FUNCTION_PTR(glXQueryMaxSwapBarriersSGIX
);
777 if (pglXQueryMaxSwapBarriersSGIX
== NULL
)
780 return (*pglXQueryMaxSwapBarriersSGIX
)(dpy
, screen
, max
);
785 static Bool
dispatch_glXQueryRendererIntegerMESA(Display
*dpy
, int screen
,
786 int renderer
, int attribute
,
789 PFNGLXQUERYRENDERERINTEGERMESAPROC pglXQueryRendererIntegerMESA
;
792 dd
= __VND
->getDynDispatch(dpy
, screen
);
796 __FETCH_FUNCTION_PTR(glXQueryRendererIntegerMESA
);
797 if (pglXQueryRendererIntegerMESA
== NULL
)
800 return (*pglXQueryRendererIntegerMESA
)(dpy
, screen
, renderer
, attribute
, value
);
805 static const char *dispatch_glXQueryRendererStringMESA(Display
*dpy
, int screen
,
806 int renderer
, int attribute
)
808 PFNGLXQUERYRENDERERSTRINGMESAPROC pglXQueryRendererStringMESA
;
809 __GLXvendorInfo
*dd
= NULL
;
811 dd
= __VND
->getDynDispatch(dpy
, screen
);
815 __FETCH_FUNCTION_PTR(glXQueryRendererStringMESA
);
816 if (pglXQueryRendererStringMESA
== NULL
)
819 return (*pglXQueryRendererStringMESA
)(dpy
, screen
, renderer
, attribute
);
824 static Bool
dispatch_glXReleaseBuffersMESA(Display
*dpy
, GLXDrawable d
)
826 PFNGLXRELEASEBUFFERSMESAPROC pglXReleaseBuffersMESA
;
829 dd
= GetDispatchFromDrawable(dpy
, d
);
833 __FETCH_FUNCTION_PTR(glXReleaseBuffersMESA
);
834 if (pglXReleaseBuffersMESA
== NULL
)
837 return (*pglXReleaseBuffersMESA
)(dpy
, d
);
842 static int64_t dispatch_glXSwapBuffersMscOML(Display
*dpy
, GLXDrawable drawable
,
843 int64_t target_msc
, int64_t divisor
,
846 PFNGLXSWAPBUFFERSMSCOMLPROC pglXSwapBuffersMscOML
;
849 dd
= GetDispatchFromDrawable(dpy
, drawable
);
853 __FETCH_FUNCTION_PTR(glXSwapBuffersMscOML
);
854 if (pglXSwapBuffersMscOML
== NULL
)
857 return (*pglXSwapBuffersMscOML
)(dpy
, drawable
, target_msc
, divisor
, remainder
);
862 static int dispatch_glXSwapIntervalMESA(unsigned int interval
)
864 PFNGLXSWAPINTERVALMESAPROC pglXSwapIntervalMESA
;
867 if (!__VND
->getCurrentContext())
868 return GLX_BAD_CONTEXT
;
870 dd
= __VND
->getCurrentDynDispatch();
874 __FETCH_FUNCTION_PTR(glXSwapIntervalMESA
);
875 if (pglXSwapIntervalMESA
== NULL
)
878 return (*pglXSwapIntervalMESA
)(interval
);
883 static Bool
dispatch_glXWaitForMscOML(Display
*dpy
, GLXDrawable drawable
,
884 int64_t target_msc
, int64_t divisor
,
885 int64_t remainder
, int64_t *ust
,
886 int64_t *msc
, int64_t *sbc
)
888 PFNGLXWAITFORMSCOMLPROC pglXWaitForMscOML
;
891 dd
= GetDispatchFromDrawable(dpy
, drawable
);
895 __FETCH_FUNCTION_PTR(glXWaitForMscOML
);
896 if (pglXWaitForMscOML
== NULL
)
899 return (*pglXWaitForMscOML
)(dpy
, drawable
, target_msc
, divisor
, remainder
, ust
, msc
, sbc
);
904 static Bool
dispatch_glXWaitForSbcOML(Display
*dpy
, GLXDrawable drawable
,
905 int64_t target_sbc
, int64_t *ust
,
906 int64_t *msc
, int64_t *sbc
)
908 PFNGLXWAITFORSBCOMLPROC pglXWaitForSbcOML
;
911 dd
= GetDispatchFromDrawable(dpy
, drawable
);
915 __FETCH_FUNCTION_PTR(glXWaitForSbcOML
);
916 if (pglXWaitForSbcOML
== NULL
)
919 return (*pglXWaitForSbcOML
)(dpy
, drawable
, target_sbc
, ust
, msc
, sbc
);
922 #undef __FETCH_FUNCTION_PTR
925 const void * const __glXDispatchFunctions
[DI_LAST_INDEX
] = {
926 #define __ATTRIB(field) \
927 [DI_##field] = (void *)dispatch_##field
929 __ATTRIB(BindTexImageEXT
),
930 __ATTRIB(BindTexImageEXT
),
931 __ATTRIB(ChooseFBConfigSGIX
),
932 __ATTRIB(CreateContextAttribsARB
),
933 __ATTRIB(CreateContextWithConfigSGIX
),
934 __ATTRIB(CreateGLXPbufferSGIX
),
935 __ATTRIB(CreateGLXPixmapWithConfigSGIX
),
936 __ATTRIB(DestroyGLXPbufferSGIX
),
937 __ATTRIB(GetContextIDEXT
),
938 __ATTRIB(GetCurrentDisplayEXT
),
939 __ATTRIB(GetFBConfigAttribSGIX
),
940 __ATTRIB(GetFBConfigFromVisualSGIX
),
941 __ATTRIB(GetSelectedEventSGIX
),
942 #if defined(GLX_SGI_video_sync)
943 __ATTRIB(GetVideoSyncSGI
),
944 #endif // defined(GLX_SGI_video_sync)
945 __ATTRIB(GetVisualFromFBConfigSGIX
),
946 __ATTRIB(QueryContextInfoEXT
),
947 __ATTRIB(QueryGLXPbufferSGIX
),
948 __ATTRIB(ReleaseTexImageEXT
),
949 __ATTRIB(SelectEventSGIX
),
950 #if defined(GLX_SGI_swap_control)
951 __ATTRIB(SwapIntervalSGI
),
952 #endif // defined(GLX_SGI_swap_control)
953 #if defined(GLX_SGI_video_sync)
954 __ATTRIB(WaitVideoSyncSGI
),
955 #endif // defined(GLX_SGI_video_sync)
956 __ATTRIB(glXBindSwapBarrierSGIX
),
957 __ATTRIB(glXCopySubBufferMESA
),
958 __ATTRIB(glXCreateGLXPixmapMESA
),
959 __ATTRIB(glXGetMscRateOML
),
960 __ATTRIB(glXGetScreenDriver
),
961 __ATTRIB(glXGetSwapIntervalMESA
),
962 __ATTRIB(glXGetSyncValuesOML
),
963 __ATTRIB(glXJoinSwapGroupSGIX
),
964 __ATTRIB(glXQueryCurrentRendererIntegerMESA
),
965 __ATTRIB(glXQueryCurrentRendererStringMESA
),
966 __ATTRIB(glXQueryMaxSwapBarriersSGIX
),
967 __ATTRIB(glXQueryRendererIntegerMESA
),
968 __ATTRIB(glXQueryRendererStringMESA
),
969 __ATTRIB(glXReleaseBuffersMESA
),
970 __ATTRIB(glXSwapBuffersMscOML
),
971 __ATTRIB(glXSwapIntervalMESA
),
972 __ATTRIB(glXWaitForMscOML
),
973 __ATTRIB(glXWaitForSbcOML
),