03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifdef HAVE_DIX_CONFIG_H
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include <dix-config.h>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifndef _GLX_screens_h_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define _GLX_screens_h_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Permission is hereby granted, free of charge, to any person obtaining a
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * copy of this software and associated documentation files (the "Software"),
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * to deal in the Software without restriction, including without limitation
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * and/or sell copies of the Software, and to permit persons to whom the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Software is furnished to do so, subject to the following conditions:
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * The above copyright notice including the dates of first publication and
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * either this permission notice or a reference to
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * http://oss.sgi.com/projects/FreeB/
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * shall be included in all copies or substantial portions of the Software.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Except as contained in this notice, the name of Silicon Graphics, Inc.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * shall not be used in advertising or otherwise to promote the sale, use or
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * other dealings in this Software without prior written authorization from
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Silicon Graphics, Inc.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct __GLXconfig __GLXconfig;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstruct __GLXconfig {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXconfig *next;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLuint doubleBufferMode;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLuint stereoMode;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLuint redMask, greenMask, blueMask, alphaMask;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint rgbBits; /* total bits for rgb */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint indexBits; /* total bits for colorindex */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint depthBits;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint stencilBits;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint numAuxBuffers;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint level;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint pixmapMode;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* GLX */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint visualID;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint visualType; /**< One of the GLX X visual types. (i.e.,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * \c GLX_TRUE_COLOR, etc.)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* EXT_visual_rating / GLX 1.2 */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint visualRating;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* EXT_visual_info / GLX 1.2 */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint transparentPixel;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* colors are floats scaled to ints */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint transparentIndex;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* ARB_multisample / SGIS_multisample */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint sampleBuffers;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint samples;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* SGIX_fbconfig / GLX 1.3 */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint drawableType;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint renderType;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint xRenderable;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint fbconfigID;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* SGIX_pbuffer / GLX 1.3 */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint maxPbufferWidth;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint maxPbufferHeight;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint maxPbufferPixels;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint optimalPbufferWidth; /* Only for SGIX_pbuffer. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint optimalPbufferHeight; /* Only for SGIX_pbuffer. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* SGIX_visual_select_group */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint visualSelectGroup;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* OML_swap_method */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint swapMethod;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint screen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* EXT_texture_from_pixmap */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint bindToTextureRgb;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint bindToTextureRgba;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint bindToMipmapTexture;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint bindToTextureTargets;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint yInverted;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync};
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncGLint glxConvertToXVisualType(int visualType);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync** Screen dependent data. These methods are the interface between the DIX
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync** and DDX layers of the GLX server extension. The methods provide an
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync** interface for context management on a screen.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync*/
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct __GLXscreen __GLXscreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncstruct __GLXscreen {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync void (*destroy) (__GLXscreen * screen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXcontext *(*createContext) (__GLXscreen * screen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXconfig * modes,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXcontext * shareContext,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned num_attribs,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync const uint32_t *attribs,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int *error);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXdrawable *(*createDrawable) (ClientPtr client,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXscreen * context,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DrawablePtr pDraw,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XID drawId,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int type,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync XID glxDrawId, __GLXconfig * modes);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int (*swapInterval) (__GLXdrawable * drawable, int interval);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ScreenPtr pScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* Linked list of valid fbconfigs for this screen. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXconfig *fbconfigs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int numFBConfigs;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* Subset of fbconfigs that are exposed as GLX visuals. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync __GLXconfig **visuals;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GLint numVisuals;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char *GLextensions;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char *GLXvendor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync char *GLXextensions;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /**
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * \name GLX version supported by this screen.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Since the GLX version advertised by the server is for the whole server,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * the GLX protocol code uses the minimum version supported on all screens.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /*@{ */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned GLXmajor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned GLXminor;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /*@} */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Bool (*CloseScreen) (ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync};
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncvoid __glXScreenInit(__GLXscreen * screen, ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncvoid __glXScreenDestroy(__GLXscreen * screen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif /* !__GLX_screens_h__ */