1543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulName
2543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
3543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    MESA_screen_surface
4543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
5543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulName Strings
6543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
7543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_MESA_screen_surface
8543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
9543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulContact
10543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
11543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Brian Paul
12543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
13543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    To discuss, join the dri-egl@lists.freedesktop.org list.
14543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
15543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulStatus
16543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
178cdeff8444db999a02a27ecab59d9374cb076437Chia-I Wu    Obsolete.
18543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
19543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulVersion
20543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
21b56a5261fe43e7afead076b43a29fd34cad65962Brian    11 (27 January 2006)
22543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
23543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulNumber
24543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
25543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    TBD
26543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
27543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulDependencies
28543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
29543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL 1.0 or later.
30543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
31543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulOverview
32543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
33543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL 1.1 supports three types of drawing surfaces:
34543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul      * Window surfaces
35543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul      * Pixmap surfaces
36543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul      * Pbuffer surfaces
37543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    This extension defines a fourth type of drawing surface:
38543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul      * Screen surface
39543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
40543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    A screen surface is a surface for which the (front) color buffer can
41543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    be directly displayed (i.e. scanned out) on a monitor (such as a flat
42543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    panel or CRT).  In particular the color buffer memory will be allocated
43543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    at a location in VRAM (and in a suitable format) which can be displayed
44543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    by the graphics hardware.
45543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
46543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Note that the width and height of the screen surface need not exactly
47543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    match the monitor's current resolution.  For example, while the monitor
48543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    may be configured to to show 1024x768 pixels, the associated screen
49543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    surface may be larger, such as 1200x1000.  The "screen origin" attribute
50543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    will specify which region of the screen surface which is visible on the
51543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    monitor.  The screen surface can be scrolled by changing this origin.
52543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
53543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    This extension also defines functions for controlling the monitor's
54543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    display mode (width, height, refresh rate, etc), and specifing which
55543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    screen surface is to be displayed on a monitor.
56543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
57543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The new EGLModeMESA type and related functions are very similar to the
58543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLConfig type and related functions.  The user may get a list of
59543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    supported modes for a screen and specify the mode to be used when
60543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    displaying a screen surface.
61543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
62543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
63543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulIssues
64543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
65543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    1. Should EGL_INTERLACE be a supported mode attribute?
66543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
67543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Arguments against:
68543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
69543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           No, this should be provided by another extension which would
70543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           also provide the mechanisms needed to play back interlaced video
71543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           material correctly on hardware that supports it.
72543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           This extension should prefer non-interlaced modes. [M. Danzer]
73543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
74543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Arguments for:
75543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
76543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           An interlaced display can be of use without considering video
77543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           material.  Being able to query whether a screen is operating in
78543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           interlaced mode can be used by applications to control their
79543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           drawing.  For example: avoid drawing 1-pixel-wide horizontal lines
80543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           if screen is interlaced. [B. Paul]
81543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
82543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Resolution: Defer for future extension?
83543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
84543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
85543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    2. Should EGL_REFRESH_RATE be a supported mode attribute?
86543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
87543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Arguments for:
88543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
89543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           Yes, it's been shown that applications and/or users need to select
90543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           modes by this.  [M. Danzer]
91543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
92543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           Many examples have been given in which it's desirable to let the
93543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           user choose from a variety of refresh rates without having to
94543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           restart/reconfigure.  [B. Paul]
95543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
96543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Arguments against:
97543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
98543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           TBD.
99543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
100543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Resolution: Yes.
101543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
102543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
103543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    3. Exactly how should the list of modes returned by eglChooseConfigMESA
104543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       be sorted?
105543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
106543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Current method is described in the text below.  Subject to change.
107543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
108543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Alternately, leave the sorting order undefined so that each
109543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       implementation can return the modes in order of "most desirable"
110543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       to "least desirable" which may depend on the display technology
111543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       (CRT vs LCD, etc) or other factors.
112543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
113543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
114543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    4. How should screen blanking be supported?  Note that a screen can be
115543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       disabled or turned off by calling eglShowSurface(dpy, scrn,
116543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       EGL_NO_SURFACE, EGL_NO_MODE_MESA).  But what about power-save mode?
117543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
118543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       I would defer this to other extensions that depend on this one.
119543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       I can imagine people wanting different semantics not just in
120543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       relation to the power management API being exposed (DPMS or whatever)
121543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       but also relating to what events can trigger EGL_CONTEXT_LOST.  Also
122543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       I'm not sure whether power management commands are properly operations
123543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       on the Display or on a screen surface. [A. Jackson]
124543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
125543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
126543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    5. Should the EGL_PHYSICAL_SIZE_EGL query be kept?  The size information
127543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       isn't always reliable (consider video projectors) but can still be
128543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       used to determine the pixel aspect ratio.
129543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
130b56a5261fe43e7afead076b43a29fd34cad65962Brian       Resolution: Omit.  The EGL 1.2 specification includes queries for
131b56a5261fe43e7afead076b43a29fd34cad65962Brian       the display resolution and pixel aspect ratio.
132543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
133543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
134543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    6. Should detailed mode timing information be exposed by this API?
135543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
136543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Probably not.  Instead, offer that information in a layered extension.
137543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
138543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
139543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    7. How should the notion of a screen's "native" mode be expressed?
140543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       For example, LCD panels have a native resolution and refresh rate
141543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       that looks best but other sub-optimal resolutions may be supported.
142543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
143543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       The mode attribute EGL_OPTIMAL_MESA will be set for modes which
144543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       best match the screen.  [M. Danzer]
145543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
146543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
147543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    8. Should eglQueryModeStringMESA() be included?  This function returns
148543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       a human-readable string which corresponds to an EGLMode.
149543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
150543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Arguments for:
151543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
152543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           A mode name such as "HDTV-720P" might mean more to users than
153543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           "1280x720@60Hz" if the later were generated via code.
154543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
155543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Arguments against:
156543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
157543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           There's no standard syntax for the strings.  May cause more
158543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul           trouble than it's worth.
159543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
160543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Postpone for future extension. [A. Jackson]
161543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
162543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Latest discussion leaning toward omitting this function.
163543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
164543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
165543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    9. Should we use "Get" or "Query" for functions which return state?
166543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       The EGL 1.x specification doesn't seem to be totally consistent
167543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       in this regard, but "Query" is used more often.
168543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
169543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       Use "Get" for mode-related queries (as for EGLConfigs) but "Query"
170543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul       for everything else.
171543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
172543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
173543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    10. What should be the default size for screen surfaces?
174543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
175543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        For Pbuffer surfaces the default width and height are zero.
176543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        We'll do the same for screen surfaces.  Since there's no function
177543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        to resize surfaces it's useless to have a 0x0 screen, but this isn't
178543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        a situation that'll normally be encountered.
179543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
180543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
181543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    11. Should there be a function for resizing a screen surface?
182543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
183543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Suppose one wants to change the screen's size in the EGL application.
184543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Also suppose there's a hardware restriction such that only one screen
185543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        surface can exist at a time (either for lack of memory or because of
186543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        memory layout restrictions).
187543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
188543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        The basic idea is that the currently displayed screen surface must
189543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        be deallocated before a new one can be created.  Perhaps a resize
190543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        function would work better?
191543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
192543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
193543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    12. How should sub-pixel LCD color information be made available?
194543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        What about the display's gamma value?
195543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
196543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Perhaps expose as additional read-only mode attributes.
197543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
198543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Perhaps postpone for a layered extension.
199543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
200543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
201543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    13. What happens if the user attempts to delete a screen surface that
202543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        is currently being shown?
203543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
204543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Spec currently says that's illegal and that an error (TBD) will be
205543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        generated.
206543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
207543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
208543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    14. What if the physical screen size can't be determined?  Should
209543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        a query of EGL_PHYSICAL_SIZE_MESA return [0,0]?
210543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
211b56a5261fe43e7afead076b43a29fd34cad65962Brian        Obsolete: EGL_PHYSICAL_SIZE_MESA not used.
212543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
213543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
214543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    15. Suppose the device's number of RAMDACs is different from the
215543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        number of output ports.  For example, a graphics card with
216543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        two RAMDACs but three ports (VGA, DVI, TV).
217543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
218543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Address this in a follow-on extension. [Matthias Hopf]
219543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
220543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
221543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    16. How should we deal with on-the-fly device changes?  For example,
222543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        the monitor being unplugged and replaced by another with different
223543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        characteristics?
224543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
225543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        A HAL event could be received via DBUS in the application [J. Smirl,
226543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        A. Jackson].
227543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
228543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Should there be an EGL mechanism for detecting this?  Maybe an
229543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_SCREEN_LOST error (similar to EGL_CONTEXT_LOST) can be recorded
230543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        when there's a screen change.  At least then the application can
231543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        poll to detect this situation.
232543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
233543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Maybe leave that to a future extension.
234543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
235543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        See also the EGL_SCREEN_COUNT_MESA query.
236543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
237543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
238543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    17. What if pixel-accurate panning is not supported (see
239543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        eglScreenPositionMESA)? [M. Danzer]
240543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
241543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Is this a common problem?  Can we ignore it for now?
242543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
243543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
244543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    18. Should eglShowSurfaceMESA be renamed to eglShowScreenSurfaceMESA?
245543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
246543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Probably.
247543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
248543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
249543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
250543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulNew Procedures and Functions
251543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
252543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
253543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 const EGLint *attrib_list,
254543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 EGLModeMESA *modes, EGLint modes_size,
255543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 EGLint *num_modes)
256543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
257543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen,
258543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                               EGLModeMESA *modes, EGLint modes_size,
259543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                               EGLint *num_modes)
260543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
261543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode,
262543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                    EGLint attrib, EGLint *value)
263543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
264543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
265543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens,
266543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 EGLint screens_size, EGLint *num_screens)
267543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
268543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLSurface eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config,
269543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                          const EGLint *attrib_list)
270543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
271543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglShowSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
272543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  EGLSurface surface, EGLModeMESA mode)
273543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
274543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen,
275543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                     EGLint x, EGLint y)
276543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
277543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
278543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen,
279543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  EGLint attrib, EGLint *value);
280543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
281543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
282543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                         EGLSurface *surface)
283543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
284543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
285543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                      EGLModeMESA *mode)
286543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
287543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    const char *eglQueryModeStringMESA(EGLDisplay dpy, EGLMode mode);
288543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
289543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
290543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulNew Types
291543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
292543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLModeMESA
293543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLScreenMESA
294543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
295543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulNew Tokens
296543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
297543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    New error codes:
298543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
299543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_BAD_SCREEN_MESA        
300543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_BAD_MODE_MESA          
301543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
302543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Screen-related tokens:
303543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
304543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_SCREEN_COUNT_MESA      
305543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_SCREEN_POSITION_MESA   
306543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_SCREEN_BIT_MESA        
307543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_SCREEN_POSITION_GRANULARITY_MESA
308543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
309543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Mode-related tokens:
310543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
311543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_MODE_ID_MESA           
312543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_REFRESH_RATE_MESA      
313543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_INTERLACED_MESA
314543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_OPTIMAL_MESA
315543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_NO_MODE_MESA
316543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
317543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
318543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulAdditions to Chapter X of the EGL 1.1 Specification
319543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
320543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    [XXX this all has to be rewritten to fit into the EGL specification
321543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    and match the conventions of an EGL extension.  For now, just list
322543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    all the functions with brief descriptions.]
323543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
324543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
325543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglChooseModeMESA(EGLDisplay dpy, const EGLScreenMESA screen,
326543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 EGLint *attrib_list, EGLModeMESA *modes,
327543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 EGLint modes_size, EGLint *num_modes)
328543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
329543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Like eglChooseConfig, returns a list of EGLModes which match the given
330543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    attribute list.  This does not set the screen's current display mode.
331543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The attribute list is a list of token/value pairs terminated with
332543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_NONE.  Supported attributes include:
333543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
334543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Name                   Description
335543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        ---------------------  ---------------------------------------------
336543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_WIDTH              Mode width (resolution)
337543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_HEIGHT             Mode height (resolution)
338543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_REFRESH_RATE_MESA  The mode's refresh rate, multiplied by 1000
339543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_INTERLACED_MESA    1 indicates an interlaced mode, 0 otherwise
340543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_OPTIMAL_MESA       Set if the most is especially optimal for the
341543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                               screen (ex. for particular LCD resolutions)
342543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
343543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Any other token will generate the error EGL_BAD_ATTRIBUTE.
344543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
345543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The list of modes returned by eglChooseModeMESA will be sorted
346543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    according to the following criteria.  See the discussion of table 3.3
347543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    in the EGL specification for more information.
348543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
349543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                            Selection   Sort   Sort
350543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Attribute            Default        Criteria    Order  Priority
351543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        -------------------- -------------- ----------- ------ --------
352543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_OPTIMAL_MESA     EGL_DONT_CARE  Exact       1,0      1
353543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_INTERLACED_MESA  EGL_DONT_CARE  Exact       0,1      2
354543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_REFRESH_RATE     EGL_DONT_CARE  AtLeast     Larger   3
355543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_WIDTH            EGL_DONT_CARE  AtLeast     Larger   4
356543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_HEIGHT           EGL_DONT_CARE  AtLeast     Larger   5
357543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_MODE_ID_MESA     EGL_DONT_CARE  Exact       Smaller  6
358543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
359543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
360543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen,
361543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                               EGLModeMESA *modes, EGLint modes_size,
362543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                               EGLint *num_modes)
363543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
364543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Like eglGetConfigs, returns a list of all modes supported by the
365543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    given screen.  The returned modes will be sorted in the same manner
366543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    as for eglChooseModeMESA().
367543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
368543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
369543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
370543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode,
371543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                    EGLint attrib, EGLint *value)
372543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
373543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Used to query mode attributes.  The following attributes are supported:
374543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
375543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Name                   Return value description
376543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        ---------------------  ----------------------------------------------
377543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_OPTIMAL_MESA       1 indicates an optimal mode, 0 otherwise
378543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_INTERLACED_MESA    1 indicates an interlaced mode, 0 otherwise
379543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_REFRESH_RATE_MESA  The mode's refresh rate, multiplied by 1000
380543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_WIDTH              Mode width (resolution)
381543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_HEIGHT             Mode height (resolution)
382543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_MODE_ID_MESA       A unique small integer identifier for the mode
383543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
384543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Any other token will generate the error EGL_BAD_ATTRIBUTE.
385543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
386543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
387543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
388543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens,
389543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                 EGLint screens_size, EGLint *num_screens)
390543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
391543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    This function returns an array of all available screen handles.
392543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    <screens_size> is the maximum number of screens to return in the
393543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    <screens> array.  <num_screens> will return the number of screen handles
394543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    placed in the array, even if <screens> is NULL.
395543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
396543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The number of screens and the availability of each may change over
397543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    time (hot-plugging).  Screen handles will not be reused.  When a
398543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    screen handle becomes invalid, function calls which reference an
399543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    invalid handle will generate EGL_BAD_SCREEN_MESA.
400543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
401543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The first screen handle returned will be considered to be the primary
402543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    one.
403543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
404543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
405543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
406543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLSurface eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config,
407543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                          const EGLint *attrib_list)
408543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
409543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Create a surface that can be displayed on a screen.  <attrib_list> is
410543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    an array of token/value pairs terminated with EGL_NONE.  Valid tokens
411543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    include:
412543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
413543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Name              Description
414543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        ----------------  --------------------------------
415543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_WIDTH         desired surface width in pixels
416543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_HEIGHT        desired surface height in pixels
417543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
418543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Any other token will generate the error EGL_BAD_ATTRIBUTE.
419543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The default width and height are zero.
420543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
421543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    
422543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
423543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglShowSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
424543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  EGLSurface surface, EGLModeMESA mode)
425543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
426543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    This function causes a screen to show the given surface (or more
427543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    precisely, the surface's front color buffer) with the given mode.
428543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
429543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    If the surface is in any way incompatible with the mode, the error
430543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_BAD_MATCH will be generated, EGL_FALSE will be returned, and the
431543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    previous screen state will remain in effect.  This might occur when
432543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    the bandwidth of the video-out subsystem is exceeded, or if the mode
433543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    specifies a width or height that's greater than the width or height
434543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    of the surface.
435543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
436543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    To disable a screen, the values EGL_NO_SURFACE and EGL_NO_MODE_MESA
437543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    be passed as the <surface> and <mode> parameters.
438543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
439543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The values of EGL_SCREEN_POSITION_MESA are clamped to the new valid
440543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    range computed from the screen size and surface size.  If the new
441543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    surface is EGL_NO_SURFACE, EGL_SCREEN_POSITION_MESA is set to [0, 0].
442543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
443543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
444543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Attempting to delete a screen surface which is currently being
445543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    displayed will result in the error EGL_BAD_ACCESS being generated.
446543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
447543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
448543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
449543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen,
450543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                     EGLint x, EGLint y)
451543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
452543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Specifies the origin of the screen's view into the surface, if the
453543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    surface is larger than the screen.  Valid values for x and y are
454543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    [0, surfaceWidth - screenWidth] and [0, surfaceHeight - screenHeight],
455543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    respectively.
456543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
457543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    The x and y values are also constrained to be integer multiples of the
458543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_SCREEN_POSITION_GRANULARITY_MESA values.
459543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
460543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
461543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
462543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
463543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen,
464543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  EGLint attrib, EGLint *value);
465543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
466543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Used to query screen attributes.  <attrib> may be one of the following:
467543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
468543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Name                      Return value description
469543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        ------------------------  ---------------------------------------------
470543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_SCREEN_POSITION_MESA  x, y position of the screen's origin with
471543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  respect to the surface.  If no surface is
472543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  attached to the screen, [0, 0] is returned.
473543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        EGL_SCREEN_POSITION_GRANULARITY_MESA
474543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  Returns the granularity, in pixels, for
475543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                  which the screen position is constrained.
476543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
477543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Any other token will generate the error EGL_BAD_ATTRIBUTE.
478543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
479543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
480543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
481543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
482543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
483543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                         EGLSurface *surface)
484543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
485543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Returns the surface currently displayed on the given screen.  <surface>
486543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    may be EGL_NO_SURFACE if the screen isn't currently showing any surface.
487543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
488543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
489543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
490543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
491543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGLBoolean eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
492543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul                                      EGLModeMESA *mode)
493543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
494543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Returns the given screen's current display mode.  The mode may be
495543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    EGL_NO_MODE_MESA if the screen is currently disabled.
496543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
497543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
498543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
499543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    const char *eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode);
500543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
501543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    Returns a human-readable string for the given mode.  The string is a
502543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    zero-terminated C string which the user should not attempt to free.
503543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    There is no standard syntax for mode strings.  Applications should
504543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    not directly rely on mode strings.
505543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
506543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
507543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
508543469501790a02988e3fcf5ab51dbd74ae2da88Brian PaulVersion History
509543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
510543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    1. 15 March 2005 - BrianP
511543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Initial version
512543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
513543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    2. 16 March 2005 - BrianP
514543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Removed EGL_DEPTH_MESA
515543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added EGL_PHYSICAL_WIDTH_MESA, EGL_PHYSICAL_HEIGHT_MESA queries
516543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added EGL_OPTIMAL_MESA for width/height/refresh rate selection
517543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added possible eglQueryModeStringMESA() function
518543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        More details of the new functions explained.
519543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
520543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    3. 18 March 2005 - BrianP
521543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added screen_number to eglChooseModeMESA().
522543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Fix off by one mistake in value range for ORIGIN attributes
523543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added Issues section
524543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
525543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    4. 21 March 2005 - BrianP
526543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Removed eglScreenAttribsMESA().
527543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added eglScreenPositionMESA() to set screen origin.
528543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Replaced EGL_SCREEN_X/Y_OFFSET_MESA with EGL_SCREEN_POSITION_MESA.
529543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Replaced EGL_PHYSICAL_WIDTH/HEIGHT_MESA with EGL_PHYSICAL_SIZE_MESA.
530543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Use EGL_OPTIMAL_MESA as a new mode attribute. (Michel Danzer)
531543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added a few more issues.
532543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
533543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    5. 6 April 2005 - BrianP
534543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        More language for eglGetModeStringMESA().
535543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added issues 10, 11, 12, 13, 14.
536543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Updated issue 3 discussion about mode sorting.
537543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
538543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    6. 22 April 2005 - BrianP
539543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Fixed "LDC" typo.
540543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added issues 15, 16.
541543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Changed dependency on EGL 1.1 to EGL 1.0
542543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        s/EGL_NUM_SCREENS_MESA/EGL_SCREEN_COUNT_MESA/
543543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added eglQueryDisplayMESA() to New Functions section.
544543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Clarified language for the EGL_SCREEN_COUNT_MESA query.
545543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
546543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    7. 29 April 2005 - BrianP
547543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added EGLScreenMESA type and eglGetScreensMESA() function. [J. Smirl].
548543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Replaced EGLint screen_number parameters with EGLScreenMESA screen.
549543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added issue 17 (pixel-accurate panning)
550543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
551543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    8. 2 May 2005 - BrianP
552543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Removed eglQueryDisplayMESA.
553543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Fixed a few more EGLint -> EGLScreenMESA changes.
554543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
555543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    9. 20 May 2005 - BrianP
556543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Fixed a few typos.
557543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Updated some open issues text.
558543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
559543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul    10. 10 August 2005 - BrianP
560543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul        Added EGL_SCREEN_POSITION_GRANULARITY_MESA.
561543469501790a02988e3fcf5ab51dbd74ae2da88Brian Paul
562b56a5261fe43e7afead076b43a29fd34cad65962Brian    11. 27 January 2006 - BrianP
563b56a5261fe43e7afead076b43a29fd34cad65962Brian        EGL_PHYSICAL_SIZE_MESA removed since EGL 1.2 has a similar feature.
564b56a5261fe43e7afead076b43a29fd34cad65962Brian
565