Debating removing FS (Fullscreen) Hack from proton builds
Added 2020-05-29 06:02:46 +0000 UTCHi all. This is something I've been debating for a long while. There are quite a few key reasons I'd like to remove the fullscreen hack from future proton builds, which I will list below:
1. It requires multiple git commit reverts in a revert list that grows because winex11 changes are not maintained or rebased by Valve's proton. This eventually result in games breaking, or games which are fixed by these changes requiring fshack to be disabled (MK11, Injustice 2).
2. It requires maintaining a separate patchset for rawinput. The rawinput patchset was added to staging a long time ago, but because of the fullscreen hack patchset, we have to disable the staging version, and apply the separate patchset on top of fshack
3. It requires several other staging patchsets to be disabled or reverted, including window decorations, keyboard translation patches, window position patches, and active window patches. These are most beneficial for applications like origin and battle.net
4. Sometimes it -still- breaks games. There are a few titles which work in Proton, but don't work in the 'protonified' versions because fullscreen hack doesnt handle the window properly after upstream changes. Some of these games include Darksiders: Warmastered Edition, Metal Gear Solid V, Darksiders II, Killer Instinct, and a few others that just don't handle the window properly. Darksiders: WM and MGS V can be fixed with dxgi set to native, but its an ongoing problem.
5. It also make bug reporting more difficult because window/screen behavior is different from upstream wine/wine-staging.
6. it still does not work properly for some monitors which have ultrawide resolutions or other non-standard ratios.
7. It is not something that can be implemented with an easy toggle for on/off
There are some other issues tied to it, but those are the main problems. For those that don't know what fullscreen hack does, it resizes the game to your monitor's current resolution, rather than resizing your resolution to what the game expects. So if an old game for example wants to run in 1024x768, and your monitor is 1920x1080, it would keep the games 1024x768 resolution inside a 1920x1080 window without skewing/distorting it, and keep it fullscreened without changing your monitor's resolution. While this is useful, it's much easier to just change the resolution than to constantly deal with the patchset breaking some games an maintaining a gigantic set of patches to work around it.
I should also mention the black bars issue in AC:Odyssey is also fixed with the STEEP patch -- only when fshack is disabled.