Exclusive fullscreen issue, SLI/Crossfire, 3D Vision, alt-tabbing

So, this is quite a long post about an issue which seems to have gone unresolved for a time now regarding newer Unity based titles and fullscreen mode…

At some point in version 4.5x, the support for exclusive fullscreen has to be set as a build option, and has thus become a choice of the game developers to support the functionality rather than a default option.

the problem (as far as I understand):

While running in exclusive fullscreen mode (aka ‘true fullscreen’ and not ‘borderless windowed fullscreen’) there is currently an issue where if the user alt-tab out of the game, the thread running the game is paused and thus essentially stops all updates from executing. This causes problems for games that rely on continuously handling ongoing events, such as especially in networked multiplayer games where the game has to handle incoming packets etc.

the current solution as of unity 4.5x / 5.x:

the default behavior of the ‘fullscreen’ mode in unity has been defaulted to ‘borderless windowed fullscreen’ where the thread is not paused when alt-tabbing since the game is not actually running true fullscreen but is basically just another windowed application being managed by Desktop Window Manager(DWM).

While this mode does provide some convenience for the user (alt-tabbing is instantanious), it does have some fairly significant downsides and lacking support, such as performance, stuttering due to DWM/AERO interference, SLI support, Crossfire support, G-Sync support, 3D vision support.

Exclusive fullscreen exist for a reason to allow high-perfomance applications (such as games) to have a more direct and thus faster access to the hardware output by bypassing some of the handling managed by the operating system.

Unity still provides a build option to allow for exclusive fullscreen mode, but currently it is not possible to flip between this mode and borderless fullscreen mode during runtime or start/commandline options.

This essentially means in order for a game developer to support both windowed fullscreen and exclusive fullscreen, they need to provide 2 build executables, essentally 2 versions of the game -this is not only very troublesome but also not very likely to happen in most realistic scenarios.

As the Unity engine is widely used by both professionals, Indie and enthusiasts alike, this problem is often overlooked and as a consequence alot of new games are now being released without support for some of these very beneficial and awesome hardware technologies (Crossfire/3D Vision for example often works ‘out of the box’/automatically in exclusive fullscreen mode in nearly all Unity based games without the direct feature support from the developer). This does NOT work in most newer Unity based games due to the default build options being set as borderless windowed fullscreen.

So how can we fix this issue and where does the problem lie?

Unity seems to have taken the stance that the support are in the hands of the developers to support these features (which as mentioned is either unrealistic due to multiple build versions or not being aware of the problem in the first place). Net result of this is lots of games released with lacking support.

On the other hand, alt-tabbing causing network disconnects in multiplayer games can cause huge backlash on the developers, and thus it makes sense for them to sacrifice support for exclusive fullscreen/features/performance in exchange for reliability, and thus say that it is a Unity engine problem they can’t do anything about.

Or, is the problem in the hands of the operating system/DWM/DirectX not allowing for exclusive fullscreen applications to keep them self updateting while minimized? Or in the way the drivers hook into the graphics pipeline to enable these technologies…

In any case, I hope more people will become aware of the problem, and see it as a real issue and think of solutions for it - googling the problem tends to give sparse results, discussed on various forum posts often on a pr game basis where developers are taking flak for not supporting SLI/Crossfire etc.

Personally, I do think Unity has a responsibility to help resolve the issue since it is basis for so many new titles. It is unrealistic to expect all smaller developers to be aware of the problem and Unity as a company can have a larger impact to get it fixed if the problem lies elsewhere (OS/driver level).

It might be the case that some of the support issues has been resolved in newer drivers (SLI/G-Sync) to work with windowed fullscreen. I can only testify that fx. automatic 3D vision does not function in newer Unity based 3d games.

please comment, correct or help shed more light on this issue

links to threads discussing related issues:

https://7daystodie.com/forums/showthread.php?22128-True-full-screen-fullscreen-mode-(not-borderless-window)

http://support.facepunchstudios.com/feedback/view/3448-allow-exclusive-fullscreen-for-amd-crossfire-support
http://fromthedepthsgame.com/forum/showthread.php?mode=linear&tid=6724&pid=65527

http://forum.kerbalspaceprogram.com/threads/114935-KSP-1-0-x-0-90-windows-true-exclusive-fullscreen-shadowplay-and-gsync-solution

http://www.gamedev.net/topic/664329-should-modern-games-work-within-a-fullscreen-window/

1 Like

Excellent overview of the issue. Definitely something that we need for PC games.

Scott Goodrow (The Wild Eternal) seems to have found a solution:
http://www.thewildeternal.com/2014/09/21/devlog-resolution-controller