/* * 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; }