274 lines
6.8 KiB
C
274 lines
6.8 KiB
C
/* $Id: glx.h,v 1.3 1999/09/16 15:52:51 brianp Exp $ */
|
|
|
|
/*
|
|
* Mesa 3-D graphics library
|
|
* Version: 3.1
|
|
*
|
|
* Copyright (C) 1999 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"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included
|
|
* in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
|
|
/*
|
|
* $Log: glx.h,v $
|
|
* Revision 1.3 1999/09/16 15:52:51 brianp
|
|
* added GLX_MESA_set_3dfx_mode. clean-up of glXGetProcAddress
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
|
|
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xutil.h>
|
|
#include "GL/gl.h"
|
|
#ifdef MESA
|
|
#include "GL/xmesa.h"
|
|
#endif
|
|
|
|
|
|
#if defined(USE_MGL_NAMESPACE)
|
|
#include "glx_mangle.h"
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#define GLX_VERSION_1_1 1
|
|
|
|
|
|
/*
|
|
* 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
|
|
};
|
|
|
|
|
|
/*
|
|
* Error codes returned by glXGetConfig:
|
|
*/
|
|
#define GLX_BAD_SCREEN 1
|
|
#define GLX_BAD_ATTRIBUTE 2
|
|
#define GLX_NO_EXTENSION 3
|
|
#define GLX_BAD_VISUAL 4
|
|
#define GLX_BAD_CONTEXT 5
|
|
#define GLX_BAD_VALUE 6
|
|
#define GLX_BAD_ENUM 7
|
|
|
|
|
|
/*
|
|
* GLX 1.1 and later:
|
|
*/
|
|
#define GLX_VENDOR 1
|
|
#define GLX_VERSION 2
|
|
#define GLX_EXTENSIONS 3
|
|
|
|
|
|
/*
|
|
* 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
|
|
|
|
|
|
/*
|
|
* Compile-time extension tests
|
|
*/
|
|
#define GLX_EXT_visual_info 1
|
|
#define GLX_EXT_get_proc_address 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
|
|
|
|
|
|
|
|
#ifdef MESA
|
|
typedef XMesaContext GLXContext;
|
|
typedef Pixmap GLXPixmap;
|
|
typedef Drawable GLXDrawable;
|
|
#else
|
|
typedef void * GLXContext;
|
|
typedef XID GLXPixmap;
|
|
typedef XID GLXDrawable;
|
|
#endif
|
|
typedef XID GLXContextID;
|
|
|
|
|
|
|
|
extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
|
|
int *attribList );
|
|
|
|
extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
|
|
GLXContext shareList, Bool direct );
|
|
|
|
extern void glXDestroyContext( Display *dpy, GLXContext ctx );
|
|
|
|
extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
|
|
GLXContext ctx);
|
|
|
|
extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
|
|
GLuint mask );
|
|
|
|
extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
|
|
|
|
extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
|
|
Pixmap pixmap );
|
|
|
|
extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
|
|
|
|
extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
|
|
|
|
extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
|
|
|
|
extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
|
|
|
|
extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
|
|
int attrib, int *value );
|
|
|
|
extern GLXContext glXGetCurrentContext( void );
|
|
|
|
extern GLXDrawable glXGetCurrentDrawable( void );
|
|
|
|
extern void glXWaitGL( void );
|
|
|
|
extern void glXWaitX( void );
|
|
|
|
extern void glXUseXFont( Font font, int first, int count, int list );
|
|
|
|
|
|
|
|
/* GLX 1.1 and later */
|
|
extern const char *glXQueryExtensionsString( Display *dpy, int screen );
|
|
|
|
extern const char *glXQueryServerString( Display *dpy, int screen, int name );
|
|
|
|
extern const char *glXGetClientString( Display *dpy, int name );
|
|
|
|
|
|
|
|
/* GLX_EXT_get_proc_address */
|
|
/* WARNING: this extension is not finalized yet! Do not release code
|
|
* which uses this extension yet! It may change!
|
|
*/
|
|
extern void (*glXGetProcAddressEXT(const GLubyte *procName))();
|
|
|
|
|
|
/* GLX_MESA_pixmap_colormap */
|
|
extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
|
Pixmap pixmap, Colormap cmap );
|
|
|
|
|
|
/* GLX_MESA_release_buffers */
|
|
extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
|
|
|
|
|
|
/* 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 );
|
|
|
|
|
|
/* GLX_SGI_video_sync */
|
|
extern int glXGetVideoSyncSGI(unsigned int *count);
|
|
extern int glXWaitVideoSyncSGI(int divisor, int remainder,
|
|
unsigned int *count);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|