glxint.h revision 17ca54c3
1#ifndef __GLX_glxint_h__
2#define __GLX_glxint_h__
3
4/*
5 * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
6 * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice including the dates of first publication and
16 * either this permission notice or a reference to
17 * http://oss.sgi.com/projects/FreeB/
18 * shall be included in all copies or substantial portions of the Software.
19 *
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23 * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
25 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 * SOFTWARE.
27 *
28 * Except as contained in this notice, the name of Silicon Graphics, Inc.
29 * shall not be used in advertising or otherwise to promote the sale, use or
30 * other dealings in this Software without prior written authorization from
31 * Silicon Graphics, Inc.
32 */
33
34#include <X11/X.h>
35#include <X11/Xdefs.h>
36#include "GL/gl.h"
37
38typedef struct __GLXvisualConfigRec __GLXvisualConfig;
39typedef struct __GLXFBConfigRec __GLXFBConfig;
40
41struct __GLXvisualConfigRec {
42    VisualID vid;
43    int class;
44    Bool rgba;
45    int redSize, greenSize, blueSize, alphaSize;
46    unsigned long redMask, greenMask, blueMask, alphaMask;
47    int accumRedSize, accumGreenSize, accumBlueSize, accumAlphaSize;
48    Bool doubleBuffer;
49    Bool stereo;
50    int bufferSize;
51    int depthSize;
52    int stencilSize;
53    int auxBuffers;
54    int level;
55    /* Start of Extended Visual Properties */
56    int visualRating;		/* visual_rating extension */
57    int transparentPixel;	/* visual_info extension */
58				/*    colors are floats scaled to ints */
59    int transparentRed, transparentGreen, transparentBlue, transparentAlpha;
60    int transparentIndex;
61    int multiSampleSize;
62    int nMultiSampleBuffers;
63    int visualSelectGroup;
64};
65
66#define __GLX_MIN_CONFIG_PROPS	18
67#define __GLX_MAX_CONFIG_PROPS	500
68
69#define __GLX_EXT_CONFIG_PROPS 	10
70
71/*
72** Since we send all non-core visual properties as token, value pairs,
73** we require 2 words across the wire. In order to maintain backwards
74** compatibility, we need to send the total number of words that the
75** VisualConfigs are sent back in so old libraries can simply "ignore"
76** the new properties.
77*/
78#define __GLX_TOTAL_CONFIG       (__GLX_MIN_CONFIG_PROPS +      \
79                                    2 * __GLX_EXT_CONFIG_PROPS)
80
81struct __GLXFBConfigRec {
82    int visualType;
83    int transparentType;
84                                /*    colors are floats scaled to ints */
85    int transparentRed, transparentGreen, transparentBlue, transparentAlpha;
86    int transparentIndex;
87
88    int visualCaveat;
89
90    int associatedVisualId;
91    int screen;
92
93    int drawableType;
94    int renderType;
95
96    int maxPbufferWidth, maxPbufferHeight, maxPbufferPixels;
97    int optimalPbufferWidth, optimalPbufferHeight;  /* for SGIX_pbuffer */
98
99    int visualSelectGroup;	/* visuals grouped by select priority */
100
101    unsigned int id;
102
103    GLboolean rgbMode;
104    GLboolean colorIndexMode;
105    GLboolean doubleBufferMode;
106    GLboolean stereoMode;
107    GLboolean haveAccumBuffer;
108    GLboolean haveDepthBuffer;
109    GLboolean haveStencilBuffer;
110
111    /* The number of bits present in various buffers */
112    GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
113    GLint depthBits;
114    GLint stencilBits;
115    GLint indexBits;
116    GLint redBits, greenBits, blueBits, alphaBits;
117    GLuint redMask, greenMask, blueMask, alphaMask;
118
119    GLuint multiSampleSize;     /* Number of samples per pixel (0 if no ms) */
120
121    GLuint nMultiSampleBuffers; /* Number of availble ms buffers */
122    GLint maxAuxBuffers;
123
124    /* frame buffer level */
125    GLint level;
126
127    /* color ranges (for SGI_color_range) */
128    GLboolean extendedRange;
129    GLdouble minRed, maxRed;
130    GLdouble minGreen, maxGreen;
131    GLdouble minBlue, maxBlue;
132    GLdouble minAlpha, maxAlpha;
133};
134
135#define __GLX_TOTAL_FBCONFIG_PROPS	 35
136
137#endif /* !__GLX_glxint_h__ */
138