Commit Graph

347 Commits

Author SHA1 Message Date
Adam Moss
6b4dce48bc proton: Enable dxvknvapi on a bunch of (DLSS) titles.
Link: https://github.com/ValveSoftware/Proton/pull/6120
Link: https://github.com/ValveSoftware/Proton/pull/6227

(squashed a bunch of commits)
2023-03-08 17:35:54 +02:00
Giovanni Mascellani
85ed53c1d8 fonts: Provide an alternative fake Arial font.
The fake Arial already distributed with Python is based on Liberation fonts.
It is metrically compatible with the original Arial, but it doesn't support
all its glyphs (specifically, it misses Arabic).

The new one is based on Noto fonts. It support all the Arial glyphs
(I think), but it is not metrically compatible. It is enabled based
on SteamGameId when glyph coverage is considered more important than
metric compatibility.

So far it is enabled for FIFA 21 and FIFA 22.

CW-Bug-Id: #20302
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
77fd6c3b2d proton: Install all available fonts to the prefix.
This requires commit "loader: Install all fonts provided by Proton in the
registry." in Wine, otherwise font support will be broken.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
4378ee718a fonts: Install Liberation fonts using their fake name.
For homogeneity with the other fake fonts. That's mostly cosmetic.
2023-02-14 16:07:44 +02:00
Rémi Bernon
08a5f1cd56 proton: Trace language related environment variables.
CW-Bug-Id: #21346
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
84012c12aa Do not use the vkd3d version emebededd in Wine, but rebuild from its submodule. 2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
1489a6a8d5 proton: Bump prefix version. 2023-02-14 16:07:43 +02:00
Paul Gofman
89a2dac0b2 proton: Enable gamedrive compat option for Creativerse.
CW-Bug-Id: #21729
2023-02-14 16:07:43 +02:00
Paul Gofman
f693c48a4c proton: Enable gamedrive compat option for As Dusk Fails.
CW-Bug-Id: #21485
2023-02-14 16:07:43 +02:00
Simon McVittie
4db08dc766 proton: Don't crash if sys.stderr is not usable
If a Steam user runs Steam from a terminal, puts it in the background
and then exits from that terminal, or if they restart their desktop
session from a terminal (as in ValveSoftware/Proton#6277) and then exit
from that terminal, then we can inherit a stdout and/or stderr file
descriptor pointing to an invalid file descriptor. Writing to such a
file descriptor fails with EIO. Similarly, we could get write errors
as a result of OS state, such as ENOSPC if we are writing to a disk
that is full, or EPIPE if a stream to a logging framework such as the
systemd journal has been shut down.

In sufficiently pathological situations, the file descriptor could even
become invalid while the `proton` script is running, so even checking
for validity on startup would not be enough to prevent this.

The ability to log to stderr is important but not functionally critical,
and it's not like there is anything we can usefully do about a write
failure here (or even anywhere we can usefully put a warning message),
so just ignore write errors. This is similar to the behaviour of the
`logging` framework in the Python standard library (which writes to
`stderr` if a user-defined handler fails, but takes no other action)
and also similar to the approach taken to solve
ValveSoftware/steam-for-linux#8069.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Link: https://github.com/ValveSoftware/Proton/pull/6341
2023-02-14 16:07:43 +02:00
Anna Lasky
dd32534265 proton: Remove games that need shared resources from MFDXGI hack
This comments out all of the games that do not need the MFDXGI hack on
the experimental branch because the experimental branch has support for
shared resources.
2023-02-14 16:07:43 +02:00
Anna Lasky
f9b51bc244 proton: Remove LOST EMBER from MFDXGI hack
CW-Bug-ID: #21097
2023-02-14 16:07:43 +02:00
Anna Lasky
5328d61f5a proton: Reorganize games in MFDXGI hack and add missing titles
This separates out the games that only need shared resources in order to
play video correctly without the MFDXGI hack.  El Hijo (853050) and
Labyrinth City: Pierre the Maze Detective (1421790) were also added.
2023-02-14 16:07:43 +02:00
Giovanni Mascellani
9ae252db4f Ensure vkd3d-proton is used for D3D12 unless wined3d is explicitly requested. 2022-10-14 18:21:56 +03:00
Paul Gofman
be25891a0c proton: Enable WINE_HEAP_DELAY_FREE for Call of Duty: Black Ops II Zombies and Multiplayer.
CW-Bug-Id: #21106
2022-10-14 18:21:56 +03:00
Paul Gofman
8d2e85be8c proton: Disable forced LAA for Sword and Fairy 4.
CW-Bug-Id: #21180
2022-10-14 18:21:56 +03:00
Arkadiusz Hiler
5720dd3e9c proton: Add PROTON_NO_STEAM_FFMPEG to ignore ffmpeg that ships with Steam.
CW-Bug-Id: #20923
2022-08-10 19:29:30 +03:00
Paul Gofman
7e27da4bc2 proton: Add Warframe to OPWR disablement list.
CW-Bug-Id: #20944

The game's launcher starts hitting unimplemented d3dcompiler
bits with OPWR supported.
2022-08-10 19:29:30 +03:00
Paul Gofman
7d4ca96ae1 proton: Add WINE_DISABLE_VULKAN_OPWR hack appid list.
CW-Bug-Id: #20680
2022-08-10 19:29:30 +03:00
Paul Gofman
242d655a0f proton: Add dotnetfx35setup.exe builtin override.
CW-Bug-Id: #20733
2022-08-10 19:29:30 +03:00
Simon McVittie
79c9b6a15d proton: Allow forwarding commands into the Proton environment
Recent versions of the Steam Runtime include an IPC server/client pair
which can be used to run commands inside the container environment
(or any other special execution environment), analogous to sshd/ssh or
flatpak-portal/flatpak-spawn. The server runs inside the Steam Runtime
container and accepts commands over D-Bus; the client runs on the host
system, asks the server to run a command, and forwards its stdin, stdout
and stderr back to the host.

https://gitlab.steamos.cloud/steamrt/steamlinuxruntime/-/merge_requests/72
adds support for injecting commands into the SteamLinuxRuntime_soldier
compatibility tool (and any later version, such as sniper). However,
Steam compatibility tools are stackable: in particular, Proton runs in a
soldier container (or presumably sniper in future). If we are debugging
a Proton game, then ideally we will want to inject commands into Proton's
execution environment rather than soldier's, so that they run with the
correct environment variables etc. to communicate with a running Proton
session. In particular, it's important that the `WINEPREFIX` is correct.

The steam-runtime-launcher-interface-0 program implements the
interface for compatibility tools to use to decide where, if anywhere,
to launch the command server.

This commit does not alter the scripts produced by
PROTON_DUMP_DEBUG_COMMANDS. To run those scripts' commands in the
container environment, pass their filenames to
steam-runtime-launch-client.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Link: https://github.com/ValveSoftware/Proton/pull/5891
2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
4cc575b2f4 proton: Add Greak: Memories of Azur to MFDXGI hack.
CW-Bug-Id: #19126
2022-08-10 19:29:30 +03:00
Newbyte
7785b9ab78 proton: Add Terra Nil Demo to MFDXGI hack.
CW-Bug-Id: #19126
Link: https://github.com/ValveSoftware/Proton/pull/5907

Works around main menu background video being corrupted.
2022-08-10 19:29:30 +03:00
Paul Gofman
b1852d2e67 proton: Add Lost Ember to MFDXGI hack.
CW-Bug-Id: #21097
2022-08-10 19:29:30 +03:00
Anna Lasky
6a1714a0d7 proton: Remove games from MFDXGI hack
This removes games that we believe are fixed by the initial improved
implementation of the mfdxgidevicemanager - specifically games with
graphical distortion during video playback.

CW-Bug-ID: #19126
2022-08-10 19:23:14 +03:00
Bitwolf
0ba9319113 proton: Add POSTAL: Brain Damaged to MFDXGI hack
CW-Bug-Id: #19126
Link: https://github.com/ValveSoftware/Proton/pull/5899
2022-08-03 14:24:42 +03:00
Esme Povirk
d141d538bc proton: Make reflinks for file copies when possible.
CW-Bug-Id: #18633
2022-08-03 14:24:34 +03:00
Anna Lasky
ff7bfc5595 Add Dread X Collection: The Hunt to MFDXGI hack
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
faf8b2e64d proton: Add Outward to MFDXGI hack.
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Paul Gofman
673e1ae43d proton: Add V Rising to MFDXGI hack.
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
203580f96f Add two more games to MFDXGI manager hack.
CW-Bug-Id: #19126
CW-Bug-Id: #20655
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
cc8db7609b Add three more games to MFDXGI manager hack.
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Anna Lasky
ced280e888 Add Ember Knights to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Anna Lasky
8909720216 Add El Hijo - A Wild West Tale to MFDXGI manager hack
CW-Bug-ID: #19126
2022-06-03 17:57:43 +03:00
Anna Lasky
d7452b523f Add EZ2ON REBOOT : R to MFDXGI manager hack
CW-Bug-ID: #19126
2022-06-03 17:57:43 +03:00
Paul Gofman
a216f5baa0 Add POSTAL4: No Regerts to MFDXGI manager hack.
CW-Bug-Id: #20611
2022-06-03 17:57:29 +03:00
Andrew Eikum
94772426ac Add Disintegration to MFDXGI manager hack
CW-Bug-Id: #20592
2022-06-03 14:26:11 +03:00
Georg Lehmann
7e7f6155d3 Set VKD3D_SHADER_DEBUG=none by default.
Link: https://github.com/ValveSoftware/Proton/pull/5326
2022-06-03 14:26:11 +03:00
Anna Lasky
44e38af171 Add Monster Train to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-21 13:02:27 +03:00
Anna Lasky
34b55deb55 Add 3 more titles to IMFDXGIDeviceManager hack
Titles added: Hardspace: Shipbreaker (1161580), Nine Sols Demo
(1809540), Car Mechanic Simulator 2021 (1190000)

CW-Bug-Id: #19126
2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
aaabeb5567 Revert "proton: Add noesync,nofsync for Apex Legends"
This reverts commit 25a58123a1.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
f45b165030 Revert "proton: Add noesync,nofsync for PixelJunk Eden"
This reverts commit 0623da2af4.
2022-04-05 18:13:11 +03:00
Liam Middlebrook
aa33dd9cb8 proton: Set DXVK_ENABLE_NVAPI envvar when NvAPI is enabled
See: https://github.com/doitsujin/dxvk/pull/2544

Link: https://github.com/ValveSoftware/Proton/pull/5687
2022-04-05 18:13:11 +03:00
Paul Gofman
a4824da779 proton: Optionally setup T: drive for native Steam directory.
CW-Bug-Id: #20285
2022-04-05 18:13:11 +03:00
Andrew Eikum
addf6dc5b6 proton: Remove the FFXIV launcher workaround
CW-Bug-Id: #20242
2022-04-05 18:13:11 +03:00
Anna Lasky
f0876fb99c Add DJMAX RESPECT V to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
6ab3403b1e Add The Complex to IMFDXGIDeviceManager hack 2022-04-05 18:13:11 +03:00
Andrew Eikum
7b49d43020 Add Gloomhaven to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:13:11 +03:00
Andrew Eikum
023a715241 Add Rust to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:13:11 +03:00
Andrew Eikum
0bbc7e480a Add Cook-Out to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:03:47 +03:00
Andrew Eikum
99c07e4dae Add Haven to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:03:47 +03:00
Andrew Eikum
473ce8c81d Add Rustler to IMFDXGIDeviceManager hack 2022-03-01 12:32:14 -06:00
Andrew Eikum
c5b505393a proton: Move mfplat MFDXGIDeviceManager hack appid list to proton script 2022-02-25 13:52:40 +02:00
Andrew Eikum
ccb2397f4c proton: Force append_forever to be a named argument
And remove redundant default parameter value.
2022-02-25 13:52:40 +02:00
Andrew Eikum
32fe36d9b2 proton: Extend PROTON_LOG to support adding extra WINEDEBUG channels 2022-02-25 13:52:40 +02:00
Andrew Eikum
17683bff97 proton: Better handle broken symlinks 2022-02-25 13:52:40 +02:00
Andrew Eikum
90a11aca8e proton: Add file_exists helper function
To make desired handling of symlinks more clear at the callsite.
2022-02-25 13:52:40 +02:00
Andrew Eikum
0623da2af4 proton: Add noesync,nofsync for PixelJunk Eden 2022-02-11 17:39:00 +02:00
Andrew Eikum
25a58123a1 proton: Add noesync,nofsync for Apex Legends 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
2a5b25a7a2 update dxvk to upstream v1.9.4
we can drop all the proton-specific customizations now that dxvk's dgxi
is the default one and wined3d interop is gone from vrclient
2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
053954076c Update wine 2022-02-11 17:39:00 +02:00
Rémi Bernon
b203ba6bdd proton: Run steam from its Program Files (x86) location.
For CoD: Black Ops 3.

CW-Bug-Id: #19362
2022-01-24 22:53:20 +02:00
Derek Lesho
bcccab62e0 proton: Look for libraries in Steam Client path.
This is used to pick up Valve's build of ffmpeg, which includes proprietary decoders.

Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
2022-01-24 22:53:20 +02:00
Jactry Zeng
710257adb4 proton: Add workaround for FFXIV to enable old launcher by default.
CW-Bug-Id: #19609
2022-01-24 16:03:39 +02:00
Andrew Eikum
71e306aaaa proton: Bump dumped audio file version 2022-01-24 16:03:39 +02:00
Andrew Eikum
d4e3c477dd proton: Add destroyprefix verb 2022-01-24 16:03:39 +02:00
Paul Gofman
b01153b165 proton: Also setup S: drive for game directory for run verb.
CW-Bug-Id: #19930
2022-01-19 11:29:54 +02:00
Esme Povirk
de7ac78030 Set .update-timestamp for new prefixes.
CW-Bug-Id: #19818
2022-01-19 11:29:54 +02:00
Rémi Bernon
7e4ee66328 proton: Link overridable DLLs debug files too. 2022-01-19 11:29:54 +02:00
Rémi Bernon
808920b6b3 proton: Add overridable DLLs to the tracked_files. 2022-01-19 11:29:54 +02:00
Rémi Bernon
83e40165ba proton: Move try_copy calls into the tracked_files block. 2022-01-19 11:29:54 +02:00
Rémi Bernon
b3d4aa02a6 proton: Add a prefix parameter to try_copy. 2022-01-19 11:29:54 +02:00
Rémi Bernon
16b662a0bf proton: Always set dst to the target file name in try_copy. 2022-01-19 11:29:54 +02:00
Nikolay Sivov
ab07135a89 Do not use d3d10/d3d10_1 from dxvk.
That allows games to use d3d10 effects framework that wine's modules provide.
2022-01-19 11:29:54 +02:00
Jacek Caban
7e287a4614 proton: Allow relative paths in PROTON_REMOTE_DEBUG_CMD.
Patch by Timothee Besset.
2022-01-19 11:29:54 +02:00
Rémi Bernon
959f3665c3 proton: Add +unwind to the default debug channels. 2022-01-19 11:29:54 +02:00
Rémi Bernon
0f1f692c70 proton: Start steam.exe from C:\\windows\\system32. 2022-01-19 11:29:54 +02:00
Rémi Bernon
ec2a650072 build: Install builtin libraries to target-arch lib subdirs. 2022-01-19 11:29:54 +02:00
Derek Lesho
cfaf65d982 steam_helper: Place BattlEye runtime path into PROTON_BATTLEYE_RUNTIME.
CW-Bug-Id: #16650
2021-11-19 18:35:48 +02:00
Arkadiusz Hiler
3e4e8be82c proton: Add disablelibglesv2 compat config option.
Some games and launcher based on older CEF / Chromium versions require
this to render properly.

CW-Bug-Id: #19501
CW-Bug-Id: #19483
2021-11-12 17:28:23 +02:00
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