Re: Proposing _NET_WM_STATE_FULLSCREEN_EXCLUSIVE

Konstantin Svist <[email protected]> Fri, 26 Oct 2012 21:59:28 -0700
Newsgroups gmane.comp.gnome.wm-spec
Message-ID <[email protected]>
On 10/26/2012 07:24 PM, Carsten Haitzler (The Rasterman) wrote:
> On Fri, 26 Oct 2012 12:23:34 -0700 Konstantin Svist <[email protected]> said:
>
>> On 10/26/2012 11:06 AM, Carsten Haitzler (The Rasterman) wrote:
>>> On Fri, 26 Oct 2012 10:45:53 -0700 Konstantin Svist <[email protected]>
>>> said:
>>>
>>>> * turning off other displays is usually NOT desired: if the game is not
>>>> using them, I would expect to be able to use a 2nd/3rd/etc. monitor to
>>>> display something else (reference information for the game, or maybe
>>>> email client/notification widget/etc.). If the user doesn't need to use
>>>> the extra monitors, she can turn them off manually.
>>> due to how randr does things keeping screens on is not desirable. it also
>>> means you can't turn off compositing. it's not sane/sensible to keep them
>>> on given the x11 setup we have at this time (changes would mean changes to
>>> xserver internals and implementations as opposed to just a wm<->app
>>> protocol).
>> I use XFCE desktop without compositing (not a fan of any sfx that slow
>> my wm down). Hope you're not saying I can only use 1 monitor in this case?
>> Agree on not having to support full 3D-accellerated desktop while a game
>> is running, but here's a thought: since it doesn't need to be
>> interactive, why not render it in 2D for the duration? If some dynamic
>> widget updates, it can be re-drawn [with low priority], and then left as
>> static image on screen.
> this doesn't have to do with 3d accel at all. it's entirely buffer FLIPPING vs
> buffer COPYING. and it's for the 3d game window. currently drivers have an
> optimization. it goes something like this:
>
> if 3d window is "on top" AND has no shape AND it is the EXACT dimensions of the
> framebuffer, then do buffer FLIPS, otherwise COPY from backbuffer to
> framebuffer.
>
> so literally every time the game does a swapbuffers the backbuffer is EXCHANGED
> with the current framebuffer. this leads to ZERO copying of pixels to do the
> swap. all games that use gl do this (realistically). so by just keeping your
> 2nd screen around at all in any way or form, you'll impact performance. this
> can impact performance anywhere from maybe 5% to 50%. depending on the game
> and nature of rendering, gpu, framebuffer size etc. - this is all because both
> the screens become a big single framebuffer in hardware.

I'm pretty sure gamers who use multiple screens know what to expect. I 
wouldn't run an FPS with an extra desktop turned on, that's true -- but 
a low-graphic-requirement game is a whole different story.
It's not problem without a solution -- maybe use a separate framebuffer, 
or give user a choice/warning ("shrink desktop or suffer low performance")


> there is also another reason. let's say that your left monitor is where you
> want the game, and the right is where you keep your "windows". your left
> monitor is currently at 1600x900. your right is at 1600x900. when the game
> wantsa to change resolution, it asks for 1920x1080. this means there is no
> SPACE on the left area to shrink, so you have to reconfigure both screens, move
> all the windows and content around on the 2nd screen and shuffle them over to
> the right by 320 pixels to make room for the expanded left monitor region. this
> will lead to "artifacts" when starting/stopping the fullscreen mode.

How is this different from resizing the left monitor with xrandr? That's 
doable right now