glx.h revision 23b1503d79bc148521f8cff3c7b5f5faa146d1ac
1/* $Id: glx.h,v 1.25 2000/12/08 18:08:15 brianp Exp $ */ 2 3/* 4 * Mesa 3-D graphics library 5 * Version: 3.5 6 * 7 * Copyright (C) 1999-2000 Brian Paul All Rights Reserved. 8 * 9 * Permission is hereby granted, free of charge, to any person obtaining a 10 * copy of this software and associated documentation files (the "Software"), 11 * to deal in the Software without restriction, including without limitation 12 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 13 * and/or sell copies of the Software, and to permit persons to whom the 14 * Software is furnished to do so, subject to the following conditions: 15 * 16 * The above copyright notice and this permission notice shall be included 17 * in all copies or substantial portions of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 */ 26 27 28#ifndef GLX_H 29#define GLX_H 30 31 32#ifdef __VMS 33#include <GL/vms_x_fix.h> 34# ifdef __cplusplus 35/* VMS Xlib.h gives problems with C++. 36 * this avoids a bunch of trivial warnings */ 37#pragma message disable nosimpint 38#endif 39#endif 40#include <X11/Xlib.h> 41#include <X11/Xutil.h> 42#ifdef __VMS 43# ifdef __cplusplus 44#pragma message enable nosimpint 45#endif 46#endif 47#include <GL/gl.h> 48 49 50#if defined(USE_MGL_NAMESPACE) 51#include <GL/glx_mangle.h> 52#endif 53 54 55#ifdef __cplusplus 56extern "C" { 57#endif 58 59 60#define GLX_VERSION_1_1 1 61#define GLX_VERSION_1_2 1 62#define GLX_VERSION_1_3 1 63 64#define GLX_EXTENSION_NAME "GLX" 65 66 67 68/* 69 * Tokens for glXChooseVisual and glXGetConfig: 70 */ 71#define GLX_USE_GL 1 72#define GLX_BUFFER_SIZE 2 73#define GLX_LEVEL 3 74#define GLX_RGBA 4 75#define GLX_DOUBLEBUFFER 5 76#define GLX_STEREO 6 77#define GLX_AUX_BUFFERS 7 78#define GLX_RED_SIZE 8 79#define GLX_GREEN_SIZE 9 80#define GLX_BLUE_SIZE 10 81#define GLX_ALPHA_SIZE 11 82#define GLX_DEPTH_SIZE 12 83#define GLX_STENCIL_SIZE 13 84#define GLX_ACCUM_RED_SIZE 14 85#define GLX_ACCUM_GREEN_SIZE 15 86#define GLX_ACCUM_BLUE_SIZE 16 87#define GLX_ACCUM_ALPHA_SIZE 17 88 89 90/* 91 * Error codes returned by glXGetConfig: 92 */ 93#define GLX_BAD_SCREEN 1 94#define GLX_BAD_ATTRIBUTE 2 95#define GLX_NO_EXTENSION 3 96#define GLX_BAD_VISUAL 4 97#define GLX_BAD_CONTEXT 5 98#define GLX_BAD_VALUE 6 99#define GLX_BAD_ENUM 7 100 101 102/* 103 * GLX 1.1 and later: 104 */ 105#define GLX_VENDOR 1 106#define GLX_VERSION 2 107#define GLX_EXTENSIONS 3 108 109 110/* 111 * GLX 1.3 and later: 112 */ 113#define GLX_CONFIG_CAVEAT 0x20 114#define GLX_DONT_CARE 0xFFFFFFFF 115#define GLX_SLOW_CONFIG 0x8001 116#define GLX_NON_CONFORMANT_CONFIG 0x800D 117#define GLX_X_VISUAL_TYPE 0x22 118#define GLX_TRANSPARENT_TYPE 0x23 119#define GLX_TRANSPARENT_INDEX_VALUE 0x24 120#define GLX_TRANSPARENT_RED_VALUE 0x25 121#define GLX_TRANSPARENT_GREEN_VALUE 0x26 122#define GLX_TRANSPARENT_BLUE_VALUE 0x27 123#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 124#define GLX_MAX_PBUFFER_WIDTH 0x8016 125#define GLX_MAX_PBUFFER_HEIGHT 0x8017 126#define GLX_MAX_PBUFFER_PIXELS 0x8018 127#define GLX_PRESERVED_CONTENTS 0x801B 128#define GLX_LARGEST_BUFFER 0x801C 129#define GLX_DRAWABLE_TYPE 0x8010 130#define GLX_FBCONFIG_ID 0x8013 131#define GLX_VISUAL_ID 0x800B 132#define GLX_WINDOW_BIT 0x00000001 133#define GLX_PIXMAP_BIT 0x00000002 134#define GLX_PBUFFER_BIT 0x00000004 135#define GLX_AUX_BUFFERS_BIT 0x00000010 136#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 137#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 138#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 139#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 140#define GLX_AUX_BUFFERS_BIT 0x00000010 141#define GLX_DEPTH_BUFFER_BIT 0x00000020 142#define GLX_STENCIL_BUFFER_BIT 0x00000040 143#define GLX_ACCUM_BUFFER_BIT 0x00000080 144#define GLX_DRAWABLE_TYPE 0x8010 145#define GLX_RENDER_TYPE 0x8011 146#define GLX_X_RENDERABLE 0x8012 147#define GLX_NONE 0x8000 148#define GLX_TRUE_COLOR 0x8002 149#define GLX_DIRECT_COLOR 0x8003 150#define GLX_PSEUDO_COLOR 0x8004 151#define GLX_STATIC_COLOR 0x8005 152#define GLX_GRAY_SCALE 0x8006 153#define GLX_STATIC_GRAY 0x8007 154#define GLX_TRANSPARENT_INDEX 0x8009 155#define GLX_COLOR_INDEX_TYPE 0x8015 156#define GLX_COLOR_INDEX_BIT 0x00000002 157#define GLX_SCREEN 0x800C 158#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 159#define GLX_DAMAGED 0x8020 160#define GLX_SAVED 0x8021 161#define GLX_WINDOW 0x8022 162#define GLX_PBUFFER 0x8023 163 164 165 166typedef void * GLXContext; 167typedef XID GLXPixmap; 168typedef XID GLXDrawable; 169/* GLX 1.3 and later */ 170typedef void * GLXFBConfig; 171typedef XID GLXFBConfigID; 172typedef XID GLXContextID; 173typedef XID GLXWindow; 174typedef XID GLXPbuffer; 175 176 177 178extern XVisualInfo* glXChooseVisual( Display *dpy, int screen, 179 int *attribList ); 180 181extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, 182 GLXContext shareList, Bool direct ); 183 184extern void glXDestroyContext( Display *dpy, GLXContext ctx ); 185 186extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, 187 GLXContext ctx); 188 189extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, 190 unsigned long mask ); 191 192extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); 193 194extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, 195 Pixmap pixmap ); 196 197extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); 198 199extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event ); 200 201extern Bool glXQueryVersion( Display *dpy, int *maj, int *min ); 202 203extern Bool glXIsDirect( Display *dpy, GLXContext ctx ); 204 205extern int glXGetConfig( Display *dpy, XVisualInfo *visual, 206 int attrib, int *value ); 207 208extern GLXContext glXGetCurrentContext( void ); 209 210extern GLXDrawable glXGetCurrentDrawable( void ); 211 212extern void glXWaitGL( void ); 213 214extern void glXWaitX( void ); 215 216extern void glXUseXFont( Font font, int first, int count, int list ); 217 218 219 220/* GLX 1.1 and later */ 221extern const char *glXQueryExtensionsString( Display *dpy, int screen ); 222 223extern const char *glXQueryServerString( Display *dpy, int screen, int name ); 224 225extern const char *glXGetClientString( Display *dpy, int name ); 226 227 228/* GLX 1.2 and later */ 229extern Display *glXGetCurrentDisplay( void ); 230 231 232/* GLX 1.3 and later */ 233extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen, 234 const int *attribList, int *nitems ); 235 236extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config, 237 int attribute, int *value ); 238 239extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen, 240 int *nelements ); 241 242extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, 243 GLXFBConfig config ); 244 245extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config, 246 Window win, const int *attribList ); 247 248extern void glXDestroyWindow( Display *dpy, GLXWindow window ); 249 250extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config, 251 Pixmap pixmap, const int *attribList ); 252 253extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap ); 254 255extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config, 256 const int *attribList ); 257 258extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); 259 260extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute, 261 unsigned int *value ); 262 263extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config, 264 int renderType, GLXContext shareList, 265 Bool direct ); 266 267extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw, 268 GLXDrawable read, GLXContext ctx ); 269 270extern GLXDrawable glXGetCurrentReadDrawable( void ); 271 272extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute, 273 int *value ); 274 275extern void glXSelectEvent( Display *dpy, GLXDrawable drawable, 276 unsigned long mask ); 277 278extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, 279 unsigned long *mask ); 280 281 282 283#ifndef GLX_GLXEXT_LEGACY 284 285#include <GL/glxext.h> 286 287#else 288 289 290/* 291 * 28. GLX_EXT_visual_info extension 292 */ 293#ifndef GLX_EXT_visual_info 294#define GLX_EXT_visual_info 1 295 296#define GLX_X_VISUAL_TYPE_EXT 0x22 297#define GLX_TRANSPARENT_TYPE_EXT 0x23 298#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 299#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 300#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 301#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 302#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 303#define GLX_TRUE_COLOR_EXT 0x8002 304#define GLX_DIRECT_COLOR_EXT 0x8003 305#define GLX_PSEUDO_COLOR_EXT 0x8004 306#define GLX_STATIC_COLOR_EXT 0x8005 307#define GLX_GRAY_SCALE_EXT 0x8006 308#define GLX_STATIC_GRAY_EXT 0x8007 309#define GLX_NONE_EXT 0x8000 310#define GLX_TRANSPARENT_RGB_EXT 0x8008 311#define GLX_TRANSPARENT_INDEX_EXT 0x8009 312 313#endif /* 28. GLX_EXT_visual_info extension */ 314 315 316 317/* 318 * 41. GLX_SGI_video_sync 319 */ 320#ifndef GLX_SGI_video_sync 321#define GLX_SGI_video_sync 1 322 323extern int glXGetVideoSyncSGI(unsigned int *count); 324extern int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count); 325 326#endif /* GLX_SGI_video_sync */ 327 328 329 330/* 331 * 42. GLX_EXT_visual_rating 332 */ 333#ifndef GLX_EXT_visual_rating 334#define GLX_EXT_visual_rating 1 335 336#define GLX_VISUAL_CAVEAT_EXT 0x20 337/*#define GLX_NONE_EXT 0x8000*/ 338#define GLX_SLOW_VISUAL_EXT 0x8001 339#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 340 341#endif /* GLX_EXT_visual_rating */ 342 343 344 345/* 346 * 47. GLX_EXT_import_context 347 */ 348#ifndef GLX_EXT_import_context 349#define GLX_EXT_import_context 1 350 351#define GLX_SHARE_CONTEXT_EXT 0x800A 352#define GLX_VISUAL_ID_EXT 0x800B 353#define GLX_SCREEN_EXT 0x800C 354 355extern void glXFreeContextEXT(Display *dpy, GLXContext context); 356 357extern GLXContextID glXGetContextIDEXT(const GLXContext context); 358 359extern Display *glXGetCurrentDisplayEXT(void); 360 361extern GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID); 362 363extern int glXQueryContextInfoEXT(Display *dpy, GLXContext context, 364 int attribute,int *value); 365 366#endif /* GLX_EXT_import_context */ 367 368 369 370/* 371 * 215. GLX_MESA_copy_sub_buffer 372 */ 373#ifndef GLX_MESA_copy_sub_buffer 374#define GLX_MESA_copy_sub_buffer 1 375 376extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable, 377 int x, int y, int width, int height ); 378 379#endif 380 381 382 383/* 384 * 216. GLX_MESA_pixmap_colormap 385 */ 386#ifndef GLX_MESA_pixmap_colormap 387#define GLX_MESA_pixmap_colormap 1 388 389extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, 390 Pixmap pixmap, Colormap cmap ); 391 392#endif /* GLX_MESA_pixmap_colormap */ 393 394 395 396/* 397 * 217. GLX_MESA_release_buffers 398 */ 399#ifndef GLX_MESA_release_buffers 400#define GLX_MESA_release_buffers 1 401 402extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ); 403 404#endif /* GLX_MESA_release_buffers */ 405 406 407 408/* 409 * 218. GLX_MESA_set_3dfx_mode 410 */ 411#ifndef GLX_MESA_set_3dfx_mode 412#define GLX_MESA_set_3dfx_mode 1 413 414#define GLX_3DFX_WINDOW_MODE_MESA 0x1 415#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 416 417extern GLboolean glXSet3DfxModeMESA( GLint mode ); 418 419#endif /* GLX_MESA_set_3dfx_mode */ 420 421 422 423/* 424 * ARB 2. GLX_ARB_get_proc_address 425 */ 426#ifndef GLX_ARB_get_proc_address 427#define GLX_ARB_get_proc_address 1 428 429extern void (*glXGetProcAddressARB(const GLubyte *procName))(); 430 431#endif /* GLX_ARB_get_proc_address */ 432 433 434 435#endif /* GLX_GLXEXT_LEGACY */ 436 437 438 439#ifdef __cplusplus 440} 441#endif 442 443#endif 444