178477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell#ifndef __gl_core_h_
278477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell#define __gl_core_h_
378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
478477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell/*
5dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
6dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
7dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson *
8dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * Permission is hereby granted, free of charge, to any person obtaining a
9dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * copy of this software and associated documentation files (the "Software"),
10dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * to deal in the Software without restriction, including without limitation
11dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * and/or sell copies of the Software, and to permit persons to whom the
13dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * Software is furnished to do so, subject to the following conditions:
14dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson *
15dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * The above copyright notice including the dates of first publication and
16dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * either this permission notice or a reference to
17dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * http://oss.sgi.com/projects/FreeB/
18dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * shall be included in all copies or substantial portions of the Software.
19dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson *
20dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
25dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * SOFTWARE.
27dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson *
28dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * Except as contained in this notice, the name of Silicon Graphics, Inc.
29dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * shall not be used in advertising or otherwise to promote the sale, use or
30dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * other dealings in this Software without prior written authorization from
31dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson * Silicon Graphics, Inc.
32dc8058c3370588bfcad49fadace1691da47d58cdAdam Jackson */
3378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
34543bba6ee3a1b3a947d1dfaca75e820ef7b98843José Fonseca#if !defined(_WIN32_WCE)
3578477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell#include <sys/types.h>
36543bba6ee3a1b3a947d1dfaca75e820ef7b98843José Fonseca#endif
3778477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
3878477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell#define GL_CORE_SGI  1
3978477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell#define GL_CORE_MESA 2
403eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane#define GL_CORE_APPLE 4
41fe20ac2a6b6bb7dee927ee4040debf16e514a858George Sapountzis#define GL_CORE_WINDOWS 8
4278477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
4378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwelltypedef struct __GLcontextRec __GLcontext;
4478477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
4578477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell/*
4678477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** This file defines the interface between the GL core and the surrounding
4778477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** "operating system" that supports it (currently the GLX or WGL extensions).
4878477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell**
4978477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** Members (data and function pointers) are documented as imported or
5078477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** exported according to how they are used by the core rendering functions.
5178477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** Imported members are initialized by the "operating system" and used by
5278477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** the core functions.  Exported members are initialized by the core functions
5378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell** and used by the "operating system".
5478477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell*/
5578477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
5656f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick/**
5756f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * Mode and limit information for a context.  This information is
5856f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * kept around in the context so that values can be used during
5956f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * command execution, and for returning information about the
6056f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * context to the application.
6156f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick *
6256f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * Instances of this structure are shared by the driver and the loader.  To
6356f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * maintain binary compatability, new fields \b must be added only to the
6456f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * end of the structure.
6556f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick *
6656f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick * \sa _gl_context_modes_create
6756f349515c75a93923255ba1eb7cdae67b432a53Ian Romanick */
6878477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwelltypedef struct __GLcontextModesRec {
693eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    struct __GLcontextModesRec * next;
703eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
7178477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLboolean rgbMode;
723eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLboolean floatMode;
7378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLboolean colorIndexMode;
743eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLuint doubleBufferMode;
753eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLuint stereoMode;
7678477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
7778477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLboolean haveAccumBuffer;
7878477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLboolean haveDepthBuffer;
7978477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLboolean haveStencilBuffer;
8078477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
8178477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint redBits, greenBits, blueBits, alphaBits;	/* bits per comp */
8278477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLuint redMask, greenMask, blueMask, alphaMask;
8378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint rgbBits;		/* total bits for rgb */
8478477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint indexBits;		/* total bits for colorindex */
8578477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
8678477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
8778477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint depthBits;
8878477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint stencilBits;
8978477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
9078477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint numAuxBuffers;
9178477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
9278477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint level;
9378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
9478477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell    GLint pixmapMode;
953eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
963eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* GLX */
973eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint visualID;
983eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint visualType;     /**< One of the GLX X visual types. (i.e.,
993eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane			   * \c GLX_TRUE_COLOR, etc.)
1003eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane			   */
1013eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1023eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* EXT_visual_rating / GLX 1.2 */
1033eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint visualRating;
1043eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1053eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* EXT_visual_info / GLX 1.2 */
1063eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint transparentPixel;
1073eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane				/*    colors are floats scaled to ints */
1083eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
1093eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint transparentIndex;
1103eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1113eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* ARB_multisample / SGIS_multisample */
1123eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint sampleBuffers;
1133eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint samples;
1143eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1153eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* SGIX_fbconfig / GLX 1.3 */
1163eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint drawableType;
1173eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint renderType;
1183eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint xRenderable;
1193eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint fbconfigID;
1203eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1213eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* SGIX_pbuffer / GLX 1.3 */
1223eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint maxPbufferWidth;
1233eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint maxPbufferHeight;
1243eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint maxPbufferPixels;
1253eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint optimalPbufferWidth;   /* Only for SGIX_pbuffer. */
1263eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint optimalPbufferHeight;  /* Only for SGIX_pbuffer. */
1273eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1283eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* SGIX_visual_select_group */
1293eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint visualSelectGroup;
1303eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1313eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    /* OML_swap_method */
1323eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint swapMethod;
1333eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane
1343eb58b4c1eb85ad2a68e7d4aed523026d8c7bbf8Alan Hourihane    GLint screen;
135ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman
136ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman    /* EXT_texture_from_pixmap */
137ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman    GLint bindToTextureRgb;
138ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman    GLint bindToTextureRgba;
139ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman    GLint bindToMipmapTexture;
140ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman    GLint bindToTextureTargets;
141ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman    GLint yInverted;
14278477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell} __GLcontextModes;
14378477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell
144e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick/* Several fields of __GLcontextModes can take these as values.  Since
145e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick * GLX header files may not be available everywhere they need to be used,
146e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick * redefine them here.
147e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick */
148e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_NONE                           0x8000
149e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_SLOW_CONFIG                    0x8001
150e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_TRUE_COLOR                     0x8002
151e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_DIRECT_COLOR                   0x8003
152e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_PSEUDO_COLOR                   0x8004
153e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_STATIC_COLOR                   0x8005
154e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_GRAY_SCALE                     0x8006
155e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_STATIC_GRAY                    0x8007
156e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_TRANSPARENT_RGB                0x8008
157e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_TRANSPARENT_INDEX              0x8009
158e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_NON_CONFORMANT_CONFIG          0x800D
159e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_SWAP_EXCHANGE_OML              0x8061
160e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_SWAP_COPY_OML                  0x8062
161e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_SWAP_UNDEFINED_OML             0x8063
162e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick
163e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_DONT_CARE                      0xFFFFFFFF
164e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick
165e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_RGBA_BIT                       0x00000001
166e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_COLOR_INDEX_BIT                0x00000002
167e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_WINDOW_BIT                     0x00000001
168e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_PIXMAP_BIT                     0x00000002
169e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick#define GLX_PBUFFER_BIT                    0x00000004
170e1a7f31c2b47e053ad70f5c4c519e294c273724cIan Romanick
171bea7fe57c1f9720ea70654e8302d143579caa39aDavid Reveman#define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
172bea7fe57c1f9720ea70654e8302d143579caa39aDavid Reveman#define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
173bea7fe57c1f9720ea70654e8302d143579caa39aDavid Reveman#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
174bea7fe57c1f9720ea70654e8302d143579caa39aDavid Reveman#define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
175bea7fe57c1f9720ea70654e8302d143579caa39aDavid Reveman#define GLX_Y_INVERTED_EXT                 0x20D4
176ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman
177ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman#define GLX_TEXTURE_1D_BIT_EXT             0x00000001
178ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman#define GLX_TEXTURE_2D_BIT_EXT             0x00000002
179ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman#define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
180ba23f699f03e45a7519cb41cc853deba686ff8d9David Reveman
18178477947de9c8a69bd4beec2ef24abd0d142d080Keith Whitwell#endif /* __gl_core_h_ */
182