Subversion Repositories Kolibri OS

Rev

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
}