1 #ifndef __glxext_h_ 2 #define __glxext_h_ 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 /* 9 ** Copyright (c) 2007 The Khronos Group Inc. 10 ** 11 ** Permission is hereby granted, free of charge, to any person obtaining a 12 ** copy of this software and/or associated documentation files (the 13 ** "Materials"), to deal in the Materials without restriction, including 14 ** without limitation the rights to use, copy, modify, merge, publish, 15 ** distribute, sublicense, and/or sell copies of the Materials, and to 16 ** permit persons to whom the Materials are furnished to do so, subject to 17 ** the following conditions: 18 ** 19 ** The above copyright notice and this permission notice shall be included 20 ** in all copies or substantial portions of the Materials. 21 ** 22 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 25 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 26 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 27 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 28 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 29 */ 30 31 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) 32 #define WIN32_LEAN_AND_MEAN 1 33 #include <windows.h> 34 #endif 35 36 #ifndef APIENTRY 37 #define APIENTRY 38 #endif 39 #ifndef APIENTRYP 40 #define APIENTRYP APIENTRY * 41 #endif 42 #ifndef GLAPI 43 #define GLAPI extern 44 #endif 45 46 /*************************************************************/ 47 48 /* Header file version number, required by OpenGL ABI for Linux */ 49 /* glxext.h last updated 2007/04/21 */ 50 /* Current version at http://www.opengl.org/registry/ */ 51 #define GLX_GLXEXT_VERSION 19 52 53 #ifndef GLX_VERSION_1_3 54 #define GLX_WINDOW_BIT 0x00000001 55 #define GLX_PIXMAP_BIT 0x00000002 56 #define GLX_PBUFFER_BIT 0x00000004 57 #define GLX_RGBA_BIT 0x00000001 58 #define GLX_COLOR_INDEX_BIT 0x00000002 59 #define GLX_PBUFFER_CLOBBER_MASK 0x08000000 60 #define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 61 #define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 62 #define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 63 #define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 64 #define GLX_AUX_BUFFERS_BIT 0x00000010 65 #define GLX_DEPTH_BUFFER_BIT 0x00000020 66 #define GLX_STENCIL_BUFFER_BIT 0x00000040 67 #define GLX_ACCUM_BUFFER_BIT 0x00000080 68 #define GLX_CONFIG_CAVEAT 0x20 69 #define GLX_X_VISUAL_TYPE 0x22 70 #define GLX_TRANSPARENT_TYPE 0x23 71 #define GLX_TRANSPARENT_INDEX_VALUE 0x24 72 #define GLX_TRANSPARENT_RED_VALUE 0x25 73 #define GLX_TRANSPARENT_GREEN_VALUE 0x26 74 #define GLX_TRANSPARENT_BLUE_VALUE 0x27 75 #define GLX_TRANSPARENT_ALPHA_VALUE 0x28 76 #define GLX_DONT_CARE 0xFFFFFFFF 77 #define GLX_NONE 0x8000 78 #define GLX_SLOW_CONFIG 0x8001 79 #define GLX_TRUE_COLOR 0x8002 80 #define GLX_DIRECT_COLOR 0x8003 81 #define GLX_PSEUDO_COLOR 0x8004 82 #define GLX_STATIC_COLOR 0x8005 83 #define GLX_GRAY_SCALE 0x8006 84 #define GLX_STATIC_GRAY 0x8007 85 #define GLX_TRANSPARENT_RGB 0x8008 86 #define GLX_TRANSPARENT_INDEX 0x8009 87 #define GLX_VISUAL_ID 0x800B 88 #define GLX_SCREEN 0x800C 89 #define GLX_NON_CONFORMANT_CONFIG 0x800D 90 #define GLX_DRAWABLE_TYPE 0x8010 91 #define GLX_RENDER_TYPE 0x8011 92 #define GLX_X_RENDERABLE 0x8012 93 #define GLX_FBCONFIG_ID 0x8013 94 #define GLX_RGBA_TYPE 0x8014 95 #define GLX_COLOR_INDEX_TYPE 0x8015 96 #define GLX_MAX_PBUFFER_WIDTH 0x8016 97 #define GLX_MAX_PBUFFER_HEIGHT 0x8017 98 #define GLX_MAX_PBUFFER_PIXELS 0x8018 99 #define GLX_PRESERVED_CONTENTS 0x801B 100 #define GLX_LARGEST_PBUFFER 0x801C 101 #define GLX_WIDTH 0x801D 102 #define GLX_HEIGHT 0x801E 103 #define GLX_EVENT_MASK 0x801F 104 #define GLX_DAMAGED 0x8020 105 #define GLX_SAVED 0x8021 106 #define GLX_WINDOW 0x8022 107 #define GLX_PBUFFER 0x8023 108 #define GLX_PBUFFER_HEIGHT 0x8040 109 #define GLX_PBUFFER_WIDTH 0x8041 110 #endif 111 112 #ifndef GLX_VERSION_1_4 113 #define GLX_SAMPLE_BUFFERS 100000 114 #define GLX_SAMPLES 100001 115 #endif 116 117 #ifndef GLX_ARB_get_proc_address 118 #endif 119 120 #ifndef GLX_ARB_multisample 121 #define GLX_SAMPLE_BUFFERS_ARB 100000 122 #define GLX_SAMPLES_ARB 100001 123 #endif 124 125 #ifndef GLX_ARB_fbconfig_float 126 #define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9 127 #define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 128 #endif 129 130 #ifndef GLX_SGIS_multisample 131 #define GLX_SAMPLE_BUFFERS_SGIS 100000 132 #define GLX_SAMPLES_SGIS 100001 133 #endif 134 135 #ifndef GLX_EXT_visual_info 136 #define GLX_X_VISUAL_TYPE_EXT 0x22 137 #define GLX_TRANSPARENT_TYPE_EXT 0x23 138 #define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 139 #define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 140 #define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 141 #define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 142 #define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 143 #define GLX_NONE_EXT 0x8000 144 #define GLX_TRUE_COLOR_EXT 0x8002 145 #define GLX_DIRECT_COLOR_EXT 0x8003 146 #define GLX_PSEUDO_COLOR_EXT 0x8004 147 #define GLX_STATIC_COLOR_EXT 0x8005 148 #define GLX_GRAY_SCALE_EXT 0x8006 149 #define GLX_STATIC_GRAY_EXT 0x8007 150 #define GLX_TRANSPARENT_RGB_EXT 0x8008 151 #define GLX_TRANSPARENT_INDEX_EXT 0x8009 152 #endif 153 154 #ifndef GLX_SGI_swap_control 155 #endif 156 157 #ifndef GLX_SGI_video_sync 158 #endif 159 160 #ifndef GLX_SGI_make_current_read 161 #endif 162 163 #ifndef GLX_SGIX_video_source 164 #endif 165 166 #ifndef GLX_EXT_visual_rating 167 #define GLX_VISUAL_CAVEAT_EXT 0x20 168 #define GLX_SLOW_VISUAL_EXT 0x8001 169 #define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 170 /* reuse GLX_NONE_EXT */ 171 #endif 172 173 #ifndef GLX_EXT_import_context 174 #define GLX_SHARE_CONTEXT_EXT 0x800A 175 #define GLX_VISUAL_ID_EXT 0x800B 176 #define GLX_SCREEN_EXT 0x800C 177 #endif 178 179 #ifndef GLX_SGIX_fbconfig 180 #define GLX_WINDOW_BIT_SGIX 0x00000001 181 #define GLX_PIXMAP_BIT_SGIX 0x00000002 182 #define GLX_RGBA_BIT_SGIX 0x00000001 183 #define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 184 #define GLX_DRAWABLE_TYPE_SGIX 0x8010 185 #define GLX_RENDER_TYPE_SGIX 0x8011 186 #define GLX_X_RENDERABLE_SGIX 0x8012 187 #define GLX_FBCONFIG_ID_SGIX 0x8013 188 #define GLX_RGBA_TYPE_SGIX 0x8014 189 #define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 190 /* reuse GLX_SCREEN_EXT */ 191 #endif 192 193 #ifndef GLX_SGIX_pbuffer 194 #define GLX_PBUFFER_BIT_SGIX 0x00000004 195 #define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 196 #define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 197 #define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 198 #define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 199 #define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 200 #define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 201 #define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 202 #define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 203 #define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 204 #define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 205 #define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 206 #define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 207 #define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 208 #define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 209 #define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A 210 #define GLX_PRESERVED_CONTENTS_SGIX 0x801B 211 #define GLX_LARGEST_PBUFFER_SGIX 0x801C 212 #define GLX_WIDTH_SGIX 0x801D 213 #define GLX_HEIGHT_SGIX 0x801E 214 #define GLX_EVENT_MASK_SGIX 0x801F 215 #define GLX_DAMAGED_SGIX 0x8020 216 #define GLX_SAVED_SGIX 0x8021 217 #define GLX_WINDOW_SGIX 0x8022 218 #define GLX_PBUFFER_SGIX 0x8023 219 #endif 220 221 #ifndef GLX_SGI_cushion 222 #endif 223 224 #ifndef GLX_SGIX_video_resize 225 #define GLX_SYNC_FRAME_SGIX 0x00000000 226 #define GLX_SYNC_SWAP_SGIX 0x00000001 227 #endif 228 229 #ifndef GLX_SGIX_dmbuffer 230 #define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 231 #endif 232 233 #ifndef GLX_SGIX_swap_group 234 #endif 235 236 #ifndef GLX_SGIX_swap_barrier 237 #endif 238 239 #ifndef GLX_SGIS_blended_overlay 240 #define GLX_BLENDED_RGBA_SGIS 0x8025 241 #endif 242 243 #ifndef GLX_SGIS_shared_multisample 244 #define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 245 #define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 246 #endif 247 248 #ifndef GLX_SUN_get_transparent_index 249 #endif 250 251 #ifndef GLX_3DFX_multisample 252 #define GLX_SAMPLE_BUFFERS_3DFX 0x8050 253 #define GLX_SAMPLES_3DFX 0x8051 254 #endif 255 256 #ifndef GLX_MESA_copy_sub_buffer 257 #endif 258 259 #ifndef GLX_MESA_pixmap_colormap 260 #endif 261 262 #ifndef GLX_MESA_release_buffers 263 #endif 264 265 #ifndef GLX_MESA_set_3dfx_mode 266 #define GLX_3DFX_WINDOW_MODE_MESA 0x1 267 #define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 268 #endif 269 270 #ifndef GLX_SGIX_visual_select_group 271 #define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 272 #endif 273 274 #ifndef GLX_OML_swap_method 275 #define GLX_SWAP_METHOD_OML 0x8060 276 #define GLX_SWAP_EXCHANGE_OML 0x8061 277 #define GLX_SWAP_COPY_OML 0x8062 278 #define GLX_SWAP_UNDEFINED_OML 0x8063 279 #endif 280 281 #ifndef GLX_OML_sync_control 282 #endif 283 284 #ifndef GLX_NV_float_buffer 285 #define GLX_FLOAT_COMPONENTS_NV 0x20B0 286 #endif 287 288 #ifndef GLX_SGIX_hyperpipe 289 #define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 290 #define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 291 #define GLX_BAD_HYPERPIPE_SGIX 92 292 #define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 293 #define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 294 #define GLX_PIPE_RECT_SGIX 0x00000001 295 #define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 296 #define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 297 #define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 298 #define GLX_HYPERPIPE_ID_SGIX 0x8030 299 #endif 300 301 #ifndef GLX_MESA_agp_offset 302 #endif 303 304 #ifndef GLX_EXT_fbconfig_packed_float 305 #define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 306 #define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 307 #endif 308 309 #ifndef GLX_EXT_framebuffer_sRGB 310 #define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 311 #endif 312 313 #ifndef GLX_EXT_texture_from_pixmap 314 #define GLX_TEXTURE_1D_BIT_EXT 0x00000001 315 #define GLX_TEXTURE_2D_BIT_EXT 0x00000002 316 #define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 317 #define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 318 #define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 319 #define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 320 #define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 321 #define GLX_Y_INVERTED_EXT 0x20D4 322 #define GLX_TEXTURE_FORMAT_EXT 0x20D5 323 #define GLX_TEXTURE_TARGET_EXT 0x20D6 324 #define GLX_MIPMAP_TEXTURE_EXT 0x20D7 325 #define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 326 #define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 327 #define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA 328 #define GLX_TEXTURE_1D_EXT 0x20DB 329 #define GLX_TEXTURE_2D_EXT 0x20DC 330 #define GLX_TEXTURE_RECTANGLE_EXT 0x20DD 331 #define GLX_FRONT_LEFT_EXT 0x20DE 332 #define GLX_FRONT_RIGHT_EXT 0x20DF 333 #define GLX_BACK_LEFT_EXT 0x20E0 334 #define GLX_BACK_RIGHT_EXT 0x20E1 335 #define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT 336 #define GLX_BACK_EXT GLX_BACK_LEFT_EXT 337 #define GLX_AUX0_EXT 0x20E2 338 #define GLX_AUX1_EXT 0x20E3 339 #define GLX_AUX2_EXT 0x20E4 340 #define GLX_AUX3_EXT 0x20E5 341 #define GLX_AUX4_EXT 0x20E6 342 #define GLX_AUX5_EXT 0x20E7 343 #define GLX_AUX6_EXT 0x20E8 344 #define GLX_AUX7_EXT 0x20E9 345 #define GLX_AUX8_EXT 0x20EA 346 #define GLX_AUX9_EXT 0x20EB 347 #endif 348 349 350 /*************************************************************/ 351 352 #ifndef GLX_ARB_get_proc_address 353 typedef void (*__GLXextFuncPtr)(void); 354 #endif 355 356 #ifndef GLX_SGIX_video_source 357 typedef XID GLXVideoSourceSGIX; 358 #endif 359 360 #ifndef GLX_SGIX_fbconfig 361 typedef XID GLXFBConfigIDSGIX; 362 typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; 363 #endif 364 365 #ifndef GLX_SGIX_pbuffer 366 typedef XID GLXPbufferSGIX; 367 typedef struct { 368 int type; 369 unsigned long serial; /* # of last request processed by server */ 370 Bool send_event; /* true if this came for SendEvent request */ 371 Display *display; /* display the event was read from */ 372 GLXDrawable drawable; /* i.d. of Drawable */ 373 int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ 374 int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ 375 unsigned int mask; /* mask indicating which buffers are affected*/ 376 int x, y; 377 int width, height; 378 int count; /* if nonzero, at least this many more */ 379 } GLXBufferClobberEventSGIX; 380 #endif 381 382 #ifndef GLEXT_64_TYPES_DEFINED 383 /* This code block is duplicated in glxext.h, so must be protected */ 384 #define GLEXT_64_TYPES_DEFINED 385 /* Define int32_t, int64_t, and uint64_t types for UST/MSC */ 386 /* (as used in the GLX_OML_sync_control extension). */ 387 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 388 #include <inttypes.h> 389 #elif defined(__sun__) || defined(__digital__) 390 #include <inttypes.h> 391 #if defined(__STDC__) 392 #if defined(__arch64__) 393 typedef long int int64_t; 394 typedef unsigned long int uint64_t; 395 #else 396 typedef long long int int64_t; 397 typedef unsigned long long int uint64_t; 398 #endif /* __arch64__ */ 399 #endif /* __STDC__ */ 400 #elif defined( __VMS ) 401 #include <inttypes.h> 402 #elif defined(__SCO__) || defined(__USLC__) 403 #include <stdint.h> 404 #elif defined(__UNIXOS2__) || defined(__SOL64__) 405 typedef long int int32_t; 406 typedef long long int int64_t; 407 typedef unsigned long long int uint64_t; 408 #elif defined(_WIN32) && defined(__GNUC__) 409 #include <stdint.h> 410 #elif defined(_WIN32) 411 typedef __int32 int32_t; 412 typedef __int64 int64_t; 413 typedef unsigned __int64 uint64_t; 414 #else 415 #include <inttypes.h> /* Fallback option */ 416 #endif 417 #endif 418 419 #ifndef GLX_VERSION_1_3 420 #define GLX_VERSION_1_3 1 421 #ifdef GLX_GLXEXT_PROTOTYPES 422 extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *); 423 extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *); 424 extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *); 425 extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig); 426 extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *); 427 extern void glXDestroyWindow (Display *, GLXWindow); 428 extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *); 429 extern void glXDestroyPixmap (Display *, GLXPixmap); 430 extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *); 431 extern void glXDestroyPbuffer (Display *, GLXPbuffer); 432 extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *); 433 extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool); 434 extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext); 435 extern GLXDrawable glXGetCurrentReadDrawable (void); 436 extern Display * glXGetCurrentDisplay (void); 437 extern int glXQueryContext (Display *, GLXContext, int, int *); 438 extern void glXSelectEvent (Display *, GLXDrawable, unsigned long); 439 extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *); 440 #endif /* GLX_GLXEXT_PROTOTYPES */ 441 typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); 442 typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); 443 typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); 444 typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); 445 typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); 446 typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); 447 typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 448 typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); 449 typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); 450 typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); 451 typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 452 typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 453 typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 454 typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); 455 typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void); 456 typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 457 typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); 458 typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); 459 #endif 460 461 #ifndef GLX_VERSION_1_4 462 #define GLX_VERSION_1_4 1 463 #ifdef GLX_GLXEXT_PROTOTYPES 464 extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); 465 #endif /* GLX_GLXEXT_PROTOTYPES */ 466 typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); 467 #endif 468 469 #ifndef GLX_ARB_get_proc_address 470 #define GLX_ARB_get_proc_address 1 471 #ifdef GLX_GLXEXT_PROTOTYPES 472 extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 473 #endif /* GLX_GLXEXT_PROTOTYPES */ 474 typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); 475 #endif 476 477 #ifndef GLX_ARB_multisample 478 #define GLX_ARB_multisample 1 479 #endif 480 481 #ifndef GLX_ARB_fbconfig_float 482 #define GLX_ARB_fbconfig_float 1 483 #endif 484 485 #ifndef GLX_SGIS_multisample 486 #define GLX_SGIS_multisample 1 487 #endif 488 489 #ifndef GLX_EXT_visual_info 490 #define GLX_EXT_visual_info 1 491 #endif 492 493 #ifndef GLX_SGI_swap_control 494 #define GLX_SGI_swap_control 1 495 #ifdef GLX_GLXEXT_PROTOTYPES 496 extern int glXSwapIntervalSGI (int); 497 #endif /* GLX_GLXEXT_PROTOTYPES */ 498 typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); 499 #endif 500 501 #ifndef GLX_SGI_video_sync 502 #define GLX_SGI_video_sync 1 503 #ifdef GLX_GLXEXT_PROTOTYPES 504 extern int glXGetVideoSyncSGI (unsigned int *); 505 extern int glXWaitVideoSyncSGI (int, int, unsigned int *); 506 #endif /* GLX_GLXEXT_PROTOTYPES */ 507 typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count); 508 typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count); 509 #endif 510 511 #ifndef GLX_SGI_make_current_read 512 #define GLX_SGI_make_current_read 1 513 #ifdef GLX_GLXEXT_PROTOTYPES 514 extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext); 515 extern GLXDrawable glXGetCurrentReadDrawableSGI (void); 516 #endif /* GLX_GLXEXT_PROTOTYPES */ 517 typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 518 typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); 519 #endif 520 521 #ifndef GLX_SGIX_video_source 522 #define GLX_SGIX_video_source 1 523 #ifdef _VL_H 524 #ifdef GLX_GLXEXT_PROTOTYPES 525 extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode); 526 extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX); 527 #endif /* GLX_GLXEXT_PROTOTYPES */ 528 typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); 529 typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource); 530 #endif /* _VL_H */ 531 #endif 532 533 #ifndef GLX_EXT_visual_rating 534 #define GLX_EXT_visual_rating 1 535 #endif 536 537 #ifndef GLX_EXT_import_context 538 #define GLX_EXT_import_context 1 539 #ifdef GLX_GLXEXT_PROTOTYPES 540 extern Display * glXGetCurrentDisplayEXT (void); 541 extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *); 542 extern GLXContextID glXGetContextIDEXT (const GLXContext); 543 extern GLXContext glXImportContextEXT (Display *, GLXContextID); 544 extern void glXFreeContextEXT (Display *, GLXContext); 545 #endif /* GLX_GLXEXT_PROTOTYPES */ 546 typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void); 547 typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value); 548 typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); 549 typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID); 550 typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context); 551 #endif 552 553 #ifndef GLX_SGIX_fbconfig 554 #define GLX_SGIX_fbconfig 1 555 #ifdef GLX_GLXEXT_PROTOTYPES 556 extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *); 557 extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *); 558 extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap); 559 extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool); 560 extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX); 561 extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *); 562 #endif /* GLX_GLXEXT_PROTOTYPES */ 563 typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); 564 typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements); 565 typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); 566 typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); 567 typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config); 568 typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis); 569 #endif 570 571 #ifndef GLX_SGIX_pbuffer 572 #define GLX_SGIX_pbuffer 1 573 #ifdef GLX_GLXEXT_PROTOTYPES 574 extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *); 575 extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX); 576 extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *); 577 extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long); 578 extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *); 579 #endif /* GLX_GLXEXT_PROTOTYPES */ 580 typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); 581 typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf); 582 typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); 583 typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask); 584 typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask); 585 #endif 586 587 #ifndef GLX_SGI_cushion 588 #define GLX_SGI_cushion 1 589 #ifdef GLX_GLXEXT_PROTOTYPES 590 extern void glXCushionSGI (Display *, Window, float); 591 #endif /* GLX_GLXEXT_PROTOTYPES */ 592 typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion); 593 #endif 594 595 #ifndef GLX_SGIX_video_resize 596 #define GLX_SGIX_video_resize 1 597 #ifdef GLX_GLXEXT_PROTOTYPES 598 extern int glXBindChannelToWindowSGIX (Display *, int, int, Window); 599 extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int); 600 extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *); 601 extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *); 602 extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum); 603 #endif /* GLX_GLXEXT_PROTOTYPES */ 604 typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window); 605 typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h); 606 typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); 607 typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h); 608 typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype); 609 #endif 610 611 #ifndef GLX_SGIX_dmbuffer 612 #define GLX_SGIX_dmbuffer 1 613 #ifdef _DM_BUFFER_H_ 614 #ifdef GLX_GLXEXT_PROTOTYPES 615 extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer); 616 #endif /* GLX_GLXEXT_PROTOTYPES */ 617 typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); 618 #endif /* _DM_BUFFER_H_ */ 619 #endif 620 621 #ifndef GLX_SGIX_swap_group 622 #define GLX_SGIX_swap_group 1 623 #ifdef GLX_GLXEXT_PROTOTYPES 624 extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable); 625 #endif /* GLX_GLXEXT_PROTOTYPES */ 626 typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); 627 #endif 628 629 #ifndef GLX_SGIX_swap_barrier 630 #define GLX_SGIX_swap_barrier 1 631 #ifdef GLX_GLXEXT_PROTOTYPES 632 extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int); 633 extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *); 634 #endif /* GLX_GLXEXT_PROTOTYPES */ 635 typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); 636 typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); 637 #endif 638 639 #ifndef GLX_SUN_get_transparent_index 640 #define GLX_SUN_get_transparent_index 1 641 #ifdef GLX_GLXEXT_PROTOTYPES 642 extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *); 643 #endif /* GLX_GLXEXT_PROTOTYPES */ 644 typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex); 645 #endif 646 647 #ifndef GLX_MESA_copy_sub_buffer 648 #define GLX_MESA_copy_sub_buffer 1 649 #ifdef GLX_GLXEXT_PROTOTYPES 650 extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int); 651 #endif /* GLX_GLXEXT_PROTOTYPES */ 652 typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); 653 #endif 654 655 #ifndef GLX_MESA_pixmap_colormap 656 #define GLX_MESA_pixmap_colormap 1 657 #ifdef GLX_GLXEXT_PROTOTYPES 658 extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap); 659 #endif /* GLX_GLXEXT_PROTOTYPES */ 660 typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); 661 #endif 662 663 #ifndef GLX_MESA_release_buffers 664 #define GLX_MESA_release_buffers 1 665 #ifdef GLX_GLXEXT_PROTOTYPES 666 extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable); 667 #endif /* GLX_GLXEXT_PROTOTYPES */ 668 typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); 669 #endif 670 671 #ifndef GLX_MESA_set_3dfx_mode 672 #define GLX_MESA_set_3dfx_mode 1 673 #ifdef GLX_GLXEXT_PROTOTYPES 674 extern Bool glXSet3DfxModeMESA (int); 675 #endif /* GLX_GLXEXT_PROTOTYPES */ 676 typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); 677 #endif 678 679 #ifndef GLX_SGIX_visual_select_group 680 #define GLX_SGIX_visual_select_group 1 681 #endif 682 683 #ifndef GLX_OML_swap_method 684 #define GLX_OML_swap_method 1 685 #endif 686 687 #ifndef GLX_OML_sync_control 688 #define GLX_OML_sync_control 1 689 #ifdef GLX_GLXEXT_PROTOTYPES 690 extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *); 691 extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *); 692 extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t); 693 extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *); 694 extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *); 695 #endif /* GLX_GLXEXT_PROTOTYPES */ 696 typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); 697 typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); 698 typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); 699 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); 700 typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); 701 #endif 702 703 #ifndef GLX_NV_float_buffer 704 #define GLX_NV_float_buffer 1 705 #endif 706 707 #ifndef GLX_SGIX_hyperpipe 708 #define GLX_SGIX_hyperpipe 1 709 710 typedef struct { 711 char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; 712 int networkId; 713 } GLXHyperpipeNetworkSGIX; 714 715 typedef struct { 716 char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; 717 int channel; 718 unsigned int 719 participationType; 720 int timeSlice; 721 } GLXHyperpipeConfigSGIX; 722 723 typedef struct { 724 char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; 725 int srcXOrigin, srcYOrigin, srcWidth, srcHeight; 726 int destXOrigin, destYOrigin, destWidth, destHeight; 727 } GLXPipeRect; 728 729 typedef struct { 730 char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; 731 int XOrigin, YOrigin, maxHeight, maxWidth; 732 } GLXPipeRectLimits; 733 734 #ifdef GLX_GLXEXT_PROTOTYPES 735 extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *, int *); 736 extern int glXHyperpipeConfigSGIX (Display *, int, int, GLXHyperpipeConfigSGIX *, int *); 737 extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *, int, int *); 738 extern int glXDestroyHyperpipeConfigSGIX (Display *, int); 739 extern int glXBindHyperpipeSGIX (Display *, int); 740 extern int glXQueryHyperpipeBestAttribSGIX (Display *, int, int, int, void *, void *); 741 extern int glXHyperpipeAttribSGIX (Display *, int, int, int, void *); 742 extern int glXQueryHyperpipeAttribSGIX (Display *, int, int, int, void *); 743 #endif /* GLX_GLXEXT_PROTOTYPES */ 744 typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); 745 typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); 746 typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); 747 typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); 748 typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); 749 typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); 750 typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); 751 typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); 752 #endif 753 754 #ifndef GLX_MESA_agp_offset 755 #define GLX_MESA_agp_offset 1 756 #ifdef GLX_GLXEXT_PROTOTYPES 757 extern unsigned int glXGetAGPOffsetMESA (const void *); 758 #endif /* GLX_GLXEXT_PROTOTYPES */ 759 typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer); 760 #endif 761 762 #ifndef GLX_EXT_fbconfig_packed_float 763 #define GLX_EXT_fbconfig_packed_float 1 764 #endif 765 766 #ifndef GLX_EXT_framebuffer_sRGB 767 #define GLX_EXT_framebuffer_sRGB 1 768 #endif 769 770 #ifndef GLX_EXT_texture_from_pixmap 771 #define GLX_EXT_texture_from_pixmap 1 772 #ifdef GLX_GLXEXT_PROTOTYPES 773 extern void glXBindTexImageEXT (Display *, GLXDrawable, int, const int *); 774 extern void glXReleaseTexImageEXT (Display *, GLXDrawable, int); 775 #endif /* GLX_GLXEXT_PROTOTYPES */ 776 typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); 777 typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer); 778 #endif 779 780 781 #ifdef __cplusplus 782 } 783 #endif 784 785 #endif 786