1 /* 2 * Copyright (c) 2002-2008 LWJGL Project 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of 'LWJGL' nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef EXTGL_GLX_H 34 #define EXTGL_GLX_H 35 36 #include <X11/Xutil.h> 37 #include "extgl.h" 38 39 /* 40 * Names for attributes to lwjgl_glXGetConfig. 41 */ 42 #define GLX_USE_GL 1 /* support GLX rendering */ 43 #define GLX_BUFFER_SIZE 2 /* depth of the color buffer */ 44 #define GLX_LEVEL 3 /* level in plane stacking */ 45 #define GLX_RGBA 4 /* true if RGBA mode */ 46 #define GLX_DOUBLEBUFFER 5 /* double buffering supported */ 47 #define GLX_STEREO 6 /* stereo buffering supported */ 48 #define GLX_AUX_BUFFERS 7 /* number of aux buffers */ 49 #define GLX_RED_SIZE 8 /* number of red component bits */ 50 #define GLX_GREEN_SIZE 9 /* number of green component bits */ 51 #define GLX_BLUE_SIZE 10 /* number of blue component bits */ 52 #define GLX_ALPHA_SIZE 11 /* number of alpha component bits */ 53 #define GLX_DEPTH_SIZE 12 /* number of depth bits */ 54 #define GLX_STENCIL_SIZE 13 /* number of stencil bits */ 55 #define GLX_ACCUM_RED_SIZE 14 /* number of red accum bits */ 56 #define GLX_ACCUM_GREEN_SIZE 15 /* number of green accum bits */ 57 #define GLX_ACCUM_BLUE_SIZE 16 /* number of blue accum bits */ 58 #define GLX_ACCUM_ALPHA_SIZE 17 /* number of alpha accum bits */ 59 60 #define GLX_SAMPLE_BUFFERS_ARB 100000 /* number of multisample buffers */ 61 #define GLX_SAMPLES_ARB 100001 /* number of multisample samples */ 62 63 /* 64 * FBConfig-specific attributes 65 */ 66 #define GLX_X_VISUAL_TYPE 0x22 67 #define GLX_CONFIG_CAVEAT 0x20 /* Like visual_info VISUAL_CAVEAT */ 68 #define GLX_TRANSPARENT_TYPE 0x23 69 #define GLX_TRANSPARENT_INDEX_VALUE 0x24 70 #define GLX_TRANSPARENT_RED_VALUE 0x25 71 #define GLX_TRANSPARENT_GREEN_VALUE 0x26 72 #define GLX_TRANSPARENT_BLUE_VALUE 0x27 73 #define GLX_TRANSPARENT_ALPHA_VALUE 0x28 74 #define GLX_DRAWABLE_TYPE 0x8010 75 #define GLX_RENDER_TYPE 0x8011 76 #define GLX_X_RENDERABLE 0x8012 77 #define GLX_FBCONFIG_ID 0x8013 78 #define GLX_MAX_PBUFFER_WIDTH 0x8016 79 #define GLX_MAX_PBUFFER_HEIGHT 0x8017 80 #define GLX_MAX_PBUFFER_PIXELS 0x8018 81 #define GLX_VISUAL_ID 0x800B 82 83 #define GLX_DRAWABLE_TYPE_SGIX GLX_DRAWABLE_TYPE 84 #define GLX_RENDER_TYPE_SGIX GLX_RENDER_TYPE 85 #define GLX_X_RENDERABLE_SGIX GLX_X_RENDERABLE 86 #define GLX_FBCONFIG_ID_SGIX GLX_FBCONFIG_ID 87 #define GLX_MAX_PBUFFER_WIDTH_SGIX GLX_MAX_PBUFFER_WIDTH 88 #define GLX_MAX_PBUFFER_HEIGHT_SGIX GLX_MAX_PBUFFER_HEIGHT 89 #define GLX_MAX_PBUFFER_PIXELS_SGIX GLX_MAX_PBUFFER_PIXELS 90 #define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 91 #define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A 92 93 /* 94 * Error return values from lwjgl_glXGetConfig. Success is indicated by 95 * a value of 0. 96 */ 97 #define GLX_BAD_SCREEN 1 /* screen # is bad */ 98 #define GLX_BAD_ATTRIBUTE 2 /* attribute to get is bad */ 99 #define GLX_NO_EXTENSION 3 /* no glx extension on server */ 100 #define GLX_BAD_VISUAL 4 /* visual # not known by GLX */ 101 #define GLX_BAD_CONTEXT 5 102 #define GLX_BAD_VALUE 6 103 #define GLX_BAD_ENUM 7 104 105 106 /* FBConfig attribute values */ 107 108 /* 109 * Generic "don't care" value for lwjgl_glX ChooseFBConfig attributes (except 110 * GLX_LEVEL). 111 */ 112 #define GLX_DONT_CARE 0xFFFFFFFF 113 114 /* GLX_RENDER_TYPE bits */ 115 #define GLX_RGBA_BIT 0x00000001 116 #define GLX_COLOR_INDEX_BIT 0x00000002 117 #define GLX_RGBA_BIT_SGIX GLX_RGBA_BIT 118 #define GLX_COLOR_INDEX_BIT_SGIX GLX_COLOR_INDEX_BIT 119 120 /* GLX_DRAWABLE_TYPE bits */ 121 #define GLX_WINDOW_BIT 0x00000001 122 #define GLX_PIXMAP_BIT 0x00000002 123 #define GLX_PBUFFER_BIT 0x00000004 124 #define GLX_WINDOW_BIT_SGIX GLX_WINDOW_BIT 125 #define GLX_PIXMAP_BIT_SGIX GLX_PIXMAP_BIT 126 #define GLX_PBUFFER_BIT_SGIX GLX_PBUFFER_BIT 127 128 /* GLX_CONFIG_CAVEAT attribute values */ 129 #define GLX_NONE 0x8000 130 #define GLX_SLOW_CONFIG 0x8001 131 #define GLX_NON_CONFORMANT_CONFIG 0x800D 132 133 /* GLX_X_VISUAL_TYPE attribute values */ 134 #define GLX_TRUE_COLOR 0x8002 135 #define GLX_DIRECT_COLOR 0x8003 136 #define GLX_PSEUDO_COLOR 0x8004 137 #define GLX_STATIC_COLOR 0x8005 138 #define GLX_GRAY_SCALE 0x8006 139 #define GLX_STATIC_GRAY 0x8007 140 141 /* GLX_TRANSPARENT_TYPE attribute values */ 142 /* #define GLX_NONE 0x8000 */ 143 #define GLX_TRANSPARENT_RGB 0x8008 144 #define GLX_TRANSPARENT_INDEX 0x8009 145 146 /* lwjgl_glXCreateGLXPbuffer attributes */ 147 #define GLX_PRESERVED_CONTENTS 0x801B 148 #define GLX_LARGEST_PBUFFER 0x801C 149 #define GLX_PBUFFER_HEIGHT 0x8040 /* New for GLX 1.3 */ 150 #define GLX_PBUFFER_WIDTH 0x8041 /* New for GLX 1.3 */ 151 #define GLX_PRESERVED_CONTENTS_SGIX GLX_PRESERVED_CONTENTS 152 #define GLX_LARGEST_PBUFFER_SGIX GLX_LARGEST_PBUFFER 153 154 /* lwjgl_glXQueryGLXPBuffer attributes */ 155 #define GLX_WIDTH 0x801D 156 #define GLX_HEIGHT 0x801E 157 #define GLX_EVENT_MASK 0x801F 158 #define GLX_WIDTH_SGIX GLX_WIDTH 159 #define GLX_HEIGHT_SGIX GLX_HEIGHT 160 #define GLX_EVENT_MASK_SGIX GLX_EVENT_MASK 161 162 /* lwjgl_glXCreateNewContext render_type attribute values */ 163 #define GLX_RGBA_TYPE 0x8014 164 #define GLX_COLOR_INDEX_TYPE 0x8015 165 #define GLX_RGBA_TYPE_SGIX GLX_RGBA_TYPE 166 #define GLX_COLOR_INDEX_TYPE_SGIX GLX_COLOR_INDEX_TYPE 167 168 /* lwjgl_glXQueryContext attributes */ 169 /* #define GLX_FBCONFIG_ID 0x8013 */ 170 /* #define GLX_RENDER_TYPE 0x8011 */ 171 #define GLX_SCREEN 0x800C 172 173 /* lwjgl_glXSelectEvent event mask bits */ 174 #define GLX_PBUFFER_CLOBBER_MASK 0x08000000 175 #define GLX_PBUFFER_CLOBBER_MASK_SGIX GLX_PBUFFER_CLOBBER_MASK 176 177 /* GLXPbufferClobberEvent event_type values */ 178 #define GLX_DAMAGED 0x8020 179 #define GLX_SAVED 0x8021 180 #define GLX_DAMAGED_SGIX GLX_DAMAGED 181 #define GLX_SAVED_SGIX GLX_SAVED 182 183 /* GLXPbufferClobberEvent draw_type values */ 184 #define GLX_WINDOW 0x8022 185 #define GLX_PBUFFER 0x8023 186 #define GLX_WINDOW_SGIX GLX_WINDOW 187 #define GLX_PBUFFER_SGIX GLX_PBUFFER 188 189 /* GLXPbufferClobberEvent buffer_mask bits */ 190 #define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 191 #define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 192 #define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 193 #define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 194 #define GLX_AUX_BUFFERS_BIT 0x00000010 195 #define GLX_DEPTH_BUFFER_BIT 0x00000020 196 #define GLX_STENCIL_BUFFER_BIT 0x00000040 197 #define GLX_ACCUM_BUFFER_BIT 0x00000080 198 #define GLX_FRONT_LEFT_BUFFER_BIT_SGIX GLX_FRONT_LEFT_BUFFER_BIT 199 #define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX GLX_FRONT_RIGHT_BUFFER_BIT 200 #define GLX_BACK_LEFT_BUFFER_BIT_SGIX GLX_BACK_LEFT_BUFFER_BIT 201 #define GLX_BACK_RIGHT_BUFFER_BIT_SGIX GLX_BACK_RIGHT_BUFFER_BIT 202 #define GLX_AUX_BUFFERS_BIT_SGIX GLX_AUX_BUFFERS_BIT 203 #define GLX_DEPTH_BUFFER_BIT_SGIX GLX_DEPTH_BUFFER_BIT 204 #define GLX_STENCIL_BUFFER_BIT_SGIX GLX_STENCIL_BUFFER_BIT 205 #define GLX_ACCUM_BUFFER_BIT_SGIX GLX_ACCUM_BUFFER_BIT 206 207 /* 208 * Extension return values from lwjgl_glXGetConfig. These are also 209 * accepted as parameter values for lwjgl_glXChooseVisual. 210 */ 211 212 #define GLX_X_VISUAL_TYPE_EXT 0x22 /* visual_info extension type */ 213 #define GLX_TRANSPARENT_TYPE_EXT 0x23 /* visual_info extension */ 214 #define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 /* visual_info extension */ 215 #define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 /* visual_info extension */ 216 #define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 /* visual_info extension */ 217 #define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 /* visual_info extension */ 218 #define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 /* visual_info extension */ 219 220 /* Property values for visual_type */ 221 #define GLX_TRUE_COLOR_EXT 0x8002 222 #define GLX_DIRECT_COLOR_EXT 0x8003 223 #define GLX_PSEUDO_COLOR_EXT 0x8004 224 #define GLX_STATIC_COLOR_EXT 0x8005 225 #define GLX_GRAY_SCALE_EXT 0x8006 226 #define GLX_STATIC_GRAY_EXT 0x8007 227 228 /* Property values for transparent pixel */ 229 #define GLX_NONE_EXT 0x8000 230 #define GLX_TRANSPARENT_RGB_EXT 0x8008 231 #define GLX_TRANSPARENT_INDEX_EXT 0x8009 232 233 /* Property values for visual_rating */ 234 #define GLX_VISUAL_CAVEAT_EXT 0x20 /* visual_rating extension type */ 235 #define GLX_SLOW_VISUAL_EXT 0x8001 236 #define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 237 238 /* 239 * Names for attributes to lwjgl_glXGetClientString. 240 */ 241 #define GLX_VENDOR 0x1 242 #define GLX_VERSION 0x2 243 #define GLX_EXTENSIONS 0x3 244 245 /* 246 * Names for attributes to lwjgl_glXQueryContextInfoEXT. 247 */ 248 #define GLX_SHARE_CONTEXT_EXT 0x800A /* id of share context */ 249 #define GLX_VISUAL_ID_EXT 0x800B /* id of context's visual */ 250 #define GLX_SCREEN_EXT 0x800C /* screen number */ 251 252 /* NV_float_buffer */ 253 #define GLX_FLOAT_COMPONENTS_NV 0x20B0 254 255 /* GLX_ARB_fbconfig_float */ 256 #define GLX_RGBA_FLOAT_TYPE 0x20B9 257 #define GLX_RGBA_FLOAT_BIT 0x0004 258 259 /* GLX_ARB_fbconfig_float */ 260 #define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 261 #define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 262 263 /* GLX_ARB_framebuffer_sRGB */ 264 #define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 265 266 /* GLX_ARB_create_context */ 267 #define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 268 #define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 269 #define GLX_CONTEXT_FLAGS_ARB 0x2094 270 271 #define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 272 #define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 273 274 /* GLX_NV_multisample_coverage */ 275 #define GLX_COVERAGE_SAMPLES_NV 100001 276 #define GLX_COLOR_SAMPLES_NV 0x20B3 277 278 /* GLX_NV_present_video */ 279 #define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 280 281 /* GLX_NV_video_capture */ 282 #define GLX_DEVICE_ID_NV 0x20CD 283 #define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF 284 #define GLX_UNIQUE_ID_NV 0x20CE 285 286 typedef XID GLXContextID; 287 typedef XID GLXPixmap; 288 typedef XID GLXDrawable; 289 typedef XID GLXPbuffer; 290 typedef XID GLXWindow; 291 typedef XID GLXFBConfigID; 292 293 typedef struct __GLXcontextRec *GLXContext; 294 295 typedef struct __GLXFBConfigRec *GLXFBConfig; 296 297 typedef GLXFBConfig * (APIENTRY * glXGetFBConfigsPROC) (Display *dpy, int screen, int *nelements); 298 typedef GLXFBConfig * (APIENTRY * glXChooseFBConfigPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); 299 typedef int (APIENTRY * glXGetFBConfigAttribPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); 300 typedef XVisualInfo * (APIENTRY * glXGetVisualFromFBConfigPROC) (Display *dpy, GLXFBConfig config); 301 typedef GLXWindow (APIENTRY * glXCreateWindowPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); 302 typedef void (APIENTRY * glXDestroyWindowPROC) (Display *dpy, GLXWindow win); 303 typedef GLXPixmap (APIENTRY * glXCreatePixmapPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 304 typedef void (APIENTRY * glXDestroyPixmapPROC) (Display *dpy, GLXPixmap pixmap); 305 typedef GLXPbuffer (APIENTRY * glXCreatePbufferPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); 306 typedef void (APIENTRY * glXDestroyPbufferPROC) (Display *dpy, GLXPbuffer pbuf); 307 typedef void (APIENTRY * glXQueryDrawablePROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 308 typedef GLXContext (APIENTRY * glXCreateNewContextPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 309 typedef Bool (APIENTRY * glXMakeContextCurrentPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 310 typedef GLXDrawable (APIENTRY * glXGetCurrentReadDrawablePROC) (void); 311 typedef Display * (APIENTRY * glXGetCurrentDisplayPROC) (void); 312 typedef int (APIENTRY * glXQueryContextPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 313 typedef void (APIENTRY * glXSelectEventPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); 314 typedef void (APIENTRY * glXGetSelectedEventPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); 315 316 typedef GLXContextID (APIENTRY * glXGetContextIDEXTPROC) (const GLXContext ctx); 317 typedef GLXDrawable (APIENTRY * glXGetCurrentDrawableEXTPROC) (void); 318 typedef GLXContext (APIENTRY * glXImportContextEXTPROC) (Display *dpy, GLXContextID contextID); 319 typedef void (APIENTRY * glXFreeContextEXTPROC) (Display *dpy, GLXContext ctx); 320 typedef int (APIENTRY * glXQueryContextInfoEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 321 322 typedef XVisualInfo* (APIENTRY * glXChooseVisualPROC) (Display *dpy, int screen, int *attribList); 323 typedef void (APIENTRY * glXCopyContextPROC) (Display *dpy, GLXContext src, GLXContext dst, unsigned long mask); 324 typedef GLXContext (APIENTRY * glXCreateContextPROC) (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct); 325 typedef GLXPixmap (APIENTRY * glXCreateGLXPixmapPROC) (Display *dpy, XVisualInfo *vis, Pixmap pixmap); 326 typedef void (APIENTRY * glXDestroyContextPROC) (Display *dpy, GLXContext ctx); 327 typedef void (APIENTRY * glXDestroyGLXPixmapPROC) (Display *dpy, GLXPixmap pix); 328 typedef int (APIENTRY * glXGetConfigPROC) (Display *dpy, XVisualInfo *vis, int attrib, int *value); 329 typedef GLXContext (APIENTRY * glXGetCurrentContextPROC) (void); 330 typedef GLXDrawable (APIENTRY * glXGetCurrentDrawablePROC) (void); 331 typedef Bool (APIENTRY * glXIsDirectPROC) (Display *dpy, GLXContext ctx); 332 typedef Bool (APIENTRY * glXMakeCurrentPROC) (Display *dpy, GLXDrawable drawable, GLXContext ctx); 333 typedef Bool (APIENTRY * glXQueryExtensionPROC) (Display *dpy, int *errorBase, int *eventBase); 334 typedef Bool (APIENTRY * glXQueryVersionPROC) (Display *dpy, int *major, int *minor); 335 typedef void (APIENTRY * glXSwapBuffersPROC) (Display *dpy, GLXDrawable drawable); 336 typedef void (APIENTRY * glXUseXFontPROC) (Font font, int first, int count, int listBase); 337 typedef void (APIENTRY * glXWaitGLPROC) (void); 338 typedef void (APIENTRY * glXWaitXPROC) (void); 339 typedef const char * (APIENTRY * glXGetClientStringPROC) (Display *dpy, int name ); 340 typedef const char * (APIENTRY * glXQueryServerStringPROC) (Display *dpy, int screen, int name ); 341 typedef const char * (APIENTRY * glXQueryExtensionsStringPROC) (Display *dpy, int screen ); 342 343 /* GLX_SGI_swap_control */ 344 typedef void (APIENTRY * glXSwapIntervalSGIPROC)(int interval); 345 346 /* GLX_EXT_swap_control */ 347 typedef void (APIENTRY * glXSwapIntervalEXTPROC)(Display *dpy, GLXDrawable drawable, int interval); 348 349 /* GLX_ARB_create_context */ 350 typedef GLXContext (APIENTRY * glXCreateContextAttribsARBPROC) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); 351 352 /* GLX_NV_present_video */ 353 typedef unsigned int * (APIENTRY * glXEnumerateVideoDevicesNVPROC) (Display *dpy, int screen, int *nelements); 354 typedef int (APIENTRY * glXBindVideoDeviceNVPROC) (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); 355 356 /* GLX_NV_video_capture */ 357 typedef XID GLXVideoCaptureDeviceNV; 358 typedef int (APIENTRY * glXBindVideoCaptureDeviceNVPROC) (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); 359 typedef GLXVideoCaptureDeviceNV * (APIENTRY * glXEnumerateVideoCaptureDevicesNVPROC) (Display *dpy, int screen, int *nelements); 360 typedef void (APIENTRY * glXLockVideoCaptureDeviceNVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device); 361 typedef int (APIENTRY * glXQueryVideoCaptureDeviceNVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value); 362 typedef void (APIENTRY * glXReleaseVideoCaptureDeviceNVPROC) (Display *dpy, GLXVideoCaptureDeviceNV device); 363 364 typedef struct { 365 bool GLX12; 366 bool GLX13; 367 bool GLX14; 368 /* bool GLX_EXT_visual_info; 369 bool GLX_EXT_visual_rating;*/ 370 bool GLX_SGI_swap_control; 371 bool GLX_EXT_swap_control; 372 bool GLX_ARB_multisample; 373 bool GLX_ARB_fbconfig_float; 374 bool GLX_EXT_fbconfig_packed_float; 375 bool GLX_ARB_framebuffer_sRGB; 376 bool GLX_ARB_create_context; 377 bool GLX_NV_multisample_coverage; 378 bool GLX_NV_present_video; 379 bool GLX_NV_video_capture; 380 } GLXExtensions; 381 382 /* Add _ to global symbols to avoid symbol clash with the OpenGL library */ 383 extern glXGetFBConfigsPROC lwjgl_glXGetFBConfigs; 384 extern glXChooseFBConfigPROC lwjgl_glXChooseFBConfig; 385 extern glXGetFBConfigAttribPROC lwjgl_glXGetFBConfigAttrib; 386 extern glXGetVisualFromFBConfigPROC lwjgl_glXGetVisualFromFBConfig; 387 extern glXCreateWindowPROC lwjgl_glXCreateWindow; 388 extern glXDestroyWindowPROC lwjgl_glXDestroyWindow; 389 extern glXCreatePixmapPROC lwjgl_glXCreatePixmap; 390 extern glXDestroyPixmapPROC lwjgl_glXDestroyPixmap; 391 extern glXCreatePbufferPROC lwjgl_glXCreatePbuffer; 392 extern glXDestroyPbufferPROC lwjgl_glXDestroyPbuffer; 393 extern glXQueryDrawablePROC lwjgl_glXQueryDrawable; 394 extern glXCreateNewContextPROC lwjgl_glXCreateNewContext; 395 extern glXMakeContextCurrentPROC lwjgl_glXMakeContextCurrent; 396 extern glXGetCurrentReadDrawablePROC lwjgl_glXGetCurrentReadDrawable; 397 extern glXGetCurrentDisplayPROC lwjgl_glXGetCurrentDisplay; 398 extern glXQueryContextPROC lwjgl_glXQueryContext; 399 extern glXSelectEventPROC lwjgl_glXSelectEvent; 400 extern glXGetSelectedEventPROC lwjgl_glXGetSelectedEvent; 401 402 extern glXChooseVisualPROC lwjgl_glXChooseVisual; 403 extern glXCopyContextPROC lwjgl_glXCopyContext; 404 extern glXCreateContextPROC lwjgl_glXCreateContext; 405 extern glXCreateGLXPixmapPROC lwjgl_glXCreateGLXPixmap; 406 extern glXDestroyContextPROC lwjgl_glXDestroyContext; 407 extern glXDestroyGLXPixmapPROC lwjgl_glXDestroyGLXPixmap; 408 extern glXGetConfigPROC lwjgl_glXGetConfig; 409 extern glXGetCurrentContextPROC lwjgl_glXGetCurrentContext; 410 extern glXGetCurrentDrawablePROC lwjgl_glXGetCurrentDrawable; 411 extern glXIsDirectPROC lwjgl_glXIsDirect; 412 extern glXMakeCurrentPROC lwjgl_glXMakeCurrent; 413 extern glXQueryExtensionPROC lwjgl_glXQueryExtension; 414 extern glXQueryVersionPROC lwjgl_glXQueryVersion; 415 extern glXSwapBuffersPROC lwjgl_glXSwapBuffers; 416 extern glXUseXFontPROC lwjgl_glXUseXFont; 417 extern glXWaitGLPROC lwjgl_glXWaitGL; 418 extern glXWaitXPROC lwjgl_glXWaitX; 419 extern glXGetClientStringPROC lwjgl_glXGetClientString; 420 extern glXQueryServerStringPROC lwjgl_glXQueryServerString; 421 extern glXQueryExtensionsStringPROC lwjgl_glXQueryExtensionsString; 422 423 extern glXSwapIntervalSGIPROC lwjgl_glXSwapIntervalSGI; 424 extern glXSwapIntervalEXTPROC lwjgl_glXSwapIntervalEXT; 425 426 extern glXCreateContextAttribsARBPROC lwjgl_glXCreateContextAttribsARB; 427 428 /* GLX_NV_present_video */ 429 extern glXEnumerateVideoDevicesNVPROC lwjgl_glXEnumerateVideoDevicesNV; 430 extern glXBindVideoDeviceNVPROC lwjgl_glXBindVideoDeviceNV; 431 432 /* GLX_NV_video_capture */ 433 extern glXBindVideoCaptureDeviceNVPROC lwjgl_glXBindVideoCaptureDeviceNV; 434 extern glXEnumerateVideoCaptureDevicesNVPROC lwjgl_glXEnumerateVideoCaptureDevicesNV; 435 extern glXLockVideoCaptureDeviceNVPROC lwjgl_glXLockVideoCaptureDeviceNV; 436 extern glXQueryVideoCaptureDeviceNVPROC lwjgl_glXQueryVideoCaptureDeviceNV; 437 extern glXReleaseVideoCaptureDeviceNVPROC lwjgl_glXReleaseVideoCaptureDeviceNV; 438 439 extern bool extgl_InitGLX(Display *disp, int screen, GLXExtensions *extension_flags); 440 441 #endif 442