Initial code release
[framework/uifw/xorg/proto/xorg-glproto.git] / glxint.h
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
38 typedef struct __GLXvisualConfigRec __GLXvisualConfig;
39 typedef struct __GLXFBConfigRec __GLXFBConfig;
40
41 struct __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
81 struct __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__ */