#define GLX_GLXEXT_PROTOTYPES
#include <string.h>
#include "GL/glx.h"
#include "glapi/glapi.h"
#include "pipe/p_compiler.h"
struct name_address_pair {
const char *Name;
__GLXextFuncPtr Address;
};
static struct name_address_pair GLX_functions[] = {
{ "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual },
{ "glXCopyContext", (__GLXextFuncPtr) glXCopyContext },
{ "glXCreateContext", (__GLXextFuncPtr) glXCreateContext },
{ "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap },
{ "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext },
{ "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap },
{ "glXGetConfig", (__GLXextFuncPtr) glXGetConfig },
{ "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext },
{ "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable },
{ "glXIsDirect", (__GLXextFuncPtr) glXIsDirect },
{ "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent },
{ "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension },
{ "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion },
{ "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers },
{ "glXUseXFont", (__GLXextFuncPtr) glXUseXFont },
{ "glXWaitGL", (__GLXextFuncPtr) glXWaitGL },
{ "glXWaitX", (__GLXextFuncPtr) glXWaitX },
{ "glXGetClientString", (__GLXextFuncPtr) glXGetClientString },
{ "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString },
{ "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString },
{ "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay },
{ "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig },
{ "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext },
{ "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer },
{ "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap },
{ "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow },
{ "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer },
{ "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap },
{ "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow },
{ "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable },
{ "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib },
{ "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs },
{ "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent },
{ "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig },
{ "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent },
{ "glXQueryContext", (__GLXextFuncPtr) glXQueryContext },
{ "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable },
{ "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent },
{ "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress },
{ "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI },
{ "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI },
{ "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI },
{ "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI },
{ "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI },
#if defined(_VL_H)
{ "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX },
{ "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX },
#endif
{ "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT },
{ "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT },
{ "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT },
{ "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT },
{ "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT },
{ "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX },
{ "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX },
{ "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX },
{ "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX },
{ "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX },
{ "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX },
{ "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX },
{ "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX },
{ "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX },
{ "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX },
{ "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX },
{ "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI },
{ "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX },
{ "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX },
{ "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX },
{ "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX },
{ "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX },
#if defined(_DM_BUFFER_H_)
{ "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX },
#endif
{ "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX },
{ "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX },
{ "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX },
{ "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN },
{ "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA },
{ "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA },
{ "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA },
{ "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB },
{ "glXBindTexImageEXT", (__GLXextFuncPtr) glXBindTexImageEXT },
{ "glXReleaseTexImageEXT", (__GLXextFuncPtr) glXReleaseTexImageEXT },
{ NULL, NULL }
};
static __GLXextFuncPtr
_glxapi_get_proc_address(const char *funcName)
{
GLuint i;
for (i = 0; GLX_functions[i].Name; i++) {
if (strcmp(GLX_functions[i].Name, funcName) == 0)
return GLX_functions[i].Address;
}
return NULL;
}
PUBLIC __GLXextFuncPtr
glXGetProcAddressARB(const GLubyte *procName)
{
__GLXextFuncPtr f;
f = _glxapi_get_proc_address((const char *) procName);
if (f) {
return f;
}
f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName);
return f;
}
PUBLIC
void (*glXGetProcAddress(const GLubyte *procName))()
{
return glXGetProcAddressARB(procName);
}