1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Mesa 3-D graphics library
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Version:  7.6
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"),
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software is furnished to do so, subject to the following conditions:
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice shall be included
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * in all copies or substantial portions of the Software.
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/**
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * glXGetProcAddress()
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GLX_GLXEXT_PROTOTYPES
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <string.h>
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "GL/glx.h"
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "glapi/glapi.h"
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct name_address_pair {
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   const char *Name;
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   __GLXextFuncPtr Address;
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct name_address_pair GLX_functions[] = {
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_VERSION_1_0 ***/
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual },
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCopyContext", (__GLXextFuncPtr) glXCopyContext },
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateContext", (__GLXextFuncPtr) glXCreateContext },
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap },
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext },
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap },
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetConfig", (__GLXextFuncPtr) glXGetConfig },
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext },
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable },
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXIsDirect", (__GLXextFuncPtr) glXIsDirect },
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent },
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension },
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion },
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers },
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXUseXFont", (__GLXextFuncPtr) glXUseXFont },
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXWaitGL", (__GLXextFuncPtr) glXWaitGL },
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXWaitX", (__GLXextFuncPtr) glXWaitX },
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_VERSION_1_1 ***/
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetClientString", (__GLXextFuncPtr) glXGetClientString },
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString },
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString },
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_VERSION_1_2 ***/
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay },
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_VERSION_1_3 ***/
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig },
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext },
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer },
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap },
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow },
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer },
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap },
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow },
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable },
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib },
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs },
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent },
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig },
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent },
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryContext", (__GLXextFuncPtr) glXQueryContext },
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable },
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent },
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_VERSION_1_4 ***/
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress },
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGI_swap_control ***/
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI },
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGI_video_sync ***/
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI },
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI },
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGI_make_current_read ***/
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI },
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI },
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_video_source ***/
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if defined(_VL_H)
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX },
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX },
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_EXT_import_context ***/
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT },
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT },
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT },
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT },
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT },
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_fbconfig ***/
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX },
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX },
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX },
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX },
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX },
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX },
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_pbuffer ***/
128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX },
129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX },
130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX },
131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX },
132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX },
133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGI_cushion ***/
135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI },
136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_video_resize ***/
138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX },
139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX },
140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX },
141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX },
142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX },
143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_dmbuffer **/
145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if defined(_DM_BUFFER_H_)
146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX },
147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_swap_group ***/
150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX },
151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SGIX_swap_barrier ***/
153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX },
154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX },
155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_SUN_get_transparent_index ***/
157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN },
158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_MESA_copy_sub_buffer ***/
160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA },
161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_MESA_pixmap_colormap ***/
163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA },
164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_MESA_release_buffers ***/
166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA },
167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_ARB_get_proc_address ***/
169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB },
170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_ARB_create_context ***/
172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXCreateContextAttribsARB", (__GLXextFuncPtr) glXCreateContextAttribsARB },
173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /*** GLX_EXT_texture_from_pixmap ***/
175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXBindTexImageEXT", (__GLXextFuncPtr) glXBindTexImageEXT },
176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { "glXReleaseTexImageEXT", (__GLXextFuncPtr) glXReleaseTexImageEXT },
177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   { NULL, NULL }   /* end of list */
179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org};
180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/**
184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Return address of named glX function, or NULL if not found.
185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic __GLXextFuncPtr
187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_glxapi_get_proc_address(const char *funcName)
188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   GLuint i;
190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   for (i = 0; GLX_functions[i].Name; i++) {
191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      if (strcmp(GLX_functions[i].Name, funcName) == 0)
192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org         return GLX_functions[i].Address;
193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return NULL;
195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgPUBLIC __GLXextFuncPtr
199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgglXGetProcAddressARB(const GLubyte *procName)
200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   __GLXextFuncPtr f;
202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   f = _glxapi_get_proc_address((const char *) procName);
204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (f) {
205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return f;
206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName);
209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return f;
210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* GLX 1.4 */
214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgPUBLIC
215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid (*glXGetProcAddress(const GLubyte *procName))()
216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return glXGetProcAddressARB(procName);
218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
219