| |
| /* |
| * Mesa 3-D graphics library |
| * Version: 5.1 |
| * |
| * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a |
| * copy of this software and associated documentation files (the "Software"), |
| * to deal in the Software without restriction, including without limitation |
| * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| * and/or sell copies of the Software, and to permit persons to whom the |
| * Software is furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included |
| * in all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
| * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| */ |
| |
| |
| #include <assert.h> |
| #include <GL/glx.h> |
| #include "realglx.h" |
| #include "glxapi.h" |
| |
| |
| struct _glxapi_table * |
| _real_GetGLXDispatchTable(void) |
| { |
| static struct _glxapi_table glx; |
| |
| /* be sure our dispatch table size <= libGL's table */ |
| { |
| GLuint size = sizeof(struct _glxapi_table) / sizeof(void *); |
| (void) size; |
| assert(_glxapi_get_dispatch_table_size() >= size); |
| } |
| |
| /* initialize the whole table to no-ops */ |
| _glxapi_set_no_op_table(&glx); |
| |
| /* now initialize the table with the functions I implement */ |
| |
| /*** GLX_VERSION_1_0 ***/ |
| glx.ChooseVisual = _real_glXChooseVisual; |
| glx.CopyContext = _real_glXCopyContext; |
| glx.CreateContext = _real_glXCreateContext; |
| glx.CreateGLXPixmap = _real_glXCreateGLXPixmap; |
| glx.DestroyContext = _real_glXDestroyContext; |
| glx.DestroyGLXPixmap = _real_glXDestroyGLXPixmap; |
| glx.GetConfig = _real_glXGetConfig; |
| /*glx.GetCurrentContext = _real_glXGetCurrentContext;*/ |
| /*glx.GetCurrentDrawable = _real_glXGetCurrentDrawable;*/ |
| glx.IsDirect = _real_glXIsDirect; |
| glx.MakeCurrent = _real_glXMakeCurrent; |
| glx.QueryExtension = _real_glXQueryExtension; |
| glx.QueryVersion = _real_glXQueryVersion; |
| glx.SwapBuffers = _real_glXSwapBuffers; |
| glx.UseXFont = _real_glXUseXFont; |
| glx.WaitGL = _real_glXWaitGL; |
| glx.WaitX = _real_glXWaitX; |
| |
| /*** GLX_VERSION_1_1 ***/ |
| glx.GetClientString = _real_glXGetClientString; |
| glx.QueryExtensionsString = _real_glXQueryExtensionsString; |
| glx.QueryServerString = _real_glXQueryServerString; |
| |
| /*** GLX_VERSION_1_2 ***/ |
| /*glx.GetCurrentDisplay = _real_glXGetCurrentDisplay;*/ |
| |
| /*** GLX_VERSION_1_3 ***/ |
| glx.ChooseFBConfig = _real_glXChooseFBConfig; |
| glx.CreateNewContext = _real_glXCreateNewContext; |
| glx.CreatePbuffer = _real_glXCreatePbuffer; |
| glx.CreatePixmap = _real_glXCreatePixmap; |
| glx.CreateWindow = _real_glXCreateWindow; |
| glx.DestroyPbuffer = _real_glXDestroyPbuffer; |
| glx.DestroyPixmap = _real_glXDestroyPixmap; |
| glx.DestroyWindow = _real_glXDestroyWindow; |
| /*glx.GetCurrentReadDrawable = _real_glXGetCurrentReadDrawable;*/ |
| glx.GetFBConfigAttrib = _real_glXGetFBConfigAttrib; |
| glx.GetFBConfigs = _real_glXGetFBConfigs; |
| glx.GetSelectedEvent = _real_glXGetSelectedEvent; |
| glx.GetVisualFromFBConfig = _real_glXGetVisualFromFBConfig; |
| glx.MakeContextCurrent = _real_glXMakeContextCurrent; |
| glx.QueryContext = _real_glXQueryContext; |
| glx.QueryDrawable = _real_glXQueryDrawable; |
| glx.SelectEvent = _real_glXSelectEvent; |
| |
| /*** GLX_SGI_swap_control ***/ |
| glx.SwapIntervalSGI = _real_glXSwapIntervalSGI; |
| |
| /*** GLX_SGI_video_sync ***/ |
| glx.GetVideoSyncSGI = _real_glXGetVideoSyncSGI; |
| glx.WaitVideoSyncSGI = _real_glXWaitVideoSyncSGI; |
| |
| /*** GLX_SGI_make_current_read ***/ |
| glx.MakeCurrentReadSGI = _real_glXMakeCurrentReadSGI; |
| /*glx.GetCurrentReadDrawableSGI = _real_glXGetCurrentReadDrawableSGI;*/ |
| |
| #if defined(_VL_H) |
| /*** GLX_SGIX_video_source ***/ |
| glx.CreateGLXVideoSourceSGIX = _real_glXCreateGLXVideoSourceSGIX; |
| glx.DestroyGLXVideoSourceSGIX = _real_glXDestroyGLXVideoSourceSGIX; |
| #endif |
| |
| /*** GLX_EXT_import_context ***/ |
| glx.FreeContextEXT = _real_glXFreeContextEXT; |
| /*glx.GetContextIDEXT = _real_glXGetContextIDEXT;*/ |
| /*glx.GetCurrentDisplayEXT = _real_glXGetCurrentDisplayEXT;*/ |
| glx.ImportContextEXT = _real_glXImportContextEXT; |
| glx.QueryContextInfoEXT = _real_glXQueryContextInfoEXT; |
| |
| /*** GLX_SGIX_fbconfig ***/ |
| glx.GetFBConfigAttribSGIX = _real_glXGetFBConfigAttribSGIX; |
| glx.ChooseFBConfigSGIX = _real_glXChooseFBConfigSGIX; |
| glx.CreateGLXPixmapWithConfigSGIX = _real_glXCreateGLXPixmapWithConfigSGIX; |
| glx.CreateContextWithConfigSGIX = _real_glXCreateContextWithConfigSGIX; |
| glx.GetVisualFromFBConfigSGIX = _real_glXGetVisualFromFBConfigSGIX; |
| glx.GetFBConfigFromVisualSGIX = _real_glXGetFBConfigFromVisualSGIX; |
| |
| /*** GLX_SGIX_pbuffer ***/ |
| glx.CreateGLXPbufferSGIX = _real_glXCreateGLXPbufferSGIX; |
| glx.DestroyGLXPbufferSGIX = _real_glXDestroyGLXPbufferSGIX; |
| glx.QueryGLXPbufferSGIX = _real_glXQueryGLXPbufferSGIX; |
| glx.SelectEventSGIX = _real_glXSelectEventSGIX; |
| glx.GetSelectedEventSGIX = _real_glXGetSelectedEventSGIX; |
| |
| /*** GLX_SGI_cushion ***/ |
| glx.CushionSGI = _real_glXCushionSGI; |
| |
| /*** GLX_SGIX_video_resize ***/ |
| glx.BindChannelToWindowSGIX = _real_glXBindChannelToWindowSGIX; |
| glx.ChannelRectSGIX = _real_glXChannelRectSGIX; |
| glx.QueryChannelRectSGIX = _real_glXQueryChannelRectSGIX; |
| glx.QueryChannelDeltasSGIX = _real_glXQueryChannelDeltasSGIX; |
| glx.ChannelRectSyncSGIX = _real_glXChannelRectSyncSGIX; |
| |
| #if defined(_DM_BUFFER_H_) |
| /*** (GLX_SGIX_dmbuffer ***/ |
| glx.AssociateDMPbufferSGIX = NULL; |
| #endif |
| |
| /*** GLX_SGIX_swap_group ***/ |
| glx.JoinSwapGroupSGIX = _real_glXJoinSwapGroupSGIX; |
| |
| /*** GLX_SGIX_swap_barrier ***/ |
| glx.BindSwapBarrierSGIX = _real_glXBindSwapBarrierSGIX; |
| glx.QueryMaxSwapBarriersSGIX = _real_glXQueryMaxSwapBarriersSGIX; |
| |
| /*** GLX_SUN_get_transparent_index ***/ |
| glx.GetTransparentIndexSUN = _real_glXGetTransparentIndexSUN; |
| |
| /*** GLX_MESA_copy_sub_buffer ***/ |
| glx.CopySubBufferMESA = _real_glXCopySubBufferMESA; |
| |
| /*** GLX_MESA_release_buffers ***/ |
| glx.ReleaseBuffersMESA = _real_glXReleaseBuffersMESA; |
| |
| /*** GLX_MESA_pixmap_colormap ***/ |
| glx.CreateGLXPixmapMESA = _real_glXCreateGLXPixmapMESA; |
| |
| /*** GLX_MESA_set_3dfx_mode ***/ |
| glx.Set3DfxModeMESA = _real_glXSet3DfxModeMESA; |
| |
| /*** GLX_NV_vertex_array_range ***/ |
| glx.AllocateMemoryNV = _real_glXAllocateMemoryNV; |
| glx.FreeMemoryNV = _real_glXFreeMemoryNV; |
| |
| /*** GLX_MESA_agp_offset ***/ |
| glx.GetAGPOffsetMESA = _real_glXGetAGPOffsetMESA; |
| |
| return &glx; |
| } |