1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Mesa 3-D graphics library
33e9c099088424c149931dcf546ae0a4d9ac2ae76Brian Paul * Version:  6.5
4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
59305cba6a7dfe539e5c3b01f7b16fcf60cf20900Brian Paul * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
6afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Permission is hereby granted, free of charge, to any person obtaining a
8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * copy of this software and associated documentation files (the "Software"),
9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * to deal in the Software without restriction, including without limitation
10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * and/or sell copies of the Software, and to permit persons to whom the
12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Software is furnished to do so, subject to the following conditions:
13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * The above copyright notice and this permission notice shall be included
15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * in all copies or substantial portions of the Software.
16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
26afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifndef GLX_H
27afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_H
28afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
29afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
303f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#ifdef __VMS
31b5b5c52034840dbfcd3f76a9e7cde8b379e7d517Jouk Jansen#include <GL/vms_x_fix.h>
323f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen# ifdef __cplusplus
333f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen/* VMS Xlib.h gives problems with C++.
343f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen * this avoids a bunch of trivial warnings */
353f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#pragma message disable nosimpint
363f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#endif
373f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#endif
38afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include <X11/Xlib.h>
39afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include <X11/Xutil.h>
403f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#ifdef __VMS
413f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen# ifdef __cplusplus
423f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#pragma message enable nosimpint
433f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#endif
443f600e47cf36080abbc00a1f08c7e80fd5137a67Jouk Jansen#endif
4523b1503d79bc148521f8cff3c7b5f5faa146d1acBrian Paul#include <GL/gl.h>
46afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
47afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
48afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#if defined(USE_MGL_NAMESPACE)
494f1e3709de54c3a511d6eb0bb7670956fb8f8d2cBrian Paul#include "glx_mangle.h"
50afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
51afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
52afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
53afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifdef __cplusplus
54afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern "C" {
55afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
56afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
57afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
58afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_VERSION_1_1		1
59bf3f9bdaae9f17de8ac82ec7789e4e689a6f67f2Brian Paul#define GLX_VERSION_1_2		1
6007b220ad46d5f30218210b5512c9037214a7ff89Brian Paul#define GLX_VERSION_1_3		1
61ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul#define GLX_VERSION_1_4		1
62afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
63fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_EXTENSION_NAME   "GLX"
64fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
65fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
66afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
67afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
68afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Tokens for glXChooseVisual and glXGetConfig:
69afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
70fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_USE_GL		1
71fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_BUFFER_SIZE		2
72fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_LEVEL		3
73fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_RGBA		4
74fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_DOUBLEBUFFER	5
75fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_STEREO		6
76fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_AUX_BUFFERS		7
77fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_RED_SIZE		8
78fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_GREEN_SIZE		9
79fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_BLUE_SIZE		10
80fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_ALPHA_SIZE		11
81fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_DEPTH_SIZE		12
82fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_STENCIL_SIZE	13
83fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_ACCUM_RED_SIZE	14
84fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_ACCUM_GREEN_SIZE	15
85fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_ACCUM_BLUE_SIZE	16
86fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#define GLX_ACCUM_ALPHA_SIZE	17
87fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
88fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
89afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
90afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Error codes returned by glXGetConfig:
91afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
92afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_BAD_SCREEN		1
93afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_BAD_ATTRIBUTE	2
94afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_NO_EXTENSION	3
95afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_BAD_VISUAL		4
96afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_BAD_CONTEXT		5
97afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_BAD_VALUE       	6
98afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_BAD_ENUM		7
99afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
100afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
101afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
102afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * GLX 1.1 and later:
103afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
104afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_VENDOR		1
105afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_VERSION		2
106afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define GLX_EXTENSIONS 		3
107afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
108afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
109afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
110664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul * GLX 1.3 and later:
111664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul */
11247e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_CONFIG_CAVEAT		0x20
11347e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_DONT_CARE			0xFFFFFFFF
114664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_X_VISUAL_TYPE		0x22
115664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_TYPE		0x23
116664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_INDEX_VALUE	0x24
117664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_RED_VALUE	0x25
118664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_GREEN_VALUE	0x26
119664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_BLUE_VALUE	0x27
120664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_ALPHA_VALUE	0x28
12147e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_WINDOW_BIT			0x00000001
12247e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_PIXMAP_BIT			0x00000002
12347e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_PBUFFER_BIT			0x00000004
12447e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_AUX_BUFFERS_BIT		0x00000010
12547e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_FRONT_LEFT_BUFFER_BIT	0x00000001
12647e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_FRONT_RIGHT_BUFFER_BIT	0x00000002
12747e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_BACK_LEFT_BUFFER_BIT	0x00000004
12847e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_BACK_RIGHT_BUFFER_BIT	0x00000008
12947e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_DEPTH_BUFFER_BIT		0x00000020
13047e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_STENCIL_BUFFER_BIT		0x00000040
13147e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_ACCUM_BUFFER_BIT		0x00000080
132664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_NONE			0x8000
13327eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_SLOW_CONFIG			0x8001
134664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRUE_COLOR			0x8002
135664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_DIRECT_COLOR		0x8003
136664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_PSEUDO_COLOR		0x8004
137664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_STATIC_COLOR		0x8005
138664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_GRAY_SCALE			0x8006
139664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_STATIC_GRAY			0x8007
140cb4253a546ce65d22c277ba34acebb49f301b0beBrian Paul#define GLX_TRANSPARENT_RGB		0x8008
141664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul#define GLX_TRANSPARENT_INDEX		0x8009
14227eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_VISUAL_ID			0x800B
14327eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_SCREEN			0x800C
14427eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_NON_CONFORMANT_CONFIG	0x800D
14527eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_DRAWABLE_TYPE		0x8010
14627eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_RENDER_TYPE			0x8011
14727eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_X_RENDERABLE		0x8012
14827eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_FBCONFIG_ID			0x8013
1497e975ba3aa103df12c2069264e755b73e2fabf05Brian Paul#define GLX_RGBA_TYPE			0x8014
15047e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_COLOR_INDEX_TYPE		0x8015
15127eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_MAX_PBUFFER_WIDTH		0x8016
15227eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_MAX_PBUFFER_HEIGHT		0x8017
15327eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_MAX_PBUFFER_PIXELS		0x8018
15427eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_PRESERVED_CONTENTS		0x801B
15527eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_LARGEST_PBUFFER		0x801C
15627eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_WIDTH			0x801D
15727eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_HEIGHT			0x801E
15827eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_EVENT_MASK			0x801F
15947e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_DAMAGED			0x8020
16047e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_SAVED			0x8021
16147e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul#define GLX_WINDOW			0x8022
16268656667b2f63c285ccd75fb16a17a8a04a9f552Brian Paul#define GLX_PBUFFER			0x8023
163657323bf03a575bf40cff83119f201a9dcd1478eBrian Paul#define GLX_PBUFFER_HEIGHT              0x8040
164657323bf03a575bf40cff83119f201a9dcd1478eBrian Paul#define GLX_PBUFFER_WIDTH               0x8041
16527eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_RGBA_BIT			0x00000001
16627eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_COLOR_INDEX_BIT		0x00000002
16727eb8fa35a76c7c9d79130d1fb9138dbeb455182Brian Paul#define GLX_PBUFFER_CLOBBER_MASK	0x08000000
168664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
169664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
170ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul/*
171ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul * GLX 1.4 and later:
172ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul */
173b70f5c21e713d9df0a1fcd4c6871f80caabdaaceBrian Paul#define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/
174eaf0eac7d327468a617a64820e1f41279eef1a8dBrian Paul#define GLX_SAMPLES                     0x186a1 /*100001*/
175ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul
176ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul
177353479fa8a63aebc21825ad614115b7b5434fe0dBrian Paul
178e203c9cdd8ef0b0b053923e630e291f5671a9ab4Brian Paultypedef struct __GLXcontextRec *GLXContext;
17907b220ad46d5f30218210b5512c9037214a7ff89Brian Paultypedef XID GLXPixmap;
18007b220ad46d5f30218210b5512c9037214a7ff89Brian Paultypedef XID GLXDrawable;
18107b220ad46d5f30218210b5512c9037214a7ff89Brian Paul/* GLX 1.3 and later */
182e203c9cdd8ef0b0b053923e630e291f5671a9ab4Brian Paultypedef struct __GLXFBConfigRec *GLXFBConfig;
18307b220ad46d5f30218210b5512c9037214a7ff89Brian Paultypedef XID GLXFBConfigID;
184afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgtypedef XID GLXContextID;
18507b220ad46d5f30218210b5512c9037214a7ff89Brian Paultypedef XID GLXWindow;
18607b220ad46d5f30218210b5512c9037214a7ff89Brian Paultypedef XID GLXPbuffer;
187afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
188afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
1897f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes/*
1907f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes** Events.
1917f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX
1927f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes**  event - this helps initialization if the server supports the pbuffer
1937f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes**  extension and the client doesn't.
1947f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes*/
1957f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#define GLX_PbufferClobber	0
1967f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#define GLX_BufferSwapComplete	1
1977f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes
1987f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#define __GLX_NUMBER_EVENTS 17
199afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
200afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
201afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				     int *attribList );
202afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
203afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
204afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				    GLXContext shareList, Bool direct );
205afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
206afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXDestroyContext( Display *dpy, GLXContext ctx );
207afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
208afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
209afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg			    GLXContext ctx);
210afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
211afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
2123994b77bab8c62a4c1a4dffdfba233ef46662b99Brian Paul			    unsigned long mask );
213afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
214afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
215afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
216afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
217afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				     Pixmap pixmap );
218afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
219afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
220afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
221afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
222afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
223afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
224afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
225afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern Bool glXIsDirect( Display *dpy, GLXContext ctx );
226afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
227afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern int glXGetConfig( Display *dpy, XVisualInfo *visual,
228afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg			 int attrib, int *value );
229afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
230afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLXContext glXGetCurrentContext( void );
231afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
232afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLXDrawable glXGetCurrentDrawable( void );
233afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
234afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXWaitGL( void );
235afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
236afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXWaitX( void );
237afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
238afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void glXUseXFont( Font font, int first, int count, int list );
239afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
240afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
241afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
242afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* GLX 1.1 and later */
243afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern const char *glXQueryExtensionsString( Display *dpy, int screen );
244afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
245afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern const char *glXQueryServerString( Display *dpy, int screen, int name );
246afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
247afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern const char *glXGetClientString( Display *dpy, int name );
248afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
249afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
250bf3f9bdaae9f17de8ac82ec7789e4e689a6f67f2Brian Paul/* GLX 1.2 and later */
251bf3f9bdaae9f17de8ac82ec7789e4e689a6f67f2Brian Paulextern Display *glXGetCurrentDisplay( void );
252bf3f9bdaae9f17de8ac82ec7789e4e689a6f67f2Brian Paul
253bf3f9bdaae9f17de8ac82ec7789e4e689a6f67f2Brian Paul
254664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul/* GLX 1.3 and later */
25547e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paulextern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
25647e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul                                       const int *attribList, int *nitems );
257664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
258664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
259664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                 int attribute, int *value );
260664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
26147e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paulextern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
26247e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul                                     int *nelements );
26347e719fa44c784d60480a4096d35f9b14b70cc1fBrian Paul
264664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
265664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                              GLXFBConfig config );
266664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
267664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
268664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                  Window win, const int *attribList );
269664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
270664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern void glXDestroyWindow( Display *dpy, GLXWindow window );
271664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
272664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
273664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                  Pixmap pixmap, const int *attribList );
274664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
275664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
276664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
277664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
278664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                    const int *attribList );
279664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
280664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
281664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
282664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
283664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                              unsigned int *value );
284664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
285664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
286664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                       int renderType, GLXContext shareList,
287664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                       Bool direct );
288664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
289664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
290664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                   GLXDrawable read, GLXContext ctx );
291664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
292664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern GLXDrawable glXGetCurrentReadDrawable( void );
293664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
294664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
295664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                            int *value );
296664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
297664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
298664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                            unsigned long mask );
299664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
300664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paulextern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
301664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul                                 unsigned long *mask );
302664a1f88f2e39fa52eccd7217a1f7aaa4c48f5afBrian Paul
303239ce2240af37e768e855680777872f6f4e7b71dBrian Paul/* GLX 1.3 function pointer typedefs */
304239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
305239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
306239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
307239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
308239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
309239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
310239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
311239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
312239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
313239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
314239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
315239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
316239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
317239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
318239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void);
319239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
320239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
321239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
32243c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul
32307b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
32407b220ad46d5f30218210b5512c9037214a7ff89Brian Paul/*
325401fc936f1c368a34e285075efe4070017054a7fBrian Paul * ARB 2. GLX_ARB_get_proc_address
32607b220ad46d5f30218210b5512c9037214a7ff89Brian Paul */
327401fc936f1c368a34e285075efe4070017054a7fBrian Paul#ifndef GLX_ARB_get_proc_address
328401fc936f1c368a34e285075efe4070017054a7fBrian Paul#define GLX_ARB_get_proc_address 1
32907b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
3303e9c099088424c149931dcf546ae0a4d9ac2ae76Brian Paultypedef void (*__GLXextFuncPtr)(void);
3313e9c099088424c149931dcf546ae0a4d9ac2ae76Brian Paulextern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
33207b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
333401fc936f1c368a34e285075efe4070017054a7fBrian Paul#endif /* GLX_ARB_get_proc_address */
33407b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
33507b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
33607b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
337239ce2240af37e768e855680777872f6f4e7b71dBrian Paul/* GLX 1.4 and later */
338239ce2240af37e768e855680777872f6f4e7b71dBrian Paulextern void (*glXGetProcAddress(const GLubyte *procname))( void );
339239ce2240af37e768e855680777872f6f4e7b71dBrian Paul
340239ce2240af37e768e855680777872f6f4e7b71dBrian Paul/* GLX 1.4 function pointer typedefs */
341239ce2240af37e768e855680777872f6f4e7b71dBrian Paultypedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
342239ce2240af37e768e855680777872f6f4e7b71dBrian Paul
343239ce2240af37e768e855680777872f6f4e7b71dBrian Paul
344239ce2240af37e768e855680777872f6f4e7b71dBrian Paul#ifndef GLX_GLXEXT_LEGACY
345239ce2240af37e768e855680777872f6f4e7b71dBrian Paul
346239ce2240af37e768e855680777872f6f4e7b71dBrian Paul#include <GL/glxext.h>
347239ce2240af37e768e855680777872f6f4e7b71dBrian Paul
34823b1503d79bc148521f8cff3c7b5f5faa146d1acBrian Paul#endif /* GLX_GLXEXT_LEGACY */
34907b220ad46d5f30218210b5512c9037214a7ff89Brian Paul
350ff06c837b5c743d2fe6cec4ca3474245861b699cBrian Paul
3518455203bc7231f4ad4ee517faef3df024bf38070Brian Paul/**
3528455203bc7231f4ad4ee517faef3df024bf38070Brian Paul ** The following aren't in glxext.h yet.
3538455203bc7231f4ad4ee517faef3df024bf38070Brian Paul **/
3548455203bc7231f4ad4ee517faef3df024bf38070Brian Paul
3558455203bc7231f4ad4ee517faef3df024bf38070Brian Paul
3568455203bc7231f4ad4ee517faef3df024bf38070Brian Paul/*
3578455203bc7231f4ad4ee517faef3df024bf38070Brian Paul * ???. GLX_NV_vertex_array_range
3588455203bc7231f4ad4ee517faef3df024bf38070Brian Paul */
3598455203bc7231f4ad4ee517faef3df024bf38070Brian Paul#ifndef GLX_NV_vertex_array_range
3608455203bc7231f4ad4ee517faef3df024bf38070Brian Paul#define GLX_NV_vertex_array_range
3618455203bc7231f4ad4ee517faef3df024bf38070Brian Paul
3628455203bc7231f4ad4ee517faef3df024bf38070Brian Paulextern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
3638455203bc7231f4ad4ee517faef3df024bf38070Brian Paulextern void glXFreeMemoryNV(GLvoid *pointer);
3648455203bc7231f4ad4ee517faef3df024bf38070Brian Paultypedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
3658455203bc7231f4ad4ee517faef3df024bf38070Brian Paultypedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
3668455203bc7231f4ad4ee517faef3df024bf38070Brian Paul
3678455203bc7231f4ad4ee517faef3df024bf38070Brian Paul#endif /* GLX_NV_vertex_array_range */
3688455203bc7231f4ad4ee517faef3df024bf38070Brian Paul
3698455203bc7231f4ad4ee517faef3df024bf38070Brian Paul
370e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul/*
371e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul * ARB ?. GLX_ARB_render_texture
3723e9c099088424c149931dcf546ae0a4d9ac2ae76Brian Paul * XXX This was never finalized!
373e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul */
374e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul#ifndef GLX_ARB_render_texture
375e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul#define GLX_ARB_render_texture 1
376e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul
377e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paulextern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
378e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paulextern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
379e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paulextern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
380e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul
381e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul#endif /* GLX_ARB_render_texture */
382e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul
383e58286ccb6e47a91ea5bc06e7dc54a17b674c9c3Brian Paul
38485edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul/*
38585edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul * Remove this when glxext.h is updated.
38685edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul */
38785edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul#ifndef GLX_NV_float_buffer
38885edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul#define GLX_NV_float_buffer 1
38985edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul
39085edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul#define GLX_FLOAT_COMPONENTS_NV         0x20B0
39185edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul
39285edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul#endif /* GLX_NV_float_buffer */
39385edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul
39485edffd5fff0328f96c73615d6bf98c4516b4ee4Brian Paul
3959c32af5bb24d531d7140590085e229b7381747f8Brian Paul
3969c32af5bb24d531d7140590085e229b7381747f8Brian Paul/*
3979c32af5bb24d531d7140590085e229b7381747f8Brian Paul * #?. GLX_MESA_swap_frame_usage
3989c32af5bb24d531d7140590085e229b7381747f8Brian Paul */
3999c32af5bb24d531d7140590085e229b7381747f8Brian Paul#ifndef GLX_MESA_swap_frame_usage
4009c32af5bb24d531d7140590085e229b7381747f8Brian Paul#define GLX_MESA_swap_frame_usage 1
4019c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4029c32af5bb24d531d7140590085e229b7381747f8Brian Paulextern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
4039c32af5bb24d531d7140590085e229b7381747f8Brian Paulextern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
4049c32af5bb24d531d7140590085e229b7381747f8Brian Paulextern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
4059c32af5bb24d531d7140590085e229b7381747f8Brian Paulextern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
4069c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4079c32af5bb24d531d7140590085e229b7381747f8Brian Paultypedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
4084cbd16ed3ffecd743b4921fab3a65f8510d151c9Brian Paultypedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
4094cbd16ed3ffecd743b4921fab3a65f8510d151c9Brian Paultypedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
4104cbd16ed3ffecd743b4921fab3a65f8510d151c9Brian Paultypedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
4119c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4129c32af5bb24d531d7140590085e229b7381747f8Brian Paul#endif /* GLX_MESA_swap_frame_usage */
4139c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4149c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4159c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4169c32af5bb24d531d7140590085e229b7381747f8Brian Paul/*
4179c32af5bb24d531d7140590085e229b7381747f8Brian Paul * #?. GLX_MESA_swap_control
4189c32af5bb24d531d7140590085e229b7381747f8Brian Paul */
4199c32af5bb24d531d7140590085e229b7381747f8Brian Paul#ifndef GLX_MESA_swap_control
4209c32af5bb24d531d7140590085e229b7381747f8Brian Paul#define GLX_MESA_swap_control 1
4219c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4229c32af5bb24d531d7140590085e229b7381747f8Brian Paulextern int glXSwapIntervalMESA(unsigned int interval);
4239c32af5bb24d531d7140590085e229b7381747f8Brian Paulextern int glXGetSwapIntervalMESA(void);
4249c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4254cbd16ed3ffecd743b4921fab3a65f8510d151c9Brian Paultypedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
4264cbd16ed3ffecd743b4921fab3a65f8510d151c9Brian Paultypedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
4279c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4289c32af5bb24d531d7140590085e229b7381747f8Brian Paul#endif /* GLX_MESA_swap_control */
4299c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4309c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4319c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4329c32af5bb24d531d7140590085e229b7381747f8Brian Paul/*
4339c32af5bb24d531d7140590085e229b7381747f8Brian Paul * #?. GLX_EXT_texture_from_pixmap
4349c32af5bb24d531d7140590085e229b7381747f8Brian Paul * XXX not finished?
4359c32af5bb24d531d7140590085e229b7381747f8Brian Paul */
4369c32af5bb24d531d7140590085e229b7381747f8Brian Paul#ifndef GLX_EXT_texture_from_pixmap
4379c32af5bb24d531d7140590085e229b7381747f8Brian Paul#define GLX_EXT_texture_from_pixmap 1
4389c32af5bb24d531d7140590085e229b7381747f8Brian Paul
439efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
440efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
441efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
442efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
443efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_Y_INVERTED_EXT                 0x20D4
444efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul
445efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_FORMAT_EXT             0x20D5
446efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_TARGET_EXT             0x20D6
447efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_MIPMAP_TEXTURE_EXT             0x20D7
448efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul
449efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_FORMAT_NONE_EXT        0x20D8
450efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_FORMAT_RGB_EXT         0x20D9
451efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_FORMAT_RGBA_EXT        0x20DA
452efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul
453efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_1D_BIT_EXT             0x00000001
454efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_2D_BIT_EXT             0x00000002
455efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
456efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul
457efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_1D_EXT                 0x20DB
458efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_2D_EXT                 0x20DC
459efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_TEXTURE_RECTANGLE_EXT          0x20DD
460efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul
461efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_FRONT_LEFT_EXT                 0x20DE
462efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_FRONT_RIGHT_EXT                0x20DF
463efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BACK_LEFT_EXT                  0x20E0
464efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BACK_RIGHT_EXT                 0x20E1
465efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_FRONT_EXT                      GLX_FRONT_LEFT_EXT
466efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_BACK_EXT                       GLX_BACK_LEFT_EXT
467efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX0_EXT                       0x20E2
468efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX1_EXT                       0x20E3
469efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX2_EXT                       0x20E4
470efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX3_EXT                       0x20E5
471efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX4_EXT                       0x20E6
472efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX5_EXT                       0x20E7
473efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX6_EXT                       0x20E8
474efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX7_EXT                       0x20E9
475efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX8_EXT                       0x20EA
476efbf170cfbb0ad8ad8a480a0be581b0908b53138Brian Paul#define GLX_AUX9_EXT                       0x20EB
4779c32af5bb24d531d7140590085e229b7381747f8Brian Paul
478015762455764e3b467f0df769d51d0ed0ea3ee2cAdam Jacksonextern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
479015762455764e3b467f0df769d51d0ed0ea3ee2cAdam Jacksonextern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
4809c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4819c32af5bb24d531d7140590085e229b7381747f8Brian Paul#endif /* GLX_EXT_texture_from_pixmap */
4829c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4839c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4849c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4859c32af5bb24d531d7140590085e229b7381747f8Brian Paul
4869bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie/*** Should these go here, or in another header? */
4879bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie/*
4889bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie** GLX Events
4899bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie*/
4909bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlietypedef struct {
4919bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    int event_type;		/* GLX_DAMAGED or GLX_SAVED */
4929bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    int draw_type;		/* GLX_WINDOW or GLX_PBUFFER */
4939bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    unsigned long serial;	/* # of last request processed by server */
4949bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    Bool send_event;		/* true if this came for SendEvent request */
4959bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    Display *display;		/* display the event was read from */
4969bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    GLXDrawable drawable;	/* XID of Drawable */
4979bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    unsigned int buffer_mask;	/* mask indicating which buffers are affected */
4989bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    unsigned int aux_buffer;	/* which aux buffer was affected */
4999bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    int x, y;
5009bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    int width, height;
5019bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    int count;			/* if nonzero, at least this many more */
5029bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie} GLXPbufferClobberEvent;
5039bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie
5047f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnestypedef struct {
5057a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72Robert Bragg    int type;
5067a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72Robert Bragg    unsigned long serial;	/* # of last request processed by server */
5077a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72Robert Bragg    Bool send_event;		/* true if this came from a SendEvent request */
5087a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72Robert Bragg    Display *display;		/* Display the event was read from */
5097a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72Robert Bragg    GLXDrawable drawable;	/* drawable on which event was requested in event mask */
5107f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes    int event_type;
5117f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes    int64_t ust;
5127f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes    int64_t msc;
5137f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes    int64_t sbc;
5147f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes} GLXBufferSwapComplete;
5157f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes
5169bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlietypedef union __GLXEvent {
5179bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    GLXPbufferClobberEvent glxpbufferclobber;
5187f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes    GLXBufferSwapComplete glxbufferswapcomplete;
5199bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie    long pad[24];
5209bfd9582d418c7e73f7b66f050fac80bd3e04115Dave Airlie} GLXEvent;
521afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
522afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifdef __cplusplus
523afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg}
524afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
525afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
526afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
527