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