117ca54c3Smrg#ifndef __GLX_glxint_h__
217ca54c3Smrg#define __GLX_glxint_h__
317ca54c3Smrg
417ca54c3Smrg/*
517ca54c3Smrg * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
617ca54c3Smrg * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
717ca54c3Smrg *
817ca54c3Smrg * Permission is hereby granted, free of charge, to any person obtaining a
917ca54c3Smrg * copy of this software and associated documentation files (the "Software"),
1017ca54c3Smrg * to deal in the Software without restriction, including without limitation
1117ca54c3Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1217ca54c3Smrg * and/or sell copies of the Software, and to permit persons to whom the
1317ca54c3Smrg * Software is furnished to do so, subject to the following conditions:
1417ca54c3Smrg *
1517ca54c3Smrg * The above copyright notice including the dates of first publication and
1617ca54c3Smrg * either this permission notice or a reference to
1717ca54c3Smrg * http://oss.sgi.com/projects/FreeB/
1817ca54c3Smrg * shall be included in all copies or substantial portions of the Software.
1917ca54c3Smrg *
2017ca54c3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
2117ca54c3Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2217ca54c3Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
2317ca54c3Smrg * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
2417ca54c3Smrg * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
2517ca54c3Smrg * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2617ca54c3Smrg * SOFTWARE.
2717ca54c3Smrg *
2817ca54c3Smrg * Except as contained in this notice, the name of Silicon Graphics, Inc.
2917ca54c3Smrg * shall not be used in advertising or otherwise to promote the sale, use or
3017ca54c3Smrg * other dealings in this Software without prior written authorization from
3117ca54c3Smrg * Silicon Graphics, Inc.
3217ca54c3Smrg */
3317ca54c3Smrg
3417ca54c3Smrg#include <X11/X.h>
3517ca54c3Smrg#include <X11/Xdefs.h>
3617ca54c3Smrg#include "GL/gl.h"
3717ca54c3Smrg
3817ca54c3Smrgtypedef struct __GLXvisualConfigRec __GLXvisualConfig;
3917ca54c3Smrgtypedef struct __GLXFBConfigRec __GLXFBConfig;
4017ca54c3Smrg
4117ca54c3Smrgstruct __GLXvisualConfigRec {
4217ca54c3Smrg    VisualID vid;
4317ca54c3Smrg    int class;
4417ca54c3Smrg    Bool rgba;
4517ca54c3Smrg    int redSize, greenSize, blueSize, alphaSize;
4617ca54c3Smrg    unsigned long redMask, greenMask, blueMask, alphaMask;
4717ca54c3Smrg    int accumRedSize, accumGreenSize, accumBlueSize, accumAlphaSize;
4817ca54c3Smrg    Bool doubleBuffer;
4917ca54c3Smrg    Bool stereo;
5017ca54c3Smrg    int bufferSize;
5117ca54c3Smrg    int depthSize;
5217ca54c3Smrg    int stencilSize;
5317ca54c3Smrg    int auxBuffers;
5417ca54c3Smrg    int level;
5517ca54c3Smrg    /* Start of Extended Visual Properties */
5617ca54c3Smrg    int visualRating;		/* visual_rating extension */
5717ca54c3Smrg    int transparentPixel;	/* visual_info extension */
5817ca54c3Smrg				/*    colors are floats scaled to ints */
5917ca54c3Smrg    int transparentRed, transparentGreen, transparentBlue, transparentAlpha;
6017ca54c3Smrg    int transparentIndex;
6117ca54c3Smrg    int multiSampleSize;
6217ca54c3Smrg    int nMultiSampleBuffers;
6317ca54c3Smrg    int visualSelectGroup;
6417ca54c3Smrg};
6517ca54c3Smrg
6617ca54c3Smrg#define __GLX_MIN_CONFIG_PROPS	18
6717ca54c3Smrg#define __GLX_MAX_CONFIG_PROPS	500
6817ca54c3Smrg
6917ca54c3Smrg#define __GLX_EXT_CONFIG_PROPS 	10
7017ca54c3Smrg
7117ca54c3Smrg/*
7217ca54c3Smrg** Since we send all non-core visual properties as token, value pairs,
7317ca54c3Smrg** we require 2 words across the wire. In order to maintain backwards
7417ca54c3Smrg** compatibility, we need to send the total number of words that the
7517ca54c3Smrg** VisualConfigs are sent back in so old libraries can simply "ignore"
76ea1d6981Smrg** the new properties.
7717ca54c3Smrg*/
7817ca54c3Smrg#define __GLX_TOTAL_CONFIG       (__GLX_MIN_CONFIG_PROPS +      \
7917ca54c3Smrg                                    2 * __GLX_EXT_CONFIG_PROPS)
8017ca54c3Smrg
8117ca54c3Smrgstruct __GLXFBConfigRec {
8217ca54c3Smrg    int visualType;
8317ca54c3Smrg    int transparentType;
8417ca54c3Smrg                                /*    colors are floats scaled to ints */
8517ca54c3Smrg    int transparentRed, transparentGreen, transparentBlue, transparentAlpha;
8617ca54c3Smrg    int transparentIndex;
8717ca54c3Smrg
8817ca54c3Smrg    int visualCaveat;
8917ca54c3Smrg
9017ca54c3Smrg    int associatedVisualId;
9117ca54c3Smrg    int screen;
9217ca54c3Smrg
9317ca54c3Smrg    int drawableType;
9417ca54c3Smrg    int renderType;
9517ca54c3Smrg
9617ca54c3Smrg    int maxPbufferWidth, maxPbufferHeight, maxPbufferPixels;
9717ca54c3Smrg    int optimalPbufferWidth, optimalPbufferHeight;  /* for SGIX_pbuffer */
9817ca54c3Smrg
9917ca54c3Smrg    int visualSelectGroup;	/* visuals grouped by select priority */
10017ca54c3Smrg
101ea1d6981Smrg    unsigned int id;
10217ca54c3Smrg
10317ca54c3Smrg    GLboolean rgbMode;
10417ca54c3Smrg    GLboolean colorIndexMode;
10517ca54c3Smrg    GLboolean doubleBufferMode;
10617ca54c3Smrg    GLboolean stereoMode;
10717ca54c3Smrg    GLboolean haveAccumBuffer;
10817ca54c3Smrg    GLboolean haveDepthBuffer;
10917ca54c3Smrg    GLboolean haveStencilBuffer;
11017ca54c3Smrg
11117ca54c3Smrg    /* The number of bits present in various buffers */
11217ca54c3Smrg    GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
11317ca54c3Smrg    GLint depthBits;
11417ca54c3Smrg    GLint stencilBits;
11517ca54c3Smrg    GLint indexBits;
11617ca54c3Smrg    GLint redBits, greenBits, blueBits, alphaBits;
11717ca54c3Smrg    GLuint redMask, greenMask, blueMask, alphaMask;
11817ca54c3Smrg
11917ca54c3Smrg    GLuint multiSampleSize;     /* Number of samples per pixel (0 if no ms) */
12017ca54c3Smrg
121d63b911fSmrg    GLuint nMultiSampleBuffers; /* Number of available ms buffers */
12217ca54c3Smrg    GLint maxAuxBuffers;
12317ca54c3Smrg
12417ca54c3Smrg    /* frame buffer level */
12517ca54c3Smrg    GLint level;
12617ca54c3Smrg
12717ca54c3Smrg    /* color ranges (for SGI_color_range) */
12817ca54c3Smrg    GLboolean extendedRange;
12917ca54c3Smrg    GLdouble minRed, maxRed;
13017ca54c3Smrg    GLdouble minGreen, maxGreen;
13117ca54c3Smrg    GLdouble minBlue, maxBlue;
13217ca54c3Smrg    GLdouble minAlpha, maxAlpha;
13317ca54c3Smrg};
13417ca54c3Smrg
13517ca54c3Smrg#define __GLX_TOTAL_FBCONFIG_PROPS	 35
13617ca54c3Smrg
13717ca54c3Smrg#endif /* !__GLX_glxint_h__ */
138