Commit Graph

417 Commits

Author SHA1 Message Date
Paul Gofman
89f8134740 steam_helper: Build as 64 bit.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Arkadiusz Hiler
cc9c109bf6 proton: Add usenativexinput13 compat config option.
Various games using KT Engine like recent WRC and TT Isle of Man, when
run in a win10 prefix, try to load UWP/xinput1_3.dll that ships with the
games. It seems to be mostly-compatible xinput implementation built on
top of windows.gaming.input.dll.

However if we try to replace it with the builtin the game crashes
because it tries to call entry points that are not available in the
original xinput (that's the "mostly-compatible" part), so we need this
override.

Since our windows.gaming.input.dll implementation is just a stub
controllers other than steering wheels (which are handled through
dinput) do not work.
2021-11-11 18:36:08 +02:00
Andrew Eikum
fdc3651992 proton: Return the real application return code on exit.
CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
06c9f221ec proton: Log the kernel version. 2021-11-11 18:36:07 +02:00
SSYSS000
b39c95a7e1 proton: Delete PID leading zeros instead of all zeros
Link: https://github.com/ValveSoftware/Proton/pull/5157
2021-11-11 18:36:07 +02:00
Zebediah Figura
50cab53a7b proton: Copy libvkd3d-shader-1.dll into the system32 directory.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Jactry Zeng
1ae6c80f3e fonts: Add an alternative of Nirmala UI (nirmala.ttf).
Fonts are from https://github.com/googlefonts/noto-fonts.git at
04a4c62ce05b628f80c0d3b6a455ca8201b65286, in hinted/ttf folder.

CW-Bug-Id: #17132
2021-11-11 18:36:07 +02:00
Jactry Zeng
ca928d31f9 fonts: Add an alternative of Microsoft Sans Serif (micross.ttf).
Fonts are from https://github.com/googlefonts/noto-fonts.git at
04a4c62ce05b628f80c0d3b6a455ca8201b65286, in hinted/ttf folder.

CW-Bug-Id: #17132
2021-11-11 18:36:07 +02:00
Jactry Zeng
5525cf9931 Revert "Add and install Noto Sans Arabic."
This reverts commit 9eb14500c2.
We are going to introduce a fake micross.ttf which also includes
all of these Arabic characters. We will use that one instead.
2021-11-11 18:36:07 +02:00
Paul Gofman
d9f80272c0 proton: Enabled nvcuda.dll when nvapi is enabled.
Link: https://github.com/ValveSoftware/wine/pull/119
2021-09-23 19:07:57 +03:00
Esme Povirk
4940f69c90 Remove default overrides for Microsoft.Xna.Framework.
This default is no longer needed because it's built into Wine.
The Wine default is now version-specific so XNA 3.x redists can load.

CW-Bug-Id: #16852
2021-09-23 19:07:57 +03:00
Andrew Eikum
c47dfe6a0b proton: Don't follow symlinks when merging user dirs
Link: https://github.com/ValveSoftware/Proton/issues/5102
2021-09-23 19:07:48 +03:00
Andrew Eikum
79ddcc5568 proton: Don't copy metadata by default 2021-08-23 12:30:03 -05:00
Andrew Eikum
b5646c4072 proton: Work around prefixes broken by unofficial builds
Some unofficial builds running closer to upstream created a Documents ->
My Documents symlink. We would then create a My Documents -> Documents
symlink, resulting in infinite recursion. Detect this scenario and fix
it before merging user directories.
2021-08-19 10:47:48 -05:00
Liam Middlebrook
0afcb19416 proton: Copy DLLs provided by the NVIDIA driver into prefix
The upcoming NVIDIA 470 driver series will introduce a DLL (nvngx.dll)
for the support of NVIDIA DLSS in Proton. This change adds logic for
discovering the location of DLL files provided by the NVIDIA driver, and
copies them to C:\Windows\System32\

Reviewed-by: Adam Moss <amoss@nvidia.com>
2021-08-17 10:11:32 -05:00
Liam Middlebrook
1630811474 dxvk-nvapi: Add to Proton
Add https://github.com/jp7677/dxvk-nvapi as a submodule. dxvk-nvapi will
not be copied into Proton prefixes by default, but instead will be
controlled via the environment variable PROTON_ENABLE_NVAPI. This is
done to avoid any potential adverse effects of the nvapi DLL existing
in cases where an application may require a function that is not
implemented by dxvk-nvapi.

This new functionality can be enabled by setting the following environment
variable to a value of `1`:
    `PROTON_ENABLE_NVAPI`

This functionality is needed in order to support DLSS within Proton.

Reviewed-by: Adam Moss <amoss@nvidia.com>
2021-08-17 10:11:32 -05:00
Andrew Eikum
e82e98b1ff proton: Migrate old user paths to new paths
CW-Bug-Id: 18905
2021-08-17 10:11:32 -05:00
Giovanni Mascellani
9eb14500c2 Add and install Noto Sans Arabic.
This is useful to work around an issue with Arabic font rendering in
Cyberpunk 2077 installer, first reported at
https://github.com/ValveSoftware/Proton/issues/4450#issuecomment-882996582.

CW-Bug-Id: #19125
2021-08-12 10:54:20 -05:00
Giovanni Mascellani
0683ff8926 Build a fake Malgun Gothic font. 2021-08-12 10:54:20 -05:00
Giovanni Mascellani
cf9d10ef68 Build a fake MS Gothic font. 2021-08-12 10:54:19 -05:00
Giovanni Mascellani
dfa5bf8c18 Build a fake SimSun font. 2021-08-12 10:54:19 -05:00
Giovanni Mascellani
920377546d Prepare for compiling different SourceHanSans fonts.
This and the following commits provide some CJK fonts which the
Rockstar installer can use as fallback.

CW-Bug-Id: #18969
2021-08-12 10:54:19 -05:00
Andrew Eikum
7ff77df377 proton: More easily enable always-on logging 2021-08-12 08:53:50 -05:00
Jacek Caban
5bc6cdaa8e proton: Add support for PROTON_REMOTE_DEBUG_CMD to allow integration with remote debugger.
CW-Bug-Id: 16785
2021-08-12 08:53:50 -05:00
Zebediah Figura
8475bf39bc proton: Always check if the prefix config changed.
In particular, make sure that we update builtin dlls for the first process that runs.
2021-06-21 08:31:01 -05:00
Andrew Eikum
353e1b00c6 proton: Use DXVK's DXGI by default 2021-06-21 08:31:01 -05:00
Shawn M. Chapla
1916502152 proton: Remove winebrowser shell DDE registry keys
CW-Bug-Id: #18527
2021-06-17 15:10:20 -05:00
Andrew Eikum
607618b3df proton: Add PROTON_CRASH_REPORT_DIR runtime config
CW-Bug-Id: #18944
2021-06-17 15:10:17 -05:00
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
Andrew Eikum
ba3e23fb31 proton: Make debug logging a little simpler 2018-03-16 14:50:37 -05:00
Andrew Eikum
5b3ceebc20 proton: Also lock the prefix 2018-03-16 14:50:37 -05:00
Andrew Eikum
7a20ea9c1f proton: Lock on write access to the dist/ directory
Steam needs to be able to run proton several times in parallel without
it becoming corrupted.
2018-03-16 11:37:27 -05:00
Andrew Eikum
e59105dc2f proton: Improve debug scripts 2018-03-14 14:11:21 -05:00
Andrew Eikum
1ad8b530ea proton: For now, always dump debug scripts 2018-03-13 12:57:53 -05:00
Andrew Eikum
f7af914fe7 proton: Send logging to stderr
stdout is read by Steam when handling the compat path verbs. So we
should never write other stuff to stdout.
2018-03-13 12:33:07 -05:00
Andrew Eikum
3c120fa953 proton: Consistently read from os.environ, not our local copy 2018-03-13 12:33:07 -05:00
Andrew Eikum
38efd9aeed proton: Use STEAM_COMPAT_CLIENT_INSTALL_PATH if available 2018-03-13 12:33:07 -05:00
Andrew Eikum
0ddd3ff3d2 proton: Don't hard-code legacycompat path 2018-03-08 12:53:25 -06:00
Andrew Eikum
f11e36aac0 proton: Use DYLD_LIBRARY_PATH for mac 2018-03-06 12:13:55 -06:00
Andrew Eikum
f5b838c9e6 proton: Also log during winepath operations 2018-02-27 11:00:55 -06:00
Andrew Eikum
37eb221d95 proton: Fix translatepath verbs 2018-02-26 08:44:11 -06:00
Andrew Eikum
d5c916f69c proton: Delete Steam files before copying them 2018-02-20 11:23:03 -06:00
Andrew Eikum
c32f46cf00 proton: Use new translatepath API 2018-02-20 09:39:14 -06:00
Andrew Eikum
ead648522a proton: Use log function 2018-02-15 13:06:32 -06:00
Andrew Eikum
711273dd2c proton: Add prefix upgrade infrastructure 2018-02-15 12:55:40 -06:00
Andrew Eikum
5cef7459dc proton: Dump a few different debugging utilities 2018-02-15 10:22:07 -06:00
Andrew Eikum
434ed0476c proton: Disable WINEDEBUG during winedbg session 2018-02-15 09:37:19 -06:00
Andrew Eikum
0979ab9ed0 proton: Match winedbg to the architecture type 2018-02-15 09:37:18 -06:00
Andrew Eikum
8de64cea0c proton: Also dump WINEDLLOVERRIDES and PROTON_VR_RUNTIME 2018-02-15 08:09:08 -06:00
Andrew Eikum
34e8f02917 proton: Escape cwd path 2018-02-15 07:59:42 -06:00
Andrew Eikum
4a03a68b79 proton: Use root symlink instead of steam
Apparently Ubuntu mucks with Steam's internal file structure and screws
up the steam symlink. The root one isn't messed with, so we can use that
instead.
2018-02-15 07:32:44 -06:00
Andrew Eikum
dccc1f1fe8 proton: Add ability to dump debug command line 2018-02-14 14:29:28 -06:00
Andrew Eikum
0b6599c0bc proton: Set WINEDLLPATH and PATH 2018-02-14 14:03:52 -06:00
Andrew Eikum
d940c59d36 proton: Change default debug channels 2018-02-13 14:31:34 -06:00
Andrew Eikum
0686092448 proton: Support launching with dxvk 2018-02-13 14:31:34 -06:00
Andrew Eikum
6adef625fd proton: Complain if verb is missing 2018-02-12 08:08:53 -06:00
Andrew Eikum
7ef0476c2b proton: Dump stdout to /dev/null by default 2018-02-08 09:21:26 -06:00
Andrew Eikum
4367aa17e7 proton: Explicitly use python2.7 in hashbang
This will work on macOS as well as Linux.
2018-02-08 09:21:26 -06:00
Andrew Eikum
de529b4d05 Add translatepath support 2018-02-02 14:30:38 -06:00
Andrew Eikum
40aaae912c Don't install vulkan runtime 2018-02-02 08:20:15 -06:00
Andrew Eikum
ab6b25cc17 Set up winevulkan stuff at prefix create time 2018-01-29 09:08:31 -06:00
Andrew Eikum
9e15bad61c Build prefix at first-run time, not build-time 2018-01-26 08:37:36 -06:00
Andrew Eikum
04174e94e7 proton: Don't crash on setting up VR stuff in existing prefix 2018-01-26 08:11:25 -06:00
Andrew Eikum
72eb9aa791 Build and use a default prefix 2018-01-22 14:46:04 -06:00
Andrew Eikum
c162f4bd00 Use steamuser as proton username 2018-01-22 14:46:02 -06:00
Andrew Eikum
19e31c24ff proton: Fix debug printing during prefix creation 2018-01-22 14:46:02 -06:00
Andrew Eikum
74e96ab1ec Package proton into a tar.gz and extract on first-run
Valve requested that we distribute as few small files as possible, as
their content pipeline is very inefficient with small files.
2018-01-19 13:27:13 -06:00
Andrew Eikum
4f49e6e29e move proton script here 2018-01-18 14:04:18 -06:00