Demystifying Fullscreen Optimizations
TLDR – Demystifying Fullscreen vs Windowed Mode
Games on PC generally offer three different types of display modes: Fullscreen Exclusive (FSE), Windowed, and Borderless Windowed. Fullscreen Exclusive mode gives your game complete ownership of the display and allocation of resources of your graphics card. In windowed game mode, the game is deployed in a bordered window which allows other applications and windows to continue running in the background. The Desktop Window Manager (DWM) has control of the display, while the graphics resources are shared among all applications, unlike in a Fullscreen Exclusive environment. The third mode is borderless windowed. In a borderless windowed mode, the game is still running in a window but has no border around it. This means the size of window can be adjusted to fill the entire screen while other processes still run in the background.
With the release of Windows 10, we added Fullscreen Optimizations – which takes full screen exclusive games and runs them instead in a highly optimized borderless windowed format that takes up the entire screen. You get the visual experience and performance of running your game in FSE, but with the benefits of running in a windowed mode. These benefits include faster PC commands such as alt-tab, multiple monitor set ups and overlays. We have extensive performance data that indicates that almost all users who use Fullscreen Optimizations have equal performance to Full Screen Exclusive. However, if you do find that you are experiencing any issues that may be related to full screen optimizations, please head to the troubleshooting section where we will walk through how to optimize your system and provide feedback to our team.
Full Screen Exclusive (FSE) was created to give the application or game you are running full control of your desktop and display. As a user, this means that you are getting a fully immersive gaming experience while seeing great performance from your system. However, PC Gaming has evolved and FSE can bring challenges that can hinder game play and the overall gaming experience in subtle ways. One example is when you give an application full control of your desktop, you cannot run any other processes in the background. In addition, there can be performance issues when you try and use overlays or alt-tabbing.
Overlays, which are windows within the game that are not created by the game (such as Game Bar) are another of the key limitations of FSE. While running with FSE, overlays are possible, but they may cause some issues. In order to create an overlay, the outside application would have to step into and intercept the rendering process. So, if you wanted an overlay – the frame would be rendered, then intercepted by the command that generates the overlay before the frame was presented, inject the overlay, then finally present the frame to the graphics card. This process of intercepting the render and presentation process can cause problems including performance regressions, instability and issues with anti-cheat.
The Road to Fullscreen Optimizations
We wanted to create the best gaming experience possible, so we enhanced the current FSE mode by creating Fullscreen Optimizations. Fullscreen Optimizations was designed for gamers to experience the best aspects of both FSE and borderless windowed mode, allowing games to take up the entire screen, run at full speed, support fast alt-tab switching, and support for overlays.
When using Fullscreen Optimizations, your game believes that it is running in Fullscreen Exclusive, but behind the scenes, Windows has the game running in borderless windowed mode. When a game is run in borderless windowed mode, the game does not have full control of the display– that overarching control is given back to the Desktop Window Manager (DWM). The DWM manages the composition/organization of the desktop display content from various applications, meaning it controls what is rendered and presented to the front of your display and what is held in the background. However, this control has historically resulted in a slight performance overhead vs FSE, where the game has full control.
To get back this performance overhead, we enhanced the DWM to recognize when a game is running in a borderless full screen window with no other applications on the screen. In this circumstance, the DWM gives control of the display and almost all the CPU/GPU power to the game. Which in turn allows equivalent performance to running a game in FSE. Fullscreen Optimizations is essentially FSE with the flexibility to go back to DWM composition in a simple manner. This gives us the best of both worlds with performance and other features that require the DWM, such as overlays. When an overlay such as the Game Bar is present, the DWM reassumes control of the display, and a slight performance overhead is incurred so that the overlay can be composited on top of the game in a safe and stable way. (To learn more about the Xbox Game bar, check out the info the Game Bar Team has information posted here.)
To make sure that we did not release Fullscreen Optimizations until the performance was equal to FSE, Fullscreen Optimizations was gradually rolled out in multiple stages. Throughout the roll out, we continued performance testing and our telemetry indicates that performance is, on average, as good or better than FSE.
How to Check if Fullscreen Optimizations are Enabled
You can check whether Fullscreen Optimizations are enabled or not by opening the Xbox Game Bar via Win+G. If you are running in Fullscreen Exclusive, then the display brightness may be flicker. If you are in Fullscreen Optimizations, the Xbox Game Bar should pop up as an overlay. You can do this with other system UIs such as the volume indicator too. Make sure to update your drivers to ensure you can take advantage of Fullscreen Optimizations.
If you find that you are having trouble with Full Screen Optimizations, such as performance regression or input lag, we have some steps that can be useful. This includes how to disable the feature for any specific game, but also how to provide us with feedback regarding your gaming experience.
Below are the instructions on how to disable Fullscreen Optimizations for a game.
- Right Click on the Executable File (.exe) and Select Properties
- Select the Compatibility Tab
- Under Settings – Select “Disable Fullscreen Optimizations”
- Click Apply
Our goal is to create the best possible gaming experience, so if you do find performance issues or other problems that are resolved by disabling Full Screen Optimizations, we want to know. Your feedback is extremely important to us and helps us constantly improve. Below are the instructions that you can follow to report any issues.
- Go to https://aka.ms/fullscreenoptimizationsfeedback which will open to the correct feedback hub for any Fullscreen Optimization related issues.
- In the first tab, Summarize the problem – you also have an optional Details section to provide further detail about your issue. Once completed, click next.
- On the second page, select Problem for the category.
- Under the drop-down menus – select Gaming and Xbox and then select Game Performance and Compatibility
- On the Additional Information tab, select Important Functionality Not Working
- Under Additional Information, you can attach screen grabs or replay captures that help show what you are experiencing. While this is optional – it provides us with much more detail on how we can fix the issue.
We hope this explanation is useful and that it helps improve your experience. We welcome any and all feedback. Happy Gaming
What about variable refresh rate? Does it work with Fullscreen Optimizations?
If VRR works with borderless windows there is no reason for this changes in the window manager to affect this functionality. It seems just removal of overhead from the DWM switching contexts.
No at all.
I reported a long time ago, that the Optimization and the VRR doesn’t work when you run Desktop Duplication (which is pretty important these days for recording of gameplay etc.). The game start to stutter.
I just tested that disabling FS optimizations solves this problem. Also what’s interesting that with optimization after alt-tab the game run smooth for few second and then start stutter. It looks like the optimization took some control over it…
Only response which I got from MS was, that it’s problem of GPU driver manufacturer. After asking on AMD they said me, that DDupl is close thing of MS and they can’t do anything about it. Also I don’t think that’s GPU problem, because it happens on nVidia G-Sync the same as on AMD FreeSync…
I’m pretty sure that as of the May 2019 Windows 10 release, the DWM is compatible with G and FreeSync.
How will this affect games that require Fullscreen Exclusive to run in HDR (such as Destiny 2)? Will it make them run HDR in Windowed Borderless or simply allow them to Alt-Tab more easily?
Fullscreen Optimizations are nice for what they are, but a lot of games are now DX12 native with no FSE mode. As a disabled gamer, I require external software such as AutoHotKey and others for things like mouse curve acceleration setting.
I’m half blind, half deaf, and have a deformed right arm that prevents proper keyboard+mouse use in most games that have a lot of keybinds. As such, I need to use either a controller, or mouse+controller combo (for games such as World of Warcraft). When Blizzard Entertainment removed FSE mode from WoW, they eliminated my ability to play the game properly as the software I use to set the specific mouse acceleration curve stops functioning properly (or at all) when the app loses focus.
Borderless Windowed mode does not prevent the app from losing focus. This is critical for disabled gamers that use alternative methods to play games. I’ve been dumped out of borderless windowed games straight to the desktop several times due to some random notification or the OS deciding it had to show something in the taskbar. That gets me killed in games and also renders external software unable to recover properly when returning to the game via mouse click or ALT+TAB.
I find it highly ironic that Microsoft, the maker of the Accessibility Controller for disabled players, has completely omitted FSE from DX12, rendering many games that used to be playable as unplayable now. I’ve lost out on an entire expansion in World of Warcraft because of this. Disabled gamers don’t deserve to be left out in the cold like this. We need FSE to ensure our methods of gaining accessibility are not lost or hampered in any way.
Please give FSE back to us so we can play whatever game we choose instead of being robbed of such.
I think you should think in reverse — It’s those accessibility software need to be updated with support of DX12 instead of asking support of FSE in DX12.
If performance is better without FSE than there’s no reason maintaining code for that. And this also make third party software supporting easier to build as there’s only one mode now instead of have to treat windowed and FSE differently.
RivaTuner is the only third party overlay software you really need when it comes to monitoring, and I don’t think they have issues at all when it comes to exclusive fullscreen. It’s the game’s engine and/or developers that do the blocking during loadup (some CRyEngine and UE4 games do, which can be circumvented easily), or just block almost all overlays for no specific reason except “it’s cheating” (DESTINY 2). Pretty hard to do any sort of benchmarking or testing or troubleshooting game performance when you can’t monitor things that need to be monitored.
Borderless maximized games should automatically call the “game mode” on the notification assistant, at least on recent versions of windows. You can still personalize it’s behaviour in “PC Settings” > “Focus assists”. At least this should mitigate any focus issues made by the action centre if they create any issue with your accessibility software.
As for DX12 and FSE, it’s a choice of the game developers what kind of mode using for fullscreen mode (ie: borderless window or exclusive mode) since SetFullscreenState() is still there.
They usually choose only the borderless window for three reasons: it is debug friendly, performance are the same and it doesn’t switch to desktop in the old clumsy way.
Many games from xbox game pass already perform worse for me as only borderless windowed mode is available. I’m playing Wolfenstein Youngblood right now the game seems to have frame pacing issues even with v-sync on which I’ve not encountered in the Steam version in fullscreen mode. Average frame rates are lower as well. People asked for many things from Windows but no one ever asked for this. I know you really want to inject your services into our games and manipulate the way people play their games. But just like every Windows update breaking more stuff that worked just fine, this is causing various issues and many people really want you to leave their games alone.
Youngblood is a Vulkan game. The above applies to DX12.