1 #ifndef __glxext_h_ 2 #define __glxext_h_ 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 /* 9 ** License Applicability. Except to the extent portions of this file are 10 ** made subject to an alternative license as permitted in the SGI Free 11 ** Software License B, Version 1.1 (the "License"), the contents of this 12 ** file are subject only to the provisions of the License. You may not use 13 ** this file except in compliance with the License. You may obtain a copy 14 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 15 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 16 ** 17 ** http://oss.sgi.com/projects/FreeB 18 ** 19 ** Note that, as provided in the License, the Software is distributed on an 20 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 21 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 22 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 23 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 24 ** 25 ** Original Code. The Original Code is: OpenGL Sample Implementation, 26 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 27 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 28 ** Copyright in any portions created by third parties is as indicated 29 ** elsewhere herein. All Rights Reserved. 30 ** 31 ** Additional Notice Provisions: This software was created using the 32 ** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has 33 ** not been independently verified as being compliant with the OpenGL(R) 34 ** version 1.2.1 Specification. 35 */ 36 37 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) 38 #define WIN32_LEAN_AND_MEAN 1 39 #include <windows.h> 40 #endif 41 42 #ifndef APIENTRY 43 #define APIENTRY 44 #endif 45 #ifndef GLAPI 46 #define GLAPI extern 47 #endif 48 49 /*************************************************************/ 50 51 /* Header file version number, required by OpenGL ABI for Linux */ 52 /* glxext.h last updated 2002/03/22 */ 53 /* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */ 54 #define GLX_GLXEXT_VERSION 5 55 56 #ifndef GLX_VERSION_1_3 57 #define GLX_WINDOW_BIT 0x00000001 58 #define GLX_PIXMAP_BIT 0x00000002 59 #define GLX_PBUFFER_BIT 0x00000004 60 #define GLX_RGBA_BIT 0x00000001 61 #define GLX_COLOR_INDEX_BIT 0x00000002 62 #define GLX_PBUFFER_CLOBBER_MASK 0x08000000 63 #define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 64 #define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 65 #define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 66 #define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 67 #define GLX_AUX_BUFFERS_BIT 0x00000010 68 #define GLX_DEPTH_BUFFER_BIT 0x00000020 69 #define GLX_STENCIL_BUFFER_BIT 0x00000040 70 #define GLX_ACCUM_BUFFER_BIT 0x00000080 71 #define GLX_CONFIG_CAVEAT 0x20 72 #define GLX_X_VISUAL_TYPE 0x22 73 #define GLX_TRANSPARENT_TYPE 0x23 74 #define GLX_TRANSPARENT_INDEX_VALUE 0x24 75 #define GLX_TRANSPARENT_RED_VALUE 0x25 76 #define GLX_TRANSPARENT_GREEN_VALUE 0x26 77 #define GLX_TRANSPARENT_BLUE_VALUE 0x27 78 #define GLX_TRANSPARENT_ALPHA_VALUE 0x28 79 #define GLX_DONT_CARE 0xFFFFFFFF 80 #define GLX_NONE 0x8000 81 #define GLX_SLOW_CONFIG 0x8001 82 #define GLX_TRUE_COLOR 0x8002 83 #define GLX_DIRECT_COLOR 0x8003 84 #define GLX_PSEUDO_COLOR 0x8004 85 #define GLX_STATIC_COLOR 0x8005 86 #define GLX_GRAY_SCALE 0x8006 87 #define GLX_STATIC_GRAY 0x8007 88 #define GLX_TRANSPARENT_RGB 0x8008 89 #define GLX_TRANSPARENT_INDEX 0x8009 90 #define GLX_VISUAL_ID 0x800B 91 #define GLX_SCREEN 0x800C 92 #define GLX_NON_CONFORMANT_CONFIG 0x800D 93 #define GLX_DRAWABLE_TYPE 0x8010 94 #define GLX_RENDER_TYPE 0x8011 95 #define GLX_X_RENDERABLE 0x8012 96 #define GLX_FBCONFIG_ID 0x8013 97 #define GLX_RGBA_TYPE 0x8014 98 #define GLX_COLOR_INDEX_TYPE 0x8015 99 #define GLX_MAX_PBUFFER_WIDTH 0x8016 100 #define GLX_MAX_PBUFFER_HEIGHT 0x8017 101 #define GLX_MAX_PBUFFER_PIXELS 0x8018 102 #define GLX_PRESERVED_CONTENTS 0x801B 103 #define GLX_LARGEST_PBUFFER 0x801C 104 #define GLX_WIDTH 0x801D 105 #define GLX_HEIGHT 0x801E 106 #define GLX_EVENT_MASK 0x801F 107 #define GLX_DAMAGED 0x8020 108 #define GLX_SAVED 0x8021 109 #define GLX_WINDOW 0x8022 110 #define GLX_PBUFFER 0x8023 111 #define GLX_PBUFFER_HEIGHT 0x8040 112 #define GLX_PBUFFER_WIDTH 0x8041 113 #endif 114 115 #ifndef GLX_VERSION_1_4 116 #define GLX_SAMPLE_BUFFERS 100000 117 #define GLX_SAMPLES 100001 118 #endif 119 120 #ifndef GLX_ARB_get_proc_address 121 #endif 122 123 #ifndef GLX_ARB_multisample 124 #define GLX_SAMPLE_BUFFERS_ARB 100000 125 #define GLX_SAMPLES_ARB 100001 126 #endif 127 128 #ifndef GLX_SGIS_multisample 129 #define GLX_SAMPLE_BUFFERS_SGIS 100000 130 #define GLX_SAMPLES_SGIS 100001 131 #endif 132 133 #ifndef GLX_EXT_visual_info 134 #define GLX_X_VISUAL_TYPE_EXT 0x22 135 #define GLX_TRANSPARENT_TYPE_EXT 0x23 136 #define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 137 #define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 138 #define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 139 #define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 140 #define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 141 #define GLX_NONE_EXT 0x8000 142 #define GLX_TRUE_COLOR_EXT 0x8002 143 #define GLX_DIRECT_COLOR_EXT 0x8003 144 #define GLX_PSEUDO_COLOR_EXT 0x8004 145 #define GLX_STATIC_COLOR_EXT 0x8005 146 #define GLX_GRAY_SCALE_EXT 0x8006 147 #define GLX_STATIC_GRAY_EXT 0x8007 148 #define GLX_TRANSPARENT_RGB_EXT 0x8008 149 #define GLX_TRANSPARENT_INDEX_EXT 0x8009 150 #endif 151 152 #ifndef GLX_SGI_swap_control 153 #endif 154 155 #ifndef GLX_SGI_video_sync 156 #endif 157 158 #ifndef GLX_SGI_make_current_read 159 #endif 160 161 #ifndef GLX_SGIX_video_source 162 #endif 163 164 #ifndef GLX_EXT_visual_rating 165 #define GLX_VISUAL_CAVEAT_EXT 0x20 166 #define GLX_SLOW_VISUAL_EXT 0x8001 167 #define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 168 /* reuse GLX_NONE_EXT */ 169 #endif 170 171 #ifndef GLX_EXT_import_context 172 #define GLX_SHARE_CONTEXT_EXT 0x800A 173 #define GLX_VISUAL_ID_EXT 0x800B 174 #define GLX_SCREEN_EXT 0x800C 175 #endif 176 177 #ifndef GLX_SGIX_fbconfig 178 #define GLX_WINDOW_BIT_SGIX 0x00000001 179 #define GLX_PIXMAP_BIT_SGIX 0x00000002 180 #define GLX_RGBA_BIT_SGIX 0x00000001 181 #define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 182 #define GLX_DRAWABLE_TYPE_SGIX 0x8010 183 #define GLX_RENDER_TYPE_SGIX 0x8011 184 #define GLX_X_RENDERABLE_SGIX 0x8012 185 #define GLX_FBCONFIG_ID_SGIX 0x8013 186 #define GLX_RGBA_TYPE_SGIX 0x8014 187 #define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 188 /* reuse GLX_SCREEN_EXT */ 189 #endif 190 191 #ifndef GLX_SGIX_pbuffer 192 #define GLX_PBUFFER_BIT_SGIX 0x00000004 193 #define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 194 #define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 195 #define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 196 #define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 197 #define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 198 #define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 199 #define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 200 #define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 201 #define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 202 #define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 203 #define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 204 #define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 205 #define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 206 #define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 207 #define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A 208 #define GLX_PRESERVED_CONTENTS_SGIX 0x801B 209 #define GLX_LARGEST_PBUFFER_SGIX 0x801C 210 #define GLX_WIDTH_SGIX 0x801D 211 #define GLX_HEIGHT_SGIX 0x801E 212 #define GLX_EVENT_MASK_SGIX 0x801F 213 #define GLX_DAMAGED_SGIX 0x8020 214 #define GLX_SAVED_SGIX 0x8021 215 #define GLX_WINDOW_SGIX 0x8022 216 #define GLX_PBUFFER_SGIX 0x8023 217 #endif 218 219 #ifndef GLX_SGI_cushion 220 #endif 221 222 #ifndef GLX_SGIX_video_resize 223 #define GLX_SYNC_FRAME_SGIX 0x00000000 224 #define GLX_SYNC_SWAP_SGIX 0x00000001 225 #endif 226 227 #ifndef GLX_SGIX_dmbuffer 228 #define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 229 #endif 230 231 #ifndef GLX_SGIX_swap_group 232 #endif 233 234 #ifndef GLX_SGIX_swap_barrier 235 #endif 236 237 #ifndef GLX_SGIS_blended_overlay 238 #define GLX_BLENDED_RGBA_SGIS 0x8025 239 #endif 240 241 #ifndef GLX_SGIS_shared_multisample 242 #define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 243 #define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 244 #endif 245 246 #ifndef GLX_SUN_get_transparent_index 247 #endif 248 249 #ifndef GLX_3DFX_multisample 250 #define GLX_SAMPLE_BUFFERS_3DFX 0x8050 251 #define GLX_SAMPLES_3DFX 0x8051 252 #endif 253 254 #ifndef GLX_MESA_copy_sub_buffer 255 #endif 256 257 #ifndef GLX_MESA_pixmap_colormap 258 #endif 259 260 #ifndef GLX_MESA_release_buffers 261 #endif 262 263 #ifndef GLX_MESA_set_3dfx_mode 264 #define GLX_3DFX_WINDOW_MODE_MESA 0x1 265 #define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 266 #endif 267 268 #ifndef GLX_SGIX_visual_select_group 269 #define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 270 #endif 271 272 #ifndef GLX_OML_swap_method 273 #define GLX_SWAP_METHOD_OML 0x8060 274 #define GLX_SWAP_EXCHANGE_OML 0x8061 275 #define GLX_SWAP_COPY_OML 0x8062 276 #define GLX_SWAP_UNDEFINED_OML 0x8063 277 #endif 278 279 #ifndef GLX_OML_sync_control 280 #endif 281 282 283 /*************************************************************/ 284 285 #ifndef GLX_ARB_get_proc_address 286 typedef void (*__GLXextFuncPtr)(void); 287 #endif 288 289 #ifndef GLX_SGIX_video_source 290 typedef XID GLXVideoSourceSGIX; 291 #endif 292 293 #ifndef GLX_SGIX_fbconfig 294 typedef XID GLXFBConfigIDSGIX; 295 typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; 296 #endif 297 298 #ifndef GLX_SGIX_pbuffer 299 typedef XID GLXPbufferSGIX; 300 typedef struct { 301 int type; 302 unsigned long serial; /* # of last request processed by server */ 303 Bool send_event; /* true if this came for SendEvent request */ 304 Display *display; /* display the event was read from */ 305 GLXDrawable drawable; /* i.d. of Drawable */ 306 int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ 307 int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ 308 unsigned int mask; /* mask indicating which buffers are affected*/ 309 int x, y; 310 int width, height; 311 int count; /* if nonzero, at least this many more */ 312 } GLXBufferClobberEventSGIX; 313 #endif 314 315 #ifndef GLX_VERSION_1_3 316 #define GLX_VERSION_1_3 1 317 #ifdef GLX_GLXEXT_PROTOTYPES 318 extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *); 319 extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *); 320 extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *); 321 extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig); 322 extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *); 323 extern void glXDestroyWindow (Display *, GLXWindow); 324 extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *); 325 extern void glXDestroyPixmap (Display *, GLXPixmap); 326 extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *); 327 extern void glXDestroyPbuffer (Display *, GLXPbuffer); 328 extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *); 329 extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool); 330 extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext); 331 extern GLXDrawable glXGetCurrentReadDrawable (void); 332 extern Display * glXGetCurrentDisplay (void); 333 extern int glXQueryContext (Display *, GLXContext, int, int *); 334 extern void glXSelectEvent (Display *, GLXDrawable, unsigned long); 335 extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *); 336 #endif /* GLX_GLXEXT_PROTOTYPES */ 337 typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); 338 typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); 339 typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); 340 typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); 341 typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); 342 typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); 343 typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 344 typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); 345 typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); 346 typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); 347 typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 348 typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 349 typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 350 typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); 351 typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void); 352 typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 353 typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); 354 typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); 355 #endif 356 357 #ifndef GLX_VERSION_1_4 358 #define GLX_VERSION_1_4 1 359 #ifdef GLX_GLXEXT_PROTOTYPES 360 extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); 361 #endif /* GLX_GLXEXT_PROTOTYPES */ 362 typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); 363 #endif 364 365 #ifndef GLX_ARB_get_proc_address 366 #define GLX_ARB_get_proc_address 1 367 #ifdef GLX_GLXEXT_PROTOTYPES 368 extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 369 #endif /* GLX_GLXEXT_PROTOTYPES */ 370 typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); 371 #endif 372 373 #ifndef GLX_ARB_multisample 374 #define GLX_ARB_multisample 1 375 #endif 376 377 #ifndef GLX_SGIS_multisample 378 #define GLX_SGIS_multisample 1 379 #endif 380 381 #ifndef GLX_EXT_visual_info 382 #define GLX_EXT_visual_info 1 383 #endif 384 385 #ifndef GLX_SGI_swap_control 386 #define GLX_SGI_swap_control 1 387 #ifdef GLX_GLXEXT_PROTOTYPES 388 extern int glXSwapIntervalSGI (int); 389 #endif /* GLX_GLXEXT_PROTOTYPES */ 390 typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); 391 #endif 392 393 #ifndef GLX_SGI_video_sync 394 #define GLX_SGI_video_sync 1 395 #ifdef GLX_GLXEXT_PROTOTYPES 396 extern int glXGetVideoSyncSGI (unsigned int *); 397 extern int glXWaitVideoSyncSGI (int, int, unsigned int *); 398 #endif /* GLX_GLXEXT_PROTOTYPES */ 399 typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count); 400 typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count); 401 #endif 402 403 #ifndef GLX_SGI_make_current_read 404 #define GLX_SGI_make_current_read 1 405 #ifdef GLX_GLXEXT_PROTOTYPES 406 extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext); 407 extern GLXDrawable glXGetCurrentReadDrawableSGI (void); 408 #endif /* GLX_GLXEXT_PROTOTYPES */ 409 typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 410 typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); 411 #endif 412 413 #ifdef _VL_H 414 #ifndef GLX_SGIX_video_source 415 #define GLX_SGIX_video_source 1 416 #ifdef GLX_GLXEXT_PROTOTYPES 417 extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode); 418 extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX); 419 #endif /* GLX_GLXEXT_PROTOTYPES */ 420 typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); 421 typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource); 422 #endif 423 424 #endif /* _VL_H */ 425 #ifndef GLX_EXT_visual_rating 426 #define GLX_EXT_visual_rating 1 427 #endif 428 429 #ifndef GLX_EXT_import_context 430 #define GLX_EXT_import_context 1 431 #ifdef GLX_GLXEXT_PROTOTYPES 432 extern Display * glXGetCurrentDisplayEXT (void); 433 extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *); 434 extern GLXContextID glXGetContextIDEXT (const GLXContext); 435 extern GLXContext glXImportContextEXT (Display *, GLXContextID); 436 extern void glXFreeContextEXT (Display *, GLXContext); 437 #endif /* GLX_GLXEXT_PROTOTYPES */ 438 typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void); 439 typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value); 440 typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); 441 typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID); 442 typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context); 443 #endif 444 445 #ifndef GLX_SGIX_fbconfig 446 #define GLX_SGIX_fbconfig 1 447 #ifdef GLX_GLXEXT_PROTOTYPES 448 extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *); 449 extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *); 450 extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap); 451 extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool); 452 extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX); 453 extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *); 454 #endif /* GLX_GLXEXT_PROTOTYPES */ 455 typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); 456 typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements); 457 typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); 458 typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); 459 typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config); 460 typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis); 461 #endif 462 463 #ifndef GLX_SGIX_pbuffer 464 #define GLX_SGIX_pbuffer 1 465 #ifdef GLX_GLXEXT_PROTOTYPES 466 extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *); 467 extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX); 468 extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *); 469 extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long); 470 extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *); 471 #endif /* GLX_GLXEXT_PROTOTYPES */ 472 typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); 473 typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf); 474 typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); 475 typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask); 476 typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask); 477 #endif 478 479 #ifndef GLX_SGI_cushion 480 #define GLX_SGI_cushion 1 481 #ifdef GLX_GLXEXT_PROTOTYPES 482 extern void glXCushionSGI (Display *, Window, float); 483 #endif /* GLX_GLXEXT_PROTOTYPES */ 484 typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion); 485 #endif 486 487 #ifndef GLX_SGIX_video_resize 488 #define GLX_SGIX_video_resize 1 489 #ifdef GLX_GLXEXT_PROTOTYPES 490 extern int glXBindChannelToWindowSGIX (Display *, int, int, Window); 491 extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int); 492 extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *); 493 extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *); 494 extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum); 495 #endif /* GLX_GLXEXT_PROTOTYPES */ 496 typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window); 497 typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h); 498 typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); 499 typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h); 500 typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype); 501 #endif 502 503 #ifdef _DM_BUFFER_H_ 504 #ifndef GLX_SGIX_dmbuffer 505 #define GLX_SGIX_dmbuffer 1 506 #ifdef GLX_GLXEXT_PROTOTYPES 507 extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer); 508 #endif /* GLX_GLXEXT_PROTOTYPES */ 509 typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); 510 #endif 511 512 #endif /* _DM_BUFFER_H_ */ 513 #ifndef GLX_SGIX_swap_group 514 #define GLX_SGIX_swap_group 1 515 #ifdef GLX_GLXEXT_PROTOTYPES 516 extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable); 517 #endif /* GLX_GLXEXT_PROTOTYPES */ 518 typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); 519 #endif 520 521 #ifndef GLX_SGIX_swap_barrier 522 #define GLX_SGIX_swap_barrier 1 523 #ifdef GLX_GLXEXT_PROTOTYPES 524 extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int); 525 extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *); 526 #endif /* GLX_GLXEXT_PROTOTYPES */ 527 typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); 528 typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); 529 #endif 530 531 #ifndef GLX_SUN_get_transparent_index 532 #define GLX_SUN_get_transparent_index 1 533 #ifdef GLX_GLXEXT_PROTOTYPES 534 extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *); 535 #endif /* GLX_GLXEXT_PROTOTYPES */ 536 typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex); 537 #endif 538 539 #ifndef GLX_MESA_copy_sub_buffer 540 #define GLX_MESA_copy_sub_buffer 1 541 #ifdef GLX_GLXEXT_PROTOTYPES 542 extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int); 543 #endif /* GLX_GLXEXT_PROTOTYPES */ 544 typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); 545 #endif 546 547 #ifndef GLX_MESA_pixmap_colormap 548 #define GLX_MESA_pixmap_colormap 1 549 #ifdef GLX_GLXEXT_PROTOTYPES 550 extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap); 551 #endif /* GLX_GLXEXT_PROTOTYPES */ 552 typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); 553 #endif 554 555 #ifndef GLX_MESA_release_buffers 556 #define GLX_MESA_release_buffers 1 557 #ifdef GLX_GLXEXT_PROTOTYPES 558 extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable); 559 #endif /* GLX_GLXEXT_PROTOTYPES */ 560 typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); 561 #endif 562 563 #ifndef GLX_MESA_set_3dfx_mode 564 #define GLX_MESA_set_3dfx_mode 1 565 #ifdef GLX_GLXEXT_PROTOTYPES 566 extern Bool glXSet3DfxModeMESA (int); 567 #endif /* GLX_GLXEXT_PROTOTYPES */ 568 typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); 569 #endif 570 571 #ifndef GLX_SGIX_visual_select_group 572 #define GLX_SGIX_visual_select_group 1 573 #endif 574 575 #ifndef GLX_OML_swap_method 576 #define GLX_OML_swap_method 1 577 #endif 578 579 #if defined(__STDC_VERSION__) 580 #if __STDC_VERSION__ >= 199901L 581 /* Include ISO C99 integer types for OML_sync_control; need a better test */ 582 #include <inttypes.h> 583 584 #ifndef GLX_OML_sync_control 585 #define GLX_OML_sync_control 1 586 #ifdef GLX_GLXEXT_PROTOTYPES 587 extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *); 588 extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *); 589 extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t); 590 extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *); 591 extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *); 592 #endif /* GLX_GLXEXT_PROTOTYPES */ 593 typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); 594 typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); 595 typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); 596 typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); 597 typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); 598 #endif 599 600 #endif /* C99 version test */ 601 #endif /* STDC test */ 602 603 #ifdef __cplusplus 604 } 605 #endif 606 607 #endif 608