1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Mesa 3-D graphics library 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. 5*61046927SAndroid Build Coastguard Worker * 6*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 7*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 8*61046927SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 9*61046927SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10*61046927SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 11*61046927SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 12*61046927SAndroid Build Coastguard Worker * 13*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included 14*61046927SAndroid Build Coastguard Worker * in all copies or substantial portions of the Software. 15*61046927SAndroid Build Coastguard Worker * 16*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17*61046927SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18*61046927SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19*61046927SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20*61046927SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21*61046927SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22*61046927SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 23*61046927SAndroid Build Coastguard Worker */ 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker #ifndef GLX_H 27*61046927SAndroid Build Coastguard Worker #define GLX_H 28*61046927SAndroid Build Coastguard Worker 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard Worker #include <X11/Xlib.h> 31*61046927SAndroid Build Coastguard Worker #include <X11/Xutil.h> 32*61046927SAndroid Build Coastguard Worker #include <GL/gl.h> 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard Worker 35*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 36*61046927SAndroid Build Coastguard Worker extern "C" { 37*61046927SAndroid Build Coastguard Worker #endif 38*61046927SAndroid Build Coastguard Worker 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Worker #define GLX_VERSION_1_1 1 41*61046927SAndroid Build Coastguard Worker #define GLX_VERSION_1_2 1 42*61046927SAndroid Build Coastguard Worker #define GLX_VERSION_1_3 1 43*61046927SAndroid Build Coastguard Worker #define GLX_VERSION_1_4 1 44*61046927SAndroid Build Coastguard Worker 45*61046927SAndroid Build Coastguard Worker #define GLX_EXTENSION_NAME "GLX" 46*61046927SAndroid Build Coastguard Worker 47*61046927SAndroid Build Coastguard Worker 48*61046927SAndroid Build Coastguard Worker 49*61046927SAndroid Build Coastguard Worker /* 50*61046927SAndroid Build Coastguard Worker * Tokens for glXChooseVisual and glXGetConfig: 51*61046927SAndroid Build Coastguard Worker */ 52*61046927SAndroid Build Coastguard Worker #define GLX_USE_GL 1 53*61046927SAndroid Build Coastguard Worker #define GLX_BUFFER_SIZE 2 54*61046927SAndroid Build Coastguard Worker #define GLX_LEVEL 3 55*61046927SAndroid Build Coastguard Worker #define GLX_RGBA 4 56*61046927SAndroid Build Coastguard Worker #define GLX_DOUBLEBUFFER 5 57*61046927SAndroid Build Coastguard Worker #define GLX_STEREO 6 58*61046927SAndroid Build Coastguard Worker #define GLX_AUX_BUFFERS 7 59*61046927SAndroid Build Coastguard Worker #define GLX_RED_SIZE 8 60*61046927SAndroid Build Coastguard Worker #define GLX_GREEN_SIZE 9 61*61046927SAndroid Build Coastguard Worker #define GLX_BLUE_SIZE 10 62*61046927SAndroid Build Coastguard Worker #define GLX_ALPHA_SIZE 11 63*61046927SAndroid Build Coastguard Worker #define GLX_DEPTH_SIZE 12 64*61046927SAndroid Build Coastguard Worker #define GLX_STENCIL_SIZE 13 65*61046927SAndroid Build Coastguard Worker #define GLX_ACCUM_RED_SIZE 14 66*61046927SAndroid Build Coastguard Worker #define GLX_ACCUM_GREEN_SIZE 15 67*61046927SAndroid Build Coastguard Worker #define GLX_ACCUM_BLUE_SIZE 16 68*61046927SAndroid Build Coastguard Worker #define GLX_ACCUM_ALPHA_SIZE 17 69*61046927SAndroid Build Coastguard Worker 70*61046927SAndroid Build Coastguard Worker 71*61046927SAndroid Build Coastguard Worker /* 72*61046927SAndroid Build Coastguard Worker * Error codes returned by glXGetConfig: 73*61046927SAndroid Build Coastguard Worker */ 74*61046927SAndroid Build Coastguard Worker #define GLX_BAD_SCREEN 1 75*61046927SAndroid Build Coastguard Worker #define GLX_BAD_ATTRIBUTE 2 76*61046927SAndroid Build Coastguard Worker #define GLX_NO_EXTENSION 3 77*61046927SAndroid Build Coastguard Worker #define GLX_BAD_VISUAL 4 78*61046927SAndroid Build Coastguard Worker #define GLX_BAD_CONTEXT 5 79*61046927SAndroid Build Coastguard Worker #define GLX_BAD_VALUE 6 80*61046927SAndroid Build Coastguard Worker #define GLX_BAD_ENUM 7 81*61046927SAndroid Build Coastguard Worker 82*61046927SAndroid Build Coastguard Worker 83*61046927SAndroid Build Coastguard Worker /* 84*61046927SAndroid Build Coastguard Worker * GLX 1.1 and later: 85*61046927SAndroid Build Coastguard Worker */ 86*61046927SAndroid Build Coastguard Worker #define GLX_VENDOR 1 87*61046927SAndroid Build Coastguard Worker #define GLX_VERSION 2 88*61046927SAndroid Build Coastguard Worker #define GLX_EXTENSIONS 3 89*61046927SAndroid Build Coastguard Worker 90*61046927SAndroid Build Coastguard Worker 91*61046927SAndroid Build Coastguard Worker /* 92*61046927SAndroid Build Coastguard Worker * GLX 1.3 and later: 93*61046927SAndroid Build Coastguard Worker */ 94*61046927SAndroid Build Coastguard Worker #define GLX_CONFIG_CAVEAT 0x20 95*61046927SAndroid Build Coastguard Worker #define GLX_DONT_CARE 0xFFFFFFFF 96*61046927SAndroid Build Coastguard Worker #define GLX_X_VISUAL_TYPE 0x22 97*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_TYPE 0x23 98*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_INDEX_VALUE 0x24 99*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_RED_VALUE 0x25 100*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_GREEN_VALUE 0x26 101*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_BLUE_VALUE 0x27 102*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_ALPHA_VALUE 0x28 103*61046927SAndroid Build Coastguard Worker #define GLX_WINDOW_BIT 0x00000001 104*61046927SAndroid Build Coastguard Worker #define GLX_PIXMAP_BIT 0x00000002 105*61046927SAndroid Build Coastguard Worker #define GLX_PBUFFER_BIT 0x00000004 106*61046927SAndroid Build Coastguard Worker #define GLX_AUX_BUFFERS_BIT 0x00000010 107*61046927SAndroid Build Coastguard Worker #define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 108*61046927SAndroid Build Coastguard Worker #define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 109*61046927SAndroid Build Coastguard Worker #define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 110*61046927SAndroid Build Coastguard Worker #define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 111*61046927SAndroid Build Coastguard Worker #define GLX_DEPTH_BUFFER_BIT 0x00000020 112*61046927SAndroid Build Coastguard Worker #define GLX_STENCIL_BUFFER_BIT 0x00000040 113*61046927SAndroid Build Coastguard Worker #define GLX_ACCUM_BUFFER_BIT 0x00000080 114*61046927SAndroid Build Coastguard Worker #define GLX_NONE 0x8000 115*61046927SAndroid Build Coastguard Worker #define GLX_SLOW_CONFIG 0x8001 116*61046927SAndroid Build Coastguard Worker #define GLX_TRUE_COLOR 0x8002 117*61046927SAndroid Build Coastguard Worker #define GLX_DIRECT_COLOR 0x8003 118*61046927SAndroid Build Coastguard Worker #define GLX_PSEUDO_COLOR 0x8004 119*61046927SAndroid Build Coastguard Worker #define GLX_STATIC_COLOR 0x8005 120*61046927SAndroid Build Coastguard Worker #define GLX_GRAY_SCALE 0x8006 121*61046927SAndroid Build Coastguard Worker #define GLX_STATIC_GRAY 0x8007 122*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_RGB 0x8008 123*61046927SAndroid Build Coastguard Worker #define GLX_TRANSPARENT_INDEX 0x8009 124*61046927SAndroid Build Coastguard Worker #define GLX_VISUAL_ID 0x800B 125*61046927SAndroid Build Coastguard Worker #define GLX_SCREEN 0x800C 126*61046927SAndroid Build Coastguard Worker #define GLX_NON_CONFORMANT_CONFIG 0x800D 127*61046927SAndroid Build Coastguard Worker #define GLX_DRAWABLE_TYPE 0x8010 128*61046927SAndroid Build Coastguard Worker #define GLX_RENDER_TYPE 0x8011 129*61046927SAndroid Build Coastguard Worker #define GLX_X_RENDERABLE 0x8012 130*61046927SAndroid Build Coastguard Worker #define GLX_FBCONFIG_ID 0x8013 131*61046927SAndroid Build Coastguard Worker #define GLX_RGBA_TYPE 0x8014 132*61046927SAndroid Build Coastguard Worker #define GLX_COLOR_INDEX_TYPE 0x8015 133*61046927SAndroid Build Coastguard Worker #define GLX_MAX_PBUFFER_WIDTH 0x8016 134*61046927SAndroid Build Coastguard Worker #define GLX_MAX_PBUFFER_HEIGHT 0x8017 135*61046927SAndroid Build Coastguard Worker #define GLX_MAX_PBUFFER_PIXELS 0x8018 136*61046927SAndroid Build Coastguard Worker #define GLX_PRESERVED_CONTENTS 0x801B 137*61046927SAndroid Build Coastguard Worker #define GLX_LARGEST_PBUFFER 0x801C 138*61046927SAndroid Build Coastguard Worker #define GLX_WIDTH 0x801D 139*61046927SAndroid Build Coastguard Worker #define GLX_HEIGHT 0x801E 140*61046927SAndroid Build Coastguard Worker #define GLX_EVENT_MASK 0x801F 141*61046927SAndroid Build Coastguard Worker #define GLX_DAMAGED 0x8020 142*61046927SAndroid Build Coastguard Worker #define GLX_SAVED 0x8021 143*61046927SAndroid Build Coastguard Worker #define GLX_WINDOW 0x8022 144*61046927SAndroid Build Coastguard Worker #define GLX_PBUFFER 0x8023 145*61046927SAndroid Build Coastguard Worker #define GLX_PBUFFER_HEIGHT 0x8040 146*61046927SAndroid Build Coastguard Worker #define GLX_PBUFFER_WIDTH 0x8041 147*61046927SAndroid Build Coastguard Worker #define GLX_RGBA_BIT 0x00000001 148*61046927SAndroid Build Coastguard Worker #define GLX_COLOR_INDEX_BIT 0x00000002 149*61046927SAndroid Build Coastguard Worker #define GLX_PBUFFER_CLOBBER_MASK 0x08000000 150*61046927SAndroid Build Coastguard Worker 151*61046927SAndroid Build Coastguard Worker 152*61046927SAndroid Build Coastguard Worker /* 153*61046927SAndroid Build Coastguard Worker * GLX 1.4 and later: 154*61046927SAndroid Build Coastguard Worker */ 155*61046927SAndroid Build Coastguard Worker #define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ 156*61046927SAndroid Build Coastguard Worker #define GLX_SAMPLES 0x186a1 /*100001*/ 157*61046927SAndroid Build Coastguard Worker 158*61046927SAndroid Build Coastguard Worker 159*61046927SAndroid Build Coastguard Worker 160*61046927SAndroid Build Coastguard Worker typedef struct __GLXcontextRec *GLXContext; 161*61046927SAndroid Build Coastguard Worker typedef XID GLXPixmap; 162*61046927SAndroid Build Coastguard Worker typedef XID GLXDrawable; 163*61046927SAndroid Build Coastguard Worker /* GLX 1.3 and later */ 164*61046927SAndroid Build Coastguard Worker typedef struct __GLXFBConfigRec *GLXFBConfig; 165*61046927SAndroid Build Coastguard Worker typedef XID GLXFBConfigID; 166*61046927SAndroid Build Coastguard Worker typedef XID GLXContextID; 167*61046927SAndroid Build Coastguard Worker typedef XID GLXWindow; 168*61046927SAndroid Build Coastguard Worker typedef XID GLXPbuffer; 169*61046927SAndroid Build Coastguard Worker 170*61046927SAndroid Build Coastguard Worker 171*61046927SAndroid Build Coastguard Worker /* 172*61046927SAndroid Build Coastguard Worker ** Events. 173*61046927SAndroid Build Coastguard Worker ** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX 174*61046927SAndroid Build Coastguard Worker ** event - this helps initialization if the server supports the pbuffer 175*61046927SAndroid Build Coastguard Worker ** extension and the client doesn't. 176*61046927SAndroid Build Coastguard Worker */ 177*61046927SAndroid Build Coastguard Worker #define GLX_PbufferClobber 0 178*61046927SAndroid Build Coastguard Worker #define GLX_BufferSwapComplete 1 179*61046927SAndroid Build Coastguard Worker 180*61046927SAndroid Build Coastguard Worker #define __GLX_NUMBER_EVENTS 17 181*61046927SAndroid Build Coastguard Worker 182*61046927SAndroid Build Coastguard Worker extern XVisualInfo* glXChooseVisual( Display *dpy, int screen, 183*61046927SAndroid Build Coastguard Worker int *attribList ); 184*61046927SAndroid Build Coastguard Worker 185*61046927SAndroid Build Coastguard Worker extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, 186*61046927SAndroid Build Coastguard Worker GLXContext shareList, Bool direct ); 187*61046927SAndroid Build Coastguard Worker 188*61046927SAndroid Build Coastguard Worker extern void glXDestroyContext( Display *dpy, GLXContext ctx ); 189*61046927SAndroid Build Coastguard Worker 190*61046927SAndroid Build Coastguard Worker extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, 191*61046927SAndroid Build Coastguard Worker GLXContext ctx); 192*61046927SAndroid Build Coastguard Worker 193*61046927SAndroid Build Coastguard Worker extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, 194*61046927SAndroid Build Coastguard Worker unsigned long mask ); 195*61046927SAndroid Build Coastguard Worker 196*61046927SAndroid Build Coastguard Worker extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); 197*61046927SAndroid Build Coastguard Worker 198*61046927SAndroid Build Coastguard Worker extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, 199*61046927SAndroid Build Coastguard Worker Pixmap pixmap ); 200*61046927SAndroid Build Coastguard Worker 201*61046927SAndroid Build Coastguard Worker extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); 202*61046927SAndroid Build Coastguard Worker 203*61046927SAndroid Build Coastguard Worker extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event ); 204*61046927SAndroid Build Coastguard Worker 205*61046927SAndroid Build Coastguard Worker extern Bool glXQueryVersion( Display *dpy, int *maj, int *min ); 206*61046927SAndroid Build Coastguard Worker 207*61046927SAndroid Build Coastguard Worker extern Bool glXIsDirect( Display *dpy, GLXContext ctx ); 208*61046927SAndroid Build Coastguard Worker 209*61046927SAndroid Build Coastguard Worker extern int glXGetConfig( Display *dpy, XVisualInfo *visual, 210*61046927SAndroid Build Coastguard Worker int attrib, int *value ); 211*61046927SAndroid Build Coastguard Worker 212*61046927SAndroid Build Coastguard Worker extern GLXContext glXGetCurrentContext( void ); 213*61046927SAndroid Build Coastguard Worker 214*61046927SAndroid Build Coastguard Worker extern GLXDrawable glXGetCurrentDrawable( void ); 215*61046927SAndroid Build Coastguard Worker 216*61046927SAndroid Build Coastguard Worker extern void glXWaitGL( void ); 217*61046927SAndroid Build Coastguard Worker 218*61046927SAndroid Build Coastguard Worker extern void glXWaitX( void ); 219*61046927SAndroid Build Coastguard Worker 220*61046927SAndroid Build Coastguard Worker extern void glXUseXFont( Font font, int first, int count, int list ); 221*61046927SAndroid Build Coastguard Worker 222*61046927SAndroid Build Coastguard Worker 223*61046927SAndroid Build Coastguard Worker 224*61046927SAndroid Build Coastguard Worker /* GLX 1.1 and later */ 225*61046927SAndroid Build Coastguard Worker extern const char *glXQueryExtensionsString( Display *dpy, int screen ); 226*61046927SAndroid Build Coastguard Worker 227*61046927SAndroid Build Coastguard Worker extern const char *glXQueryServerString( Display *dpy, int screen, int name ); 228*61046927SAndroid Build Coastguard Worker 229*61046927SAndroid Build Coastguard Worker extern const char *glXGetClientString( Display *dpy, int name ); 230*61046927SAndroid Build Coastguard Worker 231*61046927SAndroid Build Coastguard Worker 232*61046927SAndroid Build Coastguard Worker /* GLX 1.2 and later */ 233*61046927SAndroid Build Coastguard Worker extern Display *glXGetCurrentDisplay( void ); 234*61046927SAndroid Build Coastguard Worker 235*61046927SAndroid Build Coastguard Worker 236*61046927SAndroid Build Coastguard Worker /* GLX 1.3 and later */ 237*61046927SAndroid Build Coastguard Worker extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen, 238*61046927SAndroid Build Coastguard Worker const int *attribList, int *nitems ); 239*61046927SAndroid Build Coastguard Worker 240*61046927SAndroid Build Coastguard Worker extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config, 241*61046927SAndroid Build Coastguard Worker int attribute, int *value ); 242*61046927SAndroid Build Coastguard Worker 243*61046927SAndroid Build Coastguard Worker extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen, 244*61046927SAndroid Build Coastguard Worker int *nelements ); 245*61046927SAndroid Build Coastguard Worker 246*61046927SAndroid Build Coastguard Worker extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, 247*61046927SAndroid Build Coastguard Worker GLXFBConfig config ); 248*61046927SAndroid Build Coastguard Worker 249*61046927SAndroid Build Coastguard Worker extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config, 250*61046927SAndroid Build Coastguard Worker Window win, const int *attribList ); 251*61046927SAndroid Build Coastguard Worker 252*61046927SAndroid Build Coastguard Worker extern void glXDestroyWindow( Display *dpy, GLXWindow window ); 253*61046927SAndroid Build Coastguard Worker 254*61046927SAndroid Build Coastguard Worker extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config, 255*61046927SAndroid Build Coastguard Worker Pixmap pixmap, const int *attribList ); 256*61046927SAndroid Build Coastguard Worker 257*61046927SAndroid Build Coastguard Worker extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap ); 258*61046927SAndroid Build Coastguard Worker 259*61046927SAndroid Build Coastguard Worker extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config, 260*61046927SAndroid Build Coastguard Worker const int *attribList ); 261*61046927SAndroid Build Coastguard Worker 262*61046927SAndroid Build Coastguard Worker extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); 263*61046927SAndroid Build Coastguard Worker 264*61046927SAndroid Build Coastguard Worker extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute, 265*61046927SAndroid Build Coastguard Worker unsigned int *value ); 266*61046927SAndroid Build Coastguard Worker 267*61046927SAndroid Build Coastguard Worker extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config, 268*61046927SAndroid Build Coastguard Worker int renderType, GLXContext shareList, 269*61046927SAndroid Build Coastguard Worker Bool direct ); 270*61046927SAndroid Build Coastguard Worker 271*61046927SAndroid Build Coastguard Worker extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw, 272*61046927SAndroid Build Coastguard Worker GLXDrawable read, GLXContext ctx ); 273*61046927SAndroid Build Coastguard Worker 274*61046927SAndroid Build Coastguard Worker extern GLXDrawable glXGetCurrentReadDrawable( void ); 275*61046927SAndroid Build Coastguard Worker 276*61046927SAndroid Build Coastguard Worker extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute, 277*61046927SAndroid Build Coastguard Worker int *value ); 278*61046927SAndroid Build Coastguard Worker 279*61046927SAndroid Build Coastguard Worker extern void glXSelectEvent( Display *dpy, GLXDrawable drawable, 280*61046927SAndroid Build Coastguard Worker unsigned long mask ); 281*61046927SAndroid Build Coastguard Worker 282*61046927SAndroid Build Coastguard Worker extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, 283*61046927SAndroid Build Coastguard Worker unsigned long *mask ); 284*61046927SAndroid Build Coastguard Worker 285*61046927SAndroid Build Coastguard Worker /* GLX 1.3 function pointer typedefs */ 286*61046927SAndroid Build Coastguard Worker typedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); 287*61046927SAndroid Build Coastguard Worker typedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); 288*61046927SAndroid Build Coastguard Worker typedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); 289*61046927SAndroid Build Coastguard Worker typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); 290*61046927SAndroid Build Coastguard Worker typedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); 291*61046927SAndroid Build Coastguard Worker typedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); 292*61046927SAndroid Build Coastguard Worker typedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 293*61046927SAndroid Build Coastguard Worker typedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); 294*61046927SAndroid Build Coastguard Worker typedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); 295*61046927SAndroid Build Coastguard Worker typedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); 296*61046927SAndroid Build Coastguard Worker typedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 297*61046927SAndroid Build Coastguard Worker typedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 298*61046927SAndroid Build Coastguard Worker typedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 299*61046927SAndroid Build Coastguard Worker typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void); 300*61046927SAndroid Build Coastguard Worker typedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void); 301*61046927SAndroid Build Coastguard Worker typedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 302*61046927SAndroid Build Coastguard Worker typedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); 303*61046927SAndroid Build Coastguard Worker typedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); 304*61046927SAndroid Build Coastguard Worker 305*61046927SAndroid Build Coastguard Worker 306*61046927SAndroid Build Coastguard Worker /* 307*61046927SAndroid Build Coastguard Worker * ARB 2. GLX_ARB_get_proc_address 308*61046927SAndroid Build Coastguard Worker */ 309*61046927SAndroid Build Coastguard Worker #ifndef GLX_ARB_get_proc_address 310*61046927SAndroid Build Coastguard Worker #define GLX_ARB_get_proc_address 1 311*61046927SAndroid Build Coastguard Worker 312*61046927SAndroid Build Coastguard Worker typedef void (*__GLXextFuncPtr)(void); 313*61046927SAndroid Build Coastguard Worker extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 314*61046927SAndroid Build Coastguard Worker 315*61046927SAndroid Build Coastguard Worker #endif /* GLX_ARB_get_proc_address */ 316*61046927SAndroid Build Coastguard Worker 317*61046927SAndroid Build Coastguard Worker 318*61046927SAndroid Build Coastguard Worker 319*61046927SAndroid Build Coastguard Worker /* GLX 1.4 and later */ 320*61046927SAndroid Build Coastguard Worker extern void (*glXGetProcAddress(const GLubyte *procname))( void ); 321*61046927SAndroid Build Coastguard Worker 322*61046927SAndroid Build Coastguard Worker /* GLX 1.4 function pointer typedefs */ 323*61046927SAndroid Build Coastguard Worker typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); 324*61046927SAndroid Build Coastguard Worker 325*61046927SAndroid Build Coastguard Worker 326*61046927SAndroid Build Coastguard Worker #ifndef GLX_GLXEXT_LEGACY 327*61046927SAndroid Build Coastguard Worker #include <GL/glxext.h> 328*61046927SAndroid Build Coastguard Worker #endif /* GLX_GLXEXT_LEGACY */ 329*61046927SAndroid Build Coastguard Worker 330*61046927SAndroid Build Coastguard Worker 331*61046927SAndroid Build Coastguard Worker /*** Should these go here, or in another header? */ 332*61046927SAndroid Build Coastguard Worker /* 333*61046927SAndroid Build Coastguard Worker ** GLX Events 334*61046927SAndroid Build Coastguard Worker */ 335*61046927SAndroid Build Coastguard Worker typedef struct { 336*61046927SAndroid Build Coastguard Worker int event_type; /* GLX_DAMAGED or GLX_SAVED */ 337*61046927SAndroid Build Coastguard Worker int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ 338*61046927SAndroid Build Coastguard Worker unsigned long serial; /* # of last request processed by server */ 339*61046927SAndroid Build Coastguard Worker Bool send_event; /* true if this came for SendEvent request */ 340*61046927SAndroid Build Coastguard Worker Display *display; /* display the event was read from */ 341*61046927SAndroid Build Coastguard Worker GLXDrawable drawable; /* XID of Drawable */ 342*61046927SAndroid Build Coastguard Worker unsigned int buffer_mask; /* mask indicating which buffers are affected */ 343*61046927SAndroid Build Coastguard Worker unsigned int aux_buffer; /* which aux buffer was affected */ 344*61046927SAndroid Build Coastguard Worker int x, y; 345*61046927SAndroid Build Coastguard Worker int width, height; 346*61046927SAndroid Build Coastguard Worker int count; /* if nonzero, at least this many more */ 347*61046927SAndroid Build Coastguard Worker } GLXPbufferClobberEvent; 348*61046927SAndroid Build Coastguard Worker 349*61046927SAndroid Build Coastguard Worker typedef struct { 350*61046927SAndroid Build Coastguard Worker int type; 351*61046927SAndroid Build Coastguard Worker unsigned long serial; /* # of last request processed by server */ 352*61046927SAndroid Build Coastguard Worker Bool send_event; /* true if this came from a SendEvent request */ 353*61046927SAndroid Build Coastguard Worker Display *display; /* Display the event was read from */ 354*61046927SAndroid Build Coastguard Worker Drawable drawable; /* drawable on which event was requested in event mask */ 355*61046927SAndroid Build Coastguard Worker int event_type; 356*61046927SAndroid Build Coastguard Worker int64_t ust; 357*61046927SAndroid Build Coastguard Worker int64_t msc; 358*61046927SAndroid Build Coastguard Worker int64_t sbc; 359*61046927SAndroid Build Coastguard Worker } GLXBufferSwapComplete; 360*61046927SAndroid Build Coastguard Worker 361*61046927SAndroid Build Coastguard Worker typedef union __GLXEvent { 362*61046927SAndroid Build Coastguard Worker GLXPbufferClobberEvent glxpbufferclobber; 363*61046927SAndroid Build Coastguard Worker GLXBufferSwapComplete glxbufferswapcomplete; 364*61046927SAndroid Build Coastguard Worker long pad[24]; 365*61046927SAndroid Build Coastguard Worker } GLXEvent; 366*61046927SAndroid Build Coastguard Worker 367*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 368*61046927SAndroid Build Coastguard Worker } 369*61046927SAndroid Build Coastguard Worker #endif 370*61046927SAndroid Build Coastguard Worker 371*61046927SAndroid Build Coastguard Worker #endif 372