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