glx.h revision b8014c3bbb8a0f9d16e82278eabba771cbfd9b2e
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Mesa 3-D graphics library
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Version: 6.5
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Permission is hereby granted, free of charge, to any person obtaining a
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * copy of this software and associated documentation files (the "Software"),
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * to deal in the Software without restriction, including without limitation
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * and/or sell copies of the Software, and to permit persons to whom the
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Software is furnished to do so, subject to the following conditions:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * The above copyright notice and this permission notice shall be included
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * in all copies or substantial portions of the Software.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* VMS Xlib.h gives problems with C++.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * this avoids a bunch of trivial warnings */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern "C" {
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Tokens for glXChooseVisual and glXGetConfig:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Error codes returned by glXGetConfig:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GLX 1.1 and later:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GLX 1.3 and later:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GLX 1.4 and later:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* GLX 1.3 and later */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXDestroyContext( Display *dpy, GLXContext ctx );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned long mask );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXIsDirect( Display *dpy, GLXContext ctx );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXGetConfig( Display *dpy, XVisualInfo *visual,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXWaitGL( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXWaitX( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXUseXFont( Font font, int first, int count, int list );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* GLX 1.1 and later */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern const char *glXQueryExtensionsString( Display *dpy, int screen );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern const char *glXQueryServerString( Display *dpy, int screen, int name );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern const char *glXGetClientString( Display *dpy, int name );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* GLX 1.2 and later */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* GLX 1.3 and later */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXDestroyWindow( Display *dpy, GLXWindow window );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync const int *attribList );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned int *value );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLXDrawable glXGetCurrentReadDrawable( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned long mask );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned long *mask );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* GLX 1.4 and later */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void (*glXGetProcAddress(const GLubyte *procname))( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * ARB 2. GLX_ARB_get_proc_address
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef void (*__GLXextFuncPtr)(void);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_ARB_get_proc_address */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_GLXEXT_LEGACY */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync ** The following aren't in glxext.h yet.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * ???. GLX_NV_vertex_array_range
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_NV_vertex_array_range */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * ???. GLX_MESA_allocate_memory
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_MESA_allocate_memory */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * ARB ?. GLX_ARB_render_texture
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * XXX This was never finalized!
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_ARB_render_texture */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Remove this when glxext.h is updated.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_NV_float_buffer */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * #?. GLX_MESA_swap_frame_usage
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_MESA_swap_frame_usage */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * #?. GLX_MESA_swap_control
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXSwapIntervalMESA(unsigned int interval);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern int glXGetSwapIntervalMESA(void);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_MESA_swap_control */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * #?. GLX_EXT_texture_from_pixmap
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * XXX not finished?
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* GLX_EXT_texture_from_pixmap */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*** Should these go here, or in another header? */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync** GLX Events
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef struct {
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned long serial; /* # of last request processed by server */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync Bool send_event; /* true if this came for SendEvent request */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync Display *display; /* display the event was read from */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned int buffer_mask; /* mask indicating which buffers are affected */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned int aux_buffer; /* which aux buffer was affected */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync int count; /* if nonzero, at least this many more */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef union __GLXEvent {