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