Proton

From FEX-Emu Wiki
Revision as of 17:47, 29 February 2024 by Sonicadvance1 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Proton is the Windows on Linux compatibility layer that Steam uses to run Windows titles. Read more about it here


Prerequisites

Gotchas

  • If pressure-vessel complains about missing lib64 files or unable to execute some adverb then two things could have happened
    • Your version of FEX is too old, needs at least FEX-2207

Running

Selecting a Proton game inside of the Steam install and running it should be all that is necessary. Be patient as due to how pressure-vessel and FEX interacts with each other, building the chroot environment can take a few minutes. Watch the processes in htop if you want to make sure.

DXVK

Lots of games require Vulkan in order to run since they will be executed using DXVK. Make sure your AArch64 device has a new enough Vulkan driver to handle DXVK.

Running outside of pressure-vessel

WIP

Environment variables

  • STEAM_COMPAT_DATA_PATH
    • This needs to point to a path where proton will set up a wine prefix
    • export STEAM_COMPAT_DATA_PATH=$HOME/test_proton
    • mkdir $STEAM_COMPAT_DATA_PATH
  • STEAM_COMPAT_INSTALL_PATH
    • Needs to point to the game install path
    • export STEAM_COMPAT_INSTALL_PATH=$STEAM_LIBRARY/steamapps/common/Sonic\ Mania/
  • STEAM_COMPAT_CLIENT_INSTALL_PATH
    • Needs to point to steam
    • export STEAM_COMPAT_CLIENT_INSTALL_PATH=$HOME/.steam

Running

  • ./proton waitforexitandrun $STEAM_LIBRARY/steamapps/common/Sonic\ Mania/SonicMania.exe


Pressure-vessel errors

 bwrap: Can't get type of source /usr/lib64: No such file or directory
  • Might need /usr/lib64 in your AArch64 root?
  • Might be because your rootfs is currently "unbroken", thus having a `/tmp` folder inside of it. execute `break_chroot.sh` and ensure `/tmp` is not in the rootfs.
  • Not 100% triaged.

Development

Updating pressure-vessel

Shell for debugging

Set environment variable:

 PRESSURE_VESSEL_SHELL=instead

eg: Launching a proton game from Steam

 PRESSURE_VESSEL_SHELL=instead %command%

This will open an xterm window that some work can be done before running the application.

To run the command from the xterm instance again

 "$@"

The quotes are important