Kasoroth: couldn't agree with you more about faster switching and allowing overlays in the game.
Well, I'm really fed up with games not handling display properly.
I have two screens, both at the same resolution. Most games will mess with it for no reason - changing resolution, breaking my desktop by cloning the first screen (hilarious when the game ends up being on the second screen, right?) or turning off one of the screens entirely (at random, doesn't ask me which one I want to play on). Some games can't handle multimonitor at all - they end up centered on the two screens, one half on the left, one on the right... So what I've been doing is forcing games to 1680x1050 (or lower for recording with ffmpeg), forcefully disabling fullscreen and removing windows decorations. I can move them between screens, I can minimize them, they don't break things and I have no problems... performance be damned.
So, never mess with screen resolutions. It should be a config option of the WM. Or something like 'Virtualize fullscreen windows'/'report fake screen parameters to fullscreen windows'. Also, I'd like to have a reliable way to switch from windows that are capturing input. It's no good to have a game on one screen and not being able to mess with things on the other screen. I need my teamspeak, skype, pidgin, etc. Don't make me exit out of the game for them. Ever. There needs to be a global shortcut for changing windows that no application can override.
Last thing that's really missing on linux is *reliable* and *user friendly* way to record/stream games. For that to be possible at all, this fullscreen thing has to be resolved first.
That's cool, and ideally the WM would give you options concerning this. That's why I said it would only be a request the WM could choose to ignore (via upscaling the wl_surface), or handle it properly (by remembering previous resolution settings in case of a crash). Wayland is about simplifying and fixing the protocols, and this is obviously a sore spot for Linux gamers, so it's something Wayland should get right early on. A standard request protocol would allow for both ways to be done (you and I can both be happy) at the same time making the developers lives easier (they don't need to write upscale logic themselves, only request fullscreen).I would actually prefer that programs not be able to change the real display resolution. ...
EDIT: Please disregard all that above.
I just got conformation on the #wayland IRC channel, and Wayland does indeed work like I was hoping. Wayland provides a client request for mode/size/refresh-rate which the Compositor can choose to grant or ignore however it sees fit. Xrandr (and others) don't exist in wayland, so there's no danger of clients manually changing resolution. All applications have to do is create a wl_surface at a spefic size and request a resolution to match that. Looks like all my fears where for nothing. Awesome!
Last edited by F i L; 10-25-2012 at 06:43 PM.
That protocol doc does not say everything, the implementation still has lots of room to make decisions. For instance, one idea was, that when you alt+tab, the resolution does not change until you release the alt key, which makes choosing a window fluent. A resolution change could happen, when you move your focus from a normal app and raise a fullscreen app, or vice versa. Will it happen, depends on the hardware (is it supported nicely), compositor implementation (is it more performant than not changing resolution and doing something else), and user configuration (does user want the compositor to change resolutions ever? should it change resolutions of all fullscreen apps, not just those that really ask for it? etc.), and probably other things. Of course, if you don't change resolutions, the compositor has to do something else, that is still sensible. Ultimately all that should be configurable in compositor preferences. The protocol offers a way for an application to express the intent, and the compositor carries it out according to user preferences.
This fullscreen request is specifically for temporary resolution changes for fullscreen apps, so that the compositor can accommodate the particular fullscreen-wannabe window the best way it can. Since the resolution is tied to the window, a disappearing window (a crashing game) will immediately return the whole output to normality.
It is not the XRandr equivalent, which is for permanent (for this session) display configuration. For that we don't have an interface at all, yet.
- Guaranteed multi-monitor compatibility.
- Fake resolution (scale up/down).
- Reset resolution back if the application crash.
And maybe more. The WM could even decide to paint the fullscreen window as desktop background image (up/downscaled if needed).