13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Mesa 3-D graphics library
33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Version:  6.5
43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * copy of this software and associated documentation files (the "Software"),
93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * to deal in the Software without restriction, including without limitation
103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense,
113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * and/or sell copies of the Software, and to permit persons to whom the
123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Software is furnished to do so, subject to the following conditions:
133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * The above copyright notice and this permission notice shall be included
153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * in all copies or substantial portions of the Software.
163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org *
173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_H
273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_H
283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __VMS
313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <GL/vms_x_fix.h>
323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org# ifdef __cplusplus
333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* VMS Xlib.h gives problems with C++.
343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * this avoids a bunch of trivial warnings */
353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#pragma message disable nosimpint
363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <X11/Xlib.h>
393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <X11/Xutil.h>
403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __VMS
413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org# ifdef __cplusplus
423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#pragma message enable nosimpint
433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <GL/gl.h>
463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#if defined(USE_MGL_NAMESPACE)
493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "glx_mangle.h"
503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __cplusplus
543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern "C" {
553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_1		1
593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_2		1
603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_3		1
613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_4		1
623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EXTENSION_NAME   "GLX"
643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Tokens for glXChooseVisual and glXGetConfig:
693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_USE_GL		1
713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BUFFER_SIZE		2
723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_LEVEL		3
733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RGBA		4
743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DOUBLEBUFFER	5
753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STEREO		6
763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX_BUFFERS		7
773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RED_SIZE		8
783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_GREEN_SIZE		9
793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BLUE_SIZE		10
803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ALPHA_SIZE		11
813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DEPTH_SIZE		12
823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STENCIL_SIZE	13
833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_RED_SIZE	14
843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_GREEN_SIZE	15
853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_BLUE_SIZE	16
863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_ALPHA_SIZE	17
873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Error codes returned by glXGetConfig:
913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_SCREEN		1
933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_ATTRIBUTE	2
943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NO_EXTENSION	3
953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_VISUAL		4
963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_CONTEXT		5
973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_VALUE       	6
983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_ENUM		7
993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
1023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * GLX 1.1 and later:
1033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
1043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VENDOR		1
1053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION		2
1063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EXTENSIONS 		3
1073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
1103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * GLX 1.3 and later:
1113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
1123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_CONFIG_CAVEAT		0x20
1133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DONT_CARE			0xFFFFFFFF
1143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_X_VISUAL_TYPE		0x22
1153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_TYPE		0x23
1163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_INDEX_VALUE	0x24
1173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_RED_VALUE	0x25
1183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_GREEN_VALUE	0x26
1193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_BLUE_VALUE	0x27
1203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_ALPHA_VALUE	0x28
1213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_WINDOW_BIT			0x00000001
1223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PIXMAP_BIT			0x00000002
1233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_BIT			0x00000004
1243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX_BUFFERS_BIT		0x00000010
1253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_LEFT_BUFFER_BIT	0x00000001
1263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_RIGHT_BUFFER_BIT	0x00000002
1273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_LEFT_BUFFER_BIT	0x00000004
1283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_RIGHT_BUFFER_BIT	0x00000008
1293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DEPTH_BUFFER_BIT		0x00000020
1303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STENCIL_BUFFER_BIT		0x00000040
1313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_BUFFER_BIT		0x00000080
1323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NONE			0x8000
1333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SLOW_CONFIG			0x8001
1343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRUE_COLOR			0x8002
1353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DIRECT_COLOR		0x8003
1363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PSEUDO_COLOR		0x8004
1373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STATIC_COLOR		0x8005
1383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_GRAY_SCALE			0x8006
1393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STATIC_GRAY			0x8007
1403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_RGB		0x8008
1413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_INDEX		0x8009
1423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VISUAL_ID			0x800B
1433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SCREEN			0x800C
1443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NON_CONFORMANT_CONFIG	0x800D
1453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DRAWABLE_TYPE		0x8010
1463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RENDER_TYPE			0x8011
1473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_X_RENDERABLE		0x8012
1483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FBCONFIG_ID			0x8013
1493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RGBA_TYPE			0x8014
1503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_COLOR_INDEX_TYPE		0x8015
1513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MAX_PBUFFER_WIDTH		0x8016
1523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MAX_PBUFFER_HEIGHT		0x8017
1533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MAX_PBUFFER_PIXELS		0x8018
1543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PRESERVED_CONTENTS		0x801B
1553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_LARGEST_PBUFFER		0x801C
1563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_WIDTH			0x801D
1573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_HEIGHT			0x801E
1583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EVENT_MASK			0x801F
1593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DAMAGED			0x8020
1603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SAVED			0x8021
1613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_WINDOW			0x8022
1623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER			0x8023
1633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_HEIGHT              0x8040
1643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_WIDTH               0x8041
1653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RGBA_BIT			0x00000001
1663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_COLOR_INDEX_BIT		0x00000002
1673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_CLOBBER_MASK	0x08000000
1683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
1713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * GLX 1.4 and later:
1723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
1733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/
1743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SAMPLES                     0x186a1 /*100001*/
1753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef struct __GLXcontextRec *GLXContext;
1793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXPixmap;
1803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXDrawable;
1813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.3 and later */
1823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef struct __GLXFBConfigRec *GLXFBConfig;
1833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXFBConfigID;
1843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXContextID;
1853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXWindow;
1863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXPbuffer;
1873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
189760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org/*
190760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org** Events.
191760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX
192760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org**  event - this helps initialization if the server supports the pbuffer
193760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org**  extension and the client doesn't.
194760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org*/
195760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#define GLX_PbufferClobber	0
196760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#define GLX_BufferSwapComplete	1
197760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org
198760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#define __GLX_NUMBER_EVENTS 17
1993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
2013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org				     int *attribList );
2023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
2043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org				    GLXContext shareList, Bool direct );
2053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyContext( Display *dpy, GLXContext ctx );
2073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
2093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org			    GLXContext ctx);
2103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
2123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org			    unsigned long mask );
2133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
2153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
2173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org				     Pixmap pixmap );
2183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
2203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
2223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
2243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXIsDirect( Display *dpy, GLXContext ctx );
2263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetConfig( Display *dpy, XVisualInfo *visual,
2283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org			 int attrib, int *value );
2293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXContext glXGetCurrentContext( void );
2313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXDrawable glXGetCurrentDrawable( void );
2333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXWaitGL( void );
2353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXWaitX( void );
2373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXUseXFont( Font font, int first, int count, int list );
2393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.1 and later */
2433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern const char *glXQueryExtensionsString( Display *dpy, int screen );
2443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern const char *glXQueryServerString( Display *dpy, int screen, int name );
2463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern const char *glXGetClientString( Display *dpy, int name );
2483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.2 and later */
2513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Display *glXGetCurrentDisplay( void );
2523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.3 and later */
2553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
2563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                       const int *attribList, int *nitems );
2573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
2593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                 int attribute, int *value );
2603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
2623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                     int *nelements );
2633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
2653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                              GLXFBConfig config );
2663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
2683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                  Window win, const int *attribList );
2693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyWindow( Display *dpy, GLXWindow window );
2713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
2733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                  Pixmap pixmap, const int *attribList );
2743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
2763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
2783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                    const int *attribList );
2793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
2813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
2833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                              unsigned int *value );
2843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
2863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                       int renderType, GLXContext shareList,
2873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                       Bool direct );
2883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
2903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                   GLXDrawable read, GLXContext ctx );
2913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXDrawable glXGetCurrentReadDrawable( void );
2933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
2953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                            int *value );
2963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
2973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
2983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                            unsigned long mask );
2993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
3013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                 unsigned long *mask );
3023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.3 function pointer typedefs */
3043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
3053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
3063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
3073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
3083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
3093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
3103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
3113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
3123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
3133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
3143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
3153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
3163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
3173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
3183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void);
3193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
3203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
3213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
3223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
3253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ARB 2. GLX_ARB_get_proc_address
3263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
3273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_ARB_get_proc_address
3283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ARB_get_proc_address 1
3293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (*__GLXextFuncPtr)(void);
3313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
3323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_ARB_get_proc_address */
3343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.4 and later */
3383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void (*glXGetProcAddress(const GLubyte *procname))( void );
3393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.4 function pointer typedefs */
3413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
3423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_GLXEXT_LEGACY
3453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <GL/glxext.h>
3473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_GLXEXT_LEGACY */
3493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/**
3523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ** The following aren't in glxext.h yet.
3533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org **/
3543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
3573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ???. GLX_NV_vertex_array_range
3583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
3593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_NV_vertex_array_range
3603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NV_vertex_array_range
3613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
3633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXFreeMemoryNV(GLvoid *pointer);
3643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
3653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
3663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_NV_vertex_array_range */
3683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
3713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ARB ?. GLX_ARB_render_texture
3723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * XXX This was never finalized!
3733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
3743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_ARB_render_texture
3753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ARB_render_texture 1
3763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
3783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
3793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
3803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_ARB_render_texture */
3823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
3853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Remove this when glxext.h is updated.
3863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
3873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_NV_float_buffer
3883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NV_float_buffer 1
3893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FLOAT_COMPONENTS_NV         0x20B0
3913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_NV_float_buffer */
3933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
3963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
3973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * #?. GLX_MESA_swap_frame_usage
3983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
3993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_MESA_swap_frame_usage
4003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MESA_swap_frame_usage 1
4013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
4033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
4043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
4053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
4063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
4083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
4093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
4103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
4113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_MESA_swap_frame_usage */
4133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
4173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * #?. GLX_MESA_swap_control
4183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
4193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_MESA_swap_control
4203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MESA_swap_control 1
4213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXSwapIntervalMESA(unsigned int interval);
4233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetSwapIntervalMESA(void);
4243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
4263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
4273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_MESA_swap_control */
4293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
4333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * #?. GLX_EXT_texture_from_pixmap
4343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * XXX not finished?
4353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */
4363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_EXT_texture_from_pixmap
4373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EXT_texture_from_pixmap 1
4383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
4403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
4413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
4423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
4433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_Y_INVERTED_EXT                 0x20D4
4443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_EXT             0x20D5
4463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_TARGET_EXT             0x20D6
4473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MIPMAP_TEXTURE_EXT             0x20D7
4483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_NONE_EXT        0x20D8
4503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_RGB_EXT         0x20D9
4513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_RGBA_EXT        0x20DA
4523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_1D_BIT_EXT             0x00000001
4543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_2D_BIT_EXT             0x00000002
4553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
4563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_1D_EXT                 0x20DB
4583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_2D_EXT                 0x20DC
4593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_RECTANGLE_EXT          0x20DD
4603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_LEFT_EXT                 0x20DE
4623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_RIGHT_EXT                0x20DF
4633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_LEFT_EXT                  0x20E0
4643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_RIGHT_EXT                 0x20E1
4653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_EXT                      GLX_FRONT_LEFT_EXT
4663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_EXT                       GLX_BACK_LEFT_EXT
4673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX0_EXT                       0x20E2
4683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX1_EXT                       0x20E3
4693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX2_EXT                       0x20E4
4703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX3_EXT                       0x20E5
4713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX4_EXT                       0x20E6
4723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX5_EXT                       0x20E7
4733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX6_EXT                       0x20E8
4743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX7_EXT                       0x20E9
4753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX8_EXT                       0x20EA
4763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX9_EXT                       0x20EB
4773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
4793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
4803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_EXT_texture_from_pixmap */
4823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
4863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*** Should these go here, or in another header? */
4873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*
4883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org** GLX Events
4893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org*/
4903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef struct {
4913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    int event_type;		/* GLX_DAMAGED or GLX_SAVED */
4923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    int draw_type;		/* GLX_WINDOW or GLX_PBUFFER */
4933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    unsigned long serial;	/* # of last request processed by server */
4943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    Bool send_event;		/* true if this came for SendEvent request */
4953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    Display *display;		/* display the event was read from */
4963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    GLXDrawable drawable;	/* XID of Drawable */
4973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    unsigned int buffer_mask;	/* mask indicating which buffers are affected */
4983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    unsigned int aux_buffer;	/* which aux buffer was affected */
4993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    int x, y;
5003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    int width, height;
5013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    int count;			/* if nonzero, at least this many more */
5023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} GLXPbufferClobberEvent;
5033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
504760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgtypedef struct {
505760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    int type;
506760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    unsigned long serial;	/* # of last request processed by server */
507760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    Bool send_event;		/* true if this came from a SendEvent request */
508760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    Display *display;		/* Display the event was read from */
509760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    GLXDrawable drawable;	/* drawable on which event was requested in event mask */
510760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    int event_type;
511760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    int64_t ust;
512760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    int64_t msc;
513760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    int64_t sbc;
514760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} GLXBufferSwapComplete;
515760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org
5163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef union __GLXEvent {
5173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    GLXPbufferClobberEvent glxpbufferclobber;
518760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org    GLXBufferSwapComplete glxbufferswapcomplete;
5193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org    long pad[24];
5203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} GLXEvent;
5213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
5223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __cplusplus
5233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
5243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
5253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
5263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
527