1 #ifndef __gl_core_h_
2 #define __gl_core_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 #if !defined(_WIN32_WCE)
35 #include <sys/types.h>
36 #endif
37 
38 #define GL_CORE_SGI  1
39 #define GL_CORE_MESA 2
40 #define GL_CORE_APPLE 4
41 #define GL_CORE_WINDOWS 8
42 
43 typedef struct __GLcontextRec __GLcontext;
44 
45 /*
46 ** This file defines the interface between the GL core and the surrounding
47 ** "operating system" that supports it (currently the GLX or WGL extensions).
48 **
49 ** Members (data and function pointers) are documented as imported or
50 ** exported according to how they are used by the core rendering functions.
51 ** Imported members are initialized by the "operating system" and used by
52 ** the core functions.  Exported members are initialized by the core functions
53 ** and used by the "operating system".
54 */
55 
56 /**
57  * Mode and limit information for a context.  This information is
58  * kept around in the context so that values can be used during
59  * command execution, and for returning information about the
60  * context to the application.
61  *
62  * Instances of this structure are shared by the driver and the loader.  To
63  * maintain binary compatability, new fields \b must be added only to the
64  * end of the structure.
65  *
66  * \sa _gl_context_modes_create
67  */
68 typedef struct __GLcontextModesRec {
69     struct __GLcontextModesRec * next;
70 
71     GLboolean rgbMode;
72     GLboolean floatMode;
73     GLboolean colorIndexMode;
74     GLuint doubleBufferMode;
75     GLuint stereoMode;
76 
77     GLboolean haveAccumBuffer;
78     GLboolean haveDepthBuffer;
79     GLboolean haveStencilBuffer;
80 
81     GLint redBits, greenBits, blueBits, alphaBits;	/* bits per comp */
82     GLuint redMask, greenMask, blueMask, alphaMask;
83     GLint rgbBits;		/* total bits for rgb */
84     GLint indexBits;		/* total bits for colorindex */
85 
86     GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
87     GLint depthBits;
88     GLint stencilBits;
89 
90     GLint numAuxBuffers;
91 
92     GLint level;
93 
94     GLint pixmapMode;
95 
96     /* GLX */
97     GLint visualID;
98     GLint visualType;     /**< One of the GLX X visual types. (i.e.,
99 			   * \c GLX_TRUE_COLOR, etc.)
100 			   */
101 
102     /* EXT_visual_rating / GLX 1.2 */
103     GLint visualRating;
104 
105     /* EXT_visual_info / GLX 1.2 */
106     GLint transparentPixel;
107 				/*    colors are floats scaled to ints */
108     GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
109     GLint transparentIndex;
110 
111     /* ARB_multisample / SGIS_multisample */
112     GLint sampleBuffers;
113     GLint samples;
114 
115     /* SGIX_fbconfig / GLX 1.3 */
116     GLint drawableType;
117     GLint renderType;
118     GLint xRenderable;
119     GLint fbconfigID;
120 
121     /* SGIX_pbuffer / GLX 1.3 */
122     GLint maxPbufferWidth;
123     GLint maxPbufferHeight;
124     GLint maxPbufferPixels;
125     GLint optimalPbufferWidth;   /* Only for SGIX_pbuffer. */
126     GLint optimalPbufferHeight;  /* Only for SGIX_pbuffer. */
127 
128     /* SGIX_visual_select_group */
129     GLint visualSelectGroup;
130 
131     /* OML_swap_method */
132     GLint swapMethod;
133 
134     GLint screen;
135 
136     /* EXT_texture_from_pixmap */
137     GLint bindToTextureRgb;
138     GLint bindToTextureRgba;
139     GLint bindToMipmapTexture;
140     GLint bindToTextureTargets;
141     GLint yInverted;
142 } __GLcontextModes;
143 
144 /* Several fields of __GLcontextModes can take these as values.  Since
145  * GLX header files may not be available everywhere they need to be used,
146  * redefine them here.
147  */
148 #define GLX_NONE                           0x8000
149 #define GLX_SLOW_CONFIG                    0x8001
150 #define GLX_TRUE_COLOR                     0x8002
151 #define GLX_DIRECT_COLOR                   0x8003
152 #define GLX_PSEUDO_COLOR                   0x8004
153 #define GLX_STATIC_COLOR                   0x8005
154 #define GLX_GRAY_SCALE                     0x8006
155 #define GLX_STATIC_GRAY                    0x8007
156 #define GLX_TRANSPARENT_RGB                0x8008
157 #define GLX_TRANSPARENT_INDEX              0x8009
158 #define GLX_NON_CONFORMANT_CONFIG          0x800D
159 #define GLX_SWAP_EXCHANGE_OML              0x8061
160 #define GLX_SWAP_COPY_OML                  0x8062
161 #define GLX_SWAP_UNDEFINED_OML             0x8063
162 
163 #define GLX_DONT_CARE                      0xFFFFFFFF
164 
165 #define GLX_RGBA_BIT                       0x00000001
166 #define GLX_COLOR_INDEX_BIT                0x00000002
167 #define GLX_WINDOW_BIT                     0x00000001
168 #define GLX_PIXMAP_BIT                     0x00000002
169 #define GLX_PBUFFER_BIT                    0x00000004
170 
171 #define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
172 #define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
173 #define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
174 #define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
175 #define GLX_Y_INVERTED_EXT                 0x20D4
176 
177 #define GLX_TEXTURE_1D_BIT_EXT             0x00000001
178 #define GLX_TEXTURE_2D_BIT_EXT             0x00000002
179 #define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
180 
181 #endif /* __gl_core_h_ */
182