more DOS updates from Daniel Borca
[mesa.git] / include / GL / glx.h
index fcea293f9b9eb08628cbc801411471d3dd00c2c9..5feb013bae05df82d20889f17330768f38f8579d 100644 (file)
@@ -1,10 +1,8 @@
-/* $Id: glx.h,v 1.15 2000/03/06 12:59:24 joukj Exp $ */
-
 /*
  * Mesa 3-D graphics library
- * Version:  3.3
+ * Version:  4.1
  * 
- * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2002  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"),
  */
 
 
-
 #ifndef GLX_H
 #define GLX_H
 
 
 #ifdef __VMS
+#include <GL/vms_x_fix.h>
 # ifdef __cplusplus
 /* VMS Xlib.h gives problems with C++.
  * this avoids a bunch of trivial warnings */
 #pragma message enable nosimpint
 #endif
 #endif
-#include "GL/gl.h"
-#ifdef MESA
-#include "GL/xmesa.h"
-#endif
+#include <GL/gl.h>
 
 
 #if defined(USE_MGL_NAMESPACE)
-#include "glx_mangle.h"
+#include <GL/glx_mangle.h>
 #endif
 
 
@@ -62,6 +57,8 @@ extern "C" {
 
 #define GLX_VERSION_1_1                1
 #define GLX_VERSION_1_2                1
+#define GLX_VERSION_1_3                1
+#define GLX_VERSION_1_4                1
 
 #define GLX_EXTENSION_NAME   "GLX"
 
@@ -111,13 +108,11 @@ extern "C" {
 
 /*
  * 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_CONFIG_CAVEAT              0x20
+#define GLX_DONT_CARE                  0xFFFFFFFF
+#define GLX_SLOW_CONFIG                        0x8001
+#define GLX_NON_CONFORMANT_CONFIG      0x800D
 #define GLX_X_VISUAL_TYPE              0x22
 #define GLX_TRANSPARENT_TYPE           0x23
 #define GLX_TRANSPARENT_INDEX_VALUE    0x24
@@ -125,29 +120,31 @@ extern "C" {
 #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_MAX_PBUFFER_WIDTH          0x8016
+#define GLX_MAX_PBUFFER_HEIGHT         0x8017
+#define GLX_MAX_PBUFFER_PIXELS         0x8018
+#define GLX_PRESERVED_CONTENTS         0x801B
+#define GLX_LARGEST_PBUFFER            0x801C
+#define GLX_WIDTH                      0x801D
+#define GLX_HEIGHT                     0x801E
+#define GLX_EVENT_MASK                 0x801F
+#define GLX_DRAWABLE_TYPE              0x8010
+#define GLX_FBCONFIG_ID                        0x8013
+#define GLX_VISUAL_ID                  0x800B
+#define GLX_WINDOW_BIT                 0x00000001
+#define GLX_PIXMAP_BIT                 0x00000002
+#define GLX_PBUFFER_BIT                        0x00000004
+#define GLX_AUX_BUFFERS_BIT            0x00000010
+#define GLX_FRONT_LEFT_BUFFER_BIT      0x00000001
+#define GLX_FRONT_RIGHT_BUFFER_BIT     0x00000002
+#define GLX_BACK_LEFT_BUFFER_BIT       0x00000004
+#define GLX_BACK_RIGHT_BUFFER_BIT      0x00000008
+#define GLX_DEPTH_BUFFER_BIT           0x00000020
+#define GLX_STENCIL_BUFFER_BIT         0x00000040
+#define GLX_ACCUM_BUFFER_BIT           0x00000080
+#define GLX_DRAWABLE_TYPE              0x8010
+#define GLX_RENDER_TYPE                        0x8011
+#define GLX_X_RENDERABLE               0x8012
 #define GLX_NONE                       0x8000
 #define GLX_TRUE_COLOR                 0x8002
 #define GLX_DIRECT_COLOR               0x8003
@@ -155,72 +152,39 @@ extern "C" {
 #define GLX_STATIC_COLOR               0x8005
 #define GLX_GRAY_SCALE                 0x8006
 #define GLX_STATIC_GRAY                        0x8007
+#define GLX_TRANSPARENT_RGB            0x8008
 #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                    ?
-
-
-/*
- * 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
-
-
-/*
- * GLX_visual_info extension
- */
-#define GLX_TRUE_COLOR_EXT             0x8002
-#define GLX_DIRECT_COLOR_EXT           0x8003
-#define GLX_PSEUDO_COLOR_EXT           0x8004
-#define GLX_STATIC_COLOR_EXT           0x8005
-#define GLX_GRAY_SCALE_EXT             0x8006
-#define GLX_STATIC_GRAY_EXT            0x8007
-#define GLX_NONE_EXT                   0x8000
-#define GLX_TRANSPARENT_RGB_EXT                0x8008
-#define GLX_TRANSPARENT_INDEX_EXT      0x8009
+#define GLX_RGBA_TYPE                  0x8014
+#define GLX_COLOR_INDEX_TYPE           0x8015
+#define GLX_COLOR_INDEX_BIT            0x00000002
+#define GLX_RGBA_BIT                   0x00000001
+#define GLX_SCREEN                     0x800C
+#define GLX_PBUFFER_CLOBBER_MASK       0x08000000
+#define GLX_DAMAGED                    0x8020
+#define GLX_SAVED                      0x8021
+#define GLX_WINDOW                     0x8022
+#define GLX_PBUFFER                    0x8023
+#define GLX_PBUFFER_HEIGHT              0x8040
+#define GLX_PBUFFER_WIDTH               0x8041
 
 
 /*
- * Compile-time extension tests
+ * GLX 1.4 and later:
  */
-#define GLX_EXT_visual_info            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_ARB_get_proc_address       1
+#define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/
+#define GLX_SAMPLES                     0x186a1 /*100001*/
 
 
 
-#ifdef MESA
-   typedef XMesaContext GLXContext;
-   typedef Pixmap GLXPixmap;
-   typedef Drawable GLXDrawable;
-#else
-   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 struct __GLXcontextRec *GLXContext;
+typedef XID GLXPixmap;
+typedef XID GLXDrawable;
+/* GLX 1.3 and later */
+typedef struct __GLXFBConfigRec *GLXFBConfig;
+typedef XID GLXFBConfigID;
 typedef XID GLXContextID;
+typedef XID GLXWindow;
+typedef XID GLXPbuffer;
 
 
 
@@ -279,12 +243,15 @@ extern Display *glXGetCurrentDisplay( void );
 
 
 /* GLX 1.3 and later */
-extern GLXFBConfig glXChooseFBConfig( Display *dpy, int screen,
-                                      const int *attribList, int *nitems );
+extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
+                                       const int *attribList, int *nitems );
 
 extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
                                  int attribute, int *value );
 
+extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
+                                     int *nelements );
+
 extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
                                               GLXFBConfig config );
 
@@ -325,34 +292,209 @@ extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
                                  unsigned long *mask );
 
 
+/* GLX 1.4 and later */
+extern void (*glXGetProcAddress(const GLubyte *procname))();
+
+
+#ifndef GLX_GLXEXT_LEGACY
+
+#include <GL/glxext.h>
+
+#else
+
+
+/*
+ * 28. GLX_EXT_visual_info extension
+ */
+#ifndef GLX_EXT_visual_info
+#define GLX_EXT_visual_info            1
+
+#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_STATIC_COLOR_EXT           0x8005
+#define GLX_GRAY_SCALE_EXT             0x8006
+#define GLX_STATIC_GRAY_EXT            0x8007
+#define GLX_NONE_EXT                   0x8000
+#define GLX_TRANSPARENT_RGB_EXT                0x8008
+#define GLX_TRANSPARENT_INDEX_EXT      0x8009
+
+#endif /* 28. GLX_EXT_visual_info extension */
+
+
+
+/*
+ * 41. GLX_SGI_video_sync
+ */
+#ifndef GLX_SGI_video_sync
+#define GLX_SGI_video_sync 1
+
+extern int glXGetVideoSyncSGI(unsigned int *count);
+extern int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count);
+
+#endif /* GLX_SGI_video_sync */
+
+
+
+/*
+ * 42. GLX_EXT_visual_rating
+ */
+#ifndef GLX_EXT_visual_rating
+#define GLX_EXT_visual_rating          1
+
+#define GLX_VISUAL_CAVEAT_EXT          0x20
+/*#define GLX_NONE_EXT                 0x8000*/
+#define GLX_SLOW_VISUAL_EXT            0x8001
+#define GLX_NON_CONFORMANT_VISUAL_EXT  0x800D
+
+#endif /* GLX_EXT_visual_rating        */
+
+
+
+/*
+ * 47. GLX_EXT_import_context
+ */
+#ifndef GLX_EXT_import_context
+#define GLX_EXT_import_context 1
+
+#define GLX_SHARE_CONTEXT_EXT          0x800A
+#define GLX_VISUAL_ID_EXT              0x800B
+#define GLX_SCREEN_EXT                 0x800C
+
+extern void glXFreeContextEXT(Display *dpy, GLXContext context);
+
+extern GLXContextID glXGetContextIDEXT(const GLXContext context);
+
+extern Display *glXGetCurrentDisplayEXT(void);
+
+extern GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID);
+
+extern int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
+                                  int attribute,int *value);
+
+#endif /* GLX_EXT_import_context */
+
+
+
+/*
+ * 215. GLX_MESA_copy_sub_buffer
+ */
+#ifndef GLX_MESA_copy_sub_buffer
+#define GLX_MESA_copy_sub_buffer 1
+
+extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
+                                  int x, int y, int width, int height );
+
+#endif
+
+
+
+/*
+ * 216. GLX_MESA_pixmap_colormap
+ */
+#ifndef GLX_MESA_pixmap_colormap
+#define GLX_MESA_pixmap_colormap 1
 
-/* GLX_MESA_pixmap_colormap */
 extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
                                          Pixmap pixmap, Colormap cmap );
 
+#endif /* GLX_MESA_pixmap_colormap */
+
+
+
+/*
+ * 217. GLX_MESA_release_buffers
+ */
+#ifndef GLX_MESA_release_buffers
+#define GLX_MESA_release_buffers 1
 
-/* GLX_MESA_release_buffers */
 extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
 
+#endif /* GLX_MESA_release_buffers */
 
-/* GLX_MESA_copy_sub_buffer */
-extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
-                                  int x, int y, int width, int height );
 
 
-/* GLX_MESA_set_3dfx_mode */
-extern GLboolean glXSet3DfxModeMESA( GLint mode );
+/*
+ * 218. GLX_MESA_set_3dfx_mode
+ */
+#ifndef GLX_MESA_set_3dfx_mode
+#define GLX_MESA_set_3dfx_mode 1
+
+#define GLX_3DFX_WINDOW_MODE_MESA       0x1
+#define GLX_3DFX_FULLSCREEN_MODE_MESA   0x2
+
+extern Bool glXSet3DfxModeMESA( int mode );
+
+#endif /* GLX_MESA_set_3dfx_mode */
 
 
-/* GLX_SGI_video_sync */
-extern int glXGetVideoSyncSGI(unsigned int *count);
-extern int glXWaitVideoSyncSGI(int divisor, int remainder,
-                               unsigned int *count);
 
+/*
+ * ARB 2. GLX_ARB_get_proc_address
+ */
+#ifndef GLX_ARB_get_proc_address
+#define GLX_ARB_get_proc_address 1
 
-/* GLX_ARB_get_proc_address */
 extern void (*glXGetProcAddressARB(const GLubyte *procName))();
 
+#endif /* GLX_ARB_get_proc_address */
+
+
+
+#endif /* GLX_GLXEXT_LEGACY */
+
+
+/**
+ ** The following aren't in glxext.h yet.
+ **/
+
+
+/*
+ * ???. GLX_NV_vertex_array_range
+ */
+#ifndef GLX_NV_vertex_array_range
+#define GLX_NV_vertex_array_range
+
+extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+extern void glXFreeMemoryNV(GLvoid *pointer);
+typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
+
+#endif /* GLX_NV_vertex_array_range */
+
+
+
+/*
+ * ???. GLX_MESA_agp_offset
+ */ 
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+
+extern GLuint glXGetAGPOffsetMESA(const GLvoid *pointer);
+typedef GLuint (* PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *pointer);
+
+#endif /* GLX_MESA_agp_offset */
+
+
+/*
+ * ARB ?. GLX_ARB_render_texture
+ */
+#ifndef GLX_ARB_render_texture
+#define GLX_ARB_render_texture 1
+
+extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
+extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
+extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
+
+#endif /* GLX_ARB_render_texture */
+
 
 
 #ifdef __cplusplus