Add mouse and keyboard configuration file
[profile/ivi/xorg-x11-server.git] / glx / glxscreens.h
1 #ifdef HAVE_DIX_CONFIG_H
2 #include <dix-config.h>
3 #endif
4
5 #ifndef _GLX_screens_h_
6 #define _GLX_screens_h_
7
8 /*
9  * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
10  * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice including the dates of first publication and
20  * either this permission notice or a reference to
21  * http://oss.sgi.com/projects/FreeB/
22  * shall be included in all copies or substantial portions of the Software.
23  *
24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27  * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
28  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
29  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30  * SOFTWARE.
31  *
32  * Except as contained in this notice, the name of Silicon Graphics, Inc.
33  * shall not be used in advertising or otherwise to promote the sale, use or
34  * other dealings in this Software without prior written authorization from
35  * Silicon Graphics, Inc.
36  */
37
38 typedef struct {
39     void * (* queryHyperpipeNetworkFunc)(int, int *, int *);
40     void * (* queryHyperpipeConfigFunc)(int, int, int *, int *);
41     int    (* destroyHyperpipeConfigFunc)(int, int);
42     void * (* hyperpipeConfigFunc)(int, int, int *, int *, void *);
43 } __GLXHyperpipeExtensionFuncs;
44
45 typedef struct {
46     int    (* bindSwapBarrierFunc)(int, XID, int);
47     int    (* queryMaxSwapBarriersFunc)(int);
48 } __GLXSwapBarrierExtensionFuncs;
49
50 void __glXHyperpipeInit(int screen, __GLXHyperpipeExtensionFuncs *funcs);
51 void __glXSwapBarrierInit(int screen, __GLXSwapBarrierExtensionFuncs *funcs);
52
53 typedef struct __GLXconfig __GLXconfig;
54 struct __GLXconfig {
55     __GLXconfig *next;
56     GLuint doubleBufferMode;
57     GLuint stereoMode;
58
59     GLint redBits, greenBits, blueBits, alphaBits;      /* bits per comp */
60     GLuint redMask, greenMask, blueMask, alphaMask;
61     GLint rgbBits;              /* total bits for rgb */
62     GLint indexBits;            /* total bits for colorindex */
63
64     GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
65     GLint depthBits;
66     GLint stencilBits;
67
68     GLint numAuxBuffers;
69
70     GLint level;
71
72     GLint pixmapMode;
73
74     /* GLX */
75     GLint visualID;
76     GLint visualType;     /**< One of the GLX X visual types. (i.e., 
77                            * \c GLX_TRUE_COLOR, etc.)
78                            */
79
80     /* EXT_visual_rating / GLX 1.2 */
81     GLint visualRating;
82
83     /* EXT_visual_info / GLX 1.2 */
84     GLint transparentPixel;
85                                 /*    colors are floats scaled to ints */
86     GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
87     GLint transparentIndex;
88
89     /* ARB_multisample / SGIS_multisample */
90     GLint sampleBuffers;
91     GLint samples;
92
93     /* SGIX_fbconfig / GLX 1.3 */
94     GLint drawableType;
95     GLint renderType;
96     GLint xRenderable;
97     GLint fbconfigID;
98
99     /* SGIX_pbuffer / GLX 1.3 */
100     GLint maxPbufferWidth;
101     GLint maxPbufferHeight;
102     GLint maxPbufferPixels;
103     GLint optimalPbufferWidth;   /* Only for SGIX_pbuffer. */
104     GLint optimalPbufferHeight;  /* Only for SGIX_pbuffer. */
105
106     /* SGIX_visual_select_group */
107     GLint visualSelectGroup;
108
109     /* OML_swap_method */
110     GLint swapMethod;
111
112     GLint screen;
113
114     /* EXT_texture_from_pixmap */
115     GLint bindToTextureRgb;
116     GLint bindToTextureRgba;
117     GLint bindToMipmapTexture;
118     GLint bindToTextureTargets;
119     GLint yInverted;
120 };
121
122 GLint glxConvertToXVisualType(int visualType);
123
124 /*
125 ** Screen dependent data.  These methods are the interface between the DIX
126 ** and DDX layers of the GLX server extension.  The methods provide an
127 ** interface for context management on a screen.
128 */
129 typedef struct __GLXscreen __GLXscreen;
130 struct __GLXscreen {
131     void          (*destroy)       (__GLXscreen *screen);
132
133     __GLXcontext *(*createContext) (__GLXscreen *screen,
134                                     __GLXconfig *modes,
135                                     __GLXcontext *shareContext);
136
137     __GLXdrawable *(*createDrawable)(ClientPtr client,
138                                      __GLXscreen *context,
139                                      DrawablePtr pDraw,
140                                      XID drawId,
141                                      int type,
142                                      XID glxDrawId,
143                                      __GLXconfig *modes);
144     int            (*swapInterval)  (__GLXdrawable *drawable,
145                                      int interval);
146
147     __GLXHyperpipeExtensionFuncs *hyperpipeFuncs;
148     __GLXSwapBarrierExtensionFuncs *swapBarrierFuncs;
149
150     ScreenPtr pScreen;
151
152     /* Linked list of valid fbconfigs for this screen. */
153     __GLXconfig *fbconfigs;
154     int numFBConfigs;
155
156     /* Subset of fbconfigs that are exposed as GLX visuals. */
157     __GLXconfig **visuals;
158     GLint numVisuals;
159
160     char *GLextensions;
161
162     char *GLXvendor;
163     char *GLXversion;
164     char *GLXextensions;
165
166     /**
167      * \name GLX version supported by this screen.
168      *
169      * Since the GLX version advertised by the server is for the whole server,
170      * the GLX protocol code uses the minimum version supported on all screens.
171      */
172     /*@{*/
173     unsigned GLXmajor;
174     unsigned GLXminor;
175     /*@}*/
176
177     Bool (*CloseScreen)(int index, ScreenPtr pScreen);
178 };
179
180
181 void __glXScreenInit(__GLXscreen *screen, ScreenPtr pScreen);
182 void __glXScreenDestroy(__GLXscreen *screen);
183
184 #endif /* !__GLX_screens_h__ */