Renaud Lepage
139ad89ed3
proton: Assume STEAM_COMPAT_CLIENT_INSTALL_PATH is always set
2021-05-27 13:43:12 -05:00
Arkadiusz Hiler
d2d52bd68a
proton: Open the log file in append mode.
...
Opening file in append mode sets the offset to the end of the file prior
to each write. This allows user to append tags/notes to the log file
just before interesting events, e.g.:
local $ ssh ivyl@test
test $ echo "!!! FOCUS CHANGE" >> ~/steam-XYZ.log
The log file is deleted just before we open it anyway, so there won't be
any leftover content from previous session.
2021-05-27 18:06:34 +03:00
Jacek Caban
f632b693bd
proton: Add runinprefix verb for running a program in a running session
...
CW-Bug-Id: 16785
2021-05-13 10:07:29 -05:00
Paul Gofman
8ddd3c36a1
proton: Link tahoma.ttf to Windows/Fonts.
...
CW-Bug-Id: 18862
2021-04-27 13:40:50 -05:00
Paul Gofman
e1885f8496
Add replacement font for Courier Bold.
...
CW-Bug-Id: 18862
2021-04-27 13:40:40 -05:00
Arkadiusz Hiler
575d9bc1f9
Don't install amd_ags_x64 into prefix
...
The DLL ships with the games and having the built-in version in
system32/syswow64 has unexpected consequences.
If the game is launched from a subdirectory, but the DLL is in current
working directory, the built-in takes precedence as CWD has lower search
priority than system directories (with the default SafeDllSearchMode).
By not installing amd_ags_x64.dll in system32/syswow64 the built-in is
still picked up correctly from lib/ when necessary.
There's an accompanying patch for wine that makes sure wineboot won't
install the dll, but since we construct our default_pfx in a special way
we also need to make sure that files won't get copied/linked there.
To make prefix updates smooth this change also removes any stale
amd_ags_x64.dlls that may have been installed by previous version of
Proton.
CW-Bug-Id: 18804
2021-04-27 11:11:14 -05:00
Andrew Eikum
937607d1e5
proton: Log important variables set by the system and user_settings
2021-04-27 09:20:11 -05:00
Andrew Eikum
c9540c2166
proton: Add PROTON_HEAP_DELAY_FREE runtime config option
2021-03-31 14:08:10 -05:00
Andrew Eikum
0e4675f4d2
proton: Add PROTON_NO_XIM runtime config option
2021-03-31 14:08:10 -05:00
Andrew Eikum
8398ebded4
update wine to 6.3
2021-03-31 14:08:09 -05:00
Andrew Eikum
86433ceddd
proton: Add nativevulkanloader config setting
2021-02-05 08:16:50 -06:00
Andrew Eikum
38f603d7bf
wineopenxr: Add openxr support
2021-01-11 12:26:56 -06:00
Andrew Eikum
4c0f01e2dc
proton: Add gamedrive config setting to create an S: drive for the game's library
2020-12-08 08:24:04 -06:00
Andrew Eikum
25a2a690b0
proton: Add helpers for pre/appending to env var lists
2020-12-08 08:23:57 -06:00
Andrew Eikum
1b975c15dd
proton: Add vkd3dbindlesstb compat config option
2020-12-08 08:23:57 -06:00
Pierre-Loup A. Griffais
300d23ca7c
proton: give transcoded files their own path
...
STEAM_COMPAT_TRANSCODED_MEDIA_PATH
2020-12-01 13:03:31 -06:00
Rémi Bernon
d126a401f6
proton: Add dotnetfx35.exe builtin override.
2020-11-10 07:31:32 -06:00
Andrew Eikum
1002d7c23d
proton: Attempt to log SLR version
2020-11-09 13:43:05 -06:00
Newbyte
6305de83bc
proton: Make log directory configurable via PROTON_LOG_DIR
2020-11-09 13:43:05 -06:00
Andrew Eikum
7493508dc8
proton: Also catch IOErrors from fcntl
2020-10-13 13:22:16 -05:00
Andrew Eikum
98a2a3b819
proton: Respect WINEDLLOVERRIDES from user_settings, too
2020-09-29 14:29:06 -05:00
Andrew Eikum
746cab7813
proton: Add write permissions to copied files
...
We copy some read-only files into the prefix, which can cause problems
(specifically, downgrading to some earlier Proton versions).
2020-09-29 14:29:06 -05:00
Andrew Eikum
b1b12f8c4f
proton: Also copy VC Runtime libraries
2020-09-29 14:29:06 -05:00
Andrew Eikum
a7d44ffecc
proton: Add PROTON_HIDE_NVIDIA_GPU runtime config
2020-09-29 14:29:06 -05:00
Andrew Eikum
8130c38a19
proton: Also track Steam files
...
We want to remove these on downgrade, as older Proton versions aren't
set up to intercept GameOverlayRenderer.
2020-09-29 14:29:06 -05:00
Andrew Eikum
0ac177efaa
proton: Also copy vulkan-1.dll
2020-09-29 14:29:06 -05:00
Rémi Bernon
265b103e72
proton: Add ntdll to the builtin dll symlink exceptions.
2020-09-29 14:29:06 -05:00
Rémi Bernon
1ae76adb07
proton: Copy Steam library files to C:/Program Files (x86)/Steam.
2020-09-29 14:29:06 -05:00
Andrew Eikum
f3f098067a
proton: Copy more dxsetup redists
2020-09-29 14:29:05 -05:00
Andrew Eikum
c39b1fc34e
proton: Don't copy library permissions
...
These need to be writable.
2020-09-29 14:29:05 -05:00
Andrew Eikum
d620a32883
proton: Only skip rebuilding symlinks
2020-09-29 14:29:05 -05:00
Esme Povirk
911a468618
Add the ability to copy builtin dll's instead of making symlinks.
2020-09-29 14:29:05 -05:00
Esme Povirk
debb619d17
Keep track of when prefix setup tasks need to be re-done.
2020-09-29 14:29:05 -05:00
Esme Povirk
369b57d8c8
Proton: Add code for updating builtin dll's.
2020-09-29 14:29:05 -05:00
Andrew Eikum
f21922d970
media-converter: Add media-converter gstreamer plugin
2020-09-29 14:29:05 -05:00
Andrew Eikum
7d444028c3
update wine to 5.13
2020-09-29 14:29:05 -05:00
Andrew Eikum
4ee3a5af70
proton: Add vkd3dfl12 to force Direct3D 12 feature level
2020-07-15 15:28:04 -05:00
Andrew Eikum
1c26086688
Fix up vkd3d-proton build
2020-07-15 10:31:53 -05:00
Andrew Eikum
9f614e83ce
proton: Add nowritewatch config option to disable write watch support
2020-06-05 08:58:23 -05:00
Alan
6e821c774f
proton: Double-check to avoid locking, if unnecessary
2020-06-01 11:38:16 -05:00
Andrew Eikum
1a0cf7f7e2
proton: Unset WINE{E,F}SYNC if they are disabled
2020-04-27 07:51:44 -05:00
Rémi Bernon
75ed8f6469
proton: Introduce seccomp runtime option.
...
This then sets the WINESECCOMP environment variable to enable seccomp
filter for DOOM Eternal DRM (and others) without impacting other games.
2020-04-15 11:57:44 -05:00
Vincent Povirk
aaeb4445f3
proton: Store original LD_LIBRARY_PATH before modifying it
...
Some parts of Wine will invoke system binaries, which should not use
Proton's libraries.
2020-04-01 11:49:02 -05:00
Andrew Eikum
a9575f7c77
proton: Add cmdlineappend: compat config option
2020-03-19 14:48:52 -05:00
Andrew Eikum
2708188322
proton: Don't dump PROTON_VR_RUNTIME variable
...
It's set by steam_helper now.
2020-03-18 13:50:09 -05:00
Andrew Eikum
f96c8d6e6a
proton: Add noforcelgadd compat config option
2020-03-09 10:03:54 -05:00
Andrew Eikum
e781acfa78
proton: Force LARGE_ADDRESS_AWARE flag for all applications
2020-03-09 10:03:54 -05:00
Andrew Eikum
349df9c436
steam_helper: Set up VR paths in steam.exe, not proton
...
This speeds up game launch times.
2020-03-09 10:03:54 -05:00
Georg Lehmann
20f6b88943
proton: Dump WINEFSYNC in debug scripts
2020-02-24 09:33:47 -06:00
Andrew Eikum
5d3d462f59
proton: Default to DXVK for d3d9.
2020-02-07 06:45:08 -06:00
Andrew Eikum
bca0a720cd
build: Build and ship glib, gstreamer, gst-plugins-base, and gst-plugins-good
2020-02-07 06:45:08 -06:00
Andrew Eikum
45e3edf3ef
update wine to 5.0
2020-02-03 09:54:07 -06:00
Andrew Eikum
4b08e7a1ae
proton: Be quiet if steamvr is missing
2020-01-13 13:56:36 -06:00
Andrew Eikum
4338fb517a
proton: Remove python2 case
...
Python2 is dead, and we explicitly invoke python3 in the shebang anyway.
2020-01-13 08:25:10 -06:00
Andrew Eikum
f7f6f6b4db
build: Use new dxvk_config library instead of importing into wined3d
2020-01-10 07:49:13 -06:00
Andrew Eikum
1a460ade01
proton: Set up VR paths after waiting for wineserver to exit
...
We need the server to exit before calling winepath in case the ESYNC or
FSYNC settings changed between run and waitforexitandrun calls.
2019-11-07 13:36:27 -06:00
Andrew Eikum
7d37963faf
user_settings.py: Add default VKD3D_DEBUG logging
2019-11-07 13:36:27 -06:00
Andrew Eikum
6fc7e9580c
proton: Use Wine's DXGI by default
...
Required for vkd3d support. You can still use DXVK's DXGI with
WINEDLLOVERRIDES="dxgi=n".
2019-10-22 11:15:47 -05:00
Andrew Eikum
230b9d81a2
proton: Support any proton_dist compression scheme
2019-10-18 10:09:36 -05:00
Andrew Eikum
24300e3f27
Don't compress dist tarball
...
This lets us take advantage of Steam delta updates.
2019-10-18 09:56:47 -05:00
Andrew Eikum
da43c48f3d
Build Source Han Sans SC Regular as if it were YaHei
2019-08-23 09:57:46 -05:00
Andrew Eikum
e924a862d7
proton: Remove old xinput controller entries from registry
...
These will get iterated by setupapi even if they're not physically
present, which causes some games (HITMAN 2) to treat these devices like
xinput devices.
2019-08-23 09:57:46 -05:00
Andrew Eikum
a6c0e8b2ff
proton: Don't override the environment with user_settings
...
The intended priority orider is command-line options (the environment)
beats user_settings beats compat_config settings beats defaults.
2019-08-05 09:23:43 -05:00
Andrew Eikum
685f119488
proton: pylint fixes
2019-08-01 14:30:26 -05:00
Andrew Eikum
d0346080bd
proton: Check that we're running as a script
2019-08-01 14:30:26 -05:00
Andrew Eikum
055e095af7
proton: Use the right environment creating default prefix
2019-08-01 14:30:26 -05:00
Andrew Eikum
d2cf7e08eb
proton: Change global references to instance
2019-08-01 14:30:26 -05:00
Andrew Eikum
7425001e8e
proton: Move session methods into Session class
2019-08-01 14:30:26 -05:00
Andrew Eikum
adcdea1315
proton: Move session globals into Session class
2019-08-01 14:30:26 -05:00
Andrew Eikum
975875265c
proton: Swap global CompatData references for instance
2019-08-01 14:30:26 -05:00
Andrew Eikum
48c774d868
proton: Move prefix logic into CompatData class
2019-08-01 14:30:26 -05:00
Andrew Eikum
c8639f6132
proton: Move some logic into Proton class
2019-08-01 14:30:26 -05:00
Andrew Eikum
5c9dd25e81
proton: Don't hard-code compatdata paths
2019-08-01 14:30:26 -05:00
Andrew Eikum
6d6e86df99
proton: Don't hard-code proton paths
2019-08-01 14:30:26 -05:00
Andrew Eikum
f922357d13
proton: Disable built-in mfplay
...
Allows UE games to function as they did before.
2019-07-18 06:10:47 -05:00
Andrew Eikum
ee4510682f
proton: Remove files before trying to copy over them
...
If the file is a symlink, it could dereference the link and overwrite
the pointed-to file.
2019-07-18 06:10:47 -05:00
Andrew Eikum
f44287aeb8
proton: Copy d3d files instead of symlinking them
2019-07-18 06:10:47 -05:00
Andrew Eikum
4708bd6f05
proton: Enable fsync and add PROTON_NO_FSYNC variable
2019-07-18 06:10:47 -05:00
Andrew Eikum
235182da12
proton: Enable e2fs case-folding bit on new prefixes
2019-07-03 08:14:33 -05:00
Andrew Eikum
006634e316
update wine to 4.11
2019-07-03 08:10:53 -05:00
Andrew Eikum
30466dcc5e
proton: Dump config options into the log
2019-07-01 13:14:04 -05:00
Andrew Eikum
f52ecfc6a7
build and ship d9vk
2019-07-01 13:14:04 -05:00
Andrew Eikum
2b3b96982f
change default log to +loaddll instead of +module
2019-05-13 14:40:14 -05:00
Andrew Eikum
ac7b2068f0
Add mono logging to default logging
2019-04-15 08:22:21 -05:00
Andrew Eikum
2dd6948ef2
proton: Detect broken .NET installations and use wine-mono instead
2019-04-15 08:22:21 -05:00
Andrew Eikum
a1341c9649
proton: Also log stdout when logging is enabled
2019-04-15 08:22:21 -05:00
Andrew Eikum
6b9facc611
proton: Add default wine-mono override
2019-04-15 08:22:21 -05:00
Andrew Eikum
7a30e996ce
proton: Always use built-in steam.exe
2019-03-28 08:03:03 -05:00
Andrew Eikum
22343e84ec
proton: Run program through "steam.exe" in debug command, too
2019-03-26 09:11:18 -05:00
Andrew Eikum
87bbcc627d
proton: Don't use start.exe for unknown executable types
...
Wine seems to handle this better now than it did in 3.7. It can launch
Doom 2's batch scripts directly, so this is no longer helpful.
2019-03-25 11:11:05 -05:00
Andrew Eikum
c9f817bf91
update wine to 4.2
2019-03-21 08:31:33 -05:00
Jacek Caban
70822d8046
Add steam.exe winelib application that setups environment and launches the game.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
2019-03-08 10:22:36 -06:00
Dāvis Mosāns
817828ec72
proton: When copying ignore EPERM error
2019-02-14 08:32:39 -06:00
Andrew Eikum
cd12d2a634
proton: Check more environment variables for non-zero
2019-02-13 10:16:38 -06:00
Andrew Eikum
2ae0d898eb
proton: Set LC_ALL to the host value if available
2019-02-13 10:16:38 -06:00
Andrew Eikum
ad35af81e9
proton: Add runtime variable to limit GL extension string length
2019-02-13 10:16:38 -06:00
Ethan Lee
3eb29f419e
proton: Add PROTON_NO_D3D10
2019-01-16 08:30:35 -06:00
Andrew Eikum
1b0173de22
proton: Dump header with proton version info in logs
2019-01-15 09:07:19 -06:00
Andrew Eikum
1fb4db2331
proton: Add force large address aware runtime setting
2018-12-20 10:56:47 -06:00
Andrew Eikum
0e15c0048f
proton: Don't crash on invalid VR config file
2018-12-12 09:59:37 -06:00
Andrew Eikum
414cffdfaf
proton: Handle corrupted prefixes a little better
2018-11-30 09:25:32 -06:00
Andrew Eikum
ad90a3686e
proton: Recreate Fonts directory if it somehow goes missing
2018-11-30 08:55:08 -06:00
Andrew Eikum
ab57ead966
proton: pylint cleanups
2018-10-31 07:48:33 -05:00
Nikolay Sivov
17e50d67ab
Build replacement fonts
2018-10-31 07:48:33 -05:00
NoXPhasma
cac3a518bd
Allow override of dlls with WINEDLLOVERRIDES environment variable
...
Proton overrides the environment variable WINEDLLOVERRIDES entirely,
this change allows to add own dll overrides.
2018-10-16 09:44:32 -05:00
Seppo Yli-Olli
aaaef10ccb
Simplify XDG_CONFIG_HOME handling
2018-10-16 09:44:32 -05:00
Andrew Eikum
e5f38f9f4c
proton: Use DXVK for d3d10 as well.
2018-10-16 09:44:32 -05:00
Kai Krakow
f7ea4cb866
proton: Correct wined3d symlinks
2018-10-16 07:50:33 -05:00
Andrew Eikum
cc3e4210cd
Revert "build dxvk as native .so"
...
This reverts commits aef98f1e7d
and f85b734f66
.
The Steam Runtime is too old to build DXVK, so we have to continue
building it as a Windows DLL.
2018-10-16 07:50:33 -05:00
Andrew Eikum
31706aef86
proton: Python cleanup
2018-10-12 08:30:19 -05:00
Andrew Eikum
64f4d42c77
proton: Track prefix files and remove them on a major proton version change
...
This is to allow downgrading prefixes, for example if a user switches
from 3.16 to 3.7.
2018-10-12 08:30:19 -05:00
Andrew Eikum
a84120449d
Remove macOS support
2018-10-11 08:32:16 -05:00
Andrew Eikum
5286f43fda
proton: Call python3 explicitly on Linux
...
Frustratingly, Ubuntu ships no python binary by default, only python3,
so we can't just call python and expect it to work. This will fail on
distros that don't ship python3, but them's the breaks.
2018-08-29 09:24:41 -05:00
AsciiWolf
7081022403
proton: Fix typo
2018-08-27 08:57:09 -05:00
Adrian Torres
f9b5a08495
Make debug scripts dump dir configurable
...
If PROTON_DUMP_DEBUG_COMMANDS is set, the directory where
the debug scripts will be dumped to can be defined with
the env variable / setting PROTON_DEBUG_DIR.
This commit also lets users set PROTON_DUMP_DEBUG_COMMANDS
in user_settings.py, which didn't work previously because
the variable was being fetched from os.environ instead of env.
Closes #511
2018-08-27 08:56:06 -05:00
Andrew Eikum
e7c4d12f8d
proton: Fix byte string comparison
2018-08-24 13:48:57 -05:00
Andrew Eikum
088c88b745
Merge remote-tracking branch 'MayeulC/python3' into proton_3.7
2018-08-24 11:19:10 -05:00
Mayeul Cantan
0f80f2f52c
Import print_function from __future__ for python compatibility
...
This alters the behaviour of python2's print statement to be compatible
with python3's print function. While not strictly necessary for now,
this might help future compatibility.
Thanks to Seppo Yli-Olli (@nanonyme) for suggesting this.
2018-08-24 09:28:52 +02:00
Andrew Eikum
fa8f06efaf
proton: Move debug scripts to /tmp/proton_$USER/
...
To avoid conflicts between multiple Unix accounts.
2018-08-23 11:29:56 -05:00
Andrew Eikum
1b9d405d14
proton: Only dump debug scripts when requested
2018-08-23 11:29:54 -05:00
Andrew Eikum
af9eb02401
proton: Dump some default logging if PROTON_LOG is set
2018-08-23 11:29:54 -05:00
Andrew Eikum
8dc036b298
proton: Drop WINEARCH from environment
2018-08-23 11:29:49 -05:00
Andrew Eikum
10012eee17
proton: Fix null deref
2018-08-23 09:43:12 -05:00
Andrew Eikum
4d127190a6
proton: Fix for broken 64-bit-only prefix shipped 20180822
2018-08-23 09:10:15 -05:00
Mayeul Cantan
9c3667c083
Make proton, gen_wrapper and user_settings python scripts version-agnostic
2018-08-23 14:24:39 +02:00
Sebastian Wick
2863402e9e
move proton from python2.7 to python3
2018-08-23 12:05:35 +02:00
Seppo Yli-Olli
6f0a6f656d
Sanitize hashbang
2018-08-22 16:50:20 +03:00
Andrew Eikum
dea40ea0a8
Revert "proton: Use $USER instead of "steamuser""
...
This reverts commit 935875ceab
.
2018-08-20 10:45:38 -05:00
Andrew Eikum
935875ceab
proton: Use $USER instead of "steamuser"
2018-08-20 10:45:08 -05:00
Andrew Eikum
9cae619993
proton: Change waitforexit to waitforexitandrun
2018-08-08 08:01:55 -05:00
Andrew Eikum
17294f3b4a
proton: Add waitforexit verb
...
The Steam client only sets critical environment variables for the game
process itself, not for getcompatpath etc. This verb lets the Steam
client wait for the prefix to shut down so it can restart the prefix
with the variables set.
Required to avoid duplicate controllers when controller config support
is enabled, for example.
2018-08-06 08:12:01 -05:00
Andrew Eikum
1846fe4260
Copy default prefix into place even if files are already present there
...
Steam cloud sync places save files into pfx/ before proton is ever
invoked. Previously we would assume the prefix is valid if pfx/ exists
and run wine, which lead to very broken prefixes. Instead we should
check for files that cloud sync will never create (user.reg) and merge
the default prefix into any existing prefix tree.
2018-07-20 09:48:32 -05:00
Andrew Eikum
cf10d17310
proton: Handle errors in user_settings better
2018-07-12 11:16:45 -05:00
Andrew Eikum
39d80d114c
copy openvr_api.dll into place for DXVK
...
DXVK needs to make some calls to openvr_api, but the game may not ship
it in a predictable location. So we provide a fallback called
openvr_api_dxvk.dll, which DXVK knows to load.
2018-07-12 11:16:45 -05:00
Andrew Eikum
81a56ba815
proton: Don't crash if we're missing SteamGameId
2018-06-27 08:17:11 -05:00
Andrew Eikum
971ba6438b
proton: Load environment overrides from a file on disk
2018-06-25 14:25:13 -05:00
Andrew Eikum
2da8976160
proton: Always enable Wine esync
2018-06-25 14:25:13 -05:00
Andrew Eikum
17bb46c5af
proton: Use wine64 for all winedbg invocations
2018-06-20 14:37:17 -05:00
Andrew Eikum
aae498498f
proton: Add +debugstr to default channels
...
Some games dump useful debug info here, especially Id Software games.
2018-05-31 12:42:21 -05:00
Andrew Eikum
e31b4f2b02
proton: Fix checking environment overrides
2018-05-25 11:24:12 -05:00
Andrew Eikum
3e05e9bb1a
proton: Use DXVK by default, add PROTON_USE_WINED3D11 switch
2018-05-23 13:56:38 -05:00
Andrew Eikum
dde8da9f00
proton: Also dump STEAM_COMPAT_CLIENT_INSTALL_PATH to debug scripts
2018-05-18 09:21:38 -05:00
Andrew Eikum
c0f69f618c
proton: Disable DXVK logging by default
2018-05-18 09:21:38 -05:00
Andrew Eikum
2edea745d7
Update Wine to 3.7
2018-04-30 09:02:22 -05:00
Andrew Eikum
01206c4661
proton: Show prefix path on upgrade
2018-04-20 10:11:19 -05:00
Andrew Eikum
6606a7f0e8
Update wine to 3.5
2018-04-02 09:00:33 -05:00
Andrew Eikum
69942f9fc8
proton: Start unknown filetypes with 'start.exe'
...
Doom II for example launches with a batch script.
2018-03-30 10:40:09 -05:00
Andrew Eikum
53c0988fc1
proton: Allow Windows apps to write to stdout
2018-03-30 10:40:09 -05:00
Andrew Eikum
430d91c888
proton: Add nod3d11 config option
2018-03-28 10:27:56 -05:00
Andrew Eikum
c5c8b90ff4
Update wine to 3.4
2018-03-19 13:28:38 -05:00