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