1848b8605Smrg/* 2848b8605Smrg * (C) Copyright IBM Corporation 2003 3848b8605Smrg * All Rights Reserved. 4848b8605Smrg * 5848b8605Smrg * Permission is hereby granted, free of charge, to any person obtaining a 6848b8605Smrg * copy of this software and associated documentation files (the "Software"), 7848b8605Smrg * to deal in the Software without restriction, including without limitation 8848b8605Smrg * on the rights to use, copy, modify, merge, publish, distribute, sub 9848b8605Smrg * license, and/or sell copies of the Software, and to permit persons to whom 10848b8605Smrg * the Software is furnished to do so, subject to the following conditions: 11848b8605Smrg * 12848b8605Smrg * The above copyright notice and this permission notice (including the next 13848b8605Smrg * paragraph) shall be included in all copies or substantial portions of the 14848b8605Smrg * Software. 15848b8605Smrg * 16848b8605Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17848b8605Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18848b8605Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 19848b8605Smrg * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 20848b8605Smrg * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 21848b8605Smrg * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 22848b8605Smrg * USE OR OTHER DEALINGS IN THE SOFTWARE. 23848b8605Smrg */ 24848b8605Smrg 25848b8605Smrg/** 26848b8605Smrg * \file glcontextmodes.h 27848b8605Smrg * \author Ian Romanick <idr@us.ibm.com> 28848b8605Smrg */ 29848b8605Smrg 30848b8605Smrg#ifndef GLCONTEXTMODES_H 31848b8605Smrg#define GLCONTEXTMODES_H 32848b8605Smrg 33848b8605Smrgstruct glx_config { 34848b8605Smrg struct glx_config * next; 35848b8605Smrg 36848b8605Smrg GLboolean rgbMode; 37848b8605Smrg GLboolean floatMode; 38848b8605Smrg GLboolean colorIndexMode; 39848b8605Smrg GLuint doubleBufferMode; 40848b8605Smrg GLuint stereoMode; 41848b8605Smrg 42848b8605Smrg GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */ 43848b8605Smrg GLuint redMask, greenMask, blueMask, alphaMask; 44848b8605Smrg GLint rgbBits; /* total bits for rgb */ 45848b8605Smrg GLint indexBits; /* total bits for colorindex */ 46848b8605Smrg 47848b8605Smrg GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits; 48848b8605Smrg GLint depthBits; 49848b8605Smrg GLint stencilBits; 50848b8605Smrg 51848b8605Smrg GLint numAuxBuffers; 52848b8605Smrg 53848b8605Smrg GLint level; 54848b8605Smrg 55848b8605Smrg GLint pixmapMode; 56848b8605Smrg 57848b8605Smrg /* GLX */ 58848b8605Smrg GLint visualID; 59848b8605Smrg GLint visualType; /**< One of the GLX X visual types. (i.e., 60848b8605Smrg * \c GLX_TRUE_COLOR, etc.) 61848b8605Smrg */ 62848b8605Smrg 63848b8605Smrg /* EXT_visual_rating / GLX 1.2 */ 64848b8605Smrg GLint visualRating; 65848b8605Smrg 66848b8605Smrg /* EXT_visual_info / GLX 1.2 */ 67848b8605Smrg GLint transparentPixel; 68848b8605Smrg /* colors are floats scaled to ints */ 69848b8605Smrg GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha; 70848b8605Smrg GLint transparentIndex; 71848b8605Smrg 72848b8605Smrg /* ARB_multisample / SGIS_multisample */ 73848b8605Smrg GLint sampleBuffers; 74848b8605Smrg GLint samples; 75848b8605Smrg 76848b8605Smrg /* SGIX_fbconfig / GLX 1.3 */ 77848b8605Smrg GLint drawableType; 78848b8605Smrg GLint renderType; 79848b8605Smrg GLint xRenderable; 80848b8605Smrg GLint fbconfigID; 81848b8605Smrg 82848b8605Smrg /* SGIX_pbuffer / GLX 1.3 */ 83848b8605Smrg GLint maxPbufferWidth; 84848b8605Smrg GLint maxPbufferHeight; 85848b8605Smrg GLint maxPbufferPixels; 86848b8605Smrg GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */ 87848b8605Smrg GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */ 88848b8605Smrg 89848b8605Smrg /* SGIX_visual_select_group */ 90848b8605Smrg GLint visualSelectGroup; 91848b8605Smrg 92848b8605Smrg /* OML_swap_method */ 93848b8605Smrg GLint swapMethod; 94848b8605Smrg 95848b8605Smrg GLint screen; 96848b8605Smrg 97848b8605Smrg /* EXT_texture_from_pixmap */ 98848b8605Smrg GLint bindToTextureRgb; 99848b8605Smrg GLint bindToTextureRgba; 100848b8605Smrg GLint bindToMipmapTexture; 101848b8605Smrg GLint bindToTextureTargets; 102848b8605Smrg GLint yInverted; 103848b8605Smrg 104848b8605Smrg /* EXT_framebuffer_sRGB */ 105848b8605Smrg GLint sRGBCapable; 106848b8605Smrg}; 107848b8605Smrg 108848b8605Smrg#define __GLX_MIN_CONFIG_PROPS 18 109848b8605Smrg#define __GLX_MAX_CONFIG_PROPS 500 110848b8605Smrg#define __GLX_EXT_CONFIG_PROPS 10 111848b8605Smrg 112848b8605Smrg/* 113848b8605Smrg** Since we send all non-core visual properties as token, value pairs, 114848b8605Smrg** we require 2 words across the wire. In order to maintain backwards 115848b8605Smrg** compatibility, we need to send the total number of words that the 116848b8605Smrg** VisualConfigs are sent back in so old libraries can simply "ignore" 117848b8605Smrg** the new properties. 118848b8605Smrg*/ 119848b8605Smrg#define __GLX_TOTAL_CONFIG \ 120848b8605Smrg (__GLX_MIN_CONFIG_PROPS + 2 * __GLX_EXT_CONFIG_PROPS) 121848b8605Smrg 122848b8605Smrgextern GLint _gl_convert_from_x_visual_type(int visualType); 123848b8605Smrg 124848b8605Smrgextern int 125848b8605Smrgglx_config_get(struct glx_config * mode, int attribute, int *value_return); 126848b8605Smrgextern struct glx_config * 127848b8605Smrgglx_config_create_list(unsigned count); 128848b8605Smrgextern void 129848b8605Smrgglx_config_destroy_list(struct glx_config *configs); 130848b8605Smrgextern struct glx_config * 131848b8605Smrgglx_config_find_visual(struct glx_config *configs, int vid); 132848b8605Smrgextern struct glx_config * 133848b8605Smrgglx_config_find_fbconfig(struct glx_config *configs, int fbid); 134848b8605Smrg 135848b8605Smrg#endif /* GLCONTEXTMODES_H */ 136848b8605Smrg 137