1#ifndef __GLX_glxtokens_h__
2#define __GLX_glxtokens_h__
3
4/*
5 * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
6 * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice including the dates of first publication and
16 * either this permission notice or a reference to
17 * http://oss.sgi.com/projects/FreeB/
18 * shall be included in all copies or substantial portions of the Software.
19 *
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23 * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
25 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 * SOFTWARE.
27 *
28 * Except as contained in this notice, the name of Silicon Graphics, Inc.
29 * shall not be used in advertising or otherwise to promote the sale, use or
30 * other dealings in this Software without prior written authorization from
31 * Silicon Graphics, Inc.
32 */
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38#define GLX_VERSION_1_1 1
39#define GLX_VERSION_1_2 1
40#define GLX_VERSION_1_3 1
41#define GLX_VERSION_1_4 1
42
43/*
44** Visual Config Attributes (glXGetConfig, glXGetFBConfigAttrib)
45*/
46#define GLX_USE_GL		1	/* support GLX rendering */
47#define GLX_BUFFER_SIZE		2	/* depth of the color buffer */
48#define GLX_LEVEL		3	/* level in plane stacking */
49#define GLX_RGBA		4	/* true if RGBA mode */
50#define GLX_DOUBLEBUFFER	5	/* double buffering supported */
51#define GLX_STEREO		6	/* stereo buffering supported */
52#define GLX_AUX_BUFFERS		7	/* number of aux buffers */
53#define GLX_RED_SIZE		8	/* number of red component bits */
54#define GLX_GREEN_SIZE		9	/* number of green component bits */
55#define GLX_BLUE_SIZE		10	/* number of blue component bits */
56#define GLX_ALPHA_SIZE		11	/* number of alpha component bits */
57#define GLX_DEPTH_SIZE		12	/* number of depth bits */
58#define GLX_STENCIL_SIZE	13	/* number of stencil bits */
59#define GLX_ACCUM_RED_SIZE	14	/* number of red accum bits */
60#define GLX_ACCUM_GREEN_SIZE	15	/* number of green accum bits */
61#define GLX_ACCUM_BLUE_SIZE	16	/* number of blue accum bits */
62#define GLX_ACCUM_ALPHA_SIZE	17	/* number of alpha accum bits */
63/*
64** FBConfig-specific attributes
65*/
66#define GLX_X_VISUAL_TYPE		0x22
67#define GLX_CONFIG_CAVEAT		0x20	/* Like visual_info VISUAL_CAVEAT_EXT */
68#define GLX_TRANSPARENT_TYPE		0x23
69#define GLX_TRANSPARENT_INDEX_VALUE	0x24
70#define GLX_TRANSPARENT_RED_VALUE	0x25
71#define GLX_TRANSPARENT_GREEN_VALUE	0x26
72#define GLX_TRANSPARENT_BLUE_VALUE	0x27
73#define GLX_TRANSPARENT_ALPHA_VALUE	0x28
74#define GLX_DRAWABLE_TYPE		0x8010
75#define GLX_RENDER_TYPE			0x8011
76#define GLX_X_RENDERABLE		0x8012
77#define GLX_FBCONFIG_ID			0x8013
78#define GLX_MAX_PBUFFER_WIDTH		0x8016
79#define GLX_MAX_PBUFFER_HEIGHT		0x8017
80#define GLX_MAX_PBUFFER_PIXELS		0x8018
81#define GLX_VISUAL_ID			0x800B
82
83/* FBConfigSGIX Attributes */
84#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX	0x8019
85#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX	0x801A
86
87/*
88** Error return values from glXGetConfig.  Success is indicated by
89** a value of 0.
90*/
91#define GLX_BAD_SCREEN		1	/* screen # is bad */
92#define GLX_BAD_ATTRIBUTE	2	/* attribute to get is bad */
93#define GLX_NO_EXTENSION	3	/* no glx extension on server */
94#define GLX_BAD_VISUAL		4	/* visual # not known by GLX */
95#define GLX_BAD_CONTEXT		5	/* returned only by import_context EXT? */
96#define GLX_BAD_VALUE		6	/* returned only by glXSwapIntervalSGI? */
97#define GLX_BAD_ENUM		7	/* unused? */
98
99/* FBConfig attribute values */
100
101/*
102** Generic "don't care" value for glX ChooseFBConfig attributes (except
103** GLX_LEVEL)
104*/
105#define GLX_DONT_CARE			0xFFFFFFFF
106
107/* GLX_RENDER_TYPE bits */
108#define GLX_RGBA_BIT			0x00000001
109#define GLX_COLOR_INDEX_BIT		0x00000002
110#define GLX_RGBA_FLOAT_BIT_ARB          0x00000004
111#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008
112
113/* GLX_DRAWABLE_TYPE bits */
114#define GLX_WINDOW_BIT			0x00000001
115#define GLX_PIXMAP_BIT			0x00000002
116#define GLX_PBUFFER_BIT			0x00000004
117
118/* GLX_CONFIG_CAVEAT attribute values */
119#define GLX_NONE			0x8000
120#define GLX_SLOW_CONFIG			0x8001
121#define GLX_NON_CONFORMANT_CONFIG	0x800D
122
123/* GLX_X_VISUAL_TYPE attribute values */
124#define GLX_TRUE_COLOR			0x8002
125#define GLX_DIRECT_COLOR		0x8003
126#define GLX_PSEUDO_COLOR		0x8004
127#define GLX_STATIC_COLOR		0x8005
128#define GLX_GRAY_SCALE			0x8006
129#define GLX_STATIC_GRAY			0x8007
130
131/* GLX_TRANSPARENT_TYPE attribute values */
132/* #define GLX_NONE			   0x8000 */
133#define GLX_TRANSPARENT_RGB		0x8008
134#define GLX_TRANSPARENT_INDEX		0x8009
135
136/* glXCreateGLXPbuffer attributes */
137#define GLX_PRESERVED_CONTENTS		0x801B
138#define GLX_LARGEST_PBUFFER		0x801C
139#define GLX_PBUFFER_HEIGHT		0x8040	/* New for GLX 1.3 */
140#define GLX_PBUFFER_WIDTH		0x8041	/* New for GLX 1.3 */
141
142/* glXQueryGLXPBuffer attributes */
143#define GLX_WIDTH			0x801D
144#define GLX_HEIGHT			0x801E
145#define GLX_EVENT_MASK			0x801F
146
147/* glXCreateNewContext render_type attribute values */
148#define GLX_RGBA_TYPE			0x8014
149#define GLX_COLOR_INDEX_TYPE		0x8015
150
151/* glXQueryContext attributes */
152/* #define GLX_FBCONFIG_ID		  0x8013 */
153/* #define GLX_RENDER_TYPE		  0x8011 */
154#define GLX_SCREEN			0x800C
155
156/* glXSelectEvent event mask bits */
157#define GLX_PBUFFER_CLOBBER_MASK	0x08000000
158#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK	0x04000000
159
160/* GLXPbufferClobberEvent event_type values */
161#define GLX_DAMAGED			0x8020
162#define GLX_SAVED			0x8021
163#define GLX_EXCHANGE_COMPLETE_INTEL	0x8180
164#define GLX_BLIT_COMPLETE_INTEL		0x8181
165#define GLX_FLIP_COMPLETE_INTEL		0x8182
166
167/* GLXPbufferClobberEvent draw_type values */
168#define GLX_WINDOW			0x8022
169#define GLX_PBUFFER			0x8023
170
171/* GLXPbufferClobberEvent buffer_mask bits */
172#define GLX_FRONT_LEFT_BUFFER_BIT	0x00000001
173#define GLX_FRONT_RIGHT_BUFFER_BIT	0x00000002
174#define GLX_BACK_LEFT_BUFFER_BIT	0x00000004
175#define GLX_BACK_RIGHT_BUFFER_BIT	0x00000008
176#define GLX_AUX_BUFFERS_BIT		0x00000010
177#define GLX_DEPTH_BUFFER_BIT		0x00000020
178#define GLX_STENCIL_BUFFER_BIT		0x00000040
179#define GLX_ACCUM_BUFFER_BIT		0x00000080
180
181/*
182** Extension return values from glXGetConfig.  These are also
183** accepted as parameter values for glXChooseVisual.
184*/
185
186#define GLX_X_VISUAL_TYPE_EXT	0x22	/* visual_info extension type */
187#define GLX_TRANSPARENT_TYPE_EXT 0x23	/* visual_info extension */
188#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24	/* visual_info extension */
189#define GLX_TRANSPARENT_RED_VALUE_EXT	0x25	/* visual_info extension */
190#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26	/* visual_info extension */
191#define GLX_TRANSPARENT_BLUE_VALUE_EXT	0x27	/* visual_info extension */
192#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28	/* visual_info extension */
193
194/* Property values for visual_type */
195#define GLX_TRUE_COLOR_EXT	0x8002
196#define GLX_DIRECT_COLOR_EXT	0x8003
197#define GLX_PSEUDO_COLOR_EXT	0x8004
198#define GLX_STATIC_COLOR_EXT	0x8005
199#define GLX_GRAY_SCALE_EXT	0x8006
200#define GLX_STATIC_GRAY_EXT	0x8007
201
202/* Property values for transparent pixel */
203#define GLX_NONE_EXT		0x8000
204#define GLX_TRANSPARENT_RGB_EXT		0x8008
205#define GLX_TRANSPARENT_INDEX_EXT	0x8009
206
207/* Property values for visual_rating */
208#define GLX_VISUAL_CAVEAT_EXT		0x20  /* visual_rating extension type */
209#define GLX_SLOW_VISUAL_EXT		0x8001
210#define GLX_NON_CONFORMANT_VISUAL_EXT	0x800D
211
212/* Property values for swap method (GLX_OML_swap_method) */
213#define GLX_SWAP_METHOD_OML                0x8060
214#define GLX_SWAP_EXCHANGE_OML              0x8061
215#define GLX_SWAP_COPY_OML                  0x8062
216#define GLX_SWAP_UNDEFINED_OML             0x8063
217
218/* Property values for multi-sampling */
219#define GLX_VISUAL_SELECT_GROUP_SGIX	0x8028	/* visuals grouped by select priority */
220
221/*
222** Names for attributes to glXGetClientString.
223*/
224#define GLX_VENDOR		0x1
225#define GLX_VERSION		0x2
226#define GLX_EXTENSIONS		0x3
227
228/*
229** Names for attributes to glXQueryContextInfoEXT.
230*/
231#define GLX_SHARE_CONTEXT_EXT	0x800A	/* id of share context */
232#define GLX_VISUAL_ID_EXT	0x800B	/* id of context's visual */
233#define GLX_SCREEN_EXT		0x800C	/* screen number */
234
235/*
236** GLX_EXT_texture_from_pixmap
237*/
238#define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
239#define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
240#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
241#define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
242#define GLX_Y_INVERTED_EXT                 0x20D4
243
244#define GLX_TEXTURE_FORMAT_EXT             0x20D5
245#define GLX_TEXTURE_TARGET_EXT             0x20D6
246#define GLX_MIPMAP_TEXTURE_EXT             0x20D7
247
248#define GLX_TEXTURE_FORMAT_NONE_EXT        0x20D8
249#define GLX_TEXTURE_FORMAT_RGB_EXT         0x20D9
250#define GLX_TEXTURE_FORMAT_RGBA_EXT        0x20DA
251
252#define GLX_TEXTURE_1D_BIT_EXT             0x00000001
253#define GLX_TEXTURE_2D_BIT_EXT             0x00000002
254#define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
255
256#define GLX_TEXTURE_1D_EXT                 0x20DB
257#define GLX_TEXTURE_2D_EXT                 0x20DC
258#define GLX_TEXTURE_RECTANGLE_EXT          0x20DD
259
260#define GLX_FRONT_LEFT_EXT                 0x20DE
261#define GLX_FRONT_RIGHT_EXT                0x20DF
262#define GLX_BACK_LEFT_EXT                  0x20E0
263#define GLX_BACK_RIGHT_EXT                 0x20E1
264#define GLX_FRONT_EXT                      GLX_FRONT_LEFT_EXT
265#define GLX_BACK_EXT                       GLX_BACK_LEFT_EXT
266#define GLX_AUX0_EXT                       0x20E2
267#define GLX_AUX1_EXT                       0x20E3
268#define GLX_AUX2_EXT                       0x20E4
269#define GLX_AUX3_EXT                       0x20E5
270#define GLX_AUX4_EXT                       0x20E6
271#define GLX_AUX5_EXT                       0x20E7
272#define GLX_AUX6_EXT                       0x20E8
273#define GLX_AUX7_EXT                       0x20E9
274#define GLX_AUX8_EXT                       0x20EA
275#define GLX_AUX9_EXT                       0x20EB
276
277/*
278 * GLX 1.4 and later:
279 */
280#define GLX_SAMPLE_BUFFERS_SGIS            100000
281#define GLX_SAMPLES_SGIS                   100001
282
283/*
284 * GLX_EXT_framebuffer_SRGB
285 */
286#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT   0x20B2
287
288/*
289 * GLX_ARB_create_context
290 * GLX_ARB_create_context_profile
291 * GLX_EXT_create_context_es2_profile
292 */
293#define GLX_CONTEXT_MAJOR_VERSION_ARB      0x2091
294#define GLX_CONTEXT_MINOR_VERSION_ARB      0x2092
295#define GLX_CONTEXT_FLAGS_ARB              0x2094
296#define GLX_CONTEXT_PROFILE_MASK_ARB       0x9126
297
298#define GLX_CONTEXT_DEBUG_BIT_ARB          0x0001
299#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB          0x0002
300
301#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB   0x0001
302#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB   0x0002
303#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT    0x0004
304
305/*
306 * GLX_ARB_create_context_robustness
307 */
308#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB  0x0004
309#define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
310#define GLX_NO_RESET_NOTIFICATION_ARB      0x8261
311#define GLX_LOSE_CONTEXT_ON_RESET_ARB      0x8252
312#ifdef __cplusplus
313}
314#endif
315
316#endif /* !__GLX_glxtokens_h__ */
317