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