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