1680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell/* 2680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * (C) Copyright IBM Corporation 2003 3680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * All Rights Reserved. 4680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * 5680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a 6680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * copy of this software and associated documentation files (the "Software"), 7680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * to deal in the Software without restriction, including without limitation 8680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * on the rights to use, copy, modify, merge, publish, distribute, sub 9680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * license, and/or sell copies of the Software, and to permit persons to whom 10680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * the Software is furnished to do so, subject to the following conditions: 11680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * 12680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * The above copyright notice and this permission notice (including the next 13680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * paragraph) shall be included in all copies or substantial portions of the 14680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * Software. 15680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * 16680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 19680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 20680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 21680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 22680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * USE OR OTHER DEALINGS IN THE SOFTWARE. 23680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell */ 24680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell 25680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell/** 26680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * \file glcontextmodes.h 27680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell * \author Ian Romanick <idr@us.ibm.com> 28680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell */ 29680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell 30680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell#ifndef GLCONTEXTMODES_H 31680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell#define GLCONTEXTMODES_H 32680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell 336ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergstruct glx_config { 346ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsberg struct glx_config * next; 3538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 3638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLboolean rgbMode; 3738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLboolean floatMode; 3838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLboolean colorIndexMode; 3938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLuint doubleBufferMode; 4038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLuint stereoMode; 4138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 4238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ 4338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLuint redMask, greenMask, blueMask, alphaMask; 4438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint rgbBits; /* total bits for rgb */ 4538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint indexBits; /* total bits for colorindex */ 4638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 4738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; 4838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint depthBits; 4938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint stencilBits; 5038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 5138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint numAuxBuffers; 5238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 5338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint level; 5438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 5538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint pixmapMode; 5638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 5738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* GLX */ 5838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint visualID; 5938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint visualType; /**< One of the GLX X visual types. (i.e., 6038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg * \c GLX_TRUE_COLOR, etc.) 6138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg */ 6238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 6338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* EXT_visual_rating / GLX 1.2 */ 6438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint visualRating; 6538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 6638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* EXT_visual_info / GLX 1.2 */ 6738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint transparentPixel; 6838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* colors are floats scaled to ints */ 6938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; 7038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint transparentIndex; 7138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 7238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* ARB_multisample / SGIS_multisample */ 7338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint sampleBuffers; 7438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint samples; 7538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 7638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* SGIX_fbconfig / GLX 1.3 */ 7738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint drawableType; 7838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint renderType; 7938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint xRenderable; 8038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint fbconfigID; 8138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 8238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* SGIX_pbuffer / GLX 1.3 */ 8338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint maxPbufferWidth; 8438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint maxPbufferHeight; 8538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint maxPbufferPixels; 8638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ 8738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ 8838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 8938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* SGIX_visual_select_group */ 9038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint visualSelectGroup; 9138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 9238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* OML_swap_method */ 9338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint swapMethod; 9438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 9538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint screen; 9638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 9738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg /* EXT_texture_from_pixmap */ 9838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint bindToTextureRgb; 9938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint bindToTextureRgba; 10038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint bindToMipmapTexture; 10138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint bindToTextureTargets; 10238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg GLint yInverted; 103b09b3e5c8f4f5d71b986bf359b56e7b60424538dDave Airlie 104b09b3e5c8f4f5d71b986bf359b56e7b60424538dDave Airlie /* EXT_framebuffer_sRGB */ 1056538b5824e298eaebede2d9686c7607c44ab446aDave Airlie GLint sRGBCapable; 1066ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsberg}; 10738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 10838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg#define __GLX_MIN_CONFIG_PROPS 18 10938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg#define __GLX_MAX_CONFIG_PROPS 500 11038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg#define __GLX_EXT_CONFIG_PROPS 10 11138765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg 11238765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg/* 11338765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg** Since we send all non-core visual properties as token, value pairs, 11438765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg** we require 2 words across the wire. In order to maintain backwards 11538765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg** compatibility, we need to send the total number of words that the 11638765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg** VisualConfigs are sent back in so old libraries can simply "ignore" 11738765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg** the new properties. 11838765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg*/ 11938765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg#define __GLX_TOTAL_CONFIG \ 12038765fe4c2ba96e642510eaed0c2f8c44f0c2b1dKristian Høgsberg (__GLX_MIN_CONFIG_PROPS + 2 * __GLX_EXT_CONFIG_PROPS) 121680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell 12203b471d389e290ad983e86e7acf5f9644ea783ebRALOVICH, Kristófextern GLint _gl_convert_from_x_visual_type(int visualType); 1236ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsberg 1246ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergextern int 1256ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergglx_config_get(struct glx_config * mode, int attribute, int *value_return); 1266ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergextern struct glx_config * 1276ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergglx_config_create_list(unsigned count); 1286ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergextern void 1296ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergglx_config_destroy_list(struct glx_config *configs); 1306ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergextern struct glx_config * 1316ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergglx_config_find_visual(struct glx_config *configs, int vid); 1326ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergextern struct glx_config * 1336ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsbergglx_config_find_fbconfig(struct glx_config *configs, int fbid); 134680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell 135680ec7f85158eae58fd5ab56da8c66a645883cb0Keith Whitwell#endif /* GLCONTEXTMODES_H */ 1366ddf66e9230ee862ac341c4767cf6b3b2dd2552bKristian Høgsberg 137