-/* $Id: glx.h,v 1.2 1999/09/11 11:33:45 brianp Exp $ */
+/* $Id: glx.h,v 1.17 2000/03/31 01:03:41 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.1
+ * Version: 3.3
*
- * Copyright (C) 1999 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
*/
-/*
- * $Log: glx.h,v $
- * Revision 1.2 1999/09/11 11:33:45 brianp
- * added GLX_EXT_get_proc_address
- *
- * Revision 1.1.1.1 1999/08/19 00:55:40 jtg
- * Imported sources
- *
- * Revision 3.3 1999/02/14 03:39:09 brianp
- * new copyright
- *
- * Revision 3.2 1998/06/18 03:44:00 brianp
- * replaced "uint" with "unsigned int"
- *
- * Revision 3.1 1998/06/01 00:00:17 brianp
- * added GLX_SGI_video_sync extension
- *
- * Revision 3.0 1998/02/20 05:06:01 brianp
- * initial rev
- *
- */
-
#ifndef GLX_H
#define GLX_H
-/*
- * A pseudo-GLX implementation to allow GLX-based OpenGL programs to
- * work with Mesa.
- *
- * Notes:
- * 1. If the visual passed to glXGetConfig was not one returned by
- * glXChooseVisual then the GLX_RGBA and GLX_DOUBLEBUFFER queries
- * will always return True and the GLX_DEPTH_SIZE query will always
- * return non-zero.
- * 2. The glXIsDirect() function always returns True.
- */
-
-
-
+#ifdef __VMS
+# ifdef __cplusplus
+/* VMS Xlib.h gives problems with C++.
+ * this avoids a bunch of trivial warnings */
+#pragma message disable nosimpint
+#endif
+#endif
#include <X11/Xlib.h>
#include <X11/Xutil.h>
-#include "GL/gl.h"
-#ifdef MESA
-#include "GL/xmesa.h"
+#ifdef __VMS
+# ifdef __cplusplus
+#pragma message enable nosimpint
+#endif
#endif
+#include "GL/gl.h"
#if defined(USE_MGL_NAMESPACE)
#define GLX_VERSION_1_1 1
+#define GLX_VERSION_1_2 1
+
+#define GLX_EXTENSION_NAME "GLX"
+
/*
* Tokens for glXChooseVisual and glXGetConfig:
*/
-enum _GLX_CONFIGS {
- GLX_USE_GL = 1,
- GLX_BUFFER_SIZE = 2,
- GLX_LEVEL = 3,
- GLX_RGBA = 4,
- GLX_DOUBLEBUFFER = 5,
- GLX_STEREO = 6,
- GLX_AUX_BUFFERS = 7,
- GLX_RED_SIZE = 8,
- GLX_GREEN_SIZE = 9,
- GLX_BLUE_SIZE = 10,
- GLX_ALPHA_SIZE = 11,
- GLX_DEPTH_SIZE = 12,
- GLX_STENCIL_SIZE = 13,
- GLX_ACCUM_RED_SIZE = 14,
- GLX_ACCUM_GREEN_SIZE = 15,
- GLX_ACCUM_BLUE_SIZE = 16,
- GLX_ACCUM_ALPHA_SIZE = 17,
-
- /* GLX_EXT_visual_info extension */
- GLX_X_VISUAL_TYPE_EXT = 0x22,
- GLX_TRANSPARENT_TYPE_EXT = 0x23,
- GLX_TRANSPARENT_INDEX_VALUE_EXT = 0x24,
- GLX_TRANSPARENT_RED_VALUE_EXT = 0x25,
- GLX_TRANSPARENT_GREEN_VALUE_EXT = 0x26,
- GLX_TRANSPARENT_BLUE_VALUE_EXT = 0x27,
- GLX_TRANSPARENT_ALPHA_VALUE_EXT = 0x28
-};
+#define GLX_USE_GL 1
+#define GLX_BUFFER_SIZE 2
+#define GLX_LEVEL 3
+#define GLX_RGBA 4
+#define GLX_DOUBLEBUFFER 5
+#define GLX_STEREO 6
+#define GLX_AUX_BUFFERS 7
+#define GLX_RED_SIZE 8
+#define GLX_GREEN_SIZE 9
+#define GLX_BLUE_SIZE 10
+#define GLX_ALPHA_SIZE 11
+#define GLX_DEPTH_SIZE 12
+#define GLX_STENCIL_SIZE 13
+#define GLX_ACCUM_RED_SIZE 14
+#define GLX_ACCUM_GREEN_SIZE 15
+#define GLX_ACCUM_BLUE_SIZE 16
+#define GLX_ACCUM_ALPHA_SIZE 17
/*
/*
- * GLX_visual_info extension
+ * GLX 1.3 and later:
+ * XXX don't know the values of some of these enums!
+ * XXX some 1.3 enums may be missing!
*/
+#define GLX_CONFIG_CAVEAT ?
+#define GLX_DONT_CARE ?
+#define GLX_SLOW_CONFIG ?
+#define GLX_NON_CONFORMANT_CONFIG ?
+#define GLX_X_VISUAL_TYPE 0x22
+#define GLX_TRANSPARENT_TYPE 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE 0x24
+#define GLX_TRANSPARENT_RED_VALUE 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
+#define GLX_MAX_PBUFFER_WIDTH ?
+#define GLX_MAX_PBUFFER_HEIGHT ?
+#define GLX_MAX_PBUFFER_PIXELS ?
+#define GLX_PRESERVED_CONTENTS ?
+#define GLX_LARGEST_BUFFER ?
+#define GLX_DRAWABLE_TYPE ?
+#define GLX_FBCONFIG_ID ?
+#define GLX_VISUAL_ID ?
+#define GLX_WINDOW_BIT ?
+#define GLX_PIXMAP_BIT ?
+#define GLX_PBUFFER_BIT ?
+#define GLX_AUX_BUFFERS_BIT ?
+#define GLX_FRONT_LEFT_BUFFER_BIT ?
+#define GLX_FRONT_RIGHT_BUFFER_BIT ?
+#define GLX_BACK_LEFT_BUFFER_BIT ?
+#define GLX_BACK_RIGHT_BUFFER_BIT ?
+#define GLX_AUX_BUFFERS_BIT ?
+#define GLX_DEPTH_BUFFER_BIT ?
+#define GLX_STENCIL_BUFFER_BIT ?
+#define GLX_ACCUM_BUFFER_BIT ?
+#define GLX_RENDER_TYPE ?
+#define GLX_DRAWABLE_TYPE ?
+#define GLX_X_RENDERABLE ?
+#define GLX_NONE 0x8000
+#define GLX_TRUE_COLOR 0x8002
+#define GLX_DIRECT_COLOR 0x8003
+#define GLX_PSEUDO_COLOR 0x8004
+#define GLX_STATIC_COLOR 0x8005
+#define GLX_GRAY_SCALE 0x8006
+#define GLX_STATIC_GRAY 0x8007
+#define GLX_TRANSPARENT_INDEX 0x8009
+#define GLX_COLOR_INDEX_TYPE ?
+#define GLX_COLOR_INDEX_BIT ?
+#define GLX_SCREEN ?
+#define GLX_PBUFFER_CLOBBER_MASK ?
+#define GLX_DAMAGED ?
+#define GLX_SAVED ?
+#define GLX_WINDOW ?
+#define GLX_PBUFFER ?
+
+
+/*
+ * 28. GLX_EXT_visual_info extension
+ */
+#define GLX_X_VISUAL_TYPE_EXT 0x22
+#define GLX_TRANSPARENT_TYPE_EXT 0x23
+#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
+#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
+#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
+#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
+#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
#define GLX_TRUE_COLOR_EXT 0x8002
#define GLX_DIRECT_COLOR_EXT 0x8003
#define GLX_PSEUDO_COLOR_EXT 0x8004
#define GLX_TRANSPARENT_INDEX_EXT 0x8009
+/*
+ * 42. GLX_EXT_visual_rating
+ */
+#define GLX_VISUAL_CAVEAT_EXT 0x20
+/*#define GLX_NONE_EXT 0x8000*/
+#define GLX_SLOW_VISUALEXT 0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
+
+
/*
* Compile-time extension tests
*/
#define GLX_EXT_visual_info 1
+#define GLX_EXT_visual_rating 1
#define GLX_MESA_pixmap_colormap 1
#define GLX_MESA_release_buffers 1
#define GLX_MESA_copy_sub_buffer 1
+#define GLX_MESA_set_3dfx_mode 1
#define GLX_SGI_video_sync 1
-#define GLX_EXT_get_proc_address 1
+#define GLX_ARB_get_proc_address 1
typedef void * GLXContext;
typedef XID GLXPixmap;
typedef XID GLXDrawable;
+ /* GLX 1.3 and later */
+ typedef XID GLXFBConfigID;
+ typedef XID GLXPfuffer;
+ typedef XID GLXWindow;
+ typedef XID GLXPbuffer;
+ typedef XID GLXFBConfig;
#endif
typedef XID GLXContextID;
GLXContext ctx);
extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
- GLuint mask );
+ unsigned long mask );
extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
extern const char *glXGetClientString( Display *dpy, int name );
-/* GLX_EXT_get_proc_address */
-extern GLfunction glXGetProcAddressEXT(const GLubyte *procName);
+/* GLX 1.2 and later */
+extern Display *glXGetCurrentDisplay( void );
-/*
- * Mesa GLX Extensions
- */
+/* GLX 1.3 and later */
+extern GLXFBConfig glXChooseFBConfig( Display *dpy, int screen,
+ const int *attribList, int *nitems );
+
+extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
+ int attribute, int *value );
-#ifdef GLX_MESA_pixmap_colormap
+extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
+ GLXFBConfig config );
+
+extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
+ Window win, const int *attribList );
+
+extern void glXDestroyWindow( Display *dpy, GLXWindow window );
+
+extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
+ Pixmap pixmap, const int *attribList );
+
+extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
+
+extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
+ const int *attribList );
+
+extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
+
+extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
+ unsigned int *value );
+
+extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
+ int renderType, GLXContext shareList,
+ Bool direct );
+
+extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
+ GLXDrawable read, GLXContext ctx );
+
+extern GLXDrawable glXGetCurrentReadDrawable( void );
+
+extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
+ int *value );
+
+extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
+ unsigned long mask );
+
+extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
+ unsigned long *mask );
+
+
+
+/* GLX_MESA_pixmap_colormap */
extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
Pixmap pixmap, Colormap cmap );
-#endif
-#ifdef GLX_MESA_release_buffers
+
+/* GLX_MESA_release_buffers */
extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
-#endif
-#ifdef GLX_MESA_copy_sub_buffer
+
+/* GLX_MESA_copy_sub_buffer */
extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
int x, int y, int width, int height );
-#endif
-#ifdef GLX_SGI_video_sync
+
+/* GLX_MESA_set_3dfx_mode */
+extern GLboolean glXSet3DfxModeMESA( GLint mode );
+
+
+/* GLX_SGI_video_sync */
extern int glXGetVideoSyncSGI(unsigned int *count);
extern int glXWaitVideoSyncSGI(int divisor, int remainder,
unsigned int *count);
-#endif
+
+
+/* GLX_ARB_get_proc_address */
+extern void (*glXGetProcAddressARB(const GLubyte *procName))();