glx.h revision 7117f1b4
17117f1b4Smrg/* 27117f1b4Smrg * Mesa 3-D graphics library 37117f1b4Smrg * Version: 6.5 47117f1b4Smrg * 57117f1b4Smrg * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. 67117f1b4Smrg * 77117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a 87117f1b4Smrg * copy of this software and associated documentation files (the "Software"), 97117f1b4Smrg * to deal in the Software without restriction, including without limitation 107117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 117117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the 127117f1b4Smrg * Software is furnished to do so, subject to the following conditions: 137117f1b4Smrg * 147117f1b4Smrg * The above copyright notice and this permission notice shall be included 157117f1b4Smrg * in all copies or substantial portions of the Software. 167117f1b4Smrg * 177117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 187117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 197117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 207117f1b4Smrg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 217117f1b4Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 227117f1b4Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 237117f1b4Smrg */ 247117f1b4Smrg 257117f1b4Smrg 267117f1b4Smrg#ifndef GLX_H 277117f1b4Smrg#define GLX_H 287117f1b4Smrg 297117f1b4Smrg 307117f1b4Smrg#ifdef __VMS 317117f1b4Smrg#include <GL/vms_x_fix.h> 327117f1b4Smrg# ifdef __cplusplus 337117f1b4Smrg/* VMS Xlib.h gives problems with C++. 347117f1b4Smrg * this avoids a bunch of trivial warnings */ 357117f1b4Smrg#pragma message disable nosimpint 367117f1b4Smrg#endif 377117f1b4Smrg#endif 387117f1b4Smrg#include <X11/Xlib.h> 397117f1b4Smrg#include <X11/Xutil.h> 407117f1b4Smrg#ifdef __VMS 417117f1b4Smrg# ifdef __cplusplus 427117f1b4Smrg#pragma message enable nosimpint 437117f1b4Smrg#endif 447117f1b4Smrg#endif 457117f1b4Smrg#include <GL/gl.h> 467117f1b4Smrg 477117f1b4Smrg 487117f1b4Smrg#if defined(USE_MGL_NAMESPACE) 497117f1b4Smrg#include "glx_mangle.h" 507117f1b4Smrg#endif 517117f1b4Smrg 527117f1b4Smrg 537117f1b4Smrg#ifdef __cplusplus 547117f1b4Smrgextern "C" { 557117f1b4Smrg#endif 567117f1b4Smrg 577117f1b4Smrg 587117f1b4Smrg#define GLX_VERSION_1_1 1 597117f1b4Smrg#define GLX_VERSION_1_2 1 607117f1b4Smrg#define GLX_VERSION_1_3 1 617117f1b4Smrg#define GLX_VERSION_1_4 1 627117f1b4Smrg 637117f1b4Smrg#define GLX_EXTENSION_NAME "GLX" 647117f1b4Smrg 657117f1b4Smrg 667117f1b4Smrg 677117f1b4Smrg/* 687117f1b4Smrg * Tokens for glXChooseVisual and glXGetConfig: 697117f1b4Smrg */ 707117f1b4Smrg#define GLX_USE_GL 1 717117f1b4Smrg#define GLX_BUFFER_SIZE 2 727117f1b4Smrg#define GLX_LEVEL 3 737117f1b4Smrg#define GLX_RGBA 4 747117f1b4Smrg#define GLX_DOUBLEBUFFER 5 757117f1b4Smrg#define GLX_STEREO 6 767117f1b4Smrg#define GLX_AUX_BUFFERS 7 777117f1b4Smrg#define GLX_RED_SIZE 8 787117f1b4Smrg#define GLX_GREEN_SIZE 9 797117f1b4Smrg#define GLX_BLUE_SIZE 10 807117f1b4Smrg#define GLX_ALPHA_SIZE 11 817117f1b4Smrg#define GLX_DEPTH_SIZE 12 827117f1b4Smrg#define GLX_STENCIL_SIZE 13 837117f1b4Smrg#define GLX_ACCUM_RED_SIZE 14 847117f1b4Smrg#define GLX_ACCUM_GREEN_SIZE 15 857117f1b4Smrg#define GLX_ACCUM_BLUE_SIZE 16 867117f1b4Smrg#define GLX_ACCUM_ALPHA_SIZE 17 877117f1b4Smrg 887117f1b4Smrg 897117f1b4Smrg/* 907117f1b4Smrg * Error codes returned by glXGetConfig: 917117f1b4Smrg */ 927117f1b4Smrg#define GLX_BAD_SCREEN 1 937117f1b4Smrg#define GLX_BAD_ATTRIBUTE 2 947117f1b4Smrg#define GLX_NO_EXTENSION 3 957117f1b4Smrg#define GLX_BAD_VISUAL 4 967117f1b4Smrg#define GLX_BAD_CONTEXT 5 977117f1b4Smrg#define GLX_BAD_VALUE 6 987117f1b4Smrg#define GLX_BAD_ENUM 7 997117f1b4Smrg 1007117f1b4Smrg 1017117f1b4Smrg/* 1027117f1b4Smrg * GLX 1.1 and later: 1037117f1b4Smrg */ 1047117f1b4Smrg#define GLX_VENDOR 1 1057117f1b4Smrg#define GLX_VERSION 2 1067117f1b4Smrg#define GLX_EXTENSIONS 3 1077117f1b4Smrg 1087117f1b4Smrg 1097117f1b4Smrg/* 1107117f1b4Smrg * GLX 1.3 and later: 1117117f1b4Smrg */ 1127117f1b4Smrg#define GLX_CONFIG_CAVEAT 0x20 1137117f1b4Smrg#define GLX_DONT_CARE 0xFFFFFFFF 1147117f1b4Smrg#define GLX_X_VISUAL_TYPE 0x22 1157117f1b4Smrg#define GLX_TRANSPARENT_TYPE 0x23 1167117f1b4Smrg#define GLX_TRANSPARENT_INDEX_VALUE 0x24 1177117f1b4Smrg#define GLX_TRANSPARENT_RED_VALUE 0x25 1187117f1b4Smrg#define GLX_TRANSPARENT_GREEN_VALUE 0x26 1197117f1b4Smrg#define GLX_TRANSPARENT_BLUE_VALUE 0x27 1207117f1b4Smrg#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 1217117f1b4Smrg#define GLX_WINDOW_BIT 0x00000001 1227117f1b4Smrg#define GLX_PIXMAP_BIT 0x00000002 1237117f1b4Smrg#define GLX_PBUFFER_BIT 0x00000004 1247117f1b4Smrg#define GLX_AUX_BUFFERS_BIT 0x00000010 1257117f1b4Smrg#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 1267117f1b4Smrg#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 1277117f1b4Smrg#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 1287117f1b4Smrg#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 1297117f1b4Smrg#define GLX_DEPTH_BUFFER_BIT 0x00000020 1307117f1b4Smrg#define GLX_STENCIL_BUFFER_BIT 0x00000040 1317117f1b4Smrg#define GLX_ACCUM_BUFFER_BIT 0x00000080 1327117f1b4Smrg#define GLX_NONE 0x8000 1337117f1b4Smrg#define GLX_SLOW_CONFIG 0x8001 1347117f1b4Smrg#define GLX_TRUE_COLOR 0x8002 1357117f1b4Smrg#define GLX_DIRECT_COLOR 0x8003 1367117f1b4Smrg#define GLX_PSEUDO_COLOR 0x8004 1377117f1b4Smrg#define GLX_STATIC_COLOR 0x8005 1387117f1b4Smrg#define GLX_GRAY_SCALE 0x8006 1397117f1b4Smrg#define GLX_STATIC_GRAY 0x8007 1407117f1b4Smrg#define GLX_TRANSPARENT_RGB 0x8008 1417117f1b4Smrg#define GLX_TRANSPARENT_INDEX 0x8009 1427117f1b4Smrg#define GLX_VISUAL_ID 0x800B 1437117f1b4Smrg#define GLX_SCREEN 0x800C 1447117f1b4Smrg#define GLX_NON_CONFORMANT_CONFIG 0x800D 1457117f1b4Smrg#define GLX_DRAWABLE_TYPE 0x8010 1467117f1b4Smrg#define GLX_RENDER_TYPE 0x8011 1477117f1b4Smrg#define GLX_X_RENDERABLE 0x8012 1487117f1b4Smrg#define GLX_FBCONFIG_ID 0x8013 1497117f1b4Smrg#define GLX_RGBA_TYPE 0x8014 1507117f1b4Smrg#define GLX_COLOR_INDEX_TYPE 0x8015 1517117f1b4Smrg#define GLX_MAX_PBUFFER_WIDTH 0x8016 1527117f1b4Smrg#define GLX_MAX_PBUFFER_HEIGHT 0x8017 1537117f1b4Smrg#define GLX_MAX_PBUFFER_PIXELS 0x8018 1547117f1b4Smrg#define GLX_PRESERVED_CONTENTS 0x801B 1557117f1b4Smrg#define GLX_LARGEST_PBUFFER 0x801C 1567117f1b4Smrg#define GLX_WIDTH 0x801D 1577117f1b4Smrg#define GLX_HEIGHT 0x801E 1587117f1b4Smrg#define GLX_EVENT_MASK 0x801F 1597117f1b4Smrg#define GLX_DAMAGED 0x8020 1607117f1b4Smrg#define GLX_SAVED 0x8021 1617117f1b4Smrg#define GLX_WINDOW 0x8022 1627117f1b4Smrg#define GLX_PBUFFER 0x8023 1637117f1b4Smrg#define GLX_PBUFFER_HEIGHT 0x8040 1647117f1b4Smrg#define GLX_PBUFFER_WIDTH 0x8041 1657117f1b4Smrg#define GLX_RGBA_BIT 0x00000001 1667117f1b4Smrg#define GLX_COLOR_INDEX_BIT 0x00000002 1677117f1b4Smrg#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 1687117f1b4Smrg 1697117f1b4Smrg 1707117f1b4Smrg/* 1717117f1b4Smrg * GLX 1.4 and later: 1727117f1b4Smrg */ 1737117f1b4Smrg#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ 1747117f1b4Smrg#define GLX_SAMPLES 0x186a1 /*100001*/ 1757117f1b4Smrg 1767117f1b4Smrg 1777117f1b4Smrg 1787117f1b4Smrgtypedef struct __GLXcontextRec *GLXContext; 1797117f1b4Smrgtypedef XID GLXPixmap; 1807117f1b4Smrgtypedef XID GLXDrawable; 1817117f1b4Smrg/* GLX 1.3 and later */ 1827117f1b4Smrgtypedef struct __GLXFBConfigRec *GLXFBConfig; 1837117f1b4Smrgtypedef XID GLXFBConfigID; 1847117f1b4Smrgtypedef XID GLXContextID; 1857117f1b4Smrgtypedef XID GLXWindow; 1867117f1b4Smrgtypedef XID GLXPbuffer; 1877117f1b4Smrg 1887117f1b4Smrg 1897117f1b4Smrg 1907117f1b4Smrgextern XVisualInfo* glXChooseVisual( Display *dpy, int screen, 1917117f1b4Smrg int *attribList ); 1927117f1b4Smrg 1937117f1b4Smrgextern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, 1947117f1b4Smrg GLXContext shareList, Bool direct ); 1957117f1b4Smrg 1967117f1b4Smrgextern void glXDestroyContext( Display *dpy, GLXContext ctx ); 1977117f1b4Smrg 1987117f1b4Smrgextern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, 1997117f1b4Smrg GLXContext ctx); 2007117f1b4Smrg 2017117f1b4Smrgextern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, 2027117f1b4Smrg unsigned long mask ); 2037117f1b4Smrg 2047117f1b4Smrgextern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); 2057117f1b4Smrg 2067117f1b4Smrgextern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, 2077117f1b4Smrg Pixmap pixmap ); 2087117f1b4Smrg 2097117f1b4Smrgextern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); 2107117f1b4Smrg 2117117f1b4Smrgextern Bool glXQueryExtension( Display *dpy, int *errorb, int *event ); 2127117f1b4Smrg 2137117f1b4Smrgextern Bool glXQueryVersion( Display *dpy, int *maj, int *min ); 2147117f1b4Smrg 2157117f1b4Smrgextern Bool glXIsDirect( Display *dpy, GLXContext ctx ); 2167117f1b4Smrg 2177117f1b4Smrgextern int glXGetConfig( Display *dpy, XVisualInfo *visual, 2187117f1b4Smrg int attrib, int *value ); 2197117f1b4Smrg 2207117f1b4Smrgextern GLXContext glXGetCurrentContext( void ); 2217117f1b4Smrg 2227117f1b4Smrgextern GLXDrawable glXGetCurrentDrawable( void ); 2237117f1b4Smrg 2247117f1b4Smrgextern void glXWaitGL( void ); 2257117f1b4Smrg 2267117f1b4Smrgextern void glXWaitX( void ); 2277117f1b4Smrg 2287117f1b4Smrgextern void glXUseXFont( Font font, int first, int count, int list ); 2297117f1b4Smrg 2307117f1b4Smrg 2317117f1b4Smrg 2327117f1b4Smrg/* GLX 1.1 and later */ 2337117f1b4Smrgextern const char *glXQueryExtensionsString( Display *dpy, int screen ); 2347117f1b4Smrg 2357117f1b4Smrgextern const char *glXQueryServerString( Display *dpy, int screen, int name ); 2367117f1b4Smrg 2377117f1b4Smrgextern const char *glXGetClientString( Display *dpy, int name ); 2387117f1b4Smrg 2397117f1b4Smrg 2407117f1b4Smrg/* GLX 1.2 and later */ 2417117f1b4Smrgextern Display *glXGetCurrentDisplay( void ); 2427117f1b4Smrg 2437117f1b4Smrg 2447117f1b4Smrg/* GLX 1.3 and later */ 2457117f1b4Smrgextern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen, 2467117f1b4Smrg const int *attribList, int *nitems ); 2477117f1b4Smrg 2487117f1b4Smrgextern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config, 2497117f1b4Smrg int attribute, int *value ); 2507117f1b4Smrg 2517117f1b4Smrgextern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen, 2527117f1b4Smrg int *nelements ); 2537117f1b4Smrg 2547117f1b4Smrgextern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, 2557117f1b4Smrg GLXFBConfig config ); 2567117f1b4Smrg 2577117f1b4Smrgextern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config, 2587117f1b4Smrg Window win, const int *attribList ); 2597117f1b4Smrg 2607117f1b4Smrgextern void glXDestroyWindow( Display *dpy, GLXWindow window ); 2617117f1b4Smrg 2627117f1b4Smrgextern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config, 2637117f1b4Smrg Pixmap pixmap, const int *attribList ); 2647117f1b4Smrg 2657117f1b4Smrgextern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap ); 2667117f1b4Smrg 2677117f1b4Smrgextern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config, 2687117f1b4Smrg const int *attribList ); 2697117f1b4Smrg 2707117f1b4Smrgextern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); 2717117f1b4Smrg 2727117f1b4Smrgextern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute, 2737117f1b4Smrg unsigned int *value ); 2747117f1b4Smrg 2757117f1b4Smrgextern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config, 2767117f1b4Smrg int renderType, GLXContext shareList, 2777117f1b4Smrg Bool direct ); 2787117f1b4Smrg 2797117f1b4Smrgextern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw, 2807117f1b4Smrg GLXDrawable read, GLXContext ctx ); 2817117f1b4Smrg 2827117f1b4Smrgextern GLXDrawable glXGetCurrentReadDrawable( void ); 2837117f1b4Smrg 2847117f1b4Smrgextern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute, 2857117f1b4Smrg int *value ); 2867117f1b4Smrg 2877117f1b4Smrgextern void glXSelectEvent( Display *dpy, GLXDrawable drawable, 2887117f1b4Smrg unsigned long mask ); 2897117f1b4Smrg 2907117f1b4Smrgextern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, 2917117f1b4Smrg unsigned long *mask ); 2927117f1b4Smrg 2937117f1b4Smrg 2947117f1b4Smrg/* GLX 1.4 and later */ 2957117f1b4Smrgextern void (*glXGetProcAddress(const GLubyte *procname))( void ); 2967117f1b4Smrg 2977117f1b4Smrg 2987117f1b4Smrg#ifndef GLX_GLXEXT_LEGACY 2997117f1b4Smrg 3007117f1b4Smrg#include <GL/glxext.h> 3017117f1b4Smrg 3027117f1b4Smrg#else 3037117f1b4Smrg 3047117f1b4Smrg 3057117f1b4Smrg 3067117f1b4Smrg/* 3077117f1b4Smrg * ARB 2. GLX_ARB_get_proc_address 3087117f1b4Smrg */ 3097117f1b4Smrg#ifndef GLX_ARB_get_proc_address 3107117f1b4Smrg#define GLX_ARB_get_proc_address 1 3117117f1b4Smrg 3127117f1b4Smrgtypedef void (*__GLXextFuncPtr)(void); 3137117f1b4Smrgextern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 3147117f1b4Smrg 3157117f1b4Smrg#endif /* GLX_ARB_get_proc_address */ 3167117f1b4Smrg 3177117f1b4Smrg 3187117f1b4Smrg 3197117f1b4Smrg#endif /* GLX_GLXEXT_LEGACY */ 3207117f1b4Smrg 3217117f1b4Smrg 3227117f1b4Smrg/** 3237117f1b4Smrg ** The following aren't in glxext.h yet. 3247117f1b4Smrg **/ 3257117f1b4Smrg 3267117f1b4Smrg 3277117f1b4Smrg/* 3287117f1b4Smrg * ???. GLX_NV_vertex_array_range 3297117f1b4Smrg */ 3307117f1b4Smrg#ifndef GLX_NV_vertex_array_range 3317117f1b4Smrg#define GLX_NV_vertex_array_range 3327117f1b4Smrg 3337117f1b4Smrgextern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); 3347117f1b4Smrgextern void glXFreeMemoryNV(GLvoid *pointer); 3357117f1b4Smrgtypedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); 3367117f1b4Smrgtypedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer); 3377117f1b4Smrg 3387117f1b4Smrg#endif /* GLX_NV_vertex_array_range */ 3397117f1b4Smrg 3407117f1b4Smrg 3417117f1b4Smrg/* 3427117f1b4Smrg * ???. GLX_MESA_allocate_memory 3437117f1b4Smrg */ 3447117f1b4Smrg#ifndef GLX_MESA_allocate_memory 3457117f1b4Smrg#define GLX_MESA_allocate_memory 1 3467117f1b4Smrg 3477117f1b4Smrgextern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority); 3487117f1b4Smrgextern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer); 3497117f1b4Smrgextern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer); 3507117f1b4Smrgtypedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority); 3517117f1b4Smrgtypedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer); 3527117f1b4Smrgtypedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer); 3537117f1b4Smrg 3547117f1b4Smrg#endif /* GLX_MESA_allocate_memory */ 3557117f1b4Smrg 3567117f1b4Smrg 3577117f1b4Smrg/* 3587117f1b4Smrg * ARB ?. GLX_ARB_render_texture 3597117f1b4Smrg * XXX This was never finalized! 3607117f1b4Smrg */ 3617117f1b4Smrg#ifndef GLX_ARB_render_texture 3627117f1b4Smrg#define GLX_ARB_render_texture 1 3637117f1b4Smrg 3647117f1b4Smrgextern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); 3657117f1b4Smrgextern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); 3667117f1b4Smrgextern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList); 3677117f1b4Smrg 3687117f1b4Smrg#endif /* GLX_ARB_render_texture */ 3697117f1b4Smrg 3707117f1b4Smrg 3717117f1b4Smrg/* 3727117f1b4Smrg * Remove this when glxext.h is updated. 3737117f1b4Smrg */ 3747117f1b4Smrg#ifndef GLX_NV_float_buffer 3757117f1b4Smrg#define GLX_NV_float_buffer 1 3767117f1b4Smrg 3777117f1b4Smrg#define GLX_FLOAT_COMPONENTS_NV 0x20B0 3787117f1b4Smrg 3797117f1b4Smrg#endif /* GLX_NV_float_buffer */ 3807117f1b4Smrg 3817117f1b4Smrg 3827117f1b4Smrg 3837117f1b4Smrg/* 3847117f1b4Smrg * #?. GLX_MESA_swap_frame_usage 3857117f1b4Smrg */ 3867117f1b4Smrg#ifndef GLX_MESA_swap_frame_usage 3877117f1b4Smrg#define GLX_MESA_swap_frame_usage 1 3887117f1b4Smrg 3897117f1b4Smrgextern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage); 3907117f1b4Smrgextern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable); 3917117f1b4Smrgextern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable); 3927117f1b4Smrgextern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); 3937117f1b4Smrg 3947117f1b4Smrgtypedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage); 3957117f1b4Smrgtypedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); 3967117f1b4Smrgtypedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); 3977117f1b4Smrgtypedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); 3987117f1b4Smrg 3997117f1b4Smrg#endif /* GLX_MESA_swap_frame_usage */ 4007117f1b4Smrg 4017117f1b4Smrg 4027117f1b4Smrg 4037117f1b4Smrg/* 4047117f1b4Smrg * #?. GLX_MESA_swap_control 4057117f1b4Smrg */ 4067117f1b4Smrg#ifndef GLX_MESA_swap_control 4077117f1b4Smrg#define GLX_MESA_swap_control 1 4087117f1b4Smrg 4097117f1b4Smrgextern int glXSwapIntervalMESA(unsigned int interval); 4107117f1b4Smrgextern int glXGetSwapIntervalMESA(void); 4117117f1b4Smrg 4127117f1b4Smrgtypedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval); 4137117f1b4Smrgtypedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void); 4147117f1b4Smrg 4157117f1b4Smrg#endif /* GLX_MESA_swap_control */ 4167117f1b4Smrg 4177117f1b4Smrg 4187117f1b4Smrg 4197117f1b4Smrg/* 4207117f1b4Smrg * #?. GLX_EXT_texture_from_pixmap 4217117f1b4Smrg * XXX not finished? 4227117f1b4Smrg */ 4237117f1b4Smrg#ifndef GLX_EXT_texture_from_pixmap 4247117f1b4Smrg#define GLX_EXT_texture_from_pixmap 1 4257117f1b4Smrg 4267117f1b4Smrg#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 4277117f1b4Smrg#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 4287117f1b4Smrg#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 4297117f1b4Smrg#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 4307117f1b4Smrg#define GLX_Y_INVERTED_EXT 0x20D4 4317117f1b4Smrg 4327117f1b4Smrg#define GLX_TEXTURE_FORMAT_EXT 0x20D5 4337117f1b4Smrg#define GLX_TEXTURE_TARGET_EXT 0x20D6 4347117f1b4Smrg#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 4357117f1b4Smrg 4367117f1b4Smrg#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 4377117f1b4Smrg#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 4387117f1b4Smrg#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA 4397117f1b4Smrg 4407117f1b4Smrg#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 4417117f1b4Smrg#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 4427117f1b4Smrg#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 4437117f1b4Smrg 4447117f1b4Smrg#define GLX_TEXTURE_1D_EXT 0x20DB 4457117f1b4Smrg#define GLX_TEXTURE_2D_EXT 0x20DC 4467117f1b4Smrg#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD 4477117f1b4Smrg 4487117f1b4Smrg#define GLX_FRONT_LEFT_EXT 0x20DE 4497117f1b4Smrg#define GLX_FRONT_RIGHT_EXT 0x20DF 4507117f1b4Smrg#define GLX_BACK_LEFT_EXT 0x20E0 4517117f1b4Smrg#define GLX_BACK_RIGHT_EXT 0x20E1 4527117f1b4Smrg#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT 4537117f1b4Smrg#define GLX_BACK_EXT GLX_BACK_LEFT_EXT 4547117f1b4Smrg#define GLX_AUX0_EXT 0x20E2 4557117f1b4Smrg#define GLX_AUX1_EXT 0x20E3 4567117f1b4Smrg#define GLX_AUX2_EXT 0x20E4 4577117f1b4Smrg#define GLX_AUX3_EXT 0x20E5 4587117f1b4Smrg#define GLX_AUX4_EXT 0x20E6 4597117f1b4Smrg#define GLX_AUX5_EXT 0x20E7 4607117f1b4Smrg#define GLX_AUX6_EXT 0x20E8 4617117f1b4Smrg#define GLX_AUX7_EXT 0x20E9 4627117f1b4Smrg#define GLX_AUX8_EXT 0x20EA 4637117f1b4Smrg#define GLX_AUX9_EXT 0x20EB 4647117f1b4Smrg 4657117f1b4Smrgextern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); 4667117f1b4Smrgextern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer); 4677117f1b4Smrg 4687117f1b4Smrg#endif /* GLX_EXT_texture_from_pixmap */ 4697117f1b4Smrg 4707117f1b4Smrg 4717117f1b4Smrg 4727117f1b4Smrg 4737117f1b4Smrg/*** Should these go here, or in another header? */ 4747117f1b4Smrg/* 4757117f1b4Smrg** GLX Events 4767117f1b4Smrg*/ 4777117f1b4Smrgtypedef struct { 4787117f1b4Smrg int event_type; /* GLX_DAMAGED or GLX_SAVED */ 4797117f1b4Smrg int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ 4807117f1b4Smrg unsigned long serial; /* # of last request processed by server */ 4817117f1b4Smrg Bool send_event; /* true if this came for SendEvent request */ 4827117f1b4Smrg Display *display; /* display the event was read from */ 4837117f1b4Smrg GLXDrawable drawable; /* XID of Drawable */ 4847117f1b4Smrg unsigned int buffer_mask; /* mask indicating which buffers are affected */ 4857117f1b4Smrg unsigned int aux_buffer; /* which aux buffer was affected */ 4867117f1b4Smrg int x, y; 4877117f1b4Smrg int width, height; 4887117f1b4Smrg int count; /* if nonzero, at least this many more */ 4897117f1b4Smrg} GLXPbufferClobberEvent; 4907117f1b4Smrg 4917117f1b4Smrgtypedef union __GLXEvent { 4927117f1b4Smrg GLXPbufferClobberEvent glxpbufferclobber; 4937117f1b4Smrg long pad[24]; 4947117f1b4Smrg} GLXEvent; 4957117f1b4Smrg 4967117f1b4Smrg#ifdef __cplusplus 4977117f1b4Smrg} 4987117f1b4Smrg#endif 4997117f1b4Smrg 5007117f1b4Smrg#endif 501