ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.16k stars 1.06k forks source link

SeaBed (583090) #7807

Open sonic2kk opened 4 months ago

sonic2kk commented 4 months ago

Compatibility Report

System Information

I confirm:

steam-583090.log

Symptoms

When running the game Seabed fullscreen, the window turns black on SteamOS, and contains some artifacts on the Linux Desktop. Running the game in Windowed Mode appears to work fine.

Reproduction

  1. Open Seabed
  2. If the game is not fullscreen, press Alt+Enter to make it fullscreen
  3. The window will not render correctly
  4. Press Alt+Enter to exit fullscreen
  5. The game window will display normally.

If the game starts fullscreen, press Alt+Enter to exit fullscreen. Re-entering fullscreen will cause the window to render incorrectly once again.

When running in fullscreen, the Proton log appears to start spamming these two error lines repeatidly:

6841.877:0188:018c:err:x11drv:xinerama_get_fullscreen_monitors Failed to get xinerama fullscreen monitor indices.
6841.877:0188:018c:err:x11drv:update_net_wm_fullscreen_monitors Failed to find xinerama monitors at (0,0)-(1920,1080)

I am not an expert so I am unsure if these are related.

If the game is not fullscreen, the game appears to run fine from a brief test.

sonic2kk commented 4 months ago

From inspecting the blame, it seems the code logging this error, and its surrounding code, was introduced in ValveSoftware/wine@bd8ec8f264b5403f90bca6ecb26ae3170995ccd4 (relevant log line), which introduced support for _NET_WM_FULLSCREEN_MONITORS hint.

I wonder if this is an Environment-specific issue. I will update my OP to note that I am running KDE Plasma Wayland.

sonic2kk commented 4 months ago

Out of interest, I spot-checked a bunch of Proton versions, clearing the prefix each time, to see how older Proton versions worked in particular to see how versions before https://github.com/ValveSoftware/wine/commit/bd8ec8f264b5403f90bca6ecb26ae3170995ccd4 behaved. None worked unfortunately, although Proton 6.3-8 and below only show a black screen on my Linux Desktop. 7.0 onwards show minor artifacting.

Also, while these versions don't work, Proton 6.3-8 and below can enter fullscreen much faster with this game. Exiting fullscreen still takes some time though.

sonic2kk commented 4 months ago

I tried in Steam Deck Desktop Mode (the only X11 session I have access to atm), and I was able to get the game to work.

If the game opens fullscreen, or if it opens windowed and is then fullscreened, the following log lines will be in the Proton log:

2911.776:012c:0130:trace:seh:dispatch_exception  eax=887601c2 ebx=00000159 ecx=00000004 edx=00000000 esi=007bba14 edi=00000010
2911.776:012c:0130:trace:seh:dispatch_exception  ebp=00b0e704 esp=00b0e698 cs=0023 ss=002b ds=002b es=002b fs=0063 gs=006b flags=00210283
2911.776:012c:0130:trace:seh:call_stack_handlers calling handler at 7BEE6270 code=c0000005 flags=0
2911.776:012c:0130:trace:seh:__regs_RtlUnwind code=c0000005 flags=2
2911.776:012c:0130:trace:seh:__regs_RtlUnwind eax=00000000 ebx=00000000 ecx=c0000005 edx=00b0e6ac esi=00b0e1e0 edi=00b0e230
2911.776:012c:0130:trace:seh:__regs_RtlUnwind ebp=00b0dfbc esp=00b0dfb4 eip=7becee52 cs=0023 ds=002b fs=0063 gs=006b flags=00200206
2911.776:012c:0130:trace:seh:__regs_RtlUnwind calling handler at 7BF9DA00 code=c0000005 flags=2
2911.776:012c:0130:trace:seh:__regs_RtlUnwind handler at 7BF9DA00 returned 1
2911.776:012c:0130:trace:seh:IsBadReadPtr 887601C2 caused page fault during read
2911.776:012c:0130:trace:seh:dispatch_exception code=c0000005 flags=0 addr=7BEDB107 ip=7bedb107
2911.776:012c:0130:trace:seh:dispatch_exception  info[0]=00000000
2911.776:012c:0130:trace:seh:dispatch_exception  info[1]=0000014d
2911.776:012c:0130:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised

These appear repeatidly while the game is fullscreen and not working.

However, in Desktop Mode (and presumably any at least Plasma X11 session), tabbing out and back in will get the game to work when fullscreen. After this, the above repeated log section goes away,

So perhaps the issues reported above with Xinerama and _NET_WM_FULLSCREEN_MONITORS is specific to XWayland (including Gamescope)?

I did not test the Wine Wayland backend yet, but out of morbid curiosity, I will be testing that tomorrow (since these errors from the OP are specific to x11drv in Wine).

sonic2kk commented 4 months ago

I tested the Wayland backend with a build of the unofficial Proton-tkg based from Wine Master (proton_tkg_9.10.r0.g12bbb07c). It indeed started with Wayland (denoted by the alterantive window decorations and incorrect fractional scaling behaviour, and other elements indicative of Wine's current very early Wayland backend) but the game only rendered a black window in windowed mode, and when trying to fullscreen, it attempted to spread across two of my four monitors and then promptly crashed.

sonic2kk commented 4 months ago

I noticed when doing additional troubleshooting, the error block shown on Plasma X11 on SteamOS are also appearing for Plasma Wayland.

I am not sure exactly then what is causing these issues, as Plasma X11 does eventually work, but Plasma Wayland does not. Unsure if Plasma X11 works because it's simply an older version on SteamOS (Plasma 5.27.10 versus Plasma 6.0.5) but still. Given that this issue also affects GameScope on SteamOS Game Mode as well as GameScope nested on my PC, I figure there is something deeper going on here.


Some other log lines that may be of interest may be:

sonic2kk commented 1 week ago

As of the new engine update, SeaBed now runs properly with Wine, but the Legacy branch that uses the old engine does not to my understanding.