X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglx%2Fx11%2Fglxcmds.c;h=9d1bb2a0b55db2d5eaf68484ba2fe4ba655eadba;hb=48e6fff3a9d97fffa6d2dd63e63ffe94c25d2d96;hp=6a31f24dd8cc7641d8dabf74a7363d42f992e4f3;hpb=82dfd4b71f932f46e116743b204d0077a0875ab8;p=mesa.git diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c index 6a31f24dd8c..9d1bb2a0b55 100644 --- a/src/glx/x11/glxcmds.c +++ b/src/glx/x11/glxcmds.c @@ -1650,18 +1650,10 @@ PUBLIC XVisualInfo *glXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config) } -/* -** GLX_SGI_make_current_read -*/ - -PUBLIC GLX_ALIAS(GLXDrawable, glXGetCurrentReadDrawableSGI, (void), (), - glXGetCurrentReadDrawable) - - /* ** GLX_SGI_swap_control */ -PUBLIC int glXSwapIntervalSGI(int interval) +static int __glXSwapIntervalSGI(int interval) { xGLXVendorPrivateReq *req; GLXContext gc = __glXGetCurrentContext(); @@ -1708,7 +1700,7 @@ PUBLIC int glXSwapIntervalSGI(int interval) req->vendorCode = X_GLXvop_SwapIntervalSGI; req->contextTag = gc->currentContextTag; - interval_ptr = (CARD32 *) req + 1; + interval_ptr = (CARD32 *) (req + 1); *interval_ptr = interval; UnlockDisplay(dpy); @@ -1722,7 +1714,7 @@ PUBLIC int glXSwapIntervalSGI(int interval) /* ** GLX_MESA_swap_control */ -PUBLIC GLint glXSwapIntervalMESA(unsigned interval) +static int __glXSwapIntervalMESA(unsigned int interval) { #ifdef GLX_DIRECT_RENDERING GLXContext gc = __glXGetCurrentContext(); @@ -1754,7 +1746,8 @@ PUBLIC GLint glXSwapIntervalMESA(unsigned interval) return GLX_BAD_CONTEXT; } -PUBLIC GLint glXGetSwapIntervalMESA( void ) + +static int __glXGetSwapIntervalMESA(void) { #ifdef GLX_DIRECT_RENDERING GLXContext gc = __glXGetCurrentContext(); @@ -1784,7 +1777,7 @@ PUBLIC GLint glXGetSwapIntervalMESA( void ) ** GLX_MESA_swap_frame_usage */ -PUBLIC GLint glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable) +static GLint __glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable) { int status = GLX_BAD_CONTEXT; #ifdef GLX_DIRECT_RENDERING @@ -1804,7 +1797,7 @@ PUBLIC GLint glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable) } -PUBLIC GLint glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable) +static GLint __glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable) { int status = GLX_BAD_CONTEXT; #ifdef GLX_DIRECT_RENDERING @@ -1824,8 +1817,8 @@ PUBLIC GLint glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable) } -PUBLIC GLint glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, - GLfloat *usage) +static GLint __glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, + GLfloat *usage) { int status = GLX_BAD_CONTEXT; #ifdef GLX_DIRECT_RENDERING @@ -1851,9 +1844,9 @@ PUBLIC GLint glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, } -PUBLIC GLint glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, - int64_t *sbc, int64_t *missedFrames, - GLfloat *lastMissedUsage) +static GLint __glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, + int64_t *sbc, int64_t *missedFrames, + GLfloat *lastMissedUsage) { int status = GLX_BAD_CONTEXT; #ifdef GLX_DIRECT_RENDERING @@ -1883,7 +1876,7 @@ PUBLIC GLint glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, /* ** GLX_SGI_video_sync */ -PUBLIC int glXGetVideoSyncSGI(unsigned int *count) +static int __glXGetVideoSyncSGI(unsigned int *count) { /* FIXME: Looking at the GLX_SGI_video_sync spec in the extension registry, * FIXME: there should be a GLX encoding for this call. I can find no @@ -1912,7 +1905,7 @@ PUBLIC int glXGetVideoSyncSGI(unsigned int *count) return GLX_BAD_CONTEXT; } -PUBLIC int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) +static int __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) { #ifdef GLX_DIRECT_RENDERING GLXContext gc = __glXGetCurrentContext(); @@ -1949,33 +1942,6 @@ PUBLIC int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) } -/* -** GLX_SGIS_video_source -*/ -#if defined(_VL_H) - -PUBLIC GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX(Display *dpy, - int screen, VLServer server, VLPath path, - int nodeClass, VLNode drainNode) -{ - (void) dpy; - (void) screen; - (void) server; - (void) path; - (void) nodeClass; - (void) drainNode; - return 0; -} - -PUBLIC void glXDestroyGLXVideoSourceSGIX(Display *dpy, GLXVideoSourceSGIX src) -{ - (void) dpy; - (void) src; -} - -#endif - - /* ** GLX_SGIX_fbconfig ** Many of these functions are aliased to GLX 1.3 entry points in the @@ -2080,100 +2046,11 @@ PUBLIC GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX(Display *dpy, } -/* -** GLX_SGI_cushion -*/ -PUBLIC void glXCushionSGI(Display *dpy, Window win, float cushion) -{ - (void) dpy; - (void) win; - (void) cushion; -} - - -/* -** GLX_SGIX_video_resize -*/ -PUBLIC int glXBindChannelToWindowSGIX(Display *dpy, int screen, - int channel , Window window) -{ - (void) dpy; - (void) screen; - (void) channel; - (void) window; - return 0; -} - -PUBLIC int glXChannelRectSGIX(Display *dpy, int screen, int channel, - int x, int y, int w, int h) -{ - (void) dpy; - (void) screen; - (void) channel; - (void) x; - (void) y; - (void) w; - (void) h; - return 0; -} - -PUBLIC int glXQueryChannelRectSGIX(Display *dpy, int screen, int channel, - int *x, int *y, int *w, int *h) -{ - (void) dpy; - (void) screen; - (void) channel; - (void) x; - (void) y; - (void) w; - (void) h; - return 0; -} - -int glXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, - int *dx, int *dy, int *dw, int *dh) -{ - (void) dpy; - (void) screen; - (void) channel; - (void) dx; - (void) dy; - (void) dw; - (void) dh; - return 0; -} - -PUBLIC int glXChannelRectSyncSGIX(Display *dpy, int screen, - int channel, GLenum synctype) -{ - (void) dpy; - (void) screen; - (void) channel; - (void) synctype; - return 0; -} - - -#if defined(_DM_BUFFER_H_) - -PUBLIC Bool glXAssociateDMPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuffer, - DMparams *params, DMbuffer dmbuffer) -{ - (void) dpy; - (void) pbuffer; - (void) params; - (void) dmbuffer; - return False; -} - -#endif - - /* ** GLX_SGIX_swap_group */ -PUBLIC void glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, - GLXDrawable member) +static void __glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, + GLXDrawable member) { (void) dpy; (void) drawable; @@ -2184,15 +2061,15 @@ PUBLIC void glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, /* ** GLX_SGIX_swap_barrier */ -PUBLIC void glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, - int barrier) +static void __glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, + int barrier) { (void) dpy; (void) drawable; (void) barrier; } -PUBLIC Bool glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max) +static Bool __glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max) { (void) dpy; (void) screen; @@ -2201,25 +2078,11 @@ PUBLIC Bool glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max) } -/* -** GLX_SUN_get_transparent_index -*/ -PUBLIC Status glXGetTransparentIndexSUN(Display *dpy, Window overlay, - Window underlay, long *pTransparent) -{ - (void) dpy; - (void) overlay; - (void) underlay; - (void) pTransparent; - return 0; -} - - /* ** GLX_OML_sync_control */ -PUBLIC Bool glXGetSyncValuesOML(Display *dpy, GLXDrawable drawable, - int64_t *ust, int64_t *msc, int64_t *sbc) +static Bool __glXGetSyncValuesOML(Display *dpy, GLXDrawable drawable, + int64_t *ust, int64_t *msc, int64_t *sbc) { #ifdef GLX_DIRECT_RENDERING __GLXdisplayPrivate * const priv = __glXInitialize(dpy); @@ -2263,8 +2126,8 @@ PUBLIC Bool glXGetSyncValuesOML(Display *dpy, GLXDrawable drawable, * when GLX_OML_sync_control appears in the client extension string. */ -PUBLIC Bool glXGetMscRateOML(Display * dpy, GLXDrawable drawable, - int32_t * numerator, int32_t * denominator) +Bool __glXGetMscRateOML(Display * dpy, GLXDrawable drawable, + int32_t * numerator, int32_t * denominator) { #if defined( GLX_DIRECT_RENDERING ) && defined( XF86VIDMODE ) __GLXdisplayPrivate * const priv = __glXInitialize(dpy); @@ -2337,9 +2200,9 @@ PUBLIC Bool glXGetMscRateOML(Display * dpy, GLXDrawable drawable, } -PUBLIC int64_t glXSwapBuffersMscOML(Display *dpy, GLXDrawable drawable, - int64_t target_msc, int64_t divisor, - int64_t remainder) +static int64_t __glXSwapBuffersMscOML(Display *dpy, GLXDrawable drawable, + int64_t target_msc, int64_t divisor, + int64_t remainder) { #ifdef GLX_DIRECT_RENDERING int screen; @@ -2372,10 +2235,10 @@ PUBLIC int64_t glXSwapBuffersMscOML(Display *dpy, GLXDrawable drawable, } -PUBLIC Bool glXWaitForMscOML(Display * dpy, GLXDrawable drawable, - int64_t target_msc, int64_t divisor, - int64_t remainder, int64_t *ust, - int64_t *msc, int64_t *sbc) +static Bool __glXWaitForMscOML(Display * dpy, GLXDrawable drawable, + int64_t target_msc, int64_t divisor, + int64_t remainder, int64_t *ust, + int64_t *msc, int64_t *sbc) { #ifdef GLX_DIRECT_RENDERING int screen; @@ -2415,9 +2278,9 @@ PUBLIC Bool glXWaitForMscOML(Display * dpy, GLXDrawable drawable, } -PUBLIC Bool glXWaitForSbcOML(Display * dpy, GLXDrawable drawable, - int64_t target_sbc, int64_t *ust, - int64_t *msc, int64_t *sbc ) +static Bool __glXWaitForSbcOML(Display * dpy, GLXDrawable drawable, + int64_t target_sbc, int64_t *ust, + int64_t *msc, int64_t *sbc ) { #ifdef GLX_DIRECT_RENDERING int screen; @@ -2551,7 +2414,7 @@ PUBLIC GLuint glXGetMemoryOffsetMESA( Display *dpy, int scrn, * glXDestroyPbuffer glXDestroyPixmap glXDestroyWindow * glXDestroyGLXPbufferSGIX glXDestroyGLXVideoSourceSGIX */ -PUBLIC Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ) +static Bool __glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ) { (void) dpy; (void) d; @@ -2568,28 +2431,182 @@ PUBLIC GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, (void) cmap; return 0; } +/*@}*/ -PUBLIC void glXCopySubBufferMESA(Display *dpy, GLXDrawable drawable, - int x, int y, int width, int height) +/** + * GLX_MESA_copy_sub_buffer + */ +#define X_GLXvop_CopySubBufferMESA 5154 /* temporary */ +static void __glXCopySubBufferMESA(Display *dpy, GLXDrawable drawable, + int x, int y, int width, int height) { - (void) dpy; - (void) drawable; - (void) x; - (void) y; - (void) width; - (void) height; + xGLXVendorPrivateReq *req; + GLXContext gc; + GLXContextTag tag; + CARD32 *drawable_ptr; + INT32 *x_ptr, *y_ptr, *w_ptr, *h_ptr; + CARD8 opcode; + +#ifdef GLX_DIRECT_RENDERING + int screen; + __DRIdrawable *pdraw = GetDRIDrawable( dpy, drawable, & screen ); + if ( pdraw != NULL ) { + __GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen ); + if ( __glXExtensionBitIsEnabled( psc, MESA_copy_sub_buffer_bit ) ) { + (*pdraw->copySubBuffer)(dpy, pdraw->private, x, y, width, height); + } + + return; + } +#endif + + opcode = __glXSetupForCommand(dpy); + if (!opcode) + return; + + /* + ** The calling thread may or may not have a current context. If it + ** does, send the context tag so the server can do a flush. + */ + gc = __glXGetCurrentContext(); + if ((gc != NULL) && (dpy == gc->currentDpy) && + ((drawable == gc->currentDrawable) || + (drawable == gc->currentReadable)) ) { + tag = gc->currentContextTag; + } else { + tag = 0; + } + + LockDisplay(dpy); + GetReqExtra(GLXVendorPrivate, sizeof(CARD32) + sizeof(INT32) * 4,req); + req->reqType = opcode; + req->glxCode = X_GLXVendorPrivate; + req->vendorCode = X_GLXvop_CopySubBufferMESA; + req->contextTag = tag; + + drawable_ptr = (CARD32 *) (req + 1); + x_ptr = (INT32 *) (drawable_ptr + 1); + y_ptr = (INT32 *) (drawable_ptr + 2); + w_ptr = (INT32 *) (drawable_ptr + 3); + h_ptr = (INT32 *) (drawable_ptr + 4); + + *drawable_ptr = drawable; + *x_ptr = x; + *y_ptr = y; + *w_ptr = width; + *h_ptr = height; + + UnlockDisplay(dpy); + SyncHandle(); } -PUBLIC Bool glXSet3DfxModeMESA( int mode ) +/** + * GLX_EXT_texture_from_pixmap + */ +/*@{*/ +static void __glXBindTexImageEXT(Display *dpy, + GLXDrawable drawable, + int buffer, + const int *attrib_list) { - (void) mode; - return GL_FALSE; + xGLXVendorPrivateReq *req; + GLXContext gc = __glXGetCurrentContext(); + CARD32 *drawable_ptr; + INT32 *buffer_ptr; + CARD32 *num_attrib_ptr; + CARD32 *attrib_ptr; + CARD8 opcode; + unsigned int i; + + if (gc == NULL) + return; + + i = 0; + if (attrib_list) { + while (attrib_list[i * 2] != None) + i++; + } + +#ifdef GLX_DIRECT_RENDERING + if (gc->isDirect) + return; +#endif + + opcode = __glXSetupForCommand(dpy); + if (!opcode) + return; + + LockDisplay(dpy); + GetReqExtra(GLXVendorPrivate, 12 + 8 * i,req); + req->reqType = opcode; + req->glxCode = X_GLXVendorPrivate; + req->vendorCode = X_GLXvop_BindTexImageEXT; + req->contextTag = gc->currentContextTag; + + drawable_ptr = (CARD32 *) (req + 1); + buffer_ptr = (INT32 *) (drawable_ptr + 1); + num_attrib_ptr = (CARD32 *) (buffer_ptr + 1); + attrib_ptr = (CARD32 *) (num_attrib_ptr + 1); + + *drawable_ptr = drawable; + *buffer_ptr = buffer; + *num_attrib_ptr = (CARD32) i; + + i = 0; + if (attrib_list) { + while (attrib_list[i * 2] != None) + { + *attrib_ptr++ = (CARD32) attrib_list[i * 2 + 0]; + *attrib_ptr++ = (CARD32) attrib_list[i * 2 + 1]; + i++; + } + } + + UnlockDisplay(dpy); + SyncHandle(); } -/*@}*/ +static void __glXReleaseTexImageEXT(Display *dpy, + GLXDrawable drawable, + int buffer) +{ + xGLXVendorPrivateReq *req; + GLXContext gc = __glXGetCurrentContext(); + CARD32 *drawable_ptr; + INT32 *buffer_ptr; + CARD8 opcode; + + if (gc == NULL) + return; + +#ifdef GLX_DIRECT_RENDERING + if (gc->isDirect) + return; +#endif + + opcode = __glXSetupForCommand(dpy); + if (!opcode) + return; + LockDisplay(dpy); + GetReqExtra(GLXVendorPrivate, sizeof(CARD32)+sizeof(INT32),req); + req->reqType = opcode; + req->glxCode = X_GLXVendorPrivate; + req->vendorCode = X_GLXvop_ReleaseTexImageEXT; + req->contextTag = gc->currentContextTag; + + drawable_ptr = (CARD32 *) (req + 1); + buffer_ptr = (INT32 *) (drawable_ptr + 1); + + *drawable_ptr = drawable; + *buffer_ptr = buffer; + + UnlockDisplay(dpy); + SyncHandle(); +} +/*@}*/ /** * \c strdup is actually not a standard ANSI C or POSIX routine. @@ -2668,22 +2685,16 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION( glXSelectEvent ), /*** GLX_SGI_swap_control ***/ - GLX_FUNCTION( glXSwapIntervalSGI ), + GLX_FUNCTION2( glXSwapIntervalSGI, __glXSwapIntervalSGI ), /*** GLX_SGI_video_sync ***/ - GLX_FUNCTION( glXGetVideoSyncSGI ), - GLX_FUNCTION( glXWaitVideoSyncSGI ), + GLX_FUNCTION2( glXGetVideoSyncSGI, __glXGetVideoSyncSGI ), + GLX_FUNCTION2( glXWaitVideoSyncSGI, __glXWaitVideoSyncSGI ), /*** GLX_SGI_make_current_read ***/ GLX_FUNCTION2( glXMakeCurrentReadSGI, glXMakeContextCurrent ), GLX_FUNCTION2( glXGetCurrentReadDrawableSGI, glXGetCurrentReadDrawable ), - /*** GLX_SGIX_video_source ***/ -#if defined(_VL_H) - GLX_FUNCTION( glXCreateGLXVideoSourceSGIX ), - GLX_FUNCTION( glXDestroyGLXVideoSourceSGIX ), -#endif - /*** GLX_EXT_import_context ***/ GLX_FUNCTION( glXFreeContextEXT ), GLX_FUNCTION( glXGetContextIDEXT ), @@ -2706,30 +2717,12 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION( glXSelectEventSGIX ), GLX_FUNCTION( glXGetSelectedEventSGIX ), - /*** GLX_SGI_cushion ***/ - GLX_FUNCTION( glXCushionSGI ), - - /*** GLX_SGIX_video_resize ***/ - GLX_FUNCTION( glXBindChannelToWindowSGIX ), - GLX_FUNCTION( glXChannelRectSGIX ), - GLX_FUNCTION( glXQueryChannelRectSGIX ), - GLX_FUNCTION( glXQueryChannelDeltasSGIX ), - GLX_FUNCTION( glXChannelRectSyncSGIX ), - - /*** GLX_SGIX_dmbuffer **/ -#if defined(_DM_BUFFER_H_) - GLX_FUNCTION( glXAssociateDMPbufferSGIX ), -#endif - /*** GLX_SGIX_swap_group ***/ - GLX_FUNCTION( glXJoinSwapGroupSGIX ), + GLX_FUNCTION2( glXJoinSwapGroupSGIX, __glXJoinSwapGroupSGIX ), /*** GLX_SGIX_swap_barrier ***/ - GLX_FUNCTION( glXBindSwapBarrierSGIX ), - GLX_FUNCTION( glXQueryMaxSwapBarriersSGIX ), - - /*** GLX_SUN_get_transparent_index ***/ - GLX_FUNCTION( glXGetTransparentIndexSUN ), + GLX_FUNCTION2( glXBindSwapBarrierSGIX, __glXBindSwapBarrierSGIX ), + GLX_FUNCTION2( glXQueryMaxSwapBarriersSGIX, __glXQueryMaxSwapBarriersSGIX ), /*** GLX_MESA_allocate_memory ***/ GLX_FUNCTION( glXAllocateMemoryMESA ), @@ -2737,26 +2730,23 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION( glXGetMemoryOffsetMESA ), /*** GLX_MESA_copy_sub_buffer ***/ - GLX_FUNCTION( glXCopySubBufferMESA ), + GLX_FUNCTION2( glXCopySubBufferMESA, __glXCopySubBufferMESA ), /*** GLX_MESA_pixmap_colormap ***/ GLX_FUNCTION( glXCreateGLXPixmapMESA ), /*** GLX_MESA_release_buffers ***/ - GLX_FUNCTION( glXReleaseBuffersMESA ), - - /*** GLX_MESA_set_3dfx_mode ***/ - GLX_FUNCTION( glXSet3DfxModeMESA ), + GLX_FUNCTION2( glXReleaseBuffersMESA, __glXReleaseBuffersMESA ), /*** GLX_MESA_swap_control ***/ - GLX_FUNCTION( glXSwapIntervalMESA ), - GLX_FUNCTION( glXGetSwapIntervalMESA ), + GLX_FUNCTION2( glXSwapIntervalMESA, __glXSwapIntervalMESA ), + GLX_FUNCTION2( glXGetSwapIntervalMESA, __glXGetSwapIntervalMESA ), /*** GLX_MESA_swap_frame_usage ***/ - GLX_FUNCTION( glXBeginFrameTrackingMESA ), - GLX_FUNCTION( glXEndFrameTrackingMESA ), - GLX_FUNCTION( glXGetFrameUsageMESA ), - GLX_FUNCTION( glXQueryFrameTrackingMESA ), + GLX_FUNCTION2( glXBeginFrameTrackingMESA, __glXBeginFrameTrackingMESA ), + GLX_FUNCTION2( glXEndFrameTrackingMESA, __glXEndFrameTrackingMESA ), + GLX_FUNCTION2( glXGetFrameUsageMESA, __glXGetFrameUsageMESA ), + GLX_FUNCTION2( glXQueryFrameTrackingMESA, __glXQueryFrameTrackingMESA ), /*** GLX_ARB_get_proc_address ***/ GLX_FUNCTION( glXGetProcAddressARB ), @@ -2765,11 +2755,15 @@ static const struct name_address_pair GLX_functions[] = { GLX_FUNCTION2( glXGetProcAddress, glXGetProcAddressARB ), /*** GLX_OML_sync_control ***/ - GLX_FUNCTION( glXWaitForSbcOML ), - GLX_FUNCTION( glXWaitForMscOML ), - GLX_FUNCTION( glXSwapBuffersMscOML ), - GLX_FUNCTION( glXGetMscRateOML ), - GLX_FUNCTION( glXGetSyncValuesOML ), + GLX_FUNCTION2( glXWaitForSbcOML, __glXWaitForSbcOML ), + GLX_FUNCTION2( glXWaitForMscOML, __glXWaitForMscOML ), + GLX_FUNCTION2( glXSwapBuffersMscOML, __glXSwapBuffersMscOML ), + GLX_FUNCTION2( glXGetMscRateOML, __glXGetMscRateOML ), + GLX_FUNCTION2( glXGetSyncValuesOML, __glXGetSyncValuesOML ), + + /*** GLX_EXT_texture_from_pixmap ***/ + GLX_FUNCTION2( glXBindTexImageEXT, __glXBindTexImageEXT ), + GLX_FUNCTION2( glXReleaseTexImageEXT, __glXReleaseTexImageEXT ), #ifdef GLX_DIRECT_RENDERING /*** DRI configuration ***/ @@ -2888,8 +2882,9 @@ int __glXGetInternalVersion(void) * months ago. :( * 20050727 - Gut all the old interfaces. This breaks compatability with * any DRI driver built to any previous version. + * 20060314 - Added support for GLX_MESA_copy_sub_buffer. */ - return 20050727; + return 20060314; }