protonscr

Steamlink frame buffer freezes on Overwatch Hero Selection screen

steamclosed 3rd party gameStreaming
ValveSoftware/steam-for-linux#5828 · opened 2018-10-10 by ryao · updated 2021-04-09 · 2 comments · github
1 matching comments, n / p to jump
Rryao 2018-10-10 github

Your system information

  • Steam client version (build number or date): 1536436120
  • Distribution (e.g. Ubuntu): Gentoo
  • Opted into Steam client beta?: No
  • Opted into Steamlink firmware beta?: Yes
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

I have a shortcut in steam for starting overwatch from the lutris install via a script that I wrote. It starts fine. I can do the tutorial fine. The controller works fine. The steam overlay works fine.

When the hero selection screen appears, the screen buffer freezes. Sound continues playing and from what I can tell the game is running fine. Pressing the trigger on the controller to fire the character's gun will cause audible sounds of gun fire. Using the control stick to move will make movement sounds. However, the steamlink frame buffer is frozen and I need to forcibly power cycle it. Going to the host machine's display to see what happens shows no problems.

Steps for reproducing this issue:

  1. Install Lutris
  2. Install Overwatch through Lutris (the DXVK version)
  3. Make a script to start overwatch (see below)
  4. Install Steam
  5. Make a shortcut that uses that script.
  6. Verify that it starts overwatch.
  7. Exit overwatch.
  8. Setup Steamlink.
  9. Try to play overwatch over Steamlink
  10. Observe screen buffer freeze on hero selection screen when trying to play again bots.
#!/bin/sh
# Battle.net won't actually start Overwatch if it isn't already started, but we try anyway.
env SDL_VIDEO_FULLSCREEN_DISPLAY="off" PBA_ENABLE="1" WINEESYNC="1" __GL_SHADER_DISK_CACHE="1" __GL_SHADER_DISK_CACHE_PATH="${HOME}/Games/overwatch" __GL_SHADER_DISK_CACHE_SKIP_CLEANUP="1" __GL_THREADED_OPTIMIZATIONS="1" __PBA_CB_HEAP="128" __PBA_GEO_HEAP="512" mesa_glthread="true" DRI_PRIME="0" WINEDEBUG="-all" WINEARCH="win64" WINE="/usr/bin/wine" WINEPREFIX="${HOME}/Games/overwatch" WINEDLLOVERRIDES="d3d10,d3d10_1,d3d10core,d3d11,dxgi=n" "/usr/bin/wine" "/home/richard/Games/overwatch/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe" --exec="launch Pro";

# Give battle.net time to start. This is a hack.
sleep 7;

# Start Overwatch by running the same exact command.
env SDL_VIDEO_FULLSCREEN_DISPLAY="off" PBA_ENABLE="1" WINEESYNC="1" __GL_SHADER_DISK_CACHE="1" __GL_SHADER_DISK_CACHE_PATH="${HOME}/Games/overwatch" __GL_SHADER_DISK_CACHE_SKIP_CLEANUP="1" __GL_THREADED_OPTIMIZATIONS="1" __PBA_CB_HEAP="128" __PBA_GEO_HEAP="512" mesa_glthread="true" DRI_PRIME="0" WINEDEBUG="-all" WINEARCH="win64" WINE="/usr/bin/wine" WINEPREFIX="${HOME}/Games/overwatch" WINEDLLOVERRIDES="d3d10,d3d10_1,d3d10core,d3d11,dxgi=n" "/usr/bin/wine" "/home/richard/Games/overwatch/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe" --exec="launch Pro"

Note that I am using a special verson of Gentoo's app-emulation/wine-staging-3.17 that has PBA and ESYNC builtin that I made to match what Lutris' own prebuilt binary should provide. It should be noted that PBA should be no effect because DXVK is used. You can run lutris with lutris -d and start overwatch to get the environment variables used.

If you want to build the same exact patched wine-staging install that I have, run the following in a root shell when wine-staging is already installed and gentoolkit is installed:

EBUILD="$(equery which wine-staging:3.17)"
ebuild "${EBUILD}" clean unpack
sed -i -e 's/test "$enable_msvfw32_ICGetDisplayFormat" -eq 1/false/' /var/tmp/portage/app-emulation/wine-staging-3.17/work/wine-staging-3.17/patches/patchinstall.sh
ebuild "${EBUILD}" prepare
cd /var/tmp/portage/app-emulation/wine-staging-3.17/work/wine-3.17
wget https://github.com/zfigura/wine/releases/download/esyncb4478b7/esync.tgz
tar -xf esync.tgz 
cd esync/
curl https://raw.githubusercontent.com/Tk-Glitch/PKGBUILDS/69abc5dcf32446a76006ea83f144ee4a208b270e/wine-tkg-git/esync-staging-fixes-r2.patch | patch -p1
curl https://raw.githubusercontent.com/Tk-Glitch/PKGBUILDS/69abc5dcf32446a76006ea83f144ee4a208b270e/wine-tkg-git/esync-compat-fixes-r2.patch | patch -p1
cd ..
rm esync/*orig
for i in esync/*; do patch -F5 -p1 < $i;done;
curl https://raw.githubusercontent.com/Tk-Glitch/PKGBUILDS/69abc5dcf32446a76006ea83f144ee4a208b270e/wine-tkg-git/PBA317%2B.patch | patch -p1
curl https://raw.githubusercontent.com/Tk-Glitch/PKGBUILDS/69abc5dcf32446a76006ea83f144ee4a208b270e/wine-tkg-git/esync-no_alloc_handle.patch | patch -p1
cd
ebuild "${EBUILD}" merge
eselect wine set wine-staging-3.17

Configure lutris to use the system wine, to disable the lutris runtime, to disable the process monitor and to enable WINEESYNC=1 (it gets set to 0 when changing to the system wine). Then it should be safe to get lutris to dump the environment variables. That should match what the above script was doing environment variable wise.

Kkisak-valve maintainer 2021-03-05 github

Hello @ryao, this issue report is an oddball because Overwatch is not a Steam game and there's a bunch of generally unsupported setup steps needed to reproduce this issue.

Are you still experiencing this issue on an up to date system? If you are, have you also encountered this issue with a Steam game and Proton?

Kkisak-valve maintainer 2021-04-09 github

Closing pending feedback.