Compare commits

...

1042 Commits

Author SHA1 Message Date
Arkadiusz Hiler
761c9783e9 update wine 2024-01-19 23:26:31 +02:00
Anna Lasky
0a19090d66 proton: Enable AMD AGS for Devil May Cry 5 2023-12-15 18:32:25 +01:00
Arkadiusz Hiler
68cd5ce6a9 update wine 2023-12-12 17:37:56 +02:00
Arkadiusz Hiler
3c44ca59da update vkd3d-proton to v2.11-19-g0e681135 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
5e6fa08ea8 update dxvk-nvapi to v0.6.4-20-g0a7c48b 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
6acc0f9e12 update dxvk to v2.3-21-g1b31aa5d 2023-12-12 17:37:45 +02:00
Esme Povirk
a092df7ec4 Update Wine Mono to 8.1.0. 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
0bcc20cbc1 proton: Enable AMDAGS for Japanese versions of RE 2,3,7 and 8. 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
0e11c03ca0 .gitmodules: Remove paths for depreated submodules. 2023-12-12 17:37:45 +02:00
Jan200101
e6cd3f8ec3 steam_helper: separate parameters from command when using ShellExecuteW
ShellExecuteW ignores any extra information passed as part of lpFile
resulting in arguments being ignored.

Link: https://github.com/ValveSoftware/Proton/pull/6555
2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
ea08ded0ca configure.sh: Remove mentions of --no-proton-sdk. 2023-12-12 17:37:45 +02:00
Nozomi Miyamori
c9f5e8ff47 configure.sh: drop --steam-runtime help text
This commit dropped the help text for --steam-runtime option.
That option is no longer used since the commit bc63dbbf2a041b.

Link: https://github.com/ValveSoftware/Proton/pull/7114
2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
2e817dc4f6 README: Document compile_commands.json. 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
90cc4f1075 configure.sh: Add --enable-bear for autotools builds.
With --enable-bear all autotools projects will be built via bear so
compile_commands.json are generated.
2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
d78cb3c0da make: Don't copy compile_commands.json over to the build directory sources. 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
10f39becdf make: Collect compile_commands.json in $(OBJ)/compile_commands/
All compile_commands.json from the build directories will be copied to
the compile_commands subdirectory adjusting the paths of the source to
point to the real (not the rsynced) one.

NOTE: it still may point to the build dir for things like generated config.h
2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
5bd606ee03 Makefile.in: Update Proton SDK image to 0.20230905.59202-0
It has Bear 3.1.1 which is usable with larger projects.
2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
21370a78f4 docker: Update base Sniper SDK to 0.20230905.59202 2023-12-12 17:37:45 +02:00
Paul Gofman
8eea1df800 proton: Enable AMD AGS for Injustice 2. 2023-12-12 17:37:45 +02:00
Paul Gofman
c6c9bf0a2a proton: Enable AMD AGS for Mass Effect Legendary Edition. 2023-12-12 17:37:45 +02:00
Timo Gurr
fb588c5389 proton: Enable amdags for The Last of Us Part I
WINEDLLOVERRIDES="amd_ags_x64=b" was required before to fix:

* outdated graphics driver warning on game start
* wrong vram reported in options
* delayed texture loading

https://github.com/ValveSoftware/Proton/issues/6653
2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
99009e774c proton: Enable nvapi for Satisfactory. 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
0ab1dd2e70 proton: Enable AMD AGS for Hogwarts Legacy. 2023-12-12 17:37:45 +02:00
Arkadiusz Hiler
f3326b23c1 proton: Enable dxvk-nvapi for Hogwarts Legacy. 2023-12-12 17:37:45 +02:00
Joshua Ashton
8d989fdd46 proton: Enable dxvknvapi for Resident Evil 7 Biohazard (418370)
Needed for HDR support.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
4eb7119320 proton: Enable amdags for Resident Evil 7 Biohazard (418370)
Needed for HDR support.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
c50718c777 proton: Enable dxvknvapi for Resident Evil Village (1196590)
Needed for HDR support.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
8473c3c7fa proton: Enable amdags for Resident Evil Village (1196590)
Needed for HDR support.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
640d0b3e1b proton: Enable dxvknvapi for Resident Evil 3 (952060)
Needed for HDR support.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
bd4d03123a proton: Enable amdags for Resident Evil 3 (952060)
Needed for HDR support.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
cedc2aefff proton: Enable dxvknvapi for Resident Evil 2 (883710)
Needed for HDR functionality.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Joshua Ashton
bfbc9b358d proton: Enable amdags for Resident Evil 2 (883710)
Needed for HDR functionality.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2023-12-12 17:37:45 +02:00
Paul Gofman
c6d562b388 proton: Fix noforcelgadd option.
Code in Wine still enables the hack when WINE_LARGE_ADDRESS_AWARE is
missing, need to set it to non-'1' to really disable.

CW-Bug-Id: #22930
2023-12-07 13:43:40 +02:00
Paul Gofman
52667847c4 proton: Enable WINE_HEAP_DELAY_FREE for Trivia Tricks.
CW-Bug-Id: #22774
2023-12-07 13:43:40 +02:00
Paul Gofman
d229821fdf vrclient: Support v1.26.7.
CW-Bug-Id: #22757
2023-12-07 13:43:40 +02:00
Paul Gofman
db0991c4ae steam_helper: Fix a typo in log error message. 2023-12-07 13:43:40 +02:00
Rémi Bernon
435b67aaf7 lsteamclient: Add some missing exports for SDK 1.58. 2023-10-19 13:42:29 +03:00
Arkadiusz Hiler
19c0eec97d update wine 2023-10-06 12:25:58 +03:00
Arkadiusz Hiler
01c366c0f8 update wine 2023-09-27 20:15:23 +03:00
Arkadiusz Hiler
cd727e9c05 update dxvk-nvapi to v0.6.4 2023-09-27 20:15:18 +03:00
Arkadiusz Hiler
2e1a64b18c update vkd3d-proton to v2.10 2023-09-27 20:15:18 +03:00
Arkadiusz Hiler
f50e0b6be5 update dxvk to v2.3-5-g83dc4678 2023-09-27 20:15:14 +03:00
Arkadiusz Hiler
acc247acda Update vkd3d to experimental-vkd3d-20230830 2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
ca8e8f7678 Update gst-plugins-rs to support dav1d 1.2.1
CW-Bug-Id: #19516
2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
fc5c40db76 Update gst-orc to 0.4.34
CW-Bug-Id: #19516
2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
dd087f3c03 Update gstreamer to 1.22.5.
CW-Bug-Id: #19516
2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
c0d0b2f295 lsteamclient: Generate SteamWorks SDK 1.58 support. 2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
45dff33596 lsteamclient: Import SteamWorks SDK 1.58. 2023-09-27 20:14:12 +03:00
Nozomi Miyamori
681524010d README.md: fix typo 2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
87a75415e7 Makefile.in: Order building of projects that generate DLLs with same names.
To avoid timestamp conflicts.

CW-Bug-Id: #22341
2023-09-27 20:14:12 +03:00
Eric Pouech
21efd44cf2 Creation of symbol store generation.
CW-Bug-Id: #22341
2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
818cdb7e79 media-converter: Avoid holding state lock. 2023-09-12 14:55:34 +03:00
Arkadiusz Hiler
64465e595f media-converter: Don't hold state lock during pull_range 2023-09-12 14:55:34 +03:00
Arkadiusz Hiler
eda653f413 Makefile.in: Enable vkd3d-proton traces for unstripped builds. 2023-09-12 14:55:34 +03:00
Sergev ₱
a76c324c30 media-converter: Update bumpalo to avoid use-after-free.
In affected project of this crate, the lifetime of the iterator produced
by Vec::into_iter() is not constrained to the lifetime of the Bump that
allocated the vector's memory. Using the iterator after the Bump is
dropped causes use-after-free accesses.

Link: https://github.com/ValveSoftware/Proton/pull/6792
2023-09-12 14:55:34 +03:00
Arkadiusz Hiler
46304cde3d make: Use GNU Make's job server when building via ninja.
`+` is necessary to mark it as recurisve[0] so that fds are passed as
expected.

Passing explicit `-j` is dropped because it takes precedence over
MAKEFLAGS and disables the job server integration.

[0]: https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html
2023-09-12 14:55:34 +03:00
Arkadiusz Hiler
45039fc24e Makefile.in: Bump container image used for the build.
-2 has ninja that supports GNU Make's job server.
2023-09-12 14:55:34 +03:00
Arkadiusz Hiler
354a061c16 docker: Build patched ninja that supports jobserver.
https://github.com/ninja-build/ninja/pull/1140

So that -jN actually uses N job slots even when using ninja.
Sadly this does not cover cargo, which is less of an issue.
2023-09-12 14:55:34 +03:00
Arkadiusz Hiler
cdce0cd31a docker/Makefile: Update base Sniper SDK to 0.20230509.49493 2023-09-12 14:55:34 +03:00
Eric Pouech
64bf702365 docker/Makefile: Bump binutils to 2.40.
Fix incorrect timestamp generation in PE modules.

CW-Bug-Id: #22341
2023-09-12 14:55:31 +03:00
Eric Pouech
d0d4e32727 docker/Makefile: Recompile docker images when Makefile changes. 2023-09-12 14:55:31 +03:00
Adam Moss
d0423e5d84 Enable DXVK-NVAPI by default on another batch of titles where it's stable+beneficial 2023-09-12 14:55:31 +03:00
Arkadiusz Hiler
37b88eb035 steam_helper: Stop waiting on the debugger when ptraced. 2023-09-12 14:55:31 +03:00
Adam Moss
48670ca952 Enable DXVK-NVAPI by default on more titles where it's stable+beneficial 2023-09-12 14:55:31 +03:00
Eric Pouech
81a4743db0 Makefile.in: Bump STEAMRT_IMAGE to get tools built with binutils 2.40.
Note: as described in bug report, this change is necessary to avoid
potential duplicate when searching inside several Proton tree for
an image used in a minidump.

CW-Bug-Id: #22341
2023-09-12 14:55:27 +03:00
Arkadiusz Hiler
7c21be5c27 Makefile.in: Introduce SUPPRESS_WARNINGS for quieter CI build.
Due to how we handle building and compilation flags we end up with a lot
of warnings that are normally hidden. Let's introudce an option to
suppress them for CI builds to generate smaller, more searchable logs.
2023-09-12 14:44:08 +03:00
Esme Povirk
37cf4d2086 Update Wine Mono to 8.0.1. 2023-09-12 14:44:08 +03:00
Paul Gofman
4f252eaf21 proton: Enable gamedrive compat option for Sword Art Online: Integral Factor.
CW-Bug-Id: #22667
2023-09-12 14:44:08 +03:00
Paul Gofman
231e7f24d8 proton: Enable gamedrive compat option for Empyrion - Galactic Survival.
CW-Bug-Id: #22667
2023-09-12 14:44:08 +03:00
Paul Gofman
7da8928dd9 proton: Add enableamdags compat config option.
And enable it for a few games instead of registry overrides.

CW-Bug-Id: #22677
2023-09-12 14:44:08 +03:00
Paul Gofman
eaae654042 Enable DXVK-NVAPI for Rainbow Six Extraction. 2023-09-12 14:44:08 +03:00
Paul Gofman
516f76e446 lsteamclient: Terminate callback thread on Steam interface shutdown.
CW-Bug-Id: #22649
2023-09-12 14:44:08 +03:00
Paul Gofman
e8df09e258 lsteamclient: Also overload lin SteamNetworkingMessage_t.m_pfnRelease.
CW-Bug-Id: #22649

So msg wrapper is freed when the message is released from steamclient
side.
2023-09-12 14:44:08 +03:00
Paul Gofman
8a109013b4 lsteamclient: Handle calls to SteamNetworkingMessage_t.m_pfnFreeData from native threads.
CW-Bug-Id: #22649
2023-09-12 14:44:08 +03:00
Paul Gofman
a798b8308f lsteamclient: Use a list to map lin SteamNetworkingMessage_t to wrapper.
CW-Bug-Id: #22649
2023-09-12 14:44:08 +03:00
Paul Gofman
a7bdd61d20 lsteamclient: Use plain memory allocation / free for SteamNetworkingMessage_t wrapper.
CW-Bug-Id: #22649
2023-09-12 14:44:08 +03:00
Paul Gofman
6ed890c9e9 lsteamclient: Avoid code duplication in handling SteamNetworkingMessage_t wrapping.
CW-Bug-Id: #22649
2023-09-12 14:44:08 +03:00
Paul Gofman
6d51ed29f3 steam_helper: Clear IsUnavailable for EA Desktop if set.
CW-Bug-Id: #22321
2023-09-12 14:44:08 +03:00
Paul Gofman
727f81d380 steam_helper: Increase desktop close timeout for EA Desktop.
CW-Bug-Id: #22321
2023-09-12 14:44:08 +03:00
Rémi Bernon
c53ff7a082 proton: Add dx8vb to the native redist DLLs list.
CW-Bug-Id: #22530
2023-09-12 14:44:08 +03:00
Anna Lasky
9b3457c857 proton: Enable gamedrive compat option for Garry's Mod.
CW-Bug-Id: #22421
2023-09-12 14:44:08 +03:00
Anna Lasky
2ac09e541e proton: Enable gamedrive compat option for Aura: Fate of the Ages.
CW-Bug-Id: #22421
2023-09-12 14:44:08 +03:00
Zhiyi Zhang
343ccf211d proton: Enable WINE_HEAP_DELAY_FREE for Dark Parables: The Exiled Prince Collector's Edition (499100).
CW-Bug-Id: #22397
2023-09-12 14:44:08 +03:00
Anna Lasky
06156dfe25 proton: Enable gamedrive compat option for Train Simulator and DARK
SOULS III.

CW-Bug-Id: #22421
2023-09-12 14:44:08 +03:00
Arkadiusz Hiler
996672f057 .gitmodules: Use downstream dxvk.
For CI / bleeding-edge automation.
2023-09-12 14:44:08 +03:00
Arkadiusz Hiler
c32e9213c6 update wine 2023-07-17 16:13:29 +03:00
Arkadiusz Hiler
9265ef9dce update wine 2023-07-05 15:57:52 +03:00
Arkadiusz Hiler
9a169bd27b update wine 2023-06-29 20:06:16 +03:00
kisak-valve
40804a61af Request Steam Runtime Information in footer instructions 2023-06-22 10:26:17 +03:00
kisak-valve
f55761ca1b Remove LLVM detail from template
The LLVM version mesa was built against is no longer an interesting detail for the majority of systems.
2023-06-22 10:25:17 +03:00
kisak-valve
67e3444e93 Remove LLVM detail from template
The LLVM version mesa was built against is no longer an interesting detail for the majority of systems.
2023-06-22 10:25:17 +03:00
Arkadiusz Hiler
836e4723aa update wine 2023-06-19 18:01:53 +03:00
Arkadiusz Hiler
fd3d1bda0c update vkd3d-proton to v2.9-21-gf52e6482 2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
df21891fe0 update dxvk-nvapi to v0.6.3-4-g2483eac 2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
88a434e1ae update dxvk to v2.2-34-g4d254b13 2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
55a3d3f165 proton: Bump prefix version. 2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
cdd54b2a25 proton: Log effective WINEDEBUG and WINEDLLOVERRIDES. 2023-06-06 12:05:09 +03:00
Adam Moss
c444e6fea4 Enable dxvk-nvapi by default for more games.
Link: https://github.com/ValveSoftware/Proton/pull/6725
2023-06-06 12:05:09 +03:00
notpentadactyl
4e483d01d8 proton: Enable dxvknvapi for Monster Hunter Rise.
Monster Hunter Rise (1446780) has working DLSS with `PROTON_ENABLE_NVAPI=1`.

Link: https://github.com/ValveSoftware/Proton/pull/6534
2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
6d63c73c54 steam_helper: Update the format of the generated libraryfolders.vdf.
The old 1-indexed format:
	"1" 	"Z:\\home\\ivyl\\.local\\share\\Steam"

Changes to new 0-indexed one:
	"0"
	{
		"path"		"Z:\\home\\ivyl\\.local\\share\\Steam"
	}

that is used by Steam on Windows.
2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
f0b5a6fe97 Makefile.in: Bake in the vcs version into dxvk's version.h.in. 2023-06-06 12:05:09 +03:00
Arkadiusz Hiler
785757ec15 user_settings.sample.py: Sync WINEDEBUG with proton and comment it out. 2023-06-06 12:05:09 +03:00
Rémi Bernon
78fc6d34c6 fonts: Add a Georgia system font based on Liberation Serif.
CW-Bug-Id: #21193
2023-06-05 17:55:10 +03:00
Paul Gofman
3f57a0b71b proton: Disable fsync and esync for Call of Duty 2.
CW-Bug-Id: #22305
2023-06-05 17:55:10 +03:00
Paul Gofman
e488a6cbaf wineopenxr: Update to 1.0.27 registry version.
CW-Bug-Id: #22244
2023-06-05 17:55:10 +03:00
Paul Gofman
2d00c9df0a Update OpenXR-SDK submodule. 2023-06-05 17:55:10 +03:00
Paul Gofman
2e0a609437 proton: Enable gamedrive compat option for ESO.
CW-Bug-Id: #22240
2023-06-05 17:55:10 +03:00
Paul Gofman
40103342d5 proton: Set enablenvapi for SoPFFO.
CW-Bug-Id: #22117
2023-06-05 17:55:10 +03:00
Anna Lasky
6d2bcbb559 proton: Add Roboquest to MFDXGI hack and clean up shared resources games
Removed shared resources games that previously needed MFDXGI hack because shared resources are implemented in 8.0-stable.

CW-Bug-ID: #22265
2023-06-05 17:55:10 +03:00
Paul Gofman
f0064b6799 proton: Add threadname to default logs. 2023-06-05 17:55:10 +03:00
Zhiyi Zhang
03550f8d2a steam_helper: Support forwarding command line options to native steam.
CW-Bug-Id: #22030
2023-06-05 17:55:10 +03:00
Arkadiusz Hiler
5018cb5ab7 configure.sh: Don't allow people to build in the root of the source tree. 2023-06-05 17:55:10 +03:00
Arkadiusz Hiler
de63f8c5f9 Makefile.in: Update Proton SDK image to 0.20221017.1-1.
It has Rust 1.68.
2023-06-05 17:55:10 +03:00
Arkadiusz Hiler
311385c0e5 docker: Bump Rust to 1.68. 2023-06-05 17:55:10 +03:00
Arkadiusz Hiler
7bd855e054 proton: Make log creation depend only on PROTON_LOG.
There are valid cases, e.g. when debugging Wine Mono, to have WINEDEBUG
set to -all. Before this change this would disable the logging even if
PROTON_LOG=1.
2023-06-05 17:55:10 +03:00
Arkadiusz Hiler
89e4e160ac proton: Clean up dist/redist rules. 2023-06-05 17:55:10 +03:00
Paul Gofman
2f851ecb82 vrclient: Support v1.23.7. 2023-06-05 17:55:10 +03:00
Paul Gofman
967b7878e5 vrclient: Update clang path in gen_wrapper.py to 15. 2023-06-05 17:55:10 +03:00
Zhiyi Zhang
33b0da5fb1 proton: Do use builtin steam.exe for Locoland.
Locoland(352130) executable name happens to be steam.exe.

CW-Bug-Id: #21737
2023-06-05 17:55:10 +03:00
Rémi Bernon
ea07c02886 lsteamclient: Generate SteamWorks SDK 1.57 support. 2023-05-19 18:05:40 +03:00
Rémi Bernon
a33bbf115c lsteamclient: Import SteamWorks SDK 1.57. 2023-05-19 18:05:32 +03:00
Rémi Bernon
582047e3be lsteamclient: Generate SteamWorks SDK 1.56 support. 2023-05-19 18:05:27 +03:00
Rémi Bernon
a5a5239c0c lsteamclient: Import SteamWorks SDK 1.56. 2023-05-19 18:05:19 +03:00
Rémi Bernon
49324a57d7 lsteamclient: Define __cdecl to nothing on the linux side. 2023-05-19 18:05:11 +03:00
Paul Gofman
f5da6b1c22 lsteamclient: Allocate SteamClient interface from native steamclient.dll data.
CW-Bug-Id: #22137
2023-05-19 18:05:06 +03:00
Rémi Bernon
840959f4cf lsteamclient: Generate SteamWorks SDK 1.55 support. 2023-05-19 18:05:01 +03:00
Rémi Bernon
d11d466cb3 lsteamclient: Import SteamWorks SDK 1.55. 2023-05-19 18:04:55 +03:00
Rémi Bernon
b661fabcbd lsteamclient: Generate SteamWorks SDK 1.54 support. 2023-05-19 18:04:49 +03:00
Rémi Bernon
01603fb118 lsteamclient: Import SteamWorks SDK 1.54. 2023-05-19 18:04:44 +03:00
Arkadiusz Hiler
e82bed8475 proton: Remove stale ir50_32.dll that can be left by experimental.
When switching back to 8.0 from Experimental it will point to a .dll in
the Experimental install directory. It's incompatible with 8.0 due to
experimental-only winegstreamer changes and causes delayed symbol
imports to fail.

CW-Bug-Id: #22205
2023-04-28 12:19:30 +03:00
Arkadiusz Hiler
656f440e94 update wine 2023-04-28 00:00:09 +03:00
Arkadiusz Hiler
5ac739906d proton: Optionally copy d3d12core for vkd3d-proton.
In anticipation of a pull-request being merged that moves things around
and introduces d3d12core.dll.

This should be made non-optional once the vkd3d-proton changes land.

Link: https://github.com/HansKristian-Work/vkd3d-proton/pull/1458
2023-04-27 17:51:45 +03:00
Arkadiusz Hiler
f679be3cc0 update wine 2023-04-18 17:04:27 +03:00
Andrew Eikum
576a839c18 Don't ship filenames with colons in them
CW-Bug-Id: #22054
2023-04-18 17:04:27 +03:00
Arkadiusz Hiler
ccb1c5a413 update wine 2023-04-13 22:12:34 +03:00
Giovanni Mascellani
10db41a416 Update vkd3d submodule. 2023-03-08 17:36:03 +02:00
Arkadiusz Hiler
9ec1e2714e update vkd3d-proton to v2.8-84-g08909d98 2023-03-08 17:36:03 +02:00
Arkadiusz Hiler
1164e4b0b8 update dxvk to v2.1-4-gcaf31033 2023-03-08 17:36:03 +02:00
Arkadiusz Hiler
9130990527 update dxvk-nvapi to v0.6.2 2023-03-08 17:35:54 +02:00
Esme Povirk
0b8c0e97b2 Update Wine Mono to 7.4.1. 2023-03-08 17:35:54 +02:00
Paul Gofman
f7c895c287 steam_helper: Trigger EA Desktop reinstall if link2ea association is missing.
CW-Bug-Id: #21645
2023-03-08 17:35:54 +02:00
Paul Gofman
5610e4538f steam_helper: Set desktop close timeout for EA Desktop.
CW-Bug-Id: #21645
2023-03-08 17:35:54 +02:00
Adam Moss
e171c46460 proton: Set enablenvapi for Red Dead 2 / Online.
Link: https://github.com/ValveSoftware/Proton/pull/6227
2023-03-08 17:35:54 +02:00
Arkadiusz Hiler
e34482a580 proton: Disable hidenvgpu if nvapi is enabled.
Link: https://github.com/ValveSoftware/Proton/pull/6227
2023-03-08 17:35:54 +02:00
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
Rémi Bernon
c7cb79128e fonts: Only convert simsun.ttc to TrueType.
This partially reverts commit 303299793f1ca3065cab202d6da66cded48baa64.

CW-Bug-Id: #21346
2023-03-08 17:35:54 +02:00
Rémi Bernon
303299793f fonts: Convert simsun.ttc / msyh.ttf / malgun.ttf to TrueType.
CW-Bug-Id: #21346
2023-02-14 16:07:44 +02:00
Paul Gofman
b59a3040d9 lsteamclient: Fix _GetAppInstallDir() return value.
CW-Bug-Id: #21864
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
36f8ada2cd fonts: Include in fake Nirmala UI all the codepoints from the original font.
New fonts are from https://github.com/notofonts/noto-fonts.git at
2725c70baa8b0176c7577093ba1fc6179aa79478, in the hinted/ttf folder.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
b75a61bc1f fonts: Include in fake Microsoft Sans Serif all the codepoints from the original font. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
3d635bd789 fonts: Include in fake Arial all the codepoints from the original font.
New fonts are from https://github.com/notofonts/noto-fonts.git at
2725c70baa8b0176c7577093ba1fc6179aa79478, in the hinted/ttf folder.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
a6f3965460 Makefile.in: Fix typo preventing Armenian fonts to be picked up. 2023-02-14 16:07:44 +02:00
Rémi Bernon
a8eeb1c9ac build: Move the MONO_TARBALL_URL variable down. 2023-02-14 16:07:44 +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
Giovanni Mascellani
7e10a41649 fonts/noto: Update all Noto fonts.
New fonts are from https://github.com/notofonts/noto-fonts.git at
2725c70baa8b0176c7577093ba1fc6179aa79478, in the hinted/ttf folder.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
5b52756384 LICENSE: Fix a typo. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
8e9e6da034 fonts: Rewrite font merging script based on fonttools.
The current script based on fontforge seems to have a few problems.
The generated fonts show glitches, for example in Cyberpunk 2077 for
Thai and in FIFA 22 for Arabic.

I don't precisely know what is the problem, and it might be that
the real bug is in the rendering code rather than in the merging
script. But since this seems to work better overall, I'm sticking
with it.

CW-Bug-Id: #20302
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
62174c7c1e default_pfx.py: Don't accept the shell argument any more.
We now only invoke it inside of the container instead of passing the
`docker run ...` as a parameter.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
692ef0aa1f build: Do as much as possible inside of the SDK container.
Parts of the rules, including the magical ones created via
make/rules-*.mk, are executed inside of the container via SHELL
override, and parts are executed on the host side.

This makes reasoning about and debugging the rules much harder than it
should be. It also requirs the users to have certain programs installed
on the host in addition to docker/podman.

With this change `make` will act as a simple pass through to inside of
the container for the most part.

One notable exception is installation which still happens the host side.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
9f8a37c0c1 Makefile.in: Get rid of nested make.
We are going to invoke a single in-contiainer make anyway.
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
Rémi Bernon
2b95bc1771 steam: Match LC_TYPE / LC_MESSAGES default with selected language.
CW-Bug-Id: #21346
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
e60f8c6aac build: Build all fonts in the container.
With the upgrade to sniper the fontforge is up to date enought to build
all our fonts.

Patch is used only to patch the fonts.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
b4bba7eec4 configure.sh: Move the default SDK build container image URI to Makefile.in.
Up until now ./configure.sh was baking in the default value into the
generated Makefile. Because of it if there was a change that requires a
newer version of the SDK the compilation would fail until the next
./configure.sh invocation does the update.

This is proved to be confusing - mysterious build errors without clear
explanation.

With this change the default value is a part of Makefile.in and if user
doesn't specify --proton-sdk-image it will be always used and always up
to date.

--proton-sdk-image overrides the default and stores it in the Makefile
just like it used to.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
28aeb63901 build: Switch over to sniper-based SDK container. 2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
b2b17774e4 make/rules-source.mk: Suppress grep warnings.
The second grep in sequence can exit early (-q, as soon as we have one
match it exits with a success) which makes the first grep unhappy as its
write pipe is closed early, resulting in:

        syncing vulkan-loader... grep: write error: Broken pipe

Let's silence those errors.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
bc63dbbf2a build: Get rid of runtime selection options.
Those were first added when we were working on using the new
pressure-vessel based runtime but have basically no use during current
development.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
10a240c341 docker: Use sniper as a base. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
cbf52aaafa default_pfx: Filter out fully qualified paths from the registry.
The default registry contains some fully qualified paths to fonts
that are available on the build machine, but make no sense on any
other system. This is useless, and also known to cause bug, because
it confuses the Wine font caching code. An affected game is
Lumberjack's Dynasty.
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
Giovanni Mascellani
929733036f Revert "Build vkd3d as ELF."
This reverts commit 69d6b82e9458f1bd538dfde5ac659be55350704f.
2023-02-14 16:07:44 +02:00
Rémi Bernon
5e90e8283c build: Use gdb debug infos instead of dwarf-2 strict-dwarf. 2023-02-14 16:07:44 +02:00
Rémi Bernon
559e652a45 build: Download and cache contrib into the build folder only.
Wine Mono / Gecko packages are already cached in a contrib folder,
and downloading them outside of proton source directory is brittle.

This also makes the source sync run twice when using the toplevel
Makefile.
2023-02-14 16:07:44 +02:00
Rémi Bernon
331c90a874 build: Copy files to dist / deploy / install with rsync. 2023-02-14 16:07:44 +02:00
Rémi Bernon
8decbe981a build: Add a catch-all rule for anything the container can build. 2023-02-14 16:07:44 +02:00
Rémi Bernon
bd1178a5b3 build: Use silent rules for vkd3d. 2023-02-14 16:07:44 +02:00
Rémi Bernon
db3274b1c7 build: Build PE modules with -mcmodel=small.
This breaks MinGW autoimport mechanism but nothing in Proton should be
using it. Instead, any PE module should be using standard dllimport and
ntdll will do the relocations as expected. We also don't and hopefully
never have modules larger than 2GB, so 32-bit %rip relative offsets
should be enough for everything.

This will OTOH save a lot of .refptr indirections, that are otherwise
generated for any extern symbols, even though they are later linked in
the same module, making all code smaller and maybe a little faster.
2023-02-14 16:07:44 +02:00
Rémi Bernon
470f3084eb docker: Build MinGW with -mcmodel=small.
(cherry picked from commit c90d4c34d8050ab3b314d5a6243eb36e0c7e9a5c)
2023-02-14 16:07:43 +02:00
Paul Gofman
e1d797fd97 wineopenxr: Use custom Vk structures instead of custom functions for creating Vk device through OpenXR. 2023-02-14 16:07:43 +02:00
Paul Gofman
09bbd8c0bf wineopenxr: Load unwrappers from winevulkan.so. 2023-02-14 16:07:43 +02:00
Paul Gofman
e2ab395020 steam_helper: Load unwrappers from winevulkan.so. 2023-02-14 16:07:43 +02:00
Paul Gofman
74ae018197 vrclient: Load unwrappers from winevulkan.so. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
1489a6a8d5 proton: Bump prefix version. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
19f18b660e Makefile.in: Ignore autogenerated winevulkan files. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
f7a03d620e steam_helper: Use PROCESSINFOCLASS.
We no longer have PROCESS_INFORMATION_CLASS as of ce91ef6426bf ("kernelbase: Add SetProcessInformation().")
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
dc3a951754 Makefile.in: Build wineopenxr with -ldl.
Required as of bef09697227c ("ntdll: Move the .so module initialization to winecrt0.")
2023-02-14 16:07:43 +02:00
Esme Povirk
f2223c0ba7 Update Wine Mono to 7.4.0. 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
Arkadiusz Hiler
8e67412fcc media-converter: Use the test pattern video even without dump/transcoded files.
So the game won't trip over lack of media when shader pre-cacheing is
disabled in Steam.

CW-Bug-Id: #21524
2023-02-14 16:07:43 +02:00
Shaun Ren
e2493e2dfd media-converter: Set stream ID as the video hash.
If a stream ID is not set, gstreamer will generate random stream IDs for
the streams in downstream elements. This can cause decodebin to generate
its source pads in a non-deterministic order, as decodebin takes into
account the stream IDs when sorting the source pads.

This patch includes some changes from Arek Hiler.

CW-Bug-Id: #21192
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
6d138f5e96 media-converter: Create a tag file when placeholder media are used.
CW-Bug-Id: #21473
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
eca48bb93f media-converter: Apply cargo clippy suggestions. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
e36a9ba96a media-converter: Update to the newest gst bindings.
1. ElementImpl trait requires GstObjectImpl

2. gst logging macros are no longer globals prefixed with gst_, they
   live inside gst:: instead

3. element is not longer passed around in many places, it can be
   accessed as self.obj() or self.instance()

4. query_default is now a part of gst::Pad and takes the pad as an argument

5. some constructors were changed to use from_$type()

6. query.view_mut() returns QueryViewMut

7. ElementFactory::make now returns a builder that we have to .build()

There are some extra cleanups as well:

1. spurious 'mut' and '&' are removed, a lot of that can be infered or
   were turned into a dereference by the compiler anyway

2. !bla.is_ok() are now bla.is_err()

3. some unneeded imports were removed
2023-02-14 16:07:43 +02:00
Rémi Bernon
9eb5a1753c docker: Add autoconf-archive dependency.
For OpenFST.
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
Arkadiusz Hiler
b5d58d27ad docker: Bump Rust to 1.65.
For let-else statements and generic associated types.
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
c04ca71f7a docker: Don't specify the image tag in --cache-from
The option is badly documented. Apparently the image name is enough.
Specifying the tag breaks podman/buildah build.
2023-02-14 16:07:43 +02:00
Rémi Bernon
4514ff3eff docker: Add python3-mako to the SDK images. 2023-02-14 16:07:43 +02:00
Rémi Bernon
d8fbadbd2a docker: Add OpenBLAS dependency.
For Kaldi / Vosk.
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
Arkadiusz Hiler
8959349ac9 configure.sh: Use SDK 0.20220601.0-1 2022-11-23 14:06:19 +02:00
Arkadiusz Hiler
175bc06a3f update wine 2022-10-31 13:25:15 +00:00
Arkadiusz Hiler
04dfc0937c update dxvk to v1.10.3-28-ge3daa699 2022-10-14 18:36:09 +03:00
Connor McAdams
c04edcea36 Update Wine Mono to 7.3.1. 2022-10-14 18:36:09 +03:00
Arkadiusz Hiler
79134b581a docker: Update Rust to 1.63.0. 2022-10-14 18:36:09 +03:00
Arkadiusz Hiler
42e034ece8 docker: Bump steamrt version to 0.20220601.0.
It contains libsoup.
2022-10-14 18:36:09 +03:00
Shawn Wallace
618221db82 Return proper number of recognized swapchain formats if some are not recognized.
Link: https://github.com/ValveSoftware/Proton/pull/6079

Edited by Paul Gofman:
- fixed behaviour for Vulkan instance type;
- stylistic changes.
2022-10-14 18:36:01 +03:00
Arkadiusz Hiler
66e57462c1 media-converter: Use crates.io version of the gstreamer crates. 2022-10-14 18:21:56 +03:00
Giovanni Mascellani
9ae252db4f Ensure vkd3d-proton is used for D3D12 unless wined3d is explicitly requested. 2022-10-14 18:21:56 +03:00
Giovanni Mascellani
69d6b82e94 Build vkd3d as ELF. 2022-10-14 18:21:56 +03:00
Paul Gofman
30c6b5c41e lsteamclient: Return NULL from manual_convert_SteamAPI_CheckCallbackRegistered_t() if win_func is NULL.
CW-Bug-Id: #21313
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
Rémi Bernon
4ee7c0c666 glslang: Build from source instead of prebuilt binary. 2022-10-14 18:21:56 +03:00
Rémi Bernon
8f0b458bca
gst-plugins-base: Support GLX backend for GL plugins. 2022-08-23 10:28:19 +02:00
Andrew Eikum
981ca6febe Also ship gst libsoup plugin for network video 2022-08-15 17:47:03 +03:00
Rémi Bernon
f3cc9f0610 gst-base: Enable GL video processing plugins.
CW-Bug-Id: #20363
CW-Bug-Id: #20905
CW-Bug-Id: #20981
2022-08-15 17:47:03 +03:00
Arkadiusz Hiler
4221d9ef07 Update wine. 2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
fb9231f0ca Update dxvk to v1.10.3. 2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
1db86a772d Update vkd3d-proton to v2.6-1-gc05900da. 2022-08-10 19:29:30 +03:00
Giovanni Mascellani
d760b63792 Update vkd3d submodule.
CW-Bug-Id: #20349
CW-Bug-Id: #21016
2022-08-10 19:29:30 +03:00
Jacek Caban
f3c98217cc gecko: Update version to 2.47.3.
CW-Bug-Id: #20775
2022-08-10 19:29:30 +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
a62a80be58 vrclient: Use PROTON_VR_RUNTIME from registry if env var is not there.
CW-Bug-Id: #21036
2022-08-10 19:29:30 +03:00
Paul Gofman
5e7036d566 steam_helper: Also store PROTON_VR_RUNTIME in registry.
CW-Bug-Id: #21036
2022-08-10 19:29:30 +03:00
Paul Gofman
bcd3d5218f lsteamclient: Wrap SteamAPIWarningMessageHook_t callback.
CW-Bug-Id: #20813
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
Arkadiusz Hiler
707741dcc1 toolmanifest: Specify the compatmanager layer name
Link: https://github.com/ValveSoftware/Proton/pull/5891
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
Paul Gofman
18195c558d lsteamclient: Also don't cache interfaces with vtable allocated from steamclient.dll.
CW-Bug-Id: #20909
2022-08-03 14:24:42 +03:00
Paul Gofman
ba3d473ec1 lsteamclient: Place vtables for some interfaces in native steamclient.dll data.
CW-Bug-Id: #20869
2022-08-03 14:24:42 +03:00
Arkadiusz Hiler
be4a80dac6 lsteamclient: Assume manual wrappers are needed for newer revisions of the interfaces. 2022-08-03 14:24:42 +03:00
Supreeeme
ade0363654 steam_helper: Respect VR_OVERRIDE envvar
Link: https://github.com/ValveSoftware/Proton/pull/5922
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
Arkadiusz Hiler
d957ff7c35 Use GitHub mirrors for gstreamer rust repos.
Those are the original repos that were later moved to freedesktop.org.
The author recently started updating them as mirrors.

Freedesktop.org goes down much more often than GitHub and we fetch
everything else from GitHub anyway.

It's better to depend on fewer hosting services to have fewer
interruptions.
2022-08-03 13:40:46 +03:00
Arkadiusz Hiler
67d504c37e README.md: Add a section on debugging. 2022-08-03 13:40:46 +03:00
Arkadiusz Hiler
d95c5cc550 README.md: Add a section on debug builds. 2022-08-03 13:40:46 +03:00
luz paz
28a0276cda Fix typos in documentation
Fix various typos in docs/ and docker/ sub-folders
2022-08-03 13:40:46 +03:00
Andrew Eikum
6acaf51d6e configure.sh: Use SDK 0.20220601.0-0 2022-08-03 13:40:46 +03:00
Andrew Eikum
0a191c5961 Enable MP3 decoding plugins
Required for games that play MP3 via MF, like "Let's Build a Zoo."

CW-Bug-Id: #20803
2022-06-13 22:22:15 +03:00
Andrew Eikum
112d3635f4 Makefile.in: Fix build with recent meson
It errors out on unknown options.
2022-06-13 22:22:15 +03:00
Arkadiusz Hiler
7523181830 lsteamclient: Fix the order of arguments in steamclient_isteaminput_getglyph_png(). 2022-06-13 22:16:42 +03:00
Arkadiusz Hiler
db61ec1f1e lsteamclient: Wrap EnableActionEventCallbacks's callback also for SteamInput006. 2022-06-10 16:31:19 +03:00
Arkadiusz Hiler
6ded785ccd lsteamclient: Make helpers for EnableActionEventCallbacks reusable. 2022-06-10 16:31:18 +03:00
Arkadiusz Hiler
05efcef3fa lsteamclient: Fixup paths for GetGlyph*() also in SteamInput006. 2022-06-10 16:31:17 +03:00
Arkadiusz Hiler
46a427e8d0 lsteamclient: Make getglyph png and svg helpers non-static. 2022-06-10 16:31:17 +03:00
Arkadiusz Hiler
fd79f236ca lsteamclient: Bump clang to 13.0.1. 2022-06-10 16:31:15 +03:00
Arkadiusz Hiler
0178b2bc6f update wine 2022-06-07 18:57:26 +03:00
Esme Povirk
3a7e2f03a7 Update Wine Mono to 7.3.0. 2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
a5d28386b9 update dxvk to v1.10.1-57-g279b4b7e 2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
fe93b92ddc update dxvk-nvapi to v0.5.4 2022-06-03 17:57:43 +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
Paul Gofman
47ae0819ae lsteamclient: Execute SteamNetworkingSocketsDebugOutput callback from a Wine thread.
CW-Bug-Id: #20684

The callback is called from a native Unix thread which is not initialized with Wine,
meaning it, e. g., has a leftover TEB from another thread. Only native Unix functions
may be called from such a thread.
2022-06-03 14:26:11 +03:00
Paul Gofman
8d7d5bb129 lsteamclient: HACK: Skip spurious overlay deactivation event.
CW-Bug-Id: #20169
2022-06-03 14:26:11 +03:00
Rémi Bernon
7fd1f62249 lsteamclient: Turn overlay input filtering traces to FIXME. 2022-06-03 14:26:11 +03:00
Andrew Eikum
b538b27fdd Ship libgstvpx
For VP8 and VP9 support.

CW-Bug-Id: #20379
2022-06-03 14:26:11 +03:00
Andrew Eikum
5fd2584fa5 Makefile: Fix SDK build 2022-06-03 14:26:11 +03:00
Andrew Eikum
43a131b97f docker: Use full URLs for base images
podman doesn't automatically use the docker.io registry.
2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
d2e7a76010 configure.sh: Update default Proton SDK image to 0.20220329.0-0 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
252e903ff2 docker: Bump steamrt version to 0.20220329.0. 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
b1aea5b33e Makefile: Stop mentioning VMs. 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
f8a8301f4c Makefile: Get rid of install-internal target.
Since the migration off Vagrant we no longer need to copy Proton
installation from the VM to the host. This was replaced with a `make
install` invoked using the new build system which already puts things in
the right place. This render install-internal an unnecessary no-op.
2022-06-03 14:26:11 +03:00
Paul Gofman
4e20758255 Revert "lsteamclient: HACK Do not unset SteamAppId for 'Splitgate: Arena Warfare'."
This reverts commit 57dc9d706222ee68e502fcc53b2ff04427983a05.
2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
c8486ad372 .gitmodules: Use upstream dxvk.
We no longer carry any downstream patches.
2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
0f50e49b85 Makefile.in: Use vk.xml included with Wine instead of downloading one. 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
ec4f158666 update wine 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
1af0593ce8 update dxvk to v1.10.1 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
c523ec1382 update vkd3d-proton to v2.6 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
f487cf436e update dxvk-nvapi to v0.5.3 2022-04-21 13:02:27 +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
Paul Gofman
cd60b70756 lsteamclient: Fixup gameID parameter for SteamUser008_InitiateGameConnection().
CW-Bug-Id: #20195
2022-04-20 18:54:06 +03:00
Paul Gofman
e03828cdc3 lsteamclient: Also treat TypeKind.UNEXPOSED as unspecified function pointer in genwrapper.py. 2022-04-20 18:54:06 +03:00
Arkadiusz Hiler
aaabeb5567 Revert "proton: Add noesync,nofsync for Apex Legends"
This reverts commit 25a58123a169dec4282b92bc1b24411278d0b65f.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
f45b165030 Revert "proton: Add noesync,nofsync for PixelJunk Eden"
This reverts commit 0623da2af422e34101787cb772bbefece6a9885b.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
76406455ac Build most of the fonts in the container.
We can move everything but Liberation fonts build to the container.
Sadly those require newer version of fontforge than the one available in
the Steam RT.

There's some extra logic necessary to assure that font build triggers in
the container with the default/all targets.

This removes the requirement to have afdko and fonttools installed on
the host.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
701dad161f configure.sh: Don't check for autoconf.
It's not required on the host since
44d9fb94b25b ("build: Run autoreconf in the container.")
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
d101742156 docker: Install nasm package.
Required by dav1d. This got lost somewhere between rebases and branches.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
43bfd2a6ae docker: Install fonttools package. 2022-04-05 18:13:11 +03:00
Rémi Bernon
a5bfe6edda docker: Add fontforge and libutfcpp-dev to the Proton SDK images. 2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
d9ae1265c0 docker: Bump steamrt version to 0.20220119.0.
It contains afdko.
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
Andrew Eikum
22a1828158 Makefile: Improve module target for modules with periods 2022-04-05 18:13:11 +03:00
Andrew Eikum
7195a2c542 media-converter: Fix read-only DB detection 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
Itoh Shimon
b46a3bf712 fonts: Update PROTON_NOTE.md for Ume
Link: https://github.com/ValveSoftware/Proton/pull/5609
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
14ffc4d0f7 Use CARGO_HOME on the host
This lets cargo's cache persist across builds, so there are fewer (often
zero) network pulls during the build process.
2022-03-04 13:30:29 +02:00
Andrew Eikum
ab06ba22a0 Use media-converter's Cargo.lock 2022-03-04 13:30:29 +02: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
Rémi Bernon
6a3c03d64b build: Don't change debug file .text section flags.
This breaks perf ELF symbol tracking somehow.
2022-02-25 13:52:40 +02:00
Rémi Bernon
42cb4d31bb build: Remove pefixup invocation for module rule too. 2022-02-25 13:52:40 +02:00
Derek Lesho
33c77c5687 fixup! build: Build easyanticheat bridge when present. 2022-02-25 13:52:40 +02:00
Rémi Bernon
82b5301d55 build: Remove unnecessary pefixup.py script. 2022-02-25 13:52:40 +02:00
Rémi Bernon
88064f86ee build: Fixup .text section flags using objcopy and assert in pefixup. 2022-02-25 13:52:40 +02:00
Rémi Bernon
47fe4a8063 pefixup: Assert that IMAGE_SCN_ALIGN_MASK isn't required anymore. 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
Arkadiusz Hiler
7cb4c4dc93 update wine 2022-02-23 18:08:43 +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
b7d532badf update vkd3d-proton to v2.5-146-g33f17cc7 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
e97e717175 update dxvk-nvapi to v0.5.2 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
Andrew Eikum
f3b9480b5f docs: Update CONTROLLERS for Wine 7.0 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
053954076c Update wine 2022-02-11 17:39:00 +02:00
Esme Povirk
f0553aabb5 Update Wine Mono to 7.1.2. 2022-02-09 21:37:47 +02:00
Derek Lesho
34bed50ea3 build: Build easyanticheat bridge when present. 2022-02-09 21:37:47 +02:00
Derek Lesho
a5d2b67315 steam_helper: Place Easy Anti Cheat runtime path into PROTON_EAC_RUNTIME. 2022-02-09 21:37:47 +02:00
Arkadiusz Hiler
9a07890d7e vrclient: Remove wined3d interop.
DXVK interop is still in place.
2022-01-24 22:53:20 +02:00
Paul Gofman
b908213041 wineopenxr: Set Unix __WINE_OPENXR_VK_DEVICE_EXTENSIONS env var instead of Windows.
CW-Bug-Id: #20036

That is read in the winevulkan's Unix part with getenv() now.
2022-01-24 22:53:20 +02:00
Paul Gofman
dd35b33d6c vrclient: Update clang path in gen_wrapper.py to 13.0.0. 2022-01-24 22:53:20 +02:00
Derek Lesho
aafc2191a2 mediaconvert: Classify protonvideoconv as Codec/Demuxer.
When classified as Codec/Demuxer, it is prioritised alongside actual demuxers.

Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
2022-01-24 22:53:20 +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
Andrew Eikum
a18ffa9b8b Makefile.in: Build dav1d gst plugin
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
293d4c2d8e add gst-plugins-rs submodule at 0.7.2
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
32e058dcbc Makefile.in: Build dav1d
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
07d27b9a81 add dav1d submodule at 0.9.2
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Derek Lesho
be0bdb7fb9 proton: Add gst-libav and ffmpeg to build.
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
Eduard Permyakov
d6aec09c05 lsteamclient: Fix forwarding incorrect result for certain path-related operations.
The SteamAPI may return non-zero values even when a NULL pointer is
passed in for the target path buffer. For example, GetAppInstallDir
will still return the required size of the distination buffer.

Since api_result is the length of the Windows path, it is not completely
safe to return it directly, since the corresponding UNIX path may have
more characters. Without access to the original Windows path, we cannot
make a conversion to determine how many characters the UNIX path will
have. So just resort to returning a safe upper bound value.

CW-Bug-Id: #19606
2022-01-24 16:03:39 +02:00
Rémi Bernon
2ad85256a3 media-converter: Add format=S16LE to audioconv caps.
As opusdec will only output that format, and we want to be able to
filter the elements from their capabilities early.

CW-Bug-Id: #19854
2022-01-24 16:03:39 +02:00
Rémi Bernon
f0a10371c9 media-converter: Classify proton audioconv as Codec/Decoder/Audio.
Required to match it when enumerating audio decoders.

CW-Bug-Id: #19854
2022-01-24 16:03:39 +02:00
Andrew Eikum
844ba1e037 fonts: Update source-han-sans fonts from upstream at v2.004
From https://github.com/adobe-fonts/source-han-sans/ at
eb82513b0bc8a1eaafbdd96ed64da17483c7a52f (2.004).

CW-Bug-Id: #19849
2022-01-24 16:03:38 +02:00
Andrew Eikum
20ac2d95bc update liberation-fonts to 2.1.5
CW-Bug-Id: #19849
2022-01-24 16:03:38 +02:00
Itoh Shimon
7a46a3cf40 fonts: Use Ume fonts instead of Source Han Sans Japanese.
They are metrically compatible with MS Gothic fonts. Attack on Titan 2
- A.O.T.2 - 進撃の巨人2 and Touhou Fuujinroku ~ Mountain of Faith are
known to render better with Ume fonts.

CW-Bug-Id: #19849
CW-Bug-Id: #19971
2022-01-24 16:03:38 +02:00
Andrew Eikum
18f4555528 Update copyright dates 2022-01-19 11:39:44 +02:00
Andrew Eikum
bf8ee8e554 media-converter: Add MEDIACONV_DONT_DISCARD 2022-01-19 11:29:55 +02:00
Arkadiusz Hiler
4070272852 Use github gstreamer mirrors.
Freedesktop tends to have their https not working these days plus it's
better to rely only on one hosting service instead of multiple.

Link: https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/407
2022-01-19 11:29:55 +02:00
Arkadiusz Hiler
2c19e6fd92 Makefile.in: Override assignment of DOCKER_OPTS.
... so that users can use it to provide extra options for docker without
overriding CCACHE/ROOTLESS logic.
2022-01-19 11:29:55 +02:00
Rémi Bernon
fc27d69033 steam.exe: Make process system after child process has started.
So that it can connect to the winstation and get a desktop reference
before steam.exe releases theirs.

CW-Bug-ID: #19584
2022-01-19 11:29:55 +02:00
Rémi Bernon
a7d8aabc0d vrclient: Parse all include files at once. 2022-01-19 11:29:54 +02:00
Rémi Bernon
57ea5353ee lsteamclient: Parse all include files at once. 2022-01-19 11:29:54 +02:00
Rémi Bernon
db7e0e7a14 vrclient: Remove unnecessary includes. 2022-01-19 11:29:54 +02:00
Rémi Bernon
226313fa1d lsteamclient: Remove unnecessary includes.
The -Isteamworks_sdk_{sdkver} was not expanded anyway.
2022-01-19 11:29:54 +02:00
Rémi Bernon
fc14f36b9d vrclient: Use dicts to lookup structs in gen_wrapper.py. 2022-01-19 11:29:54 +02:00
Rémi Bernon
de5557448b lsteamclient: Use dicts to lookup structs in gen_wrapper.py. 2022-01-19 11:29:54 +02:00
Rémi Bernon
e868aa6e1a vrclient: Import from clang.cindex instead of prefixing. 2022-01-19 11:29:54 +02:00
Rémi Bernon
5e3dab64e2 lsteamclient: Import from clang.cindex instead of prefixing. 2022-01-19 11:29:54 +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
Arkadiusz Hiler
b502860b34 vkd3d: Update submodule's url to github 2022-01-19 11:29:54 +02:00
Paul Gofman
d1e6e83c15 wineopenxr: Convert projection view info chain in convert_XrCompositionLayer().
CW-Bug-Id: #19878
2022-01-19 11:29:54 +02:00
Paul Gofman
47d21b5618 wineopenxr: Update to 1.0.20 registry version. 2022-01-19 11:29:54 +02:00
Paul Gofman
3dd273022e Update OpenXR-SDK submodule. 2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
100dfb9476 Makefile: Use correct paths for dlls build with winemaker 2022-01-19 11:29:54 +02:00
Andrew Eikum
ad07f9fef1 Makefile: Remove redundant ccache make argument 2022-01-19 11:29:54 +02:00
Andrew Eikum
9d742a5332 Makefile: Remove Vagrant build path 2022-01-19 11:29:54 +02:00
Andrew Eikum
3bffbe24b3 build: Rename build/makefile_base.mak to Makefile.in 2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
f28e37b95c configure: Autodetect docker or podman 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
Andrew Eikum
725dd255fc media-converter: Update dependencies 2022-01-19 11:29:54 +02:00
Andrew Eikum
f002efd808 media-converter: Fall back to OGV if no MKV is available
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
f1893068c3 media-converter: Don't panic on unknown tags for read-only DBs
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
e190c26058 media-converter: Use AV1/Opus instead of Theora/Vorbis
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
48196af449 media-converter: Query upstream duration if needed
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
bfc4b2330d make: Don't set CMAKE_SYSTEM_NAME=Linux
This broke libaom optimization detection, since cmake appears not to set
vars like CMAKE_SYSTEM_PROCESSOR if CMAKE_SYSTEM_NAME is set.
2022-01-19 11:29:54 +02:00
Andrew Eikum
e3a12c2f18 media-converter: Clean up already-converted entries
CW-Bug-Id: #19614
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
Andrew Eikum
212cbc0c9a lsteamclient: Generate steamworks sdk 1.53a support 2022-01-19 11:29:54 +02:00
Andrew Eikum
0b9c8a34aa lsteamclient: Import steamworks sdk 1.53a 2022-01-19 11:29:54 +02:00
Andrew Eikum
58860a6cc6 lsteamclient: Support reference parameters 2022-01-19 11:29:54 +02:00
Andrew Eikum
67316452df lsteamclient: Use python f-strings 2022-01-19 11:29:54 +02:00
Nikolay Sivov
55fb5b0bd3 Remove +tid from WINEDEBUG example.
It's now always enabled, and can't be suppressed.
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
Rémi Bernon
c308ae9f32 configure.sh: Update default Proton SDK image to 0.20211207.0-0. 2022-01-19 11:29:54 +02:00
Rémi Bernon
6da8b268dd docker: Update Proton SDK components. 2022-01-19 11:29:54 +02:00
Rémi Bernon
f46e62c775 docker: Install yasm in Proton SDK images. 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
Andrew Eikum
fa157d39f0 Remove unused mingw-w64 patches 2022-01-19 11:29:54 +02:00
Andrew Eikum
252d4c8b1d Makefile: Update module target for new wine library paths 2022-01-19 11:29:54 +02:00
Andrew Eikum
264ca8eda3 build: Simplify gst-plugins-good and -base configure 2022-01-19 11:29:54 +02:00
Andrew Eikum
1ba590a207 user_settings: Improve default gst logging 2022-01-19 11:29:54 +02:00
Andrew Eikum
8db0a29d4a Update gstreamer to 1.18.5 2022-01-19 11:29:54 +02:00
Paul Gofman
920a2e52f0 makefile: Also pefixup .drv files. 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
2b4bfa46d6 build: Call dlls/winevulkan/make_vulkan in wine post-source. 2022-01-19 11:29:54 +02:00
Rémi Bernon
0b729bded4 build: Stop building FAudio and jxrlib. 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
Rémi Bernon
73982eb20f build: Use winebuild --exe mode for fake exe module generation.
This fixes steam.exe.so not being able to start from system32
automatically, as the fake module was flagged with IMAGE_FILE_DLL, which
caused GetBinaryTypeW to fail.
2022-01-19 11:29:54 +02:00
Rémi Bernon
9b8046131d steam.exe: Use NtSetInformationProcess instead of __wine_make_process_system. 2022-01-19 11:29:54 +02:00
Rémi Bernon
5838c1fbda build: Don't depend on wine for building libvkd3d-shader. 2022-01-19 11:26:04 +02:00
Rémi Bernon
c35122e209 build: Cross-compile Vulkan Loader with Vulkan and SPIRV Headers. 2022-01-19 11:26:04 +02:00
Rémi Bernon
e0e1d984c2 Vulkan-Loader: Add new submodule. 2022-01-19 11:26:04 +02:00
Rémi Bernon
cb94853f03 Vulkan-Headers: Update to v1.2.198. 2022-01-19 11:26:04 +02:00
Rémi Bernon
04bf8f150e build: Build vkd3d-shader with cross-compilation rules. 2022-01-19 11:26:04 +02:00
Rémi Bernon
587f86fb9d build: Better support meson cross compilation. 2022-01-19 11:26:04 +02:00
Rémi Bernon
5b8a6c72f9 build: Remove CCACHE_BIN variable, use wrappers in PATH instead.
Container have ccache wrappers in the PATH already, and the two
components CC / CXX just makes it harder to generate meson cross files.
2022-01-19 11:26:04 +02:00
Rémi Bernon
4ade59b2ca build: Better support cross-compilation in common rules. 2022-01-19 11:26:04 +02:00
Rémi Bernon
09568c2159 build: Simplify cargo target replacement. 2022-01-19 11:26:04 +02:00
Rémi Bernon
808b99bd27 build: Use $$(OBJ) consistently in rules macros. 2022-01-19 11:26:04 +02:00
Rémi Bernon
6d682e4b17 build: Cleanup target directories before building.
And force copy artifacts after.
2022-01-19 11:26:04 +02:00
Giovanni Mascellani
512208d15f docker: Install Capstone development files. 2022-01-19 11:26:04 +02:00
Rémi Bernon
2286a8e592 docker: Add python3-pefile package to SDK image. 2022-01-19 11:26:04 +02:00
Rémi Bernon
be485ab504 docker: Don't install tini, it's already there now. 2022-01-19 11:26:04 +02:00
Rémi Bernon
1c04188bc0 docker: Install libxpresent-dev packages. 2022-01-19 11:26:04 +02:00
Rémi Bernon
c9a428090f docker: Bump steamrt version to 0.20210505.0. 2022-01-19 11:26:04 +02:00
Johannes Bauer
0d186ab788 README: Fix a few small typos.
Link: https://github.com/ValveSoftware/Proton/pull/5357/
2021-12-09 17:55:07 +02:00
Arkadiusz Hiler
2443100316 update vkd3d-proton to v2.5-88-gc0a3fa8a 2021-12-06 13:01:04 +02:00
Arkadiusz Hiler
f158f52e44 update wine 2021-12-03 15:21:12 +02:00
Arkadiusz Hiler
50b4c8785f update wine 2021-11-22 21:10:16 +02:00
Arkadiusz Hiler
ea7eaa41d1 update vkd3d-proton to v2.5-50-g0251b404 2021-11-22 17:39:01 +02:00
Arkadiusz Hiler
3d5c0375a7 update dxvk to v1.9.2-13-g714ca482 2021-11-22 17:38:54 +02:00
Arkadiusz Hiler
e252df46d9 update dxvk-nvapi to v0.4-37-gacbcf35 2021-11-19 18:35:48 +02:00
Esme Povirk
9f3ba9d9c3 Update Wine Mono to 6.4.1. 2021-11-19 18:35:48 +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
Derek Lesho
856c5e422e build: Build battleye bridge when present.
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
c218238762 wineopenxr: Get required vulkan extensions from registry.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Paul Gofman
daf8263323 steam_helper: Store OpenXR vulkan extensions in registry.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Paul Gofman
034ff27cf3 wineopenxr: Export __wineopenxr_get_extensions_internal() function.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +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
pchome
ef7b6fd07e steam_helper: Fix small typo
Link: https://github.com/ValveSoftware/Proton/pull/5266
2021-11-11 18:36:07 +02:00
Paul Gofman
7d37e79328 steam_helper: Create a thread to signal DIPC objects.
CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
Andrew Eikum
5b7de85bdf steam_helper: Add PROTON_HIDE_PROCESS_WINDOW for hiding the child process's window
CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
Pierre-Loup A. Griffais
f2ff463c08 steam_helper: create Config directory
This is checked by CEG.

CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
Andrew Eikum
8d9c45a6f6 steam_helper: Add PROTON_WAIT_ATTACH for debuggers to attach to game process at startup
CW-Bug-Id: #19567
2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
2983a44781 build: Respect concurrency limit when building with cargo. 2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
158e04cb05 configure: Mention that people may need to install afdko using pip. 2021-11-11 18:36:07 +02:00
Giovanni Mascellani
d1c4de3d29 Vagrantfile: Stop processing in case of errors
If something in the provisioning of the vagrant virtual machine goes
wrong the developer might not notice (the creation log is very long),
but the virtual machine will be more or less subtly broken. Instead,
halting on errros makes problems immediately apparent.

Link: https://github.com/ValveSoftware/Proton/pull/4343
2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
9d98dd3391 Vagrantfile: Add mitigation for GitHub's git protocol deprecation.
The planned brownouts already cause problems.

Link: https://github.blog/2021-09-01-improving-git-protocol-security-github/
2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
49602674d0 Vagrantfile: Install python3 version of afdko. 2021-11-11 18:36:07 +02:00
Rémi Bernon
ccfad43c81 docs: Add some documentation for proper ICMP ECHO system config.
System ping utility cannot be used in SLR container so we need to use
ICMP sockets.

CW-Bug-Id: #19340
2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
99a58cf845 Make README more digestible 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
Zebediah Figura
0d88b6db78 build: Build vkd3d.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
3b375e5463 build: Build SPIRV-Headers, sort of.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
cac66b1914 build: Build Vulkan-Headers, sort of.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
59fd9ea1da SPIRV-Headers: New submodule.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
eb9c5d1821 Vulkan-Headers: New submodule.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
d61fe4467d vkd3d: New submodule.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
44d9fb94b2 build: Run autoreconf in the container.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Andrew Eikum
4aac973ecf media-converter: Add an option to disable dumping audio to disk
CW-Bug-Id: #19009
2021-11-11 18:36:07 +02:00
Andrew Eikum
ac2caa3e54 media-converter: Remove audio data repeat logic 2021-11-11 18:36:07 +02:00
Andrew Eikum
905fc8ef44 media-converter: Don't pad filler audio data
Fixes corrupt streams when dumping audio to disk. Relies on the client
(e.g. FAudio) to fill in blank data when a buffer results in a short
decode.
2021-11-11 18:36:07 +02:00
legendofmiracles
9845a94d1c media-converter: Make Rust more idiomatic 2021-11-11 18:36:07 +02:00
Andrew Eikum
d02b5dc9ce media-converter: Always set write offset past header 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 9eb14500c2988e58929d0c516d9ae1cc2b70db75.
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
7a90ff74ce lsteamclient: Get memory for SteamClient interface within native steamclient.dll loader range.
CW-Bug-ID: #19605

For Mafia II.
2021-11-11 18:36:07 +02:00
Andrew Eikum
b3c6c677bc lsteamclient: Fix SteamIPAddress_t size
CW-Bug-Id: #19598
2021-11-11 18:29:03 +02:00
Andrew Eikum
2165c3ff81 lsteamclient: Also key glyph path cache off of flags parameter 2021-11-11 17:52:16 +02:00
Andrew Eikum
0b1db713ac lsteamclient: Also convert paths from GetGlyphForXboxOrigin
CW-Bug-Id: #19517
2021-10-08 13:22:52 -05:00
Andrew Eikum
f9eef72c88 lsteamclient: Convert glyph paths in new ISteamInput005 methods
CW-Bug-Id: #19517
2021-10-08 13:22:52 -05:00
Andrew Eikum
4b9b102b31 lsteamclient: Convert path given to ISteamInput::SetInputActionManifestFilePath
CW-Bug-Id: #19517
2021-10-08 13:22:52 -05:00
Andrew Eikum
da911c3bf9 lsteamclient: generate 1.52 support 2021-10-08 13:22:51 -05:00
Andrew Eikum
a1244bdf38 lsteamclient: import steamworks sdk 1.52 2021-10-08 13:22:51 -05:00
Arkadiusz Hiler
5536e50175 update wine 2021-09-29 16:27:35 +03:00
Arkadiusz Hiler
0254a0fe15 update dxvk to v1.9.2-7-gb63ceeda 2021-09-29 16:27:27 +03:00
Arkadiusz Hiler
1db7f930a9 update vkd3d-proton to v2.4-101-g173b8ece 2021-09-24 20:22:55 +03: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
3f865b5b5b update FAudio to 21.08-1-g0c352eb 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
Andrew Eikum
b5cfb6b549 update wine 2021-08-17 10:11:32 -05:00
Andrew Eikum
49047eaba2 update dxvk to v1.9.1 2021-08-12 10:54:20 -05:00
Andrew Eikum
542d82c93e build: Fix copying .so files in module target 2021-08-12 10:54:20 -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
f9f0fc3931 Add Korean version of SourceHanSans font. 2021-08-12 10:54:19 -05:00
Giovanni Mascellani
cf9d10ef68 Build a fake MS Gothic font. 2021-08-12 10:54:19 -05:00
Giovanni Mascellani
8ad18f38d5 Add Japanese version of SourceHanSans 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
Paul Gofman
d2080ad0fd steam_helper: Don't hand off Steam appid to OpenVR runtime in initialize_vr_data().
CW-Bug-Id: 19220

Initializing OpenVR with the app's game ID seems to cause problems with
Steam VR runtime stability when the game uses OpenXR. The negative
impact is that if OpenVR is started the initialization will be delayed
for 2 seconds by vrserver waiting for valid appid. But the wait goes
in parallel with main application startup and should not delay things
much, if at all.
2021-08-12 10:54:19 -05:00
Paul Gofman
9cf5ff5cec wineopenxr: Update to 1.0.18 registry version. 2021-08-12 10:54:19 -05:00
Paul Gofman
95b1dc2b0b Update OpenXR-SDK submodule. 2021-08-12 10:54:19 -05:00
Paul Gofman
6471f83f55 wineopenxr: HACK: Force enable XR_KHR_win32_convert_performance_counter_time.
Linux SteamVR doesn't seem to support the Linux XR_KHR_convert_timespec_time
yet but the games start to refuse to work without the extension even if
they do not actually use it.

CW-Bug-Id: 19220
2021-08-12 10:54:19 -05:00
Paul Gofman
6981478bf5 wineopenxr: Substitute XR_KHR_convert_timespec_time for XR_KHR_win32_convert_performance_counter_time.
CW-Bug-Id: 19220
2021-08-12 10:54:19 -05:00
Paul Gofman
c35f4120d4 wineopenxr: Use array for coding extension substitution.
CW-Bug-Id: 19220
2021-08-12 10:54:19 -05:00
Paul Gofman
450f3e8025 vrclient: HACK: Fixup digital action 'bChange' parameter on 32 bit.
CW-Bug-Id: 19067
2021-08-12 10:54:19 -05:00
Paul Gofman
d46e6aaada vrclient: Fixup size for structs with matching field offsets but mismatched size.
CW-Bug-Id: 19067
2021-08-12 10:54:19 -05:00
Arkadiusz Hiler
ed7c5db865 docs: Add Vulkan section to PRIME.md. 2021-08-12 08:54:18 -05:00
Arkadiusz Hiler
b82289bd0d build: Add support for relabeling container volumes. 2021-08-12 08:53:50 -05:00
Andrew Eikum
7ff77df377 proton: More easily enable always-on logging 2021-08-12 08:53:50 -05:00
Andrew Eikum
f27ab32edb vkd3d-proton: Update to v2.4 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
Arkadiusz Hiler
6f35d1e8bd docs: Update PRIME.
To reflect the switch to DXVK's DXGI.
2021-06-25 10:42:53 -05:00
Andrew Eikum
a1d6093f87 update vkd3d-proton to v2.3.1-71-g72d9b322 2021-06-24 11:42:44 -05:00
Andrew Eikum
feded58bec update wine 2021-06-24 11:42:44 -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
Andrew Eikum
da9b641e7d update dxvk to v1.9 2021-06-17 15:39:42 -05:00
Andrew Eikum
edb77b173b Makefile: Don't consider proton-sdk tags for build name 2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
5df15e1149 README: Document the VM-less build. 2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
fc18afd71e configure.sh: Expose --enable-ccache.
Until now the option had to be added by hand to the Makefile or
specified each `make` invocation.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
c52532efce configure.sh: Detect rootless container setups.
Until now the option had to be added by hand to the Makefile or
specified each `make` invocation.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
82ae47758f configure.sh: Add option to select container engine.
Configure will also test the container engine by trying to run the
selected SDK image.

This may make the first configure a bit slow, as it downloads the image,
but after that the SDK will be cached locally.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
33814e973d configure.sh: Look for AFDKO.
Debian-like distributions install AFDKO's executables into libexec and
provide an `afdko` helper to call them.

Python's pip installs the executables in bin.

Let's support both.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
f55d7adcb1 configure.sh: Check for host-side tools and warn if something is missing.
The checks don't exit immediately so users won't have to rerun configure
after installing only a single dependency.
2021-06-17 15:24:39 -05:00
Paul Gofman
68fc0e1c11 wineopenxr: Update to 1.0.17 registry version. 2021-06-17 15:10:20 -05:00
Paul Gofman
a079bcd080 wineopenxr: Fix spec entries. 2021-06-17 15:10:20 -05:00
Paul Gofman
e8aa632064 Update OpenXR-SDK submodule. 2021-06-17 15:10:20 -05:00
Rémi Bernon
cabe4dee6f build: Make sure wineopenx64.json depends on prefix.
So that deleting the prefix to recreate it also forces the file to be
copied again.
2021-06-17 15:10:20 -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
Rémi Bernon
c1fc8283d1 build: Use jobs to control xargs parallelism. 2021-06-17 15:10:20 -05:00
Rémi Bernon
bdb6a31e8c build: Make silent builds actually quiet. 2021-06-17 15:10:20 -05:00
Paul Gofman
5b406be13e build: Fixup PE section headers.
For FH4.
2021-06-17 15:10:20 -05:00
Rémi Bernon
8448591ebd build: Build with Proton SDK 0.20210505.0-2.
But disable XPresent extension for now.
2021-06-17 15:10:20 -05:00
Paul Gofman
fb569a17e3 wineopenxr: Update to 1.0.15 registry version. 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
Paul Gofman
57dc9d7062 lsteamclient: HACK Do not unset SteamAppId for 'Splitgate: Arena Warfare'.
CW-Bug-Id: 18924

To be dropped on the next rebase.
2021-05-27 21:30:27 +03:00
Rémi Bernon
751535d863
build: Restore missing tabulation in Makefile. 2021-05-27 19:13:24 +02: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
Arkadiusz Hiler
a0c2cf6cac Use relative paths for wine and dxvk submodules. 2021-05-27 18:06:32 +03:00
Arkadiusz Hiler
bbf68812bc build: Add option to use rootless containers. 2021-05-27 18:06:31 +03:00
Rémi Bernon
0e897ff8b7
build: Move protonsdk_version default value to configure.sh. 2021-05-27 16:59:02 +02:00
Rémi Bernon
a8b3580679
configure: Rename --no-steam-runtime to --no-proton-sdk. 2021-05-27 16:58:19 +02:00
Rémi Bernon
9d5b7eb0cc
configure: Rename --steam-runtime-image to --proton-sdk-image. 2021-05-27 16:58:19 +02:00
Rémi Bernon
ecca62efa8
build: Create CCACHE_DIR if it doesn't exist and mount it.
Instead of the HOME dir, and only when ENABLE_CCACHE is set.
2021-05-27 16:58:18 +02:00
Rémi Bernon
8dd5db85dd
build: Pass CCACHE environment variable to the container build. 2021-05-27 16:58:18 +02:00
Rémi Bernon
d3e4d8a811
build: Pass -j flags and overrides to sub-make inside Vagrant. 2021-05-27 16:58:16 +02:00
Rémi Bernon
b84a7593b7
build: Pass -j flags to ninja build steps too. 2021-05-27 16:57:45 +02:00
Rémi Bernon
bb4c28c6ac
build: Use a separate rule for downloads. 2021-05-27 16:57:41 +02:00
Rémi Bernon
9283c7b50d
build: Use SHELL variable to execute commands in Vagrant. 2021-05-27 16:57:22 +02:00
Rémi Bernon
1e561a8bc0
build: Split non-vagrant commands from install rule. 2021-05-27 16:52:27 +02:00
Rémi Bernon
2269616052
build: Use a rule to create the vagrant_share/* directories. 2021-05-27 16:52:23 +02:00
Rémi Bernon
b58a10a265
build: Simplify and cleanup TTF font creation rules. 2021-05-27 16:52:09 +02:00
Rémi Bernon
acded80882
build: Install wineopenxr64.json after the prefix is created. 2021-05-27 16:52:08 +02:00
Rémi Bernon
41d488deee
build: Pass make flags and parallel flags to module rule. 2021-05-27 16:52:08 +02:00
Rémi Bernon
08992c126e
build: Make sure that module target triggers wine-configure. 2021-05-27 16:52:08 +02:00
Rémi Bernon
8726ea849d
build: Add specified modules to the container build list.
And not only when ending with 32/64.
2021-05-27 16:52:08 +02:00
Rémi Bernon
5dd383efff
build: Remove duplicate BUILD_DIR variable. 2021-05-27 16:52:07 +02:00
Andrew Eikum
bb11c5177c update wine 2021-05-13 11:14:44 -05: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
ec9bf7f85d steam_helper: Create libraryfolders.vdf file.
For 2K Launcher.

CW-Bug-Id: 18912
2021-05-13 10:07:20 -05:00
Paul Gofman
016fb2fc76 steam_helper: Create Valve_SteamIPC_Class event.
For 2K Launcher.

CW-Bug-Id: 18912
2021-05-13 10:07:20 -05:00
Paul Gofman
301e733bbf steam_helper: Forward steam:// protocol requests to winebrowser.
CW-Bug-Id: 18912
2021-05-13 10:07:20 -05:00
Paul Gofman
7c30c77105 vrclient: Return stored BMD presence from BIsHmdPresent() if client core is not initialized.
CW-Bug-Id: 18901
2021-05-13 10:06:49 -05:00
Paul Gofman
0e9c2536c0 steam_helper: Store HMD presence status in registry.
CW-Bug-Id: 18901
2021-05-13 10:06:49 -05:00
Andrew Eikum
6cc6afaa3b update wine 2021-04-29 13:04:38 -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
afc9bf84c7 update vkd3d-proton to v2.3.1 2021-04-27 10:27:01 -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
372d299ed6 update wine 2021-04-06 11:11:16 -05:00
kisak-valve
2d14c192a3 Ask for Proton logs to be attached as a file
Occasionally the previous wording gets read as copy/paste a wall of text into a new compatibility report instead of attaching files, which makes it more difficult to have a discussion when many pages of log added to the scroll bar.
2021-03-31 14:08:11 -05:00
Paul Gofman
5d57ef328f vrclient: Cleanup vrclient before native library unload if the app failed to do so.
Unloading native library without the cleanup hangs. If the native
library is not unloaded explicitly the Linux process then hangs on exit.

Fixes hang on exit from Doom VFR.

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:11 -05:00
Andrew Eikum
d7b47f9d53 media-converter: Pin our dependencies 2021-03-31 14:08:11 -05:00
Rémi Bernon
bbf41a6d75 build: Add -gdwarf-2 -gstrict-dwarf debug info compilation flags. 2021-03-31 14:08:11 -05:00
Arkadiusz Hiler
4a3ec82256 Add PRIME documentation 2021-03-31 14:08:10 -05:00
Rémi Bernon
d3890c110a docs: Document thread priority configuration. 2021-03-31 14:08:10 -05:00
Andrew Eikum
ea48c51a52 build: Enable videobox gst plugin 2021-03-31 14:08:10 -05:00
Andrew Eikum
31161ce979 update gstreamer to 1.18.4 2021-03-31 14:08:10 -05:00
Andrew Eikum
6c15b7f3c8 Modernize README 2021-03-31 14:08:10 -05:00
Andrew Eikum
96ef46cff6 update FAudio to 21.03.05 2021-03-31 14:08:10 -05:00
Andrew Eikum
00df0f8076 update vkd3d-proton to v2.2 2021-03-31 14:08:10 -05:00
Andrew Eikum
da10583e21 update glslangValidator to SDK-candidate-26-Jul-2020 (3ee5f2f) 2021-03-31 14:08:10 -05:00
Andrew Eikum
e781a587b8 update dxvk to v1.8.1 2021-03-31 14:08:10 -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
5504754ce9 lsteamclient: generate 1.51 support 2021-03-31 14:08:10 -05:00
Andrew Eikum
c2e3697d90 lsteamclient: import steamworks sdk 1.51 2021-03-31 14:08:10 -05:00
Paul Gofman
52415ddaa4 vrclient: Use Vulkan texture array for d3d11 texture arrays.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:10 -05:00
Paul Gofman
e0f82e30cb vrclient: Support v1.16.8.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:10 -05:00
Paul Gofman
53f2b7aea2 wineopenxr: Don't leak our_images on error in wine_xrEnumerateSwapchainImages().
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:10 -05:00
Paul Gofman
5cec20f700 wineopenxr: Mind more fields from XrSwapchainCreateInfo when creating d3d11 swapchain texture.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:10 -05:00
Paul Gofman
36bb06593d wineopenxr: Fix physical device comparison in wine_xrCreateSession().
Affects logging WARN only.

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:10 -05:00
Paul Gofman
29cd5135a3 wineopenxr: Sync DXVK queue in wine_xrEndFrame().
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2021-03-31 14:08:10 -05:00
Paul Gofman
7c2bd90636 wineopenxr: Support XR_KHR_vulkan_enable2 extension. 2021-03-31 14:08:10 -05:00
Paul Gofman
0a4a8b7a01 wineopexr: Don't consider XrCompositionLayerColorScaleBiasKHR in convert_XrCompositionLayer().
This structure is not inherited from XrCompositionLayerBaseHeader but
is supposed to be passed as chained structure with a layer.
2021-03-31 14:08:10 -05:00
Paul Gofman
e70629c08d wineopenxr: Update to 1.0.13 registry version. 2021-03-31 14:08:10 -05:00
Paul Gofman
f5383fe715 wineopenxr: Call extra init-related functions from wine_xrCreateSession().
Based on a patch by Andrew Eikum.
2021-03-31 14:08:10 -05:00
Paul Gofman
090871ec2b wineopenxr: Use registry key to query VR availability. 2021-03-31 14:08:10 -05:00
Paul Gofman
92b8b209f2 vrclient_x64: Translate action manifest path in startup info. 2021-03-31 14:08:10 -05:00
Paul Gofman
7ef07bb07f steam_helper: Store OpenVR status and required extensions in registry on startup. 2021-03-31 14:08:10 -05:00
Paul Gofman
d2948348b0 vrclient_x64: Use staging texture for the right eye in case of submitted d3d11 texture array. 2021-03-31 14:08:10 -05:00
Paul Gofman
4f51390dde vrclient_x64: Set explicit timing mode when d3d11 application uses PostPresentHandoff. 2021-03-31 14:08:10 -05:00
Paul Gofman
66ded86b3e vrclient_x64: Use static internal compositor data.
VRCompositor ought to be a singleton. Some applications (Gravity Sketch
VR) access VRCompositor multiple times, so we need to share data between
instances.
2021-03-31 14:08:10 -05:00
Paul Gofman
74313aa478 vrclient_x64: Perform skybox textures conversion for dxvk textures. 2021-03-31 14:08:10 -05:00
Paul Gofman
98f55bfdb1 vrclient_x64: Unload native vrclient shared library on process detach. 2021-03-31 14:08:10 -05:00
Paul Gofman
89c297da9d vrclient_x64: Resolve absolute path in vrclient_dos_path_to_unix_path(). 2021-03-31 14:08:10 -05:00
Andrew Eikum
ec0f1d98db Vagrantfile: Work around an afdko bug 2021-03-31 14:08:10 -05:00
Andrew Eikum
56e1154e40 build: Use Proton SDK 0.20210126.1-1 2021-03-31 14:08:10 -05:00
Andrew Eikum
893514ca8e build: Deploy version tag correctly 2021-03-31 14:08:10 -05:00
Rémi Bernon
99f40d87e9 build: Don't force the number of make jobs. 2021-03-31 14:08:10 -05:00
Rémi Bernon
ee04127950 build: Only mount what's required inside docker. 2021-03-31 14:08:10 -05:00
Rémi Bernon
4d63345180 build: Cleanup unused make variables. 2021-03-31 14:08:10 -05:00
Rémi Bernon
fef27d08d9 build: Install modules separately and factor debug extraction. 2021-03-31 14:08:10 -05:00
Rémi Bernon
f88ff58f53 build: Use build macros for mediaconv. 2021-03-31 14:08:10 -05:00
Rémi Bernon
cdd4f10b8b build: Use build macros for vrclient. 2021-03-31 14:08:10 -05:00
Rémi Bernon
ee909c8c6b build: Use build macros for steam. 2021-03-31 14:08:10 -05:00
Rémi Bernon
082b2628a7 build: Use build macros for lsteamclient. 2021-03-31 14:08:10 -05:00
Rémi Bernon
528ed849eb build: Use build macros for dxvk. 2021-03-31 14:08:10 -05:00
Rémi Bernon
69241849ff build: Use build macros for wineopenxr. 2021-03-31 14:08:10 -05:00
Rémi Bernon
fbc77f2eb1 build: Introduce rules-winemaker macro. 2021-03-31 14:08:10 -05:00
Rémi Bernon
2bf35d9f4f build: Use build macros for wine. 2021-03-31 14:08:10 -05:00
Rémi Bernon
8c105d7aa1 build: Introduce rules-autoconf macro. 2021-03-31 14:08:10 -05:00
Rémi Bernon
8e2bce153c build: Replace wine tools dependencies with wine.
It's heaviers but things will be fast enough later.
2021-03-31 14:08:10 -05:00
Rémi Bernon
e8455152a9 build: Use build macros for jxrlib. 2021-03-31 14:08:10 -05:00
Rémi Bernon
5aa5ff8cd9 build: Use build macros for faudio. 2021-03-31 14:08:10 -05:00
Rémi Bernon
5a161e318e build: Use build macros for openxr. 2021-03-31 14:08:10 -05:00
Rémi Bernon
94fd711e2b build: Introduce rules-cmake macro. 2021-03-31 14:08:10 -05:00
Rémi Bernon
05480be5b9 build: Use build macros for vkd3d-proton. 2021-03-31 14:08:10 -05:00
Rémi Bernon
d71bd981e4 build: Use build macros for gst_good. 2021-03-31 14:08:10 -05:00
Rémi Bernon
96756d8ea1 build: Use build macros for gst_base. 2021-03-31 14:08:10 -05:00
Rémi Bernon
78e2bea5e3 build: Use build macros for gstreamer. 2021-03-31 14:08:10 -05:00
Rémi Bernon
8e1c0d5b29 build: Use build macros for gst_orc. 2021-03-31 14:08:10 -05:00
Rémi Bernon
04631339f3 build: Introduce rules-meson macro. 2021-03-31 14:08:10 -05:00
Rémi Bernon
dcb0f60cb7 build: Introduce rules-common macro. 2021-03-31 14:08:10 -05:00
Rémi Bernon
49cfbe9870 build: Introduce rules-source macro. 2021-03-31 14:08:10 -05:00
Rémi Bernon
3273dc2de0 build: Introduce single container build target.
The intention is to batch all container invocations instead of
instanciating one for every rule that needs to run within a container.

This keeps track of build dependencies using a .any-build timestamp file
and define a CONTAINER=1 variable when make is running within the
container.

When running within the container, only "configure" and "build" targets
are active, all the other targets are no-op. When make is run outside
of the container, it's the opposite, except for the "build" targets
which all depend on this .any-build timestamp file to trigger the
container build execution.

The targets dependency graph is still complete, so "source" targets
will always all be executed before the container, and configure steps
will optionally run if the generated files are missing. When source
change is detected, only the build rules are executed again, trusting
each build system to decide if configure should be run again or not.
2021-03-31 14:08:10 -05:00
Rémi Bernon
3d2a7a09af build: Move misc helpers to make/utility.mk. 2021-03-31 14:08:10 -05:00
Rémi Bernon
f0d1278458 build: Don't use priviledged / init docker.
Images already embed tini to pass kill signals.
2021-03-31 14:08:10 -05:00
Rémi Bernon
0197a981f4 build: Enable docker overlay2 driver by default. 2021-03-31 14:08:10 -05:00
Rémi Bernon
68bd1c20e8 build: Use proton sdk docker image for building. 2021-03-31 14:08:10 -05:00
Rémi Bernon
6eba98ad23 build: Bump GCC to 10.2.0, Binutils to 2.36.1 and Rust to 1.50.0. 2021-03-31 14:08:10 -05:00
Andrew Eikum
fe4663159d steam_helper: Call FreeConsole before waiting to exit
Patch by Jacek Caban. This allows conhost to exit so it won't block server exit.
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
7c91f57ec9 update dxvk 2021-02-09 14:49:45 -06:00
Andrew Eikum
c542f02b57 update license dates 2021-02-09 14:49:45 -06:00
Andrew Eikum
1c0c5da940 update wine 2021-02-09 14:49:45 -06:00
Rémi Bernon
ae85b5d0df build: Build docker images for proton sdk. 2021-02-05 08:28:09 -06:00
Rémi Bernon
de58187e6c build: Also pass CXX override to wine configure.
So that it is correctly embedded into wineg++.
2021-02-05 08:28:09 -06:00
Rémi Bernon
433e98c22d build: Use CC32 / CXX32 when building 32bit modules. 2021-02-05 08:28:09 -06:00
Rémi Bernon
ae1e942714 build: Build dxvk within the docker container. 2021-02-05 08:28:09 -06:00
Rémi Bernon
f417b5c3e3 configure: Use a single steam runtime image.
* Make it more flexible on the image name,

* Remove the image type support, only Docker is likely to be supported.

* Add target runtime name (scout / soldier), independent of the image.
2021-02-05 08:28:09 -06:00
Rémi Bernon
dcf5f0f53c configure: Remove unused ffmpeg option. 2021-02-05 08:28:09 -06:00
Rémi Bernon
8e7a5fc21d build: Remove unused NO_DXVK option. 2021-02-05 08:28:09 -06:00
Paul Gofman
f5a9a2a302 vrclient_x64: Do not change handle in in ivrcompositor_submit_vulkan().
No Man's Sky is giving us vulkan handle in that handle. It looks like
the depth texture is not used by openvr, putting anything to this handle
does not trigger any fault or Vulkan validation error.
2021-02-05 08:18:54 -06:00
Andrew Eikum
86433ceddd proton: Add nativevulkanloader config setting 2021-02-05 08:16:50 -06:00
Simon McVittie
a59b6905da gitmodules: Consistently remove trailing slash
The forms with or without a trailing slash are interchangeable via https,
but the form with a trailing slash doesn't work if you have git configured
to always access Github repositories via ssh, using something like:

    git config --global url."git+ssh://git@github.com/".insteadOf "https://github.com/"

Signed-off-by: Simon McVittie <smcv@collabora.com>
2021-02-05 07:32:40 -06:00
Rémi Bernon
42e1584e71 steamclient: Fake Shift + Tab key release on overlay activation. 2021-01-14 10:11:07 -06:00
Andrew Eikum
d72f1ef930 wineopenxr: HACK: Don't try to call OpenXR functions if OpenVR is not working 2021-01-14 10:11:07 -06:00
Andrew Eikum
61dff029ae update dxvk to v1.7.3-28-g8163eb41 2021-01-14 10:11:07 -06:00
Andrew Eikum
088c989dd6 update wine 2021-01-14 10:11:07 -06:00
Rémi Bernon
186f81ec47 steamclient: Monitor GameOverlayActivated_t callbacks to track overlay presence. 2021-01-11 12:26:56 -06:00
Andrew Eikum
38f603d7bf wineopenxr: Add openxr support 2021-01-11 12:26:56 -06:00
Andrew Eikum
6bf3e1701b update vkd3d-proton to v2.1 2021-01-08 14:02:30 -06:00
Andrew Eikum
54ab99b947 update vkd3d-proton to v2.0-103-ge2185df7 2020-12-09 07:06:17 -06:00
Andrew Eikum
a4cc894859 update wine 2020-12-09 07:06:17 -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
Andrew Eikum
859486e584 update dxvk to v1.7.3-4-g03f11baf 2020-12-07 11:31:59 -06:00
Andrew Eikum
cc3d268764 Upgrade mingw-w64 to v8.0.0 2020-12-03 07:24:14 -06:00
Andrew Eikum
8d44166b16 README: Clarify how to acquire source
A user on GitHub was using the GitHub Releases tarballs, which won't
work as our build system depends on it being a Git repo. Try to guide
users to check out with Git instead.
2020-12-03 07:24:14 -06:00
Andrew Eikum
25a045e445 update wine 2020-12-03 07:24:14 -06:00
Giovanni Mascellani
e5c634ce0b Silence expected and harmless errors 2020-12-01 14:54:06 -06:00
Giovanni Mascellani
16992af05c Port gen_wrapper.py to Python 3
Basically the only issue left out is that Python3 is much more picky
on file encoding, and some Valve headers are not UTF-8. Ignoring
errors is enough to get everything fixed.
2020-12-01 14:54:06 -06:00
Giovanni Mascellani
04af5e3d79 Sort callback tables by id
This way the generated file is more deterministic, and hopefully less
irrelevant diff is produced (for example when switching from Python 2
to Python 3, or when adding more callbacks that cause rehashing the
dictionary).
2020-12-01 14:54:06 -06:00
Andrew Eikum
9566b93f25 update FAudio to 20.12 2020-12-01 13:39:20 -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
Andrew Eikum
4e84cd392d update vkd3d-proton to 2.0 2020-11-10 07:31:32 -06:00
Rémi Bernon
d126a401f6 proton: Add dotnetfx35.exe builtin override. 2020-11-10 07:31:32 -06:00
Andrew Eikum
1e7fb76caf update wine 2020-11-10 07:31:32 -06:00
Giovanni Mascellani
c559773d00 lsteamclient: Allow callbacks to be NULL
Steamworks API seems to accept NULL callbacks, simply avoiding to call
them when this is the case.
2020-11-09 13:43:05 -06:00
Andrew Eikum
8a6964bb3c media-converter: Also support video/quicktime 2020-11-09 13:43:05 -06:00
Andrew Eikum
1002d7c23d proton: Attempt to log SLR version 2020-11-09 13:43:05 -06:00
Paul Gofman
4f31b3b2b8 lsteamclient: Fix end of string check in relative path conversion. 2020-11-09 13:43:05 -06:00
Jacob Hrbek
0447662cef Vagrantfile: fixed typo 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
Arseniy Kucher
370dc01d07 media-converter: Simplify array copy 2020-10-19 13:52:04 -05:00
Matt Coffin
a2ccc70f7b vrclient: Add FIXME for wined3d in IVROverlay::SetOverlayTexture 2020-10-14 15:05:38 -05:00
Matt Coffin
1625ed00c7 vrclient: Add support for Vulkan in IVROverlay::SetOverlayTexture 2020-10-14 15:05:34 -05:00
Matt Coffin
74b7f33e98 vrclient: Add support for DXVK in IVROverlay::SetOverlayTexture 2020-10-14 15:05:31 -05:00
Matt Coffin
ed6a644fc3 vrclient: Fix segfault on NULL texture handles
This fixes a crash on startup for Assetto Corsa Competizione (805550)
2020-10-14 15:04:09 -05:00
Andrew Eikum
c27354dac6 vrclient: Support v1.14.15 2020-10-13 13:50:05 -05:00
Andrew Eikum
a0925a9e97 vrclient: Support v1.13.10 2020-10-13 13:50:05 -05:00
Andrew Eikum
7493508dc8 proton: Also catch IOErrors from fcntl 2020-10-13 13:22:16 -05:00
Andrew Eikum
0cf7f02112 update wine 2020-10-13 13:22:16 -05:00
Andrew Eikum
09635a2a79 update FAudio to 20.10 2020-10-13 13:22:16 -05:00
Andrew Eikum
4852757258 update dxvk to v1.7.2 2020-10-13 13:22:16 -05:00
Andrew Eikum
0c30e886d7 update vkd3d-proton 2020-10-13 13:22:16 -05:00
Andrew Eikum
8bb3afc9a2 lsteamclient: Handle callbacks for ISteamNetworking interfaces 2020-10-02 14:22:48 -05:00
Andrew Eikum
30c21636c5 lsteamclient: support ISteamNetworkingMessages 2020-10-02 14:22:44 -05:00
Andrew Eikum
f22095c745 lsteamclient: generate 1.50 support 2020-10-02 14:22:39 -05:00
Andrew Eikum
5cec5eedc7 lsteamclient: import steamworks 1.50 2020-10-02 14:22:35 -05:00
Andrew Eikum
98a2a3b819 proton: Respect WINEDLLOVERRIDES from user_settings, too 2020-09-29 14:29:06 -05:00
Andrew Eikum
347c53bb42 Fix toolmanifest for no-steam-runtime builds 2020-09-29 14:29:06 -05:00
Andrew Eikum
26e8db3d6f configure: Remove no longer needed steam-runtime argument 2020-09-29 14:29:06 -05:00
Rémi Bernon
87570998f1 build: Build and install jxrlib. 2020-09-29 14:29:06 -05:00
Rémi Bernon
d9d777072a jxrlib: Add library sources 2020-09-29 14:29:06 -05:00
Andrew Eikum
9a746c257e update dxvk to v1.7.1-2-g743f3092
Includes YV12 support, needed for most video playback.
2020-09-29 14:29:06 -05:00
Andrew Eikum
8864bbfba3 Vagrantfile: Use public soldier SDK 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
a03374a44f Upgrade to binutils 2.35 2020-09-29 14:29:06 -05:00
Andrew Eikum
e130633b8a update vkd3d-proton 2020-09-29 14:29:06 -05:00
Jens Peters
deabf97f1c Use widl from mingw-tools
vkd3d-proton uses now widl from mingw for cross-builds.
2020-09-29 14:29:06 -05:00
Andrew Eikum
c17b8056bd update dxvk to v1.7.1 2020-09-29 14:29:06 -05:00
Andrew Eikum
b83be0b821 update FAudio to 20.09-10-g7cf5faf 2020-09-29 14:29:06 -05:00
Andrew Eikum
7e495564df pass optimize flags to faudio 2020-09-29 14:29:06 -05:00
Andrew Eikum
679a4340ac toolmanifest.vdf: Update to v2 manifest
Required to run within the new Soldier runtime container.
2020-09-29 14:29:06 -05:00
Andrew Eikum
9d7713235c build: Use ccache binary instead of PATH
The ccache symlinks dir may differ (Arch and Debian disagree, for
example), and this allows us to use ccache for mingw-w64 within the
runtime container.
2020-09-29 14:29:06 -05:00
Zhiyi Zhang
24b944292e build: Support ccache. 2020-09-29 14:29:06 -05:00
Andrew Eikum
8828544db7 Makefile: Force copy library files
Some of these are read-only now, so just force copy them all.
2020-09-29 14:29:06 -05:00
Andrew Eikum
40299a69e4 media-converter: Add an audio stream to the blank video file 2020-09-29 14:29:06 -05:00
Andrew Eikum
bea8c7d730 Makefile: Also copy .so files
This fixes module=ntdll target, which needs to copy both ntdll.dll and
ntdll.so.
2020-09-29 14:29:06 -05:00
Andrew Eikum
32ebe94ce3 vrclient: Generate v1.12.5 support 2020-09-29 14:29:06 -05:00
Andrew Eikum
8ae9804ee2 vrclient: Import openvr v1.12.5 2020-09-29 14:29:06 -05:00
Andrew Eikum
f348b4e6ab vrclient: Generate v1.11.11 support 2020-09-29 14:29:06 -05:00
Andrew Eikum
656181d744 vrclient: Import openvr v1.11.11 2020-09-29 14:29:06 -05:00
Andrew Eikum
c0aa7979a3 steamclient: Generate support for steamworks 1.49 2020-09-29 14:29:06 -05:00
Andrew Eikum
ac86122f28 steamclient: Import steamworks sdk 1.49 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
Andrew Eikum
414e439070 build: Disable bash-completion for gstreamer build 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
Rémi Bernon
6a9e719119 lsteamclient: Stub GameOverlayRenderer entry points. 2020-09-29 14:29:06 -05:00
Andrew Eikum
9686e84a65 steam_helper: Make file extension check case-insensitive 2020-09-29 14:29:05 -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
Andrew Eikum
ccb17c00cc build: Build wine PE files with optimizations 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
0e34540c66 Make files in lib/wine read-only. 2020-09-29 14:29:05 -05:00
Esme Povirk
87ffa3c205 Put symlinks in the default prefix for builtin dlls. 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
2605bdf477 remove ffmpeg 2020-09-29 14:29:05 -05:00
Andrew Eikum
aa48d40386 FAudio: Support gstreamer 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
2cc2552492 update mingw compiler versions 2020-09-17 10:41:18 -05:00
Andrew Eikum
e43b040ef7 build cross-compilers both for 64-bit host 2020-09-17 10:41:18 -05:00
Andrew Eikum
c1d65705bb only build widl once 2020-09-17 10:41:18 -05:00
Andrew Eikum
fbd6881619 remove glib from build 2020-09-17 10:41:18 -05:00
Andrew Eikum
e9a48c2844 build against the Soldier SDK 2020-09-17 10:41:16 -05:00
Andrew Eikum
4ee3a5af70 proton: Add vkd3dfl12 to force Direct3D 12 feature level 2020-07-15 15:28:04 -05:00
Andrew Eikum
84fd803d96 update wine 2020-07-15 15:28:04 -05:00
Andrew Eikum
a108998170 update mingw-w64 to 7.0.0
Contains a bugfix required for vkd3d-proton.
2020-07-15 10:31:53 -05:00
Andrew Eikum
1c26086688 Fix up vkd3d-proton build 2020-07-15 10:31:53 -05:00
Hans-Kristian Arntzen
dd7130d113 Build standalone vkd3d d3d12.dll. 2020-07-15 10:31:53 -05:00
Andrew Eikum
53d18030e6 update wine 2020-06-10 17:04:52 -05:00
Andrew Eikum
ee8e065367 steam_helper: Catch JSON exceptions 2020-06-10 07:43:32 -05:00
Andrew Eikum
432cb93797 README: Disincentivize trying the write watch hack 2020-06-05 08:58:23 -05:00
Andrew Eikum
745d5dcf3a update Vulkan-Headers to v1.2.142 2020-06-05 08:58:23 -05:00
Andrew Eikum
9352a5ffd7 update vkd3d 2020-06-05 08:58:23 -05:00
abarichello
97ef4421fb gitattributes: Tell Github Linguist to ignore .sc files 2020-06-05 08:58:23 -05:00
Andrew Eikum
a853ce145d lsteamclient: Import steamworks 1.48a and fix up networkingsockets versions 2020-06-05 08:58:23 -05:00
Andrew Eikum
48a702ac4e update FAudio to 20.06 2020-06-05 08:58:23 -05:00
Andrew Eikum
10d35a3072 update dxvk to v1.7 2020-06-05 08:58:23 -05:00
Andrew Eikum
9f614e83ce proton: Add nowritewatch config option to disable write watch support 2020-06-05 08:58:23 -05:00
Andrew Eikum
78bd89369d update wine 2020-06-05 08:58:20 -05:00
GloriousEggroll
b6b52d19f1 build: Build gstreamer with orc. 2020-06-02 08:46:19 -05:00
Alan
6e821c774f proton: Double-check to avoid locking, if unnecessary 2020-06-01 11:38:16 -05:00
Andrew Eikum
c6a40b9947 update vkd3d 2020-04-30 14:28:56 -05:00
Andrew Eikum
187b34036a update wine 2020-04-30 14:28:54 -05:00
Andrew Eikum
fa9fa6fb04 update dxvk to v1.6.1-8-g9f4baf3f 2020-04-27 10:37:03 -05:00
Andrew Eikum
1a0cf7f7e2 proton: Unset WINE{E,F}SYNC if they are disabled 2020-04-27 07:51:44 -05:00
Andrew Eikum
16c6c2756a Vagrantfile: set a lower memory bound of 4096 MB 2020-04-27 07:39:08 -05:00
Andrew Eikum
51d29f3457 update Vulkan-Headers to 1.2.131
Required by vkd3d update.
2020-04-15 11:57: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
Andrew Eikum
c0421aacce update vkd3d 2020-04-15 11:57:44 -05:00
Andrew Eikum
63b6a4f80b update wine 2020-04-09 13:54:06 -05:00
C.R. Kirkwood-Watts
8f422a153d Vagrantfile: Limit CPU count to 32 for VirtualBox hosts.
VirtualBox can present up to 32 virtual CPUs to each virtual machine,
which is less than detected on some processors.
2020-04-01 11:51:02 -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
b2f97cac09 Update .gitignore 2020-04-01 11:24:02 -05:00
Andrew Eikum
07860b2473 steam_helper: Fix XDG_CONFIG_HOME handling 2020-03-23 09:50:17 -05:00
Zhiyi Zhang
60b53f915d build: Use MAKE variable for building modules.
So that options like -j can be passed through.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2020-03-23 08:19:09 -05:00
Pierre-Loup A. Griffais
80d7014333 vrclient: Override WaitGetPoses for new IVRCompositor versions 2020-03-22 17:38:50 -05:00
Andrew Eikum
22f4012278 update wine 2020-03-19 14:48:52 -05:00
Andrew Eikum
a9575f7c77 proton: Add cmdlineappend: compat config option 2020-03-19 14:48:52 -05:00
Andrew Eikum
13ccf8a854 vrclient: Convert paths coming in over JSON 2020-03-19 14:48:52 -05:00
Andrew Eikum
0a77ffde26 vrclient: import jsoncpp 2020-03-19 14:48:52 -05:00
Andrew Eikum
bf3ca0fd4a vrclient: support openvr v1.10.30 2020-03-19 14:48:52 -05:00
Andrew Eikum
c7c3b3c8a7 vrclient: Support openvr v1.9.16 2020-03-18 13:50:17 -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
18e235f96b lsteamclient: Sync environment only once 2020-03-18 13:49:55 -05:00
Andrew Eikum
6ad6ed2249 update dxvk to v1.5.5-15-g45c8b0910 2020-03-09 10:03:54 -05:00
Andrew Eikum
f96c8d6e6a proton: Add noforcelgadd compat config option 2020-03-09 10:03:54 -05:00
Andrew Eikum
f9b9e9416a update FAudio to 20.03 2020-03-09 10:03:54 -05:00
Andrew Eikum
64f4d0de95 update dxvk to v1.5.5 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
5f22772332 build: Build deinterlace gstreamer filter 2020-03-09 10:03:54 -05:00
Andrew Eikum
ef07eee01a steam_helper: Always pass CREATE_UNICODE_ENVIRONMENT to CreateProcess
According to Joshua Ashton, real steam.exe does this.
2020-03-09 10:03:54 -05:00
Joshua Ashton
68f982bd47 steam_helper: Use ShellExecute when not launching .exes
This behaviour more closely matches what Steam on Windows does when
launching things that aren't executables.
2020-03-09 10:03:54 -05:00
Derek Lesho
a33e3d105d lsteamclient: Sync important environment variables before calling CreateInterface. 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
Andrew Eikum
e1c5da52c6 steam_helper: Import jsoncpp 2020-03-05 10:03:11 -06:00
Andrew Eikum
a4b8a51d4a steam_helper: Don't use msvcrt
We need access to linux crt functions (like getenv()), so disallow use
of msvcrt. Notably, linux crt wchar functions are _not_ compatible with
Windows WCHAR strings.
2020-03-05 10:03:11 -06:00
Andrew Eikum
6364369ad9 update wine 2020-03-05 10:03:11 -06:00
Rémi Bernon
1e4083027f steam.exe: Create Steam for Windows named event.
This event is sometimes checked for existence by Denuvo DRM, to decide
whether the game is genuine. This the case in Just Cause 3, and not
having it makes the game delete all saved progress.
2020-02-24 09:33:55 -06:00
Rémi Bernon
c6cead45dc lsteamclient: Reallocate new interface only when linux_side changes.
This fixes Batman: AK's Denuvo DRM incorrectly flagging the game as
pirated.
2020-02-24 09:33:55 -06:00
Georg Lehmann
20f6b88943 proton: Dump WINEFSYNC in debug scripts 2020-02-24 09:33:47 -06:00
Andrew Eikum
64f0fc7559 update wine 2020-02-19 15:14:43 -06:00
Andrew Eikum
52e721fa23 update vkd3d with philip/metro-tess-fixes (89c516e) 2020-02-19 15:14:40 -06:00
Andrew Eikum
0ee22f41e0 Pull upstream 2020-02-13 12:40:41 -06:00
Andrew Eikum
a623278293 dxvk: Add vrclient workaround for Subnautica 2020-02-10 14:51:32 -06:00
Andrew Eikum
7f5d2e96b8 update wine 2020-02-10 14:50:45 -06:00
kisak-valve
9d6038851d
Disable empty issue report template and add other template to replace it (#3514)
Requested and reviewed by @aeikum.
2020-02-10 12:36:09 -05: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
2fb0c450e0 Add glib submodule at 2.58.3
This is the latest version that will support the steam-runtime's old
python and meson.
2020-02-07 06:45:08 -06:00
Andrew Eikum
87d2ee95ce Add gstreamer, gst-plugins-base, and gst-plugins-good submodules at 1.16.2 2020-02-07 06:45:08 -06:00
soredake
7dc0256fb8 README: Document WINE_FULLSCREEN_INTEGER_SCALING. 2020-02-07 06:45:08 -06:00
Andrew Eikum
8e5fc81871 update FAudio to 20.02 2020-02-07 06:45:08 -06:00
Andrew Eikum
9539c3b54a update dxvk to v1.5.4 2020-02-07 06:45:06 -06:00
Rémi Bernon
a0b7e2daba steam_helper: Do not let the default console ctrl handler kill us.
I'm not sure if we should intercept all ctrl types, but letting Ctrl-C
kill us is getting in the way when we run winedbg as a child.
2020-02-03 09:54:07 -06:00
Andrew Eikum
bf706d0402 README: Update for current Vagrant setup 2020-02-03 09:54:07 -06:00
Andrew Eikum
d439e35f62 build: Use a shared wine-gecko installation 2020-02-03 09:54:07 -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
2ff8644b5b update FAudio to 20.01 2020-01-13 13:56:36 -06:00
Andrew Eikum
7332b60672 update wine 2020-01-13 13:56:36 -06:00
Andrew Eikum
6b73ee7735 update dxvk to v1.5.1 2020-01-13 08:25:10 -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
9cf68a1c5e vrclient: Support openvr v1.8.19 2020-01-10 08:35:33 -06:00
Andrew Eikum
fc3fcd51f8 vrclient: Support openvr v1.7.15 2020-01-10 08:35:33 -06:00
Andrew Eikum
f35f663a1b vrclient: Handle NULL texture argument to IVRRenderModels::LoadIntoTextureD3D11_Async 2020-01-10 08:35:33 -06:00
Andrew Eikum
115b422c8f vrclient: Support IVRRenderModels::LoadTextureD3D11_Async 2020-01-10 08:35:33 -06:00
Andrew Eikum
113770b5f4 update licenses 2020-01-10 08:35:33 -06:00
Andrew Eikum
1bfc03a2c5 steamclient: generate 1.47 support 2020-01-10 07:49:46 -06:00
Andrew Eikum
a2317ff230 steamclient: Clean up 1.47 for generating 2020-01-10 07:49:46 -06:00
Andrew Eikum
03ed34405a steamclient: import steamworks 1.47 2020-01-10 07:49:45 -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
17ae1c4447 Revert "build: Build c++ files with -fno-gnu-unique"
This reverts commit bd8efaa9a63310382a92763fd44c9f8cfbabada7.
2019-12-18 09:39:02 -06:00
Andrew Eikum
9e542fada6 build: Ship d9vk from dxvk 2019-12-18 08:40:45 -06:00
Andrew Eikum
7d07e03631 update dxvk to v1.5 2019-12-18 08:40:45 -06:00
Andrew Eikum
2b8b274c5b update wine 2019-12-18 08:40:45 -06:00
Andrew Eikum
c02769a84d update d9vk to 0.40-rc-p 2019-12-09 13:33:34 -06:00
Andrew Eikum
8320aaa9e6 update dxvk to v1.4.4-5-g823181c2 (release-1.4.4.x branch) 2019-12-09 13:33:34 -06:00
Andrew Eikum
022f40b3b6 update vkd3d 2019-12-09 13:33:34 -06:00
Andrew Eikum
97509ee5c7 update wine 2019-12-09 13:33:34 -06:00
Andrew Eikum
baf96d838a update FAudio to 19.12 2019-12-06 11:25:45 -06:00
Andrew Eikum
b6462471bf Revert "build: Pass bison in PATH" 2019-11-26 14:12:28 -06:00
Zhiyi Zhang
aee1b47925 build: Move environment variables to the end of configure script.
"ENV=VAR ./configure" is different from "./configure ENV=VAR".
The latter caches command line variables in config.status.
So "config.status --recheck" succeeds executing configure script
Otherwise, "config.status --recheck" often fails when only source
is updated because some variables are not cached. Examples include
being not able to find bison or vkd3d.h when they are obviously present,
which are because of missing BISON and VKD3D_CFLAGS variables.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2019-11-26 14:07:01 -06:00
Zhiyi Zhang
c448cd61ce build: Remove unused variables.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2019-11-26 14:07:01 -06:00
Andrew Eikum
3454fff8d3 build-mingw-w64.sh: Document my findings 2019-11-26 11:03:32 -06:00
Andrew Eikum
2ba034409c Vagrantfile: Remove system mingw-w64 after installing ours
Just to ensure we don't use the wrong one.
2019-11-26 10:53:16 -06:00
Andrew Eikum
354428c2c5 build-mingw-w64.sh: Adjust mingw-w64 configure to closer match Arch Linux 2019-11-26 10:53:16 -06:00
Andrew Eikum
68162a8fc1 build-mingw-w64.sh: Adjust gcc configure to closer match Arch Linux 2019-11-26 10:53:16 -06:00
Andrew Eikum
7600c157b4 build-mingw-w64.sh: Make configure args easier to read 2019-11-26 10:53:16 -06:00
Andrew Eikum
0bdd04209c build-mingw-w64.sh: Build libstdc++v3 twice
The first build is missing a bunch of libc functions because libstdc++
is missing (obviously). Building again lets it find these libc functions
and take better codepaths. This fixes D9VK performance regressions, for
example in Rocket League.
2019-11-26 10:53:16 -06:00
Andrew Eikum
4cc3856885 update wine 2019-11-26 10:53:16 -06:00
Andrew Eikum
afe8a0e705 Makefile: add d9vk target 2019-11-15 09:57:43 -06:00
Andrew Eikum
fd5b6b2a0e README: Document redist target 2019-11-08 12:54:43 -06:00
Andrew Eikum
0aff3986b6 update dxvk 2019-11-07 13:36:27 -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
bd8efaa9a6 build: Build c++ files with -fno-gnu-unique
Wine requires dlclose() to be functional, and g++ breaks it by default.
This manifested as wined3d failing to load a 2nd time after being
unloaded.
2019-11-07 13:36:27 -06:00
Andrew Eikum
faf2b8271a build: Pass bison in PATH
When Wine re-runs configure (e.g. during bisect with an existing build
tree), it won't remember the previous BISON variable.
2019-11-07 13:36:27 -06:00
Andrew Eikum
2c896e5f4f build: Build vkd3d with NDEBUG and strip it 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
c3554e80e4 update wine 2019-11-07 13:36:27 -06:00
Andrew Eikum
c87e94540c update wine-mono to 4.9.4 2019-11-07 13:36:27 -06:00
Andrew Eikum
2be264a9d1 update FAudio to 19.11 2019-11-07 13:36:27 -06:00
Andrew Eikum
22e9fc4f8b update dxvk to v1.4.4 2019-11-07 13:36:27 -06:00
Andrew Eikum
d90ac38f75 update d9vk to 0.30 2019-11-07 13:36:27 -06:00
Andrew Eikum
842acf6a35 update wine 2019-11-07 13:36:27 -06:00
Andrew Eikum
a2c0812e49 update vkd3d 2019-11-07 13:36:27 -06:00
Andrew Eikum
5dca355718 build and ship vkd3d for d3d12 support
SPIRV-Headers at 1.5.1
Vulkan-Headers at v1.1.126
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
7a21c57606 update wine 2019-10-22 11:15:47 -05:00
Andrew Eikum
05173d8a2d build: Pass in CXXFLAGS for building DXVK code in Wine 2019-10-22 09:13:21 -05:00
Andrew Eikum
e30bd8ea88 build: Add a new "redist" target for distribution outside of Steam 2019-10-18 11:20: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
338d72133e update wine 2019-10-18 09:52:24 -05:00
Andrew Eikum
bcda92d532 update filelock.py
To b30bdc4fb998f5f4350257235eb51147f9e81862 from
https://github.com/benediktschmitt/py-filelock/
2019-10-18 09:52:24 -05:00
Andrew Eikum
31fe51430a build: Add UNSTRIPPED_BUILD option to avoid stripping binaries 2019-10-18 09:52:24 -05:00
Andrew Eikum
ba72758ff7 Vagrantfile: Drop Arch chroot in favor of local mingw-w64 build 2019-10-18 09:52:24 -05:00
Andrew Eikum
3ad34a0b3f Apply binutils patches 2019-10-18 09:52:24 -05:00
Andrew Eikum
48d6c81c73 add build-mingw-w64 script 2019-10-18 08:35:00 -05:00
Andrew Eikum
b3e80d99d8 Change Vagrant build VM to debian10 2019-10-18 08:35:00 -05:00
Andrew Eikum
1dc63b6079 Add resize-vagrant-disk.sh script, since the default disk image is small 2019-10-18 08:35:00 -05:00
Jens Peters
71d4637729 Ignore vagrant working directories. 2019-10-09 08:35:09 -05:00
Andrew Eikum
9747e3233b update d9vk to 0.22 2019-10-09 08:35:09 -05:00
Andrew Eikum
244630d153 update dxvk to v1.4.2 2019-10-09 08:35:09 -05:00
Andrew Eikum
526279b0f4 update wine 2019-10-08 15:21:18 -05:00
Andrew Eikum
90563ed984 update wine-mono to 4.9.3 2019-10-08 15:21:18 -05:00
Andrew Eikum
46f1a6c236 vrclient: Truncate short VREvent_t structs 2019-10-08 15:21:18 -05:00
Andrew Eikum
b32161679d vrclient: Add field alignment to converted structs, too 2019-09-24 08:00:09 -05:00
Andrew Eikum
1d2b72f307 vrclient: Handle size parameters and fields 2019-09-24 08:00:09 -05:00
Andrew Eikum
2da8a7dd32 vrclient: Dereference more typedefs 2019-09-24 08:00:09 -05:00
Andrew Eikum
f24e88d400 vrclient: remove redundant user_structs field 2019-09-24 08:00:09 -05:00
Andrew Eikum
3584832fa4 vrclient: Clean up struct conversion 2019-09-24 08:00:09 -05:00
Andrew Eikum
3fecadaf4e vrclient: fix up const types 2019-09-24 08:00:09 -05:00
Andrew Eikum
223286df88 vrclient: Dereference typedefs 2019-09-24 08:00:08 -05:00
Andrew Eikum
ede0f96149 vrclient: Convert structure members 2019-09-24 08:00:08 -05:00
Andrew Eikum
8fe55dee47 vrclient: Check all structs for conversion 2019-09-24 08:00:08 -05:00
Andrew Eikum
181eb3a68f vrclient: Use 32-bit build for thiscall wrappers 2019-09-24 08:00:08 -05:00
Andrew Eikum
2eda0d235b vrclient: Add alignment attribute if needed 2019-09-24 08:00:08 -05:00
Andrew Eikum
8de08a1485 vrclient: Handle NULL parameters to wrapped structs 2019-09-24 08:00:08 -05:00
Andrew Eikum
13d37fd406 update dxvk to v1.4 2019-09-23 13:43:33 -05:00
Andrew Eikum
855c89ee4e update wine 2019-09-23 13:43:33 -05:00
Andrew Eikum
8d895938e6 update wine 2019-09-17 07:33:37 -05:00
Andrew Eikum
c149aae888 Include Source Han Sans in LICENSE 2019-09-13 12:46:56 -05:00
Andrew Eikum
ca62317594 update d9vk to 0.21-rc-p 2019-09-13 12:46:56 -05:00
Andrew Eikum
72cebbd3b8 update FAudio to 19.09-25-g705f2cd 2019-09-13 12:46:56 -05:00
Andrew Eikum
81930d9b2e update dxvk to 1.3.4 2019-09-13 12:46:56 -05:00
Andrew Eikum
41e370cd00 update wine 2019-09-13 12:46:56 -05:00
Andrew Eikum
a5fa181522 update d9vk to 0.20 2019-08-26 13:23:48 -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
6c8d80c176 fonts: Import source-han-sans CN Regular at v2.001
From https://github.com/adobe-fonts/source-han-sans/ at
e251b7a4fecc7c5bc57d25cb2c2e92a3e8980a39 (2.001). (The repo is too large
to reasonably use a submodule.)
2019-08-23 09:57:46 -05:00
Andrew Eikum
81b9803214 vrclient: Support v1.6.10 2019-08-23 09:57:46 -05:00
Andrew Eikum
63e14b5678 lsteamclient: Preserve command-line cdecl macro 2019-08-23 09:57:46 -05:00
Andrew Eikum
19ece0270b lsteamclient: Support ISteamRemotePlay 2019-08-23 09:57:46 -05:00
Andrew Eikum
19b53264bd lsteamclient: Generate 1.46 support 2019-08-23 09:57:46 -05:00
Andrew Eikum
35752dadb6 lsteamclient: Generate 1.45 support 2019-08-23 09:57:46 -05:00
Andrew Eikum
7aa1b840d9 lsteamclient: Import steamworks 1.45 and 1.46 2019-08-23 09:57:46 -05:00
Andrew Eikum
80465e2a7d lsteamclient: Fix SteamAPI_CheckCallbackRegistered_t calling convention 2019-08-23 09:57:46 -05:00
Andrew Eikum
abfb04f8cc lsteamclient: Fix debug printing 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
936c18088e add CONTROLLERS documentation 2019-08-23 09:57:46 -05:00
Andrew Eikum
37869b4260 Create docs/ directory 2019-08-23 09:57:46 -05:00
Andrew Eikum
7ab0135365 update wine 2019-08-23 09:57:46 -05:00
Andrew Eikum
d73b927e2d steam_helper: Run console apps with a new console
This should allow Wine to show a wineconsole dialog for games which make
use of it. Suggested by Vincent.
2019-08-12 13:19:52 -05:00
Joshua Ashton
948aeac50d vrclient: Support for HmdSystemFactory export
Fixes a crash in Half-Life 2 in settings, and other legacy VR titles
2019-08-08 14:14:28 -05:00
Justin Martin
53b24d7188 user_settings.py: Add PROTON_NO_FSYNC switch 2019-08-06 14:40:24 -05:00
Andrew Eikum
18568f70e4 update FAudio to 19.08 2019-08-06 14:40:24 -05:00
Andrew Eikum
0e19f966a3 update dxvk to v1.3.2 + bd40b057202a9e4 2019-08-06 14:40:24 -05:00
Andrew Eikum
cfb2d906c8 update wine 2019-08-06 14:40:24 -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
b3237586a9 Vagrantfile: Enable verbose output from runtime build step 2019-08-01 14:30:26 -05:00
Andrew Eikum
8d8a160d92 update wine 2019-07-24 15:10:49 -05:00
Andrew Eikum
02ce41610d makefile: Update steam runtime docker init path
The Steam runtime image was updated, and /dev/init no longer exists. It
is now at /sbin/docker-init. Unfortunately this change will break
existing runtime installations. You'll need to update your runtime.
Easiest way is to just recreate the Vagrant VM.
2019-07-23 08:08:02 -05:00
Sophie Tauchert
99764d17b1 vrclient: Add openvr v1.5.17 support 2019-07-18 06:10:48 -05:00
Sophie Tauchert
9b09ae5ff8 Add vrclient target to Makefile 2019-07-18 06:10:47 -05:00
Andrew Eikum
9ffa9eee25 update dxvk 2019-07-18 06:10:47 -05:00
Andrew Eikum
4889dbd849 Update licenses 2019-07-18 06:10:47 -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
38554adf57 update dxvk to v1.3-1-g03c6df56 2019-07-18 06:10:47 -05:00
Andrew Eikum
7858dd5837 update d9vk to 0.13f 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
8531ea2c9d Makefile: Teach module target to copy PE files 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
988271e7c2 README: Clarify setting variable overrides 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
470536ae62 update wine 2019-07-18 06:10:47 -05:00
Andrew Eikum
177fb5c981 update FAudio to 19.07 2019-07-15 07:15:44 -05:00
Brendan Shanks
ee5de7e3be Vagrantfile: Require vagrant >= 2.2.0
Require vagrant >= 2.2.0, the earliest version supporting
config.vagrant.plugins
2019-07-03 08:14:33 -05:00
Andrew Eikum
44f447e9a6 openvr: Support v1.4.18 2019-07-03 08:14:33 -05:00
Andrew Eikum
27b0d4083d openvr: Support v1.3.22 2019-07-03 08:14:33 -05:00
Andrew Eikum
94568eaa23 openvr: Support v1.2.10 2019-07-03 08:14:33 -05:00
Andrew Eikum
235182da12 proton: Enable e2fs case-folding bit on new prefixes 2019-07-03 08:14:33 -05:00
Andrew Eikum
030bdcd224 Simplify DXVK build 2019-07-03 08:11:05 -05:00
Andrew Eikum
d68e71bed6 Build wine with dxvk cross-compiler
WARNING: Do not look directly into the build system without eye
protection.
2019-07-03 08:11:05 -05:00
Andrew Eikum
ab453aaf11 steam_helper: Fix building against Wine 4.11 2019-07-03 08:11:05 -05:00
Andrew Eikum
f9dd5bb0fc Makefile: Eliminate some vagrant-ssh invocations
This command takes a long time, so eliminate as many as we can.
2019-07-03 08:11:05 -05:00
Andrew Eikum
bf237229b6 makefile: Add downloads target to download packages only once 2019-07-03 08:11:05 -05:00
GloriousEggroll
d7819c7bc5 add bison to proton build 2019-07-03 08:11:05 -05:00
Andrew Eikum
1127ebb491 Document rebasing procedure 2019-07-03 08:11:05 -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
22354ec32f lsteamclient: Restore some 64-bit struct layout conversions 2019-06-27 09:00:59 -05:00
Andrew Eikum
01180245c6 update dxvk
Fix for Unreal 4 games (Bloodstained, Octopath).
2019-06-26 09:16:08 -05:00
Andrew Eikum
8db57f3f26 Revert "update dxvk to v1.2.2"
This reverts commit 76ed4b2322dbf0d9e4fbc6b62c08f8ab80813c21.
2019-06-26 07:24:39 -05:00
Andrew Eikum
ca60bf429d update to wine-mono 4.9.0 2019-06-18 13:00:19 -05:00
Andrew Eikum
76ed4b2322 update dxvk to v1.2.2 2019-06-18 13:00:19 -05:00
Andrew Eikum
54bbd1093b lsteamclient: Convert file: URLs 2019-06-18 13:00:19 -05:00
Andrew Eikum
5b674f087a lsteamclient: Convert windows VK to xkeysym 2019-06-18 13:00:19 -05:00
Andrew Eikum
1a2fd5fdbc update wine 2019-06-18 13:00:19 -05:00
Andrew Eikum
6540e58078 lsteamclient: Also check struct layouts in 64-bit 2019-06-18 13:00:19 -05:00
Andrew Eikum
625d6ef653 Makefile: Add lsteamclient and dxvk convenience targets 2019-06-18 13:00:19 -05:00
Andrew Eikum
11d23de666 vrclient: Downgrade some ERRs 2019-06-17 15:18:14 -05:00
Andrew Eikum
98ef9fc93f update FAudio to 19.06.07 2019-06-10 08:12:31 -05:00
Andrew Eikum
d76152b8fd Makefile: Detect VMs without dxvk_crosscc chroot 2019-06-06 11:41:28 -05:00
Andrew Eikum
70c8aef273 Vagrantfile: Allow VMs to be provisioned multiple times 2019-06-06 11:41:28 -05:00
Andrew Eikum
8770e311d6 update FAudio to 19.06 2019-06-06 11:41:28 -05:00
Andrew Eikum
5c5bfcc81e Build dxvk with a special cross-compiler
This mingw-w64 build is a more recent compiler and has dwarf2 exceptions
enabled.
2019-06-06 11:41:28 -05:00
Andrew Eikum
434046797c update wine 2019-06-06 11:41:28 -05:00
Andrew Eikum
381ab5f3dc lsteamclient: Explicitly specify alignment of sub-structs
SteamNetConnectionInfo_t has 8-byte alignment on win32, but 4-byte on
Linux. Since we use the same struct on each in lsteamclient,
winSteamNetConnectionStatusChangedCallback_t_712's members would
incorrectly be aligned to 4-byte boundaries.
2019-06-05 10:21:33 -05:00
Andrew Eikum
5ed5cbf286 lsteamclient: Fix SteamNetConnectionStatusChangedCallback_t conversion
It was declared inside an extern "C" block in the SDK, which for some
reason cindex doesn't include.
2019-06-05 10:21:32 -05:00
Andrew Eikum
6195cb8a0a lsteamclient: Add a manual override for the cpp side of the new networking API 2019-06-05 10:21:32 -05:00
Andrew Eikum
81e8d149f3 lsteamclient: Fix new network wrapper 2019-06-05 10:21:32 -05:00
Stefan Dösinger
eba2a821a7 Include <limits.h> instead of <linux/limits.h>. 2019-05-22 14:49:44 -05:00
Andrew Eikum
7cd8d6db5c Makefile: fix module target on non-bash shells 2019-05-21 12:37:12 -05:00
Aric Stewart
7f0b398e16 Vagrantfile: Support detecting hardware stats on macOS 2019-05-21 12:37:12 -05:00
Andrew Eikum
d283eae041 update dxvk to v1.2.1 2019-05-21 12:36:32 -05:00
Andrew Eikum
4f528037ef update wine 2019-05-21 12:36:32 -05:00
Andrew Eikum
197f25db04 lsteamclient: wrap FSteamNetworkingSocketsDebugOutput 2019-05-17 15:10:50 -05:00
Andrew Eikum
aa4c6fcc22 lsteamclient: Add ISteamGameSearch support 2019-05-17 10:50:22 -05:00
Andrew Eikum
e94250ae57 lsteamclient: Add ISteamNetworkingUtils support 2019-05-17 10:50:20 -05:00
Andrew Eikum
649421bf26 lsteamclient: Add ISteamNetworkingSockets support 2019-05-17 10:50:16 -05:00
Andrew Eikum
528d5d26cf lsteamclient: Add steamworks sdk 1.44 support 2019-05-17 10:50:12 -05:00
Andrew Eikum
dfdd3d0d78 README: Mention path to Proton user_settings file 2019-05-14 14:44:18 -05:00
Andrew Eikum
1b84398e54 README: Mention libvirt is now supported 2019-05-14 14:37:42 -05:00
Andrew Eikum
e2c0c75b1b makefile: Fix local install on sshfs 2019-05-14 13:19:38 -05:00
Andrew Eikum
2b3b96982f change default log to +loaddll instead of +module 2019-05-13 14:40:14 -05:00
Andrew Eikum
c859ed8aae update FAudio to 19.04-14-g24462e9 2019-05-13 14:40:14 -05:00
Andrew Eikum
4a43088dcb update dxvk to v1.1.1
Note this switches the submodule to a new branch: proton_4.2-b
2019-05-13 14:40:10 -05:00
Andrew Eikum
357cb7a8e8 update wine 2019-05-13 13:06:05 -05:00
Andrew Eikum
c5e49b5330 makefile: Bump submake jobs 2019-05-07 14:32:02 -05:00
Andrew Eikum
99dac9c283 Vagrant: Support libvirt, add sshfs dependency 2019-05-07 14:18:43 -05:00
Andrew Eikum
fd5f3d0fba Makefile: Fix install tool directory 2019-05-01 10:23:05 -05:00
Andrew Eikum
4888d3d84c Makefile: Use build name as deploy dir if set 2019-04-30 13:33:45 -05:00
Zhiyi Zhang
5cfc6ea994 makefile: Move generated files into build directory.
This way, we can run make again without rerunning configure.sh
after a clean rsync, which should save several minutes for every build.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2019-04-23 23:17:09 +08:00
1583 changed files with 790421 additions and 13085 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
*.sc linguist-detectable=false
*.SC linguist-detectable=false

View File

@ -10,7 +10,7 @@ about: Game compatibility issues.
## System Information
- GPU: <!-- e.g. RX 580 or GTX 970 -->
- Driver/LLVM version: <!-- e.g. Mesa 18.2/7.0.0 or nvidia 396.54 -->
- Video driver version: <!-- e.g. Mesa 18.2 or nvidia 396.54 -->
- Kernel version: <!-- e.g. 4.17 -->
- Link to full system information report as [Gist](https://gist.github.com/):
- Proton version:
@ -19,8 +19,9 @@ about: Game compatibility issues.
- [ ] that I haven't found an existing compatibility report for this game.
- [ ] that I have checked whether there are updates for my system available.
<!-- Please add `PROTON_LOG=1 %command%` to the game's launch options and drag
and drop the generated `$HOME/steam-$APPID.log` into this issue report -->
<!-- Please add `PROTON_LOG=1 %command%` to the game's launch options and
attach the generated $HOME/steam-$APPID.log to this issue report as a file.
(Proton logs compress well if needed.)-->
## Symptoms <!-- What's the problem? -->
@ -38,6 +39,8 @@ and drop the generated `$HOME/steam-$APPID.log` into this issue report -->
4. Please copy it to your clipboard by pressing `Ctrl+A` and then `Ctrl+C`.
Then paste it in a [Gist](https://gist.github.com/) and post the link in
this issue.
5. Please search for open issues and pull requests by the name of the game and
5. Also, please copy the contents of `Help` > `Steam Runtime Information` to
the gist.
6. Please search for open issues and pull requests by the name of the game and
find out whether they are relevant and should be referenced above.
-->

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

9
.github/ISSUE_TEMPLATE/other.md vendored Normal file
View File

@ -0,0 +1,9 @@
---
name: Other
about: No other issue template makes sense
---
<!--
Please always mention the Proton version and the titles of any games you are seeing an issue with.
-->

View File

@ -10,7 +10,7 @@ about: Games tested and found to have no issues.
## System Information
- GPU: <!-- e.g. RX 580 or GTX 970 -->
- Driver/LLVM version: <!-- e.g. Mesa 18.2/7.0.0 or nvidia 396.54 -->
- Video driver version: <!-- e.g. Mesa 18.2 or nvidia 396.54 -->
- Distro version: <!-- e.g. Ubuntu 18.04 -->
- Link to full system information report as [Gist](https://gist.github.com/):
- Proton version:

5
.gitignore vendored
View File

@ -1,7 +1,8 @@
/dist
/build
/dist-*
/obj-*
/syn-*
/vrclient_x64/vrclient_x64/Makefile
/.vagrant/
/vagrant_share/
/build/

60
.gitmodules vendored
View File

@ -1,21 +1,57 @@
[submodule "wine"]
path = wine
url = https://github.com/ValveSoftware/wine/
path = wine
url = ../wine
[submodule "dxvk"]
path = dxvk
url = https://github.com/ValveSoftware/dxvk/
[submodule "ffmpeg"]
path = ffmpeg
url = https://git.ffmpeg.org/ffmpeg.git
url = ../dxvk
[submodule "openvr"]
path = openvr
url = https://github.com/ValveSoftware/openvr
[submodule "cmake"]
path = cmake
url = https://github.com/Kitware/CMake
[submodule "fonts/liberation-fonts"]
path = fonts/liberation-fonts
url = https://github.com/liberationfonts/liberation-fonts
[submodule "FAudio"]
path = FAudio
url = https://github.com/FNA-XNA/FAudio/
[submodule "gstreamer"]
path = gstreamer
url = https://github.com/GStreamer/gstreamer.git
[submodule "gst-orc"]
path = gst-orc
url = https://github.com/GStreamer/orc.git
[submodule "vkd3d-proton"]
path = vkd3d-proton
url = https://github.com/HansKristian-Work/vkd3d-proton
[submodule "OpenXR-SDK"]
path = OpenXR-SDK
url = https://github.com/KhronosGroup/OpenXR-SDK
[submodule "dxvk-nvapi"]
path = dxvk-nvapi
url = https://github.com/jp7677/dxvk-nvapi
[submodule "vkd3d"]
path = vkd3d
url = https://github.com/ValveSoftware/vkd3d
[submodule "Vulkan-Headers"]
path = Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers
[submodule "SPIRV-Headers"]
path = SPIRV-Headers
url = https://github.com/KhronosGroup/SPIRV-Headers
[submodule "Vulkan-Loader"]
path = Vulkan-Loader
url = https://github.com/KhronosGroup/Vulkan-Loader
[submodule "gst-libav"]
path = gst-libav
url = https://github.com/GStreamer/gst-libav
[submodule "ffmpeg"]
path = ffmpeg
url = https://github.com/FFmpeg/FFmpeg
[submodule "dav1d"]
path = dav1d
url = https://github.com/videolan/dav1d.git
[submodule "gst-plugins-rs"]
path = gst-plugins-rs
url = https://github.com/sdroege/gst-plugin-rs
[submodule "graphene"]
path = graphene
url = https://github.com/ebassi/graphene
[submodule "glslang"]
path = glslang
url = https://github.com/KhronosGroup/glslang

1
FAudio

@ -1 +0,0 @@
Subproject commit e8c0855a43db4458d1d3d987be93b35e7708df52

View File

@ -1,10 +1,10 @@
Copyright (c) 2018, Valve Corporation
Copyright (c) 2018-2022, Valve Corporation
All rights reserved.
Redistribution and use of Proton in source and binary forms is governed
by a variety of licenses.
Refer to the contents of LICENCE.proton for the license for the top
Refer to the contents of LICENSE.proton for the license for the top
level contents of the Proton project.
Proton uses a variety of other software, each of which is governed

View File

@ -1,4 +1,4 @@
Copyright (c) 2018, Valve Corporation
Copyright (c) 2018-2022, Valve Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,

218
Makefile
View File

@ -1,30 +1,77 @@
#See help target below for documentation
build_name := $(shell git symbolic-ref --short HEAD 2>/dev/null)-local
ifeq ($(build_name),)
_build_name := $(shell git symbolic-ref --short HEAD 2>/dev/null)-local
else
_build_name := $(build_name)
endif
ifeq ($(_build_name),)
$(error ERROR: Unable to auto-detect build name. Check out a branch or specify with "build_name=...")
endif
# remove special chars
override build_name := $(shell echo $(build_name) | tr -dc '[:alnum:] ._-')
override _build_name := $(shell echo $(_build_name) | tr -dc '[:alnum:] ._-')
STEAM_DIR := $(HOME)/.steam/root
DEPLOY_DIR := $(shell git describe --tags --always)
CONFIGURE_CMD := ../proton/configure.sh --steam-runtime64=docker:steam-proton-dev --steam-runtime32=docker:steam-proton-dev32 --steam-runtime="$$HOME"/steam-runtime/runtime/ --build-name="$(build_name)"
BUILD_ROOT := build
# make doesn't handle spaces well... replace them with underscores in paths
BUILD_DIR := "build-$(shell echo $(build_name) | sed -e 's/ /_/g')"
BUILD_DIR := $(BUILD_ROOT)/build-$(shell echo $(_build_name) | sed -e 's/ /_/g')
STEAM_DIR := $(HOME)/.steam/root
ifeq ($(build_name),)
DEPLOY_DIR := $(shell git describe --tags --always --exclude proton-sdk*)
else
DEPLOY_DIR := $(_build_name)
endif
ifneq ($(module),)
ifneq ($(findstring .drv,$(module)),)
MODULE_PEFILE := $(module)
MODULE_SOFILE := $(subst .drv,.so,$(module))
else ifneq ($(findstring .sys,$(module)),)
MODULE_PEFILE := $(module)
MODULE_SOFILE := $(subst .sys,.so,$(module))
else
MODULE_PEFILE := $(module).dll
MODULE_SOFILE := $(module).so
endif
endif
ifneq ($(unstripped),)
UNSTRIPPED := UNSTRIPPED_BUILD=1
DEPLOY_DIR := $(DEPLOY_DIR)_unstripped
endif
CONFIGURE_CMD := ../../configure.sh \
--build-name="$(_build_name)"
ifneq ($(protonsdk_version),)
CONFIGURE_CMD += --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:$(protonsdk_version)
else
protonsdk_version := $(shell grep '^arg_protonsdk_image=' configure.sh|xargs echo|cut -d: -f2)
endif
enable_ccache := 1
ifneq ($(enable_ccache),0)
CONFIGURE_CMD += --enable-ccache
endif
TOPLEVELGOALS := all any clean configure deploy downloads help install module proton protonsdk redist
CONTAINERGOALS := $(filter-out $(TOPLEVELGOALS),$(MAKECMDGOALS))
CONTAINERGOALS := $(filter-out $(BUILD_ROOT)/%,$(CONTAINERGOALS))
all: help
.PHONY: help vagrant clean configure proton install deploy module
.PHONY: $(TOPLEVELGOALS)
help:
@echo "Proton Makefile instructions"
@echo ""
@echo ""Quick start" Makefile targets:"
@echo "\"Quick start\" Makefile targets:"
@echo " install - Install Proton into current user's Steam installation"
@echo " deploy - Build deployment files into a directory in vagrant_share/ named"
@echo " redist - Build a package suitable for manual installation or distribution"
@echo " to other users in $(BUILD_ROOT)/ named after the nearest git tag"
@echo " deploy - Build Steam deployment files into a directory in $(BUILD_ROOT)/ named"
@echo " after the nearest git tag"
@echo " clean - Delete the Proton build directory"
@echo ""
@ -33,58 +80,145 @@ help:
@echo " current proton.git branch name if available. A new build dir"
@echo " will be created for each build_name, so if you override this,"
@echo " remember to always set it!"
@echo " Current build name: $(build_name)"
@echo " Current build name: $(_build_name)"
@echo " unstripped - Set to non-empty to avoid stripping installed library files."
@echo " enable_ccache - Enabled by default, set to 0 prior to configuring to disable ccache."
@echo " protonsdk_version - Version of the proton sdk image to use for building,"
@echo " use protonsdk_version=local to build it locally."
@echo ""
@echo "Development targets:"
@echo " vagrant - Start Vagrant VM"
@echo " configure - Configure Proton build directory"
@echo " proton - Build Proton"
@echo " module - Build a single Wine module and copy into the shared directory."
@echo " Note: This is a development loop target. Use it only after building"
@echo " all of wine with one of the other targets."
@echo ""
@echo " The following targets are development targets only useful after building Proton."
@echo " module - Rebuild a single Wine module and copy into $(BUILD_ROOT)/<module>/."
@echo " Specify module variable: make module=kernel32 module"
@echo " dxvk - Rebuild DXVK and copy it into $(BUILD_ROOT)/."
@echo " lsteamclient - Rebuild the Steam client wrapper and copy it into $(BUILD_ROOT)/."
@echo ""
@echo "Examples:"
@echo " "make install" - Build Proton and install into this user's Steam installation,"
@echo " make install - Build Proton and install into this user's Steam installation,"
@echo " with the current Proton branch name as the tool's name."
@echo ""
@echo " "make deploy" - Build a Proton deployment package in a tagged directory"
@echo " in vagrant_share/."
@echo " make redist - Build a Proton redistribution package in a tagged directory"
@echo " in $(BUILD_ROOT)/."
@echo ""
@echo " "make build_name=mytest install" - Build Proton with the tool name \"mytest\" and"
@echo " make build_name=mytest install - Build Proton with the tool name \"mytest\" and"
@echo " install into this user's Steam installation."
@echo ""
@echo " "make build_name=mytest module=dsound module" - Build only the dsound module"
@echo " in the \"mytest\" build directory and place it into vagrant_share/dsound/."
@echo " make build_name=mytest module=dsound module - Build only the dsound module"
@echo " in the \"mytest\" build directory and place it into $(BUILD_ROOT)/dsound/."
vagrant:
vagrant up
vagrant rsync
clean:
rm -rf $(BUILD_DIR)
clean: vagrant
vagrant ssh -c 'rm -rf $(BUILD_DIR)/'
protonsdk:
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C docker $(UNSTRIPPED) PROTONSDK_VERSION=$(protonsdk_version) proton
configure: vagrant
vagrant ssh -c 'if [ ! -e $(BUILD_DIR)/Makefile ]; then mkdir $(BUILD_DIR); (cd $(BUILD_DIR) && $(CONFIGURE_CMD)); fi'
configure: | $(BUILD_DIR)
if [ ! -e $(BUILD_DIR)/Makefile ]; then \
(cd $(BUILD_DIR) && $(CONFIGURE_CMD)); \
fi
ifeq ($(protonsdk_version),local)
configure: protonsdk
endif
proton: configure
vagrant ssh -c 'make -C $(BUILD_DIR)/ dist'
echo "Proton built in VM. Use 'install' or 'deploy' targets to retrieve the build."
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) dist && \
echo "Proton built locally. Use 'install', 'deploy' or 'redist' targets."
install: configure
vagrant ssh -c 'make -C $(BUILD_DIR)/ STEAM_DIR=/vagrant/ install'
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
cp -R vagrant_share/compatibilitytools.d/$(build_name) $(STEAM_DIR)/compatibilitytools.d/
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) install
echo "Proton installed to your local Steam installation"
deploy: configure
vagrant ssh -c 'make -C $(BUILD_DIR)/ deploy'
mkdir -p vagrant_share/$(DEPLOY_DIR)
vagrant ssh -c 'cp -a $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)'
echo "Proton deployed to vagrant_share/$(DEPLOY_DIR)"
redist: | $(BUILD_ROOT)/$(DEPLOY_DIR)
redist: configure
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)/* && \
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) redist && \
cp -Rf $(BUILD_DIR)/redist/* $(BUILD_ROOT)/$(DEPLOY_DIR) && \
echo "Proton build available at $(BUILD_ROOT)/$(DEPLOY_DIR)"
deploy: | $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy
deploy: configure
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy/* && \
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) deploy && \
cp -Rf $(BUILD_DIR)/deploy/* $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy && \
echo "Proton deployed to $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy"
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-windows
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-unix
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix
module: configure
vagrant ssh -c 'make -C $(BUILD_DIR)/ module=$(module) module'
mkdir -p vagrant_share/$(module)/lib{,64}/wine/
vagrant ssh -c 'cp -a $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module)*.so /vagrant/$(module)/lib/wine/'
vagrant ssh -c 'cp -a $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module)*.so /vagrant/$(module)/lib64/wine/'
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) module=$(module) module && \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows/ && \
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE).so ]; then \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix/; \
fi
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_SOFILE) ]; then \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix/; \
fi
any $(CONTAINERGOALS): configure
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CONTAINERGOALS)
dxvk: | $(BUILD_ROOT)/dxvk/lib/wine/dxvk
dxvk: | $(BUILD_ROOT)/dxvk/lib64/wine/dxvk
dxvk: any
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib/wine/dxvk/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib64/wine/dxvk/
dxvk-nvapi: | $(BUILD_ROOT)/dxvk-nvapi/lib/wine/nvapi
dxvk-nvapi: | $(BUILD_ROOT)/dxvk-nvapi/lib64/wine/nvapi
dxvk-nvapi: any
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll $(BUILD_ROOT)/dxvk-nvapi/lib/wine/nvapi/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll $(BUILD_ROOT)/dxvk-nvapi/lib64/wine/nvapi/
vkd3d-proton: | $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton
vkd3d-proton: | $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton
vkd3d-proton: any
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton/
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib/wine/i386-windows
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib/wine/i386-unix
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-windows
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-unix
lsteamclient: any
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-windows/lsteamclient.dll $(BUILD_ROOT)/lsteamclient/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-unix/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-windows/lsteamclient.dll $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-unix/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-unix/
vrclient: | $(BUILD_ROOT)/vrclient/lib/wine/i386-windows
vrclient: | $(BUILD_ROOT)/vrclient/lib/wine/i386-unix
vrclient: | $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-windows
vrclient: | $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-unix
vrclient: any
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-windows/vrclient.dll $(BUILD_ROOT)/vrclient/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-unix/vrclient.dll.so $(BUILD_ROOT)/vrclient/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-windows/vrclient_x64.dll $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-unix/vrclient_x64.dll.so $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-unix/
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-windows
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-unix
wineopenxr: any
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-windows/wineopenxr.dll $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-unix/wineopenxr.dll.so $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-unix/
battleye: | $(BUILD_ROOT)/battleye/v1/lib/wine/i386-windows
battleye: | $(BUILD_ROOT)/battleye/v1/lib/wine/i386-unix
battleye: | $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-windows
battleye: | $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-unix
battleye: any
cp -f $(BUILD_DIR)/dist-battleye/v1/lib/wine/i386-windows/beclient.dll $(BUILD_ROOT)/battleye/v1/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/dist-battleye/v1/lib/wine/i386-unix/beclient.dll.so $(BUILD_ROOT)/battleye/v1/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/dist-battleye/v1/lib64/wine/x86_64-windows/beclient_x64.dll $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist-battleye/v1/lib64/wine/x86_64-unix/beclient_x64.dll.so $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-unix/
$(BUILD_ROOT)/%:
mkdir -p $@

1212
Makefile.in Normal file

File diff suppressed because it is too large Load Diff

1
OpenXR-SDK Submodule

@ -0,0 +1 @@
Subproject commit 58a00cf85c39ad5ec4dc43a769624e420c06179a

428
README.md
View File

@ -1,264 +1,316 @@
---
Introduction
---
Proton is a tool for use with the Steam client which allows games which are
------------
**Proton** is a tool for use with the Steam client which allows games which are
exclusive to Windows to run on the Linux operating system. It uses Wine to
facilitate this.
Most users will prefer to use Proton provided by the Steam client itself. The
source code is provided to enable advanced users the ability to alter
Proton. For example, some users may wish to use a different version of Wine with
a particular title.
**Most users should use Proton provided by the Steam Client itself.** See
[this Steam Community post][steam-play-introduction] for more details.
---
Getting Started with Proton from Steam Play
---
* As the new Steam Play is still in Beta, it is recommended that you opt into the [Steam Client Beta](https://steamcommunity.com/sharedfiles/filedetails/?id=182912431) for the latest features and fixes.
* Proton requires graphics drivers that are more recent than what is typically packaged in most distributions; please read the [list of requirements and quickstart for Ubuntu 18.04 users](https://github.com/ValveSoftware/Proton/wiki/Requirements)
* Install and play games! Please refer to [this post](https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561) for more information.
* Visit the [changelog](https://github.com/ValveSoftware/Proton/wiki/Changelog) for information about recent updates.
The source code is provided to enable advanced users the ability to alter
Proton. For example, some users may wish to use a different version of Wine
with a particular title.
---
Obtaining Proton from source
---
**NOTE:** If you are not comfortable in a command line terminal, or if you find
any of the information presented in here strange and uncomfortable, then
this is probably not for you. The instructions are likely to be incomplete
and require some knowledge and skill on your part, and there is no warranty
or guarantee that anyone will help you with this process.
**The changelog** is available on [our wiki][changelog].
We strongly recommend that most users use the production build of Proton.
[steam-play-introduction]: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561
[changelog]: https://github.com/ValveSoftware/Proton/wiki/Changelog
The most current source for Proton is here:
<https://github.com/ValveSoftware/Proton>
Which you can clone to your system with this command:
Obtaining Proton sources
------------------------
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
cd proton
Acquire Proton's source by cloning <https://github.com/ValveSoftware/Proton>
and checking out the branch you desire.
If you wish to change any subcomponent, now is the time to do so.
For example, if you wish make changes to Wine, you would apply those
changes to the <tt>wine/</tt> directory.
You can clone the latest Proton to your system with this command:
---
Easy build path
---
```bash
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
```
Building Proton is quite complicated. We provide a top-level Makefile which
will execute most of the build commands for you. This section describes how to
use this Makefile for simple Proton builds.
Be sure to update submodules when switching between branches:
This Makefile uses a virtual machine to create a consistent build environment.
The VM is managed with [Vagrant](https://www.vagrantup.com/), which you will
need to install before invoking these commands. While Vagrant supports several
VM software backends, Proton's build system has been tested only with its
VirtualBox backend. You may run into problems with the shared folder
(`vagrant_share`) and/or CPU and memory usage with other backends.
```bash
git checkout experimental_6.3
git submodule update --init --recursive
```
If your build VM gets cluttered, or falls out of date, you can use `vagrant
destroy` to wipe the VM clean, then invoke one of the below commands to start
over.
If you want to change any subcomponent, now is the time to do so. For
example, if you wish to make changes to Wine, you would apply them to the
`wine/` directory.
After checking out Proton and updating its submodules, you can use these
targets to build Proton:
`make install` - This will install Proton into your user's Steam directory.
You may need to restart the Steam client to see it. The tool's name in the
Steam client will be based on the currently checked out branch of Proton. You
can override this name using the `build_name` variable.
Building Proton
---------------
`make deploy` - This will create a deployment tarball and set of files which
can be distributed as a Proton package. This is what we use to deploy Proton to
Steam users. The package will be dropped into a new directory in
`vagrant_share/`, named after the nearest Git tag (see `git describe`).
Most of Proton builds inside the Proton SDK container with very few
dependencies on the host side.
`make clean` - This will completely erase the build tree.
## Preparing the build environment
`make help` - View the Makefile documentation and examples.
You need either a Docker or a Podman setup. We highly recommend [the rootless
Podman setup][rootless-podman]. Please refer to your distribution's
documentation for setup instructions (e.g. Arch [Podman][arch-podman] /
[Docker][arch-docker], Debian [Podman][debian-podman] /
[Docker][debian-docker]).
We also provide targets useful for simple Wine development:
[rootless-podman]: https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md
[arch-podman]: https://wiki.archlinux.org/title/Podman
[arch-docker]: https://wiki.archlinux.org/title/Docker
[debian-podman]: https://wiki.debian.org/Podman
[debian-docker]: https://wiki.debian.org/Docker
`make proton` - This will build Proton without copying its files out of the VM.
`make module=<module> module` - This will build both 32- and 64-bit versions of
the specified module, and copy the result into the `vagrant_share` directory.
This allows rapid iteration on one module. This target is only useful after
building Proton.
## The Easy Way
If you are doing significant Wine development or want to control the build with
more fine detail, see the full documentation below.
We provide a top-level Makefile which will execute most of the build commands
for you.
---
Building
---
At a high level, the build instructions are:
After checking out the repository and updating its submodules, assuming that
you have a working Docker or Podman setup, you can build and install Proton
with a simple:
1. Set up your build environment
1. Configure the build
1. Build Proton
1. Install Proton locally (optional)
```bash
make install
```
See below for more details on all of these steps. Please read all of the
instructions before proceeding.
If your build system is missing dependencies, it will fail quickly with a clear
error message.
---
Set up the build environment
---
Proton has a lot of build-time dependencies. The following instructions
describe how we create the build environment for the production builds of
Proton. For reproducibility and security reasons, we will be setting up a
Debian 9 virtual machine. However, you should be able to follow these
instructions on other distributions as well.
After the build finishes, you may need to restart the Steam client to see the
new Proton tool. The tool's name in the Steam client will be based on the
currently checked out branch of Proton. You can override this name using the
`build_name` variable.
Proton provides a Vagrantfile, which will automatically set up the Debian 9 VM
for you. After installing [Vagrant](https://www.vagrantup.com/), initialize the
VM by running from within the Proton directory:
See `make help` for other build targets and options.
vagrant up
It will take a long time to download and install the Steam runtime containers
and so on. Eventually it will complete. You can SSH into the virtual machine
with:
vagrant ssh
## Manual building
At this point you will need to configure the build directory. See below.
### Configuring the build
The Vagrantfile is set up to rsync the `proton` directory into the VM on boot.
On the host machine, you can use `vagrant rsync-auto` to have Vagrant
automatically sync changes on your host machine into the build machine. It is
recommended that you make changes on your host machine, and then perform the
build in the VM. Any changes you make in the `proton` directory on the VM may
be overwritten by later rsync updates from the host machine.
```bash
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
```
The Vagrantfile also creates a directory called `vagrant_share` in the `proton`
directory of your host machine, which is mounted at `/vagrant` within the VM.
You can use this shared folder to move your Proton build out of the VM, or as
one way to copy files into the VM.
Running `configure.sh` will create a `Makefile` allowing you to build Proton.
The scripts checks if containers are functional and prompt you if any
host-side dependencies are missing. You should run the command from a
directory created specifically for your build.
When you are done with the VM, you can shut it down from the host machine:
The configuration script tries to discover a working Docker or Podman setup
to use, but you can force a compatible engine with
`--container-engine=<executable_name>`.
vagrant halt
You can enable ccache with `--enable-cache` flag. This will mount your
`$CCACHE_DIR` or `$HOME/.ccache` inside the container.
Please read the Vagrant documentation for more information about how to use
Vagrant VMs.
`--proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>`
can be used to build with a custom version of the Proton SDK images.
If you do not wish to use Vagrant, you can read through both Vagrantfile and
`vagrant-user-setup.sh` for the list of dependencies and instructions on how to
set up your own machine or another VM of your choosing. It is aimed at Debian
9, but you should be able to adapt them for other distributions.
Check `--help` for other configuration options.
---
Alternative: Building without the Steam Runtime
---
The Steam Runtime provides a clean and consistent set of libraries. Software
distributed through Steam should depend only on libraries available through the
runtime, and so we build in that environment for production Proton builds. The
Vagrantfile described above will set this up for you. However, if you are
simply making a build for yourself, you may want to skip setting up the Steam
runtime, as it takes a very long time to set up. To do this, edit the
`vagrant-user-setup.sh` script appropriately before running `vagrant up`.
NOTE: If **SELinux** is in use, the Proton build container may fail to access
your user's files. This is caused by [SELinux's filesystem
labels][selinux-labels]. You may pass the `--relabel-volumes` switch to
configure to cause the [container engine to relabel its
bind-mounts][bind-mounts] and allow access to those files from within the
container. This can be dangerous when used with system directories. Proceed
with caution and refer your container engine's manual.
---
Configure the build
---
After setting up the build system, it is time to run the configure script which
will generate the Makefile to build your project. Run these steps. You may of
course use whatever paths you like.
[selinux-labels]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-selinux_contexts_labeling_files
[bind-mounts]: https://docs.docker.com/storage/bind-mounts/
mkdir build/
cd build
../proton/configure.sh --steam-runtime64=docker:steam-proton-dev --steam-runtime32=docker:steam-proton-dev32 --steam-runtime=$HOME/steam-runtime/runtime/
If you are building without the Steam runtime, then instead use:
### Building
../proton/configure.sh --no-steam-runtime
```
make
```
**Tip**: If you are building without the Steam runtime, you should now run
`make obj-wine64/Makefile obj-wine32/Makefile` and check the files
`obj-wine64/config.log` and `obj-wine32/config.log` for missing packages.
Search for `won't be supported`. A couple of missing packages are normal:
`opencv`, `gstreamer`, `vkd3d`, `oss`. More than that may indicate a problem.
Please see your distro's documentation to acquire the considerable build
dependencies for Wine.
**Important make targets:**
---
Build Proton
---
A couple of Makefile targets are provided.
`make install` - install Proton into your user's Steam directory, see the [install Proton
locally](#install-proton-locally) section for details.
`make dist` will create a Proton installation in `dist/` that you can install
manually (see below), or automatically with `make install`.
`make redist` - create a redistribute build (`redist/`) that can be copied to
`~/.steam/root/compatibilitytools.d/`.
`make deploy` - create a deployment build (`deploy/`). This is what we use to
deploy Proton to Steam users via Steamworks.
`make module=<module> module` - build both 32- and 64-bit versions of the
specified wine module. This allows rapid iteration on one module. This target
is only useful after building Proton.
`make dxvk` / `make vkd3d-proton` - rebuild DXVK / vkd3d-proton.
### Debug Builds
To prevent symbol stripping add `UNSTRIPPED_BUILD=1` to the `make`
invocation. This should be used only with a clean build directory.
E.g.:
```
mkdir ../debug-proton-build && cd ../debug-proton-build
../proton/configure.sh --enable-ccache --build-name=debug_build
make UNSTRIPPED_BUILD=1 install
```
`make deploy` will package Proton up for distribution via Steamworks.
---
Install Proton locally
---
----------------------
Steam ships with several versions of Proton, which games will use by default or
that you can select in Steam Settings's SteamPlay page. Steam also supports
that you can select in Steam Settings' Steam Play page. Steam also supports
running games with local builds of Proton, which you can install on your
machine. The `install` target will perform the below steps for you.
machine.
To install a local build of Proton into Steam, make a new directory in
`~/.steam/root/compatibilitytools.d/` with a tool name of your choosing and
place the contents of `dist` into that folder. The `make install` target will
perform this task for you, installing the Proton build into the Steam folder
for the current user. You will have to restart the Steam client for it to pick
up on a new tool.
place the directory containing your redistributable build under that path.
A correct local tool installation should look like this:
The `make install` target will perform this task for you, installing the
Proton build into the Steam folder for the current user. You will have to
restart the Steam client for it to pick up on a new tool.
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar.gz
├── toolmanifest.vdf
├── user_settings.sample.py
└── version
A correct local tool installation should look similar to this:
```
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar
├── toolmanifest.vdf
├── user_settings.sample.py
└── version
```
To enable your local build in Steam, go to the Steam Play section of the
Settings window. If the build was correctly installed, you should see
"proton-localbuild" in the drop-down list of compatibility tools.
Each component of this software is used under the terms of their licenses. See
the <tt>LICENSE</tt> files here, as well as the <tt>LICENSE</tt>,
<tt>COPYING</tt>, etc files in each submodule and directory for details. If you
distribute a built version of Proton to other users, you must adhere to the
terms of these licenses.
Each component of this software is used under the terms of their licenses.
See the `LICENSE` files here, as well as the `LICENSE`, `COPYING`, etc files
in each submodule and directory for details. If you distribute a built
version of Proton to other users, you must adhere to the terms of these
licenses.
Debugging
---------
Proton builds have their symbols stripped by default. You can switch to
"debug" beta branch in Steam (search for Proton in your library,
Properties... -> BETAS -> select "debug") or build without stripping (see
[Debug Builds section](#debug-builds)).
The symbols are provided through the accompanying `.debug` files which may
need to be explicitly loaded by the debugging tools. For GDB there's a helper
script `wine/tools/gdbinit.py` (source it) that provides `load-symbol-files`
(or `lsf` for short) command which loads the symbols for all the mapped files.
`compile_commands.json`
-----------------------
For use with [clangd](https://clangd.llvm.org/) LSP server and similar tooling.
Projects built using cmake or meson (e.g. vkd3d-proton) automatically come with
`compile_commands.json`. For autotools (e.g. wine) you have to [configure the
build](#configuring-the-build) with `--enable-bear` that uses
[bear](https://github.com/rizsotto/Bear) to create the compilation database.
It's not on by default as it make the build slightly slower.
The build system collects all the created compile_commands.json files in a
build subdirectory named `compile_commands/`.
The paths are translated to point to the real source (i.e. not the rsynced
copy). It still may depend on build directory for things like auto-generated
`config.h` though and for wine it may be beneficial to run `tools/make_requests`
in you source directories as those changes are not committed.
You can then configure your editor to use that file for clangd in a few ways:
1) directly - some editors/plugins allow you to specify the path to `compile_commands.json`
2) via `.clangd` file, e.g.
```bash
cd src/proton/wine/
cat > .clangd <<EOF
CompileFlags:
CompilationDatabase: ../build/current-dev/compile_commands/wine64/
EOF
```
3) by symlinking:
```bash
ln -s ../build/current-dev/compile_commands/wine64/compile_commands.json .
```
----
Runtime Config Options
----
----------------------
Proton can be tuned at runtime to help certain games run. The Steam client sets
some options for known games using the <tt>STEAM_COMPAT_CONFIG</tt> variable.
some options for known games using the `STEAM_COMPAT_CONFIG` variable.
You can override these options using the environment variables described below.
The best way to set these environment overrides for all games is by renaming
`user_settings.sample.py` to `user_settings.py` and modifying it appropriately.
If you want to change the runtime configuration for a specific game, you can
use the `Set Launch Options` setting in the game's `Properties` dialog in the Steam client. You can launch the
game as you would with "`PROTON_VARIABLE=1 %command%`" [(source)](https://superuser.com/questions/954041/how-to-set-an-environment-variable-for-an-specific-game-on-steam-for-linux#980437).
This file is located in the Proton installation directory in your Steam library
(often `~/.steam/steam/steamapps/common/Proton #.#`).
To enable an option, set the variable to a non-<tt>0</tt> value. To disable an
option, set the variable to <tt>0</tt>. To use Steam's default configuration, do
If you want to change the runtime configuration for a specific game, you can
use the `Set Launch Options` setting in the game's `Properties` dialog in the
Steam client. Set the variable, followed by `%command%`. For example, input
"`PROTON_USE_WINED3D=1 %command%`" to use the OpenGL-based wined3d renderer
instead of the Vulkan-based DXVK renderer.
To enable an option, set the variable to a non-`0` value. To disable an
option, set the variable to `0`. To use Steam's default configuration, do
not specify the variable at all.
All of the below are runtime options. They do not effect permanent changes to
the Wine prefix. Removing the option will revert to the previous behavior.
| Compat config string | Environment Variable | Description |
| :-------------------- | :----------------------------- | :----------- |
| | <tt>PROTON_LOG</tt> | Convenience method for dumping a useful debug log to `$HOME/steam-$APPID.log`. For more thorough logging, use `user_settings.py`. |
| | <tt>PROTON_DUMP_DEBUG_COMMANDS</tt> | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
| | <tt>PROTON_DEBUG_DIR</tt> | Root directory for the Proton debug scripts, `/tmp` by default. |
| <tt>wined3d</tt> | <tt>PROTON_USE_WINED3D</tt> | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11 and d3d10. This used to be called `PROTON_USE_WINED3D11`, which is now an alias for this same option. |
| <tt>nod3d11</tt> | <tt>PROTON_NO_D3D11</tt> | Disable <tt>d3d11.dll</tt>, for d3d11 games which can fall back to and run better with d3d9. |
| <tt>nod3d10</tt> | <tt>PROTON_NO_D3D10</tt> | Disable <tt>d3d10.dll</tt> and <tt>dxgi.dll</tt>, for d3d10 games which can fall back to and run better with d3d9. |
| <tt>noesync</tt> | <tt>PROTON_NO_ESYNC</tt> | Do not use eventfd-based in-process synchronization primitives. |
| <tt>forcelgadd</tt> | <tt>PROTON_FORCE_LARGE_ADDRESS_AWARE</tt> | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. |
| <tt>oldglstr</tt> | <tt>PROTON_OLD_GL_STRING</tt> | Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. |
| Compat config string | Environment Variable | Description |
| :-------------------- | :--------------------------------- | :----------- |
| | `PROTON_LOG` | Convenience method for dumping a useful debug log to `$PROTON_LOG_DIR/steam-$APPID.log`. Set to `1` to enable default logging, or set to a string to be appended to the default `WINEDEBUG` channels. |
| | `PROTON_LOG_DIR` | Output log files into the directory specified. Defaults to your home directory. |
| | `PROTON_DUMP_DEBUG_COMMANDS` | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
| | `PROTON_DEBUG_DIR` | Root directory for the Proton debug scripts, `/tmp` by default. |
| | `PROTON_WAIT_ATTACH` | Wait for a debugger to attach to steam.exe before launching the game process. To attach to the game process at startup, debuggers should be set to follow child processes. |
| | `PROTON_CRASH_REPORT_DIR` | Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually. |
| `wined3d` | `PROTON_USE_WINED3D` | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9. |
| `nod3d11` | `PROTON_NO_D3D11` | Disable `d3d11.dll`, for d3d11 games which can fall back to and run better with d3d9. |
| `nod3d10` | `PROTON_NO_D3D10` | Disable `d3d10.dll` and `dxgi.dll`, for d3d10 games which can fall back to and run better with d3d9. |
| `noesync` | `PROTON_NO_ESYNC` | Do not use eventfd-based in-process synchronization primitives. |
| `nofsync` | `PROTON_NO_FSYNC` | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no `FUTEX_WAIT_MULTIPLE` support.) |
| `noxim` | `PROTON_NO_XIM` | Enabled by default. Do not attempt to use XIM (X Input Methods) support. XIM support is known to cause crashes with libx11 older than version 1.7. |
| `enablenvapi` | `PROTON_ENABLE_NVAPI` | Enable NVIDIA's NVAPI GPU support library. |
| `nativevulkanloader` | | Use the Vulkan loader shipped with the game instead of Proton's built-in Vulkan loader. This breaks VR support, but is required by a few games. |
| `forcelgadd` | `PROTON_FORCE_LARGE_ADDRESS_AWARE` | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. |
| `heapdelayfree` | `PROTON_HEAP_DELAY_FREE` | Delay freeing some memory, to work around application use-after-free bugs. |
| `gamedrive` | `PROTON_SET_GAME_DRIVE` | Create an S: drive which points to the Steam Library which contains the game. |
| `noforcelgadd` | | Disable forcelgadd. If both this and `forcelgadd` are set, enabled wins. |
| `oldglstr` | `PROTON_OLD_GL_STRING` | Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. |
| `vkd3dfl12` | | Force the Direct3D 12 feature level to 12, regardless of driver support. |
| `vkd3dbindlesstb` | | Put `force_bindless_texel_buffer` into `VKD3D_CONFIG`. |
| `nomfdxgiman` | `WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER` | Enable hack to work around video issues in some games due to incomplete IMFDXGIDeviceManager support. |
| `noopwr` | `WINE_DISABLE_VULKAN_OPWR` | Enable hack to disable Vulkan other process window rendering which sometimes causes issues on Wayland due to blit being one frame behind. |
| `hidenvgpu` | `PROTON_HIDE_NVIDIA_GPU` | Force Nvidia GPUs to always be reported as AMD GPUs. Some games require this if they depend on Windows-only Nvidia driver functionality. See also DXVK's nvapiHack config, which only affects reporting from Direct3D. |
| | `WINE_FULLSCREEN_INTEGER_SCALING` | Enable integer scaling mode, to give sharp pixels when upscaling. |
| `cmdlineappend:` | | Append the string after the colon as an argument to the game command. May be specified more than once. Escape commas and backslashes with a backslash. |
| `nowritewatch` | `PROTON_NO_WRITE_WATCH` | Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). |
| `nosteamffmpeg` | `PROTON_NO_STEAM_FFMPEG` | Ignore ffmpeg that ships with Steam. Some videos may not play. |
| `seccomp` | `PROTON_USE_SECCOMP` | **Note: Obsoleted in Proton 5.13.** In older versions, enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work. |
| `d9vk` | `PROTON_USE_D9VK` | **Note: Obsoleted in Proton 5.0.** In older versions, use Vulkan-based DXVK instead of OpenGL-based wined3d for d3d9. |
<!-- Target: GitHub Flavor Markdown. To test locally: pandoc -f markdown_github -t html README.md -->

1
SPIRV-Headers Submodule

@ -0,0 +1 @@
Subproject commit 6cae8216a6ea19ff3f237af01e54378c1ff81fcd

64
Vagrantfile vendored
View File

@ -1,64 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrant file for setting up a build environment for Proton.
Vagrant.configure(2) do |config|
config.vm.box = "generic/debian9"
config.vm.provider "virtualbox" do |v|
v.cpus = `nproc`.to_i
# meminfo shows KB and we need to convert to MB
v.memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
end
#set up shared and rsynced folders
config.vm.synced_folder "./vagrant_share/", "/vagrant/", id: "share", create: true
config.vm.synced_folder ".", "/home/vagrant/proton", id: "proton", type: "rsync", rsync__exclude: ["/output/", "vagrant_share"]
#this is where the VM is initialized on first setup
config.vm.provision "shell", privileged: "true", inline: <<-SHELL
#install docker and steam-runtime dependencies
dpkg --add-architecture i386
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
#add winehq repo
curl -fsSL https://dl.winehq.org/wine-builds/winehq.key | apt-key add -
echo 'deb http://dl.winehq.org/wine-builds/debian stretch main' > /etc/apt/sources.list.d/winehq.list
#add docker repo
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable"
#add backports
echo 'deb http://ftp.debian.org/debian stretch-backports main' > /etc/apt/sources.list.d/backports.list
#install host build-time dependencies
apt-get update
apt-get install -y gpgv2 gnupg2 g++ g++-6-multilib mingw-w64 git docker-ce fontforge-nox python-debian
apt-get -y -t stretch-backports install meson
#winehq-devel is installed to pull in dependencies to run Wine
apt-get install -y --install-recommends winehq-devel
#remove system Wine installation to ensure no accidental leakage
apt-get remove -y winehq-devel
#configure posix mingw-w64 alternative for DXVK
update-alternatives --set x86_64-w64-mingw32-gcc `which x86_64-w64-mingw32-gcc-posix`
update-alternatives --set x86_64-w64-mingw32-g++ `which x86_64-w64-mingw32-g++-posix`
update-alternatives --set i686-w64-mingw32-gcc `which i686-w64-mingw32-gcc-posix`
update-alternatives --set i686-w64-mingw32-g++ `which i686-w64-mingw32-g++-posix`
#allow vagrant user to run docker
adduser vagrant docker
SHELL
config.vm.provision "shell", privileged: "true", inline: <<-SHELL
# unprivileged shell still runs as root for some reason
# the script below will set up the steam-runtime docker containers
sudo -u vagrant /home/vagrant/proton/vagrant-user-setup.sh
SHELL
end

1
Vulkan-Headers Submodule

@ -0,0 +1 @@
Subproject commit 8c1c27d5a9b9de8a17f500053bd08c7ca6bba19c

1
Vulkan-Loader Submodule

@ -0,0 +1 @@
Subproject commit 538b2676eaac29565e4f1034a6f8a59ce158213d

File diff suppressed because it is too large Load Diff

1
cmake

@ -1 +0,0 @@
Subproject commit c4ab098097f4fe1bc85ee29c6de390dff435f63f

View File

@ -19,9 +19,9 @@ if [[ $(tput colors 2>/dev/null || echo 0) -gt 0 ]]; then
COLOR_CLEAR=$'\e[0m'
fi
sh_quote() {
sh_quote() {
local quoted
quoted="$(printf '%q ' "$@")"; [[ $# -eq 0 ]] || echo "${quoted:0:-1}";
quoted="$(printf '%q ' "$@")"; [[ $# -eq 0 ]] || echo "${quoted:0:-1}";
}
err() { echo >&2 "${COLOR_ERR}!!${COLOR_CLEAR} $*"; }
stat() { echo >&2 "${COLOR_STAT}::${COLOR_CLEAR} $*"; }
@ -31,6 +31,50 @@ die() { err "$@"; exit 1; }
finish() { stat "$@"; exit 0; }
cmd() { showcmd "$@"; "$@"; }
#
# Dependency Checks
#
MISSING_DEPENDENCIES=0
dependency_command() {
local COMMAND=$1
shift
if ! command -v "$COMMAND" &> /dev/null; then
err "Couldn't find command '$COMMAND'. Please install ${@:-$COMMAND}."
MISSING_DEPENDENCIES=1
fi
}
CONTAINER_MOUNT_OPTS=""
check_container_engine() {
stat "Trying $1."
if ! cmd $1 run --rm $2; then
info "$1 is unable to run the container."
return 1
fi
touch permission_check
local inner_uid="$($1 run -v "$(pwd):/test$CONTAINER_MOUNT_OPTS" \
--rm $2 \
stat --format "%u" /test/permission_check 2>&1)"
rm permission_check
if [[ $inner_uid == *"Permission denied"* ]]; then
err "The container cannot access files. Are you using SELinux?"
die "Please read README.md and check your $1 setup works."
elif [ "$inner_uid" -eq 0 ]; then
# namespace maps the user as root or the build is performed as host's root
ROOTLESS_CONTAINER=1
elif [ "$inner_uid" -eq "$(id -u)" ]; then
ROOTLESS_CONTAINER=0
else
err "File owner's UID doesn't map to 0 or $(id -u) in the container."
die "Don't know how to map permissions. Please check your $1 setup."
fi
}
#
# Configure
#
@ -38,23 +82,6 @@ cmd() { showcmd "$@"; "$@"; }
THIS_COMMAND="$0 $*" # For printing, not evaling
MAKEFILE="./Makefile"
function check_steamrt_image() {
local type="$1"
local name="$2"
# nil nil -> no container
[[ -n $type || -n $name ]] || return 0;
# Otherwise both needed
[[ -n $type && -n $name ]] || die "Steam Runtime SDK option must be of form type:image"
# Type known?
[[ $type = docker ]] || die "Only supported Steam Runtime type is currently docker"
# Name must be alphanumericish for dumping into makefile and sanity.
[[ $name =~ ^[a-zA-Z0-9_.-]+$ ]] || die "Runtime image name should be alphanumeric ($name)"
}
# This is not rigorous. Do not use this for untrusted input. Do not. If you need a version of
# this for untrusted input, rethink the path that got you here.
function escape_for_make() {
@ -67,18 +94,21 @@ function escape_for_make() {
}
function configure() {
local steamrt64_type="${1%:*}"
local steamrt64_name="${1#*:}"
local steamrt32_type="${2%:*}"
local steamrt32_name="${2#*:}"
local steamrt_path="${3}"
check_steamrt_image "$steamrt64_type" "$steamrt64_name"
check_steamrt_image "$steamrt32_type" "$steamrt32_name"
local steamrt_image="$arg_protonsdk_image"
local srcdir
srcdir="$(dirname "$0")"
if [[ "$srcdir" = "." ]]; then
err "Cannot do a top level in-tree build."
die "Create a subdirectory in build/ or outside of the tree and run configure.sh from there."
fi
# nothing specified, getting the default value from the Makefile to test the
# container engine
if [[ -z $steamrt_image ]]; then
steamrt_image="$(sed -n 's/STEAMRT_IMAGE ?= //p' $SRCDIR/Makefile.in)"
fi
# Build name
local build_name="$arg_build_name"
if [[ -n $build_name ]]; then
@ -88,6 +118,31 @@ function configure() {
info "No build name specified, using default: $build_name"
fi
dependency_command make "GNU Make"
if [ "$MISSING_DEPENDENCIES" -ne 0 ]; then
die "Missing dependencies, cannot continue."
fi
if [[ -n "$arg_relabel_volumes" ]]; then
CONTAINER_MOUNT_OPTS=:Z
fi
if [[ -n "$arg_container_engine" ]]; then
check_container_engine "$arg_container_engine" "$steamrt_image" || die "Specified container engine \"$arg_container_engine\" doesn't work"
else
stat "Trying to find usable container engine."
if check_container_engine docker "$steamrt_image"; then
arg_container_engine="docker"
elif check_container_engine podman "$steamrt_image"; then
arg_container_engine="podman"
else
die "${arg_container_engine:-Container engine discovery} has failed. Please fix your setup."
fi
fi
stat "Using $arg_container_engine."
## Write out config
# Don't die after this point or we'll have rather unhelpfully deleted the Makefile
[[ ! -e "$MAKEFILE" ]] || rm "$MAKEFILE"
@ -99,21 +154,29 @@ function configure() {
echo "SRCDIR := $(escape_for_make "$srcdir")"
echo "BUILD_NAME := $(escape_for_make "$build_name")"
# ffmpeg?
if [[ -n $arg_ffmpeg ]]; then
echo "WITH_FFMPEG := 1"
# SteamRT was specified, baking it into the Makefile
if [[ -n $arg_protonsdk_image ]]; then
echo "STEAMRT_IMAGE := $(escape_for_make "$arg_protonsdk_image")"
fi
# SteamRT
echo "STEAMRT64_MODE := $(escape_for_make "$steamrt64_type")"
echo "STEAMRT64_IMAGE := $(escape_for_make "$steamrt64_name")"
echo "STEAMRT32_MODE := $(escape_for_make "$steamrt32_type")"
echo "STEAMRT32_IMAGE := $(escape_for_make "$steamrt32_name")"
echo "STEAMRT_PATH := $(escape_for_make "$steamrt_path")"
echo "ROOTLESS_CONTAINER := $ROOTLESS_CONTAINER"
echo "CONTAINER_ENGINE := $arg_container_engine"
if [[ -n "$arg_docker_opts" ]]; then
echo "DOCKER_OPTS := $arg_docker_opts"
fi
if [[ -n "$CONTAINER_MOUNT_OPTS" ]]; then
echo "CONTAINER_MOUNT_OPTS := $CONTAINER_MOUNT_OPTS"
fi
if [[ -n "$arg_enable_ccache" ]]; then
echo "ENABLE_CCACHE := 1"
fi
if [[ -n "$arg_enable_bear" ]]; then
echo "ENABLE_BEAR := 1"
fi
# Include base
echo ""
echo "include \$(SRCDIR)/build/makefile_base.mak"
echo "include \$(SRCDIR)/Makefile.in"
} >> "$MAKEFILE"
stat "Created $MAKEFILE, now run make to build."
@ -124,12 +187,13 @@ function configure() {
# Parse arguments
#
arg_steamrt32=""
arg_steamrt64=""
arg_steamrt=""
arg_no_steamrt=""
arg_ffmpeg=""
arg_protonsdk_image=""
arg_build_name=""
arg_container_engine=""
arg_docker_opts=""
arg_relabel_volumes=""
arg_enable_ccache=""
arg_enable_bear=""
arg_help=""
invalid_args=""
function parse_args() {
@ -166,19 +230,21 @@ function parse_args() {
elif [[ $arg = --build-name ]]; then
arg_build_name="$val"
val_used=1
elif [[ $arg = --with-ffmpeg ]]; then
arg_ffmpeg=1
elif [[ $arg = --steam-runtime32 ]]; then
elif [[ $arg = --container-engine ]]; then
arg_container_engine="$val"
val_used=1
arg_steamrt32="$val"
elif [[ $arg = --steam-runtime64 ]]; then
elif [[ $arg = --docker-opts ]]; then
arg_docker_opts="$val"
val_used=1
arg_steamrt64="$val"
elif [[ $arg = --steam-runtime ]]; then
elif [[ $arg = --relabel-volumes ]]; then
arg_relabel_volumes="1"
elif [[ $arg = --enable-ccache ]]; then
arg_enable_ccache="1"
elif [[ $arg = --enable-bear ]]; then
arg_enable_bear="1"
elif [[ $arg = --proton-sdk-image ]]; then
val_used=1
arg_steamrt="$val"
elif [[ $arg = --no-steam-runtime ]]; then
arg_no_steamrt=1
arg_protonsdk_image="$val"
else
err "Unrecognized option $arg"
return 1
@ -213,7 +279,7 @@ function parse_args() {
}
usage() {
"$1" "Usage: $0 { --no-steam-runtime | --steam-runtime32=<image> --steam-runtime64=<image> --steam-runtime=<path> }"
"$1" "Usage: $0 { --proton-sdk-image=<image> }"
"$1" " Generate a Makefile for building Proton. May be run from another directory to create"
"$1" " out-of-tree build directories (e.g. mkdir mybuild && cd mybuild && ../configure.sh)"
"$1" ""
@ -222,38 +288,29 @@ usage() {
"$1" ""
"$1" " --build-name=<name> Set the name of the build that displays when used in Steam"
"$1" ""
"$1" " --with-ffmpeg Build ffmpeg for WMA audio support"
"$1" " --container-engine=<engine> Which Docker-compatible container engine to use,"
"$1" " e.g. podman. Tries to do autodiscovery when not specified."
"$1" ""
"$1" " --docker-opts='<options>' Extra options to pass to Docker when invoking the runtime."
"$1" ""
"$1" " --relabel-volumes Bind-mounted volumes will be relabeled. Use with caution."
"$1" ""
"$1" " --enable-ccache Mount \$CCACHE_DIR or \$HOME/.ccache inside of the container and use ccache for the build."
"$1" ""
"$1" " --enable-bear Invokes make via bear creating compile_commands.json."
"$1" ""
"$1" " Steam Runtime"
"$1" " Proton builds that are to be installed & run under the steam client must be built with"
"$1" " the Steam Runtime SDK to ensure compatibility. See README.md for more information."
"$1" ""
"$1" " --steam-runtime64=docker:<image> Automatically invoke the Steam Runtime SDK in <image>"
"$1" " for build steps that must be run in an SDK"
"$1" " environment. See README.md for instructions to"
"$1" " create this image."
"$1" ""
"$1" " --steam-runtime32=docker:<image> The 32-bit docker image to use for steps that require"
"$1" " a 32-bit environment. See --steam-runtime64."
"$1" ""
"$1" " --steam-runtime=<path> Path to the runtime built for the host (i.e. the output"
"$1" " directory given to steam-runtime/build-runtime.py). Should"
"$1" " contain run.sh."
"$1" ""
"$1" " --no-steam-runtime Do not automatically invoke any runtime SDK as part of the build."
"$1" " Build steps may still be manually run in a runtime environment."
"$1" " --proton-sdk-image=<image> Automatically invoke the Steam Runtime SDK in <image>"
"$1" " for build steps that must be run in an SDK"
"$1" " environment. See README.md for instructions to"
"$1" " create this image."
exit 1;
}
[[ $# -gt 0 ]] || usage info
parse_args "$@" || usage err
[[ -z $arg_help ]] || usage info
# Sanity check arguments
if [[ -n $arg_no_steamrt && (-n $arg_steamrt32 || -n $arg_steamrt64 || -n $arg_steamrt) ]]; then
die "Cannot specify a Steam Runtime SDK as well as --no-steam-runtime"
elif [[ -z $arg_no_steamrt && ( -z $arg_steamrt32 || -z $arg_steamrt64 || -z $arg_steamrt ) ]]; then
die "Must specify either --no-steam-runtime or all of --steam-runtime32, --steam-runtime64, and --steam-runtime"
fi
configure "$arg_steamrt64" "$arg_steamrt32" "$arg_steamrt"
configure

1
dav1d Submodule

@ -0,0 +1 @@
Subproject commit 8a6f054ef1e0f7886bc6e53e6be97c427154fe85

143
default_pfx.py Executable file
View File

@ -0,0 +1,143 @@
#!/usr/bin/env python3
# usage: default_pfx.py path/to/default_pfx_dir path/to/dist
"Helper module for building the default prefix"
import os
import subprocess
import re
def file_is_wine_builtin_dll(path):
if not os.path.exists(path):
return False
try:
sfile = open(path, "rb")
sfile.seek(0x40)
tag = sfile.read(20)
return tag.startswith((b"Wine placeholder DLL", b"Wine builtin DLL"))
except IOError:
return False
def little_endian_bytes_to_uint(b):
result = 0
multiplier = 1
for i in b:
result += i * multiplier
multiplier <<= 8
return result
def dll_bitness(path):
if not os.path.exists(path):
return 0
try:
sfile = open(path, "rb")
sfile.seek(0x3c)
ntheader_ofs = little_endian_bytes_to_uint(sfile.read(4))
sfile.seek(0x18 + ntheader_ofs)
magic = sfile.read(2)
if magic == bytes((11, 1)):
return 32
if magic == bytes((11, 2)):
return 64
return 0
except IOError:
return 0
def make_relative_symlink(target, linkname):
target = os.path.abspath(target)
linkname = os.path.abspath(linkname)
rel = os.path.relpath(target, os.path.dirname(linkname))
os.symlink(rel, linkname)
def setup_dll_symlinks(default_pfx_dir, dist_dir):
skip_dlls = [ 'amd_ags_x64.dll' ]
for walk_dir, dirs, files in os.walk(default_pfx_dir):
for file_ in files:
filename = os.path.join(walk_dir, file_)
if file_ in skip_dlls:
continue
if os.path.isfile(filename) and file_is_wine_builtin_dll(filename):
bitness = dll_bitness(filename)
if bitness == 32:
libdir = os.path.join(dist_dir, 'lib/wine/i386-windows')
elif bitness == 64:
libdir = os.path.join(dist_dir, 'lib64/wine/x86_64-windows')
else:
continue
if os.path.exists(os.path.join(libdir, file_)):
target = os.path.join(libdir, file_)
else:
continue
os.unlink(filename)
make_relative_symlink(target, filename)
KEY_RE = re.compile(r'\[(.+)\] ([0-9]+)')
VALUE_RE = re.compile(r'"(.*)"="(.+)"')
def filter_registry(filename):
"""Remove registry values that contain a fully qualified path
inside some well-known registry keys. These paths are devised on
the build machine and it makes no sense to distribute them. Plus,
they are known to cause bugs."""
FILTER_KEYS = [
r'Software\\Microsoft\\Windows\\CurrentVersion\\Fonts',
r'Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts',
r'Software\\Wine\\Fonts\\External Fonts',
]
filtering = False
with open(filename) as fin:
with open(filename + '.tmp', 'w') as fout:
for line in fin:
line = line.strip()
match = KEY_RE.match(line)
if match is not None:
fout.write(line + '\n')
filtering = match.group(1) in FILTER_KEYS
continue
match = VALUE_RE.match(line)
if match is not None:
if not filtering or match.group(2)[1:2] != ':':
fout.write(line + '\n')
continue
fout.write(line + '\n')
os.rename(filename + '.tmp', filename)
#steampipe can't handle filenames with colons, so we remove them here
#and restore them in the proton script
def fixup_drive_links(default_pfx_dir):
for walk_dir, dirs, files in os.walk(os.path.join(default_pfx_dir, "dosdevices")):
for dir_ in dirs:
if ":" in dir_:
os.remove(os.path.join(walk_dir, dir_))
def make_default_pfx(default_pfx_dir, dist_dir):
local_env = dict(os.environ)
ld_path = dist_dir + "/lib64:" + dist_dir + "/lib"
local_env["LD_LIBRARY_PATH"] = ld_path
local_env["WINEPREFIX"] = default_pfx_dir
local_env["WINEDEBUG"] = "-all"
runtime_args = []
subprocess.run(runtime_args + ["/bin/bash", "-c",
os.path.join(dist_dir, 'bin', 'wine') + " wineboot && " +
os.path.join(dist_dir, 'bin', 'wineserver') + " -w"],
env=local_env, check=True)
setup_dll_symlinks(default_pfx_dir, dist_dir)
fixup_drive_links(default_pfx_dir)
filter_registry(os.path.join(default_pfx_dir, 'user.reg'))
filter_registry(os.path.join(default_pfx_dir, 'system.reg'))
if __name__ == '__main__':
import sys
make_default_pfx(sys.argv[1], sys.argv[2])

View File

@ -1,4 +1,4 @@
Copyright (c) 2018, Valve Corporation
Copyright (c) 2018-2022, Valve Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@ -28,48 +28,440 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Browse the source code for more information
https://github.com/ValveSoftware/Proton/
https://github.com/ValveSoftware/Proton
---- ---- ---- ----
This software contains Wine licensed under the LGPL 2.1. Wine is
This software contains a modified version of Wine licensed under the LGPL 2.1. Wine is
Copyright (c) 1993-2018 the Wine project authors
Copyright (c) 1993-2022 the Wine project authors
Browse the source code for more information
Visit Wine at
https://github.com/ValveSoftware/wine/
https://winehq.org
View our modifications at
https://github.com/ValveSoftware/wine
---- ---- ---- ----
This software contains DXVK licensed under the zlib/libpng license. DXVK is
This software contains a modified version of DXVK licensed under the zlib/libpng license. DXVK is
Copyright (c) 2017 Philip Rebohle
Copyright (c) 2017-2022 Philip Rebohle
Copyright (c) 2019-2022 Joshua Ashton
Visit DXVK at
https://github.com/doitsujin/dxvk/
https://github.com/doitsujin/dxvk
View our modifications at
https://github.com/ValveSoftware/dxvk
---- ---- ---- ----
This software contains vkd3d-proton licensed under the LGPL 2.1. vkd3d-proton is
Copyright 2016-2022 the vkd3d-proton project authors
Visit vkd3d-proton at
https://github.com/HansKristian-Work/vkd3d-proton
---- ---- ---- ----
This software contains FAudio licensed under the zlib license. FAudio is
Copyright (c) 2011-2022 Ethan Lee, Luigi Auriemma, and the MonoGame Team
Visit FAudio at
https://github.com/FNA-XNA/FAudio
---- ---- ---- ----
This software contains gstreamer, gst-plugins-base, and gst-plugins-good licensed under the LGPL 2.
Visit gstreamer at
https://gstreamer.freedesktop.org/
---- ---- ---- ----
This software contains some Liberation Fonts licensed under the SIL Open Font License, available at LICENSE.OFL. These fonts are
Copyright (c) 2010 Google Corporation
Copyright (c) 2012 Red Hat, Inc.
Visit Liberation Fonts at
https://github.com/liberationfonts/liberation-fonts
---- ---- ---- ----
This software contains Source Han Sans licensed under the SIL Open Font License, available at LICENSE.OFL. This font is
Copyright 2014-2021 Adobe (http://www.adobe.com/)
Visit Source Han Sans at
https://github.com/adobe-fonts/source-han-sans
---- ---- ---- ----
This software contains Ume fonts distributed under the following license:
These fonts are free software. Unlimited permission is granted to
use, copy, and distribute it, with or without modification, either
commercially and noncommercially. THESE FONTS ARE PROVIDED "AS
IS" WITHOUT WARRANTY.
Visit Ume fonts home page at
https://osdn.net/projects/ume-font/
---- ---- ---- ----
This software contains some fonts from the Google Noto collection, licensed under the SIL Open Font License, available at LICENSE.OFL. They are
Copyright 2015 Google Inc.
Visit the Google Noto fonts collection at
https://www.google.com/get/noto/
---- ---- ---- ----
This software contains wine-mono, parts of which are included under a variety of licenses.
Parts of Mono (mono/) are variously licensed under the GPL, LGPL, and MIT X11 licenses. All parts are available as LGPL or MIT X11 except for the following:
* The ICSharpCode.SharpZipLib library is available as GPL with an exception (see mono/mcs/class/ICSharpCode.SharpZipLib/README).
* mcs/jay is BSD-licensed.
The Visual Basic class libraries (mono-basic/) are MIT X11. The compiler is LGPL v2.
FNA is a mix of MSPL and MIT. It has the following library dependencies:
* FAudio, MojoShader, Theorafile, SDL2, SDL_image_compact, and SDL2-CS are zlib-licensed. SDL2-CS is built into FNA.dll.
* FNA.NetStub is MSPL.
The winforms and wpf libraries are MIT.
wine-mono itself is included under the MIT license. wine-mono is
Copyright (c) 2012 Vincent Povirk for CodeWeavers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Visit wine-mono at
https://github.com/madewokherd/wine-mono
View wine-mono's complete license at
https://github.com/madewokherd/wine-mono/blob/master/COPYING
---- ---- ---- ----
This software contains wine-gecko, parts of which are included under a variety of licenses.
wine-gecko itself is included under the Mozilla Public License 2.0.
wine-gecko is available in Source Code form at
https://sourceforge.net/p/wine/wine-gecko
---- ---- ---- ----
This software contains orc. Orc is
Copyright 2002 - 2009 David A. Schleef <ds@schleef.org>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
The source code implementing the Mersenne Twister algorithm is
subject to the following license:
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Visit orc at
https://gitlab.freedesktop.org/gstreamer/orc
---- ---- ---- ----
This software contains the following Rust libraries under the MIT license:
gstreamer-rs <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs>
gst-plugins-rs <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs>
array-init <https://github.com/Manishearth/array-init/>
Copyright (c) 2017-2020 The array-init developers
bitflags <https://github.com/bitflags/bitflags>
num-integer <https://github.com/rust-num/num-integer>
num-rational <https://github.com/rust-num/num-rational>
num-traits <https://github.com/rust-num/num-traits>
Copyright (c) 2014 The Rust Project Developers
cfg-if <https://github.com/alexcrichton/cfg-if>
proc-macro2 <https://github.com/dtolnay/proc-macro2>
toml <https://github.com/alexcrichton/toml-rs>
Copyright (c) 2014 Alex Crichton
crc32fast <https://github.com/srijs/rust-crc32fast>
Copyright (c) 2018 Sam Rijs, Alex Crichton and contributors
dav1d-rs <https://github.com/rust-av/dav1d-rs>
Copyright (c) 2018 Luca Barbato
futures-channel <https://github.com/rust-lang/futures-rs>
futures-core <https://github.com/rust-lang/futures-rs>
futures-executor <https://github.com/rust-lang/futures-rs>
futures-task <https://github.com/rust-lang/futures-rs>
futures-util <https://github.com/rust-lang/futures-rs>
Copyright (c) 2016 Alex Crichton
Copyright (c) 2017 The Tokio Authors
heck <https://github.com/withoutboats/heck>
unicode-segmentation <https://github.com/unicode-rs/unicode-segmentation>
unicode-xid <https://github.com/unicode-rs/unicode-xid>
Copyright (c) 2015 The Rust Project Developers
libc <https://github.com/rust-lang/libc>
Copyright (c) 2014-2020 The Rust Project Developers
muldiv <https://github.com/sdroege/rust-muldiv>
Copyright (c) 2017 Sebastian Dröge <sebastian@centricular.com>
murmur3 <https://github.com/stusmall/murmur3>
Copyright (c) 2016 Stu Small
pin-utils <https://github.com/rust-lang-nursery/pin-utils>
Copyright (c) 2018 The pin-utils authors
pretty-hex <https://github.com/wolandr/pretty-hex>
Copyright (c) 2018 Andrei Volnin
proc-macro-error <https://gitlab.com/CreepySkeleton/proc-macro-error>
proc-macro-error-attr <https://gitlab.com/CreepySkeleton/proc-macro-error>
Copyright (c) 2019-2020 CreepySkeleton
quote <https://github.com/dtolnay/quote>
Copyright (c) 2016 The Rust Project Developers
slab <https://github.com/tokio-rs/slab>
Copyright (c) 2019 Carl Lerche
smallvec <https://github.com/servo/rust-smallvec>
Copyright (c) 2018 The Servo Project Developers
anyhow <https://github.com/dtolnay/anyhow>
glib <https://github.com/gtk-rs/gtk-rs-core>
once_cell <https://github.com/matklad/once_cell>
paste <https://github.com/dtolnay/paste>
pin-project-lite <https://github.com/taiki-e/pin-project-lite>
proc-macro-crate <https://github.com/bkchr/proc-macro-crate>
serde <https://github.com/serde-rs/serde>
syn <https://github.com/dtolnay/syn>
thiserror <https://github.com/dtolnay/thiserror>
thiserror-impl <https://github.com/dtolnay/thiserror>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---- ---- ---- ----
Parts of this software are based on the OpenVR SDK, which is
Copyright (c) 2015, Valve Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Visit OpenVR at
https://github.com/ValveSoftware/openvr/
---- ---- ---- ----
This software contains openal-soft licensed under the LGPL 2.
Visit openal-soft at
https://github.com/kcat/openal-soft/
https://github.com/ValveSoftware/openvr
---- ---- ---- ----
Parts of this software are based on the AMD AGS library, which is
Copyright (c) 2017 Advanced Micro Devices, Inc. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---- ---- ---- ----
This software contains the jxrlib library, which is
Copyright (c) Microsoft Corp. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
---- ---- ---- ----
This software contains the dav1d library, which is
Copyright © 2018-2019, VideoLAN and dav1d authors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Distribution of dav1d is also covered by the Alliance for Open Media Patent License 1.0, available at PATENTS.AV1.

228
docker/Makefile Normal file
View File

@ -0,0 +1,228 @@
STEAMRT_VERSION = 0.20230905.59202
STEAMRT_URLBASE = registry.gitlab.steamos.cloud
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/sniper/sdk
PROTONSDK_VERSION = $(STEAMRT_VERSION)-0-dev
# this is just for building toolchain, as we do static builds it should
# not have any impact on the end result, but changing it will invalidate
# docker caches, so we need something that don't change much
BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:0.20221017.1
BINUTILS_VERSION = 2.40
GCC_VERSION = 10.3.0
MINGW_VERSION = 9.0.0
RUST_VERSION = 1.68.0
NINJA_VERSION = 1.11.1
SOURCES_URLBASE = https://repo.steampowered.com/proton-sdk
BINUTILS_URLBASE = $(SOURCES_URLBASE)
GCC_URLBASE = $(SOURCES_URLBASE)
MINGW_URLBASE = $(SOURCES_URLBASE)
RUST_URLBASE = $(SOURCES_URLBASE)
NINJA_URLBASE = $(SOURCES_URLBASE)
BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.xz
GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz
MINGW_SOURCE = mingw-w64-v$(MINGW_VERSION).tar.bz2
RUST_SOURCE_x86_64 = rust-$(RUST_VERSION)-x86_64-unknown-linux-gnu.tar.gz
RUST_SOURCE_i686 = rust-$(RUST_VERSION)-i686-unknown-linux-gnu.tar.gz
NINJA_SOURCE = ninja-build_$(NINJA_VERSION).orig.tar.gz
BINUTILS_SHA256 = 0f8a4c272d7f17f369ded10a4aca28b8e304828e95526da482b0ccc4dfc9d8e1
GCC_SHA256 = 64f404c1a650f27fc33da242e1f2df54952e3963a49e06e73f6940f3223ac344
MINGW_SHA256 = 1929b94b402f5ff4d7d37a9fe88daa9cc55515a6134805c104d1794ae22a4181
RUST_SHA256_x86_64 = 7be1acdac656d0b0b7e909e5c0d4ddf61c755c203ec26ebafbd306322335b361
RUST_SHA256_i686 = dc931adeb2943dcadfbd29546481f0296fcb97a511421053ecae6586a85869b1
NINJA_SHA256 = 31747ae633213f1eda3842686f83c2aa1412e0f5691d1c14dbbcc67fe7400cea
DOCKER = docker
%.Dockerfile: %.Dockerfile.in Makefile
sed -re 's!@PROTONSDK_URLBASE@!$(PROTONSDK_URLBASE)!g' \
-re 's!@BASE_IMAGE@!$(BASE_IMAGE)!g' \
-re 's!@BINUTILS_VERSION@!$(BINUTILS_VERSION)!g' \
-re 's!@BINUTILS_URLBASE@!$(BINUTILS_URLBASE)!g' \
-re 's!@BINUTILS_SOURCE@!$(BINUTILS_SOURCE)!g' \
-re 's!@BINUTILS_SHA256@!$(BINUTILS_SHA256)!g' \
-re 's!@GCC_VERSION@!$(GCC_VERSION)!g' \
-re 's!@GCC_URLBASE@!$(GCC_URLBASE)!g' \
-re 's!@GCC_SOURCE@!$(GCC_SOURCE)!g' \
-re 's!@GCC_SHA256@!$(GCC_SHA256)!g' \
-re 's!@MINGW_VERSION@!$(MINGW_VERSION)!g' \
-re 's!@MINGW_URLBASE@!$(MINGW_URLBASE)!g' \
-re 's!@MINGW_SOURCE@!$(MINGW_SOURCE)!g' \
-re 's!@MINGW_SHA256@!$(MINGW_SHA256)!g' \
-re 's!@RUST_VERSION@!$(RUST_VERSION)!g' \
-re 's!@RUST_URLBASE@!$(RUST_URLBASE)!g' \
-re 's!@RUST_SOURCE_x86_64@!$(RUST_SOURCE_x86_64)!g' \
-re 's!@RUST_SOURCE_i686@!$(RUST_SOURCE_i686)!g' \
-re 's!@RUST_SHA256_x86_64@!$(RUST_SHA256_x86_64)!g' \
-re 's!@RUST_SHA256_i686@!$(RUST_SHA256_i686)!g' \
-re 's!@NINJA_VERSION@!$(NINJA_VERSION)!g' \
-re 's!@NINJA_URLBASE@!$(NINJA_URLBASE)!g' \
-re 's!@NINJA_SOURCE@!$(NINJA_SOURCE)!g' \
-re 's!@NINJA_SHA256@!$(NINJA_SHA256)!g' \
-re 's!@J@!$(shell nproc)!g' \
$< >$@
%-i686.Dockerfile.in: %.Dockerfile.in
sed -re 's!@ARCH@!i686!g' \
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
$< >$@
%-x86_64.Dockerfile.in: %.Dockerfile.in
sed -re 's!@ARCH@!x86_64!g' \
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
$< >$@
%-linux-gnu.Dockerfile.in: %.Dockerfile.in
sed -re 's!@TARGET@!linux-gnu!g' \
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
-re 's!@TARGET_FLAGS@!$(TARGET_FLAGS)!g' \
$< >$@
%-w64-mingw32.Dockerfile.in: %.Dockerfile.in
sed -re 's!@TARGET@!w64-mingw32!g' \
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
-re 's!@TARGET_FLAGS@!$(TARGET_FLAGS)!g' \
$< >$@
define create-build-base-rules
.PHONY: build-base-$(1)
all build-base: build-base-$(1)
build-base-$(1): build-base-$(1).Dockerfile
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/build-base-$(1) \
-t $(PROTONSDK_URLBASE)/build-base-$(1):latest \
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/build-base-$(1):latest
push::
$(DOCKER) push $(PROTONSDK_URLBASE)/build-base-$(1):latest
endef
$(eval $(call create-build-base-rules,i686))
$(eval $(call create-build-base-rules,x86_64))
define create-binutils-rules
.PHONY: binutils-$(1)-$(2)
all binutils: binutils-$(1)-$(2)
binutils-$(1)-$(2): binutils-$(1)-$(2).Dockerfile | build-base
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/binutils-$(1)-$(2) \
-t $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION) \
-t $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):latest \
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION)
push::
$(DOCKER) push $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION)
$(DOCKER) push $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):latest
endef
$(eval $(call create-binutils-rules,i686,w64-mingw32))
$(eval $(call create-binutils-rules,i686,linux-gnu))
$(eval $(call create-binutils-rules,x86_64,w64-mingw32))
$(eval $(call create-binutils-rules,x86_64,linux-gnu))
MINGW_ARCH_FLAGS_crt-x86_64 = --disable-lib32 CFLAGS="-mcmodel=small"
MINGW_ARCH_FLAGS_crt-i686 = --disable-lib64
MINGW_ARCH_FLAGS_pthread-x86_64 = CFLAGS="-mcmodel=small"
MINGW_ARCH_FLAGS_pthread-i686 =
define create-mingw-rules
.PHONY: mingw-$(2)-$(1)
all mingw: mingw-$(2)-$(1)
mingw-$(2)-$(1): ARCH_FLAGS = $(MINGW_ARCH_FLAGS_$(2)-$(1))
mingw-$(2)-$(1): mingw-$(2)-$(1).Dockerfile | binutils
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/mingw-$(2)-$(1) \
-t $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION) \
-t $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):latest \
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION)
push::
$(DOCKER) push $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION)
$(DOCKER) push $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):latest
endef
$(eval $(call create-mingw-rules,i686,headers))
$(eval $(call create-mingw-rules,i686,gcc))
$(eval $(call create-mingw-rules,i686,crt))
$(eval $(call create-mingw-rules,i686,pthreads))
$(eval $(call create-mingw-rules,i686,widl))
$(eval $(call create-mingw-rules,x86_64,headers))
$(eval $(call create-mingw-rules,x86_64,gcc))
$(eval $(call create-mingw-rules,x86_64,crt))
$(eval $(call create-mingw-rules,x86_64,pthreads))
$(eval $(call create-mingw-rules,x86_64,widl))
GCC_ARCH_FLAGS_x86_64 = CFLAGS_FOR_TARGET="-mcmodel=small" CXXFLAGS_FOR_TARGET="-mcmodel=small"
GCC_ARCH_FLAGS_i686 =
GCC_TARGET_FLAGS_w64-mingw32 = --disable-shared
GCC_TARGET_FLAGS_linux-gnu =
define create-gcc-rules
.PHONY: gcc-$(1)-$(2)
all gcc: gcc-$(1)-$(2)
gcc-$(1)-$(2): ARCH_FLAGS = $(GCC_ARCH_FLAGS_$(1))
gcc-$(1)-$(2): TARGET_FLAGS = $(GCC_TARGET_FLAGS_$(2))
gcc-$(1)-$(2): gcc-$(1)-$(2).Dockerfile | mingw
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/gcc-$(1)-$(2) \
-t $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION) \
-t $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):latest \
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION)
push::
$(DOCKER) push $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION)
$(DOCKER) push $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):latest
endef
$(eval $(call create-gcc-rules,i686,linux-gnu))
$(eval $(call create-gcc-rules,x86_64,linux-gnu))
$(eval $(call create-gcc-rules,i686,w64-mingw32))
$(eval $(call create-gcc-rules,x86_64,w64-mingw32))
define create-proton-rules
.PHONY: proton
all: proton
proton: BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:$(STEAMRT_VERSION)
proton: proton.Dockerfile | gcc
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE) \
-t $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION) \
-t $(PROTONSDK_URLBASE):latest \
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION)
push::
$(DOCKER) push $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION)
$(DOCKER) push $(PROTONSDK_URLBASE):latest
endef
$(eval $(call create-proton-rules))
sources::
rm -f $(BINUTILS_SOURCE)
rm -f $(MINGW_SOURCE)
rm -f $(GCC_SOURCE)
rm -f $(RUST_SOURCE_x86_64)
rm -f $(RUST_SOURCE_i686)
rm -f $(NINJA_SOURCE)
wget $(BINUTILS_URLBASE)/$(BINUTILS_SOURCE)
wget $(MINGW_URLBASE)/$(MINGW_SOURCE)
wget $(GCC_URLBASE)/$(GCC_SOURCE)
wget $(RUST_URLBASE)/$(RUST_SOURCE_x86_64)
wget $(RUST_URLBASE)/$(RUST_SOURCE_i686)
wget $(NINJA_URLBASE)/$(NINJA_SOURCE)
echo $(BINUTILS_SHA256) $(BINUTILS_SOURCE) | sha256sum -c -
echo $(MINGW_SHA256) $(MINGW_SOURCE) | sha256sum -c -
echo $(GCC_SHA256) $(GCC_SOURCE) | sha256sum -c -
echo $(RUST_SHA256_x86_64) $(RUST_SOURCE_x86_64) | sha256sum -c -
echo $(RUST_SHA256_i686) $(RUST_SOURCE_i686) | sha256sum -c -
echo $(NINJA_SHA256) $(NINJA_SOURCE) | sha256sum -c -

81
docker/README.md Normal file
View File

@ -0,0 +1,81 @@
Proton (sniper) SDK
====================
These are the build rules that are used to create docker images to build
Proton. The automated creation of the official images lives in
<https://gitlab.steamos.cloud/proton/sniper/sdk>, but this can be
used to create local images too.
Local usage
-----------
The `protonsdk_version` make variable will override which image is used
to build Proton, but may not trigger a full rebuild, so building from
scratch may be necessary.
Building Proton with a locally build docker image, instead of using the
official images, can be done by using `protonsdk_version=local`. This
may be used for instance to test changes to the docker image recipes.
Or, it is also possible to build the docker images first by invoking
`make protonsdk` and it will tag the images with the `protonsdk_version`
variable value.
Official images
---------------
To update the official Proton SDK images:
1) Update the image build rules, `STEAMRT_VERSION` and
`PROTONSDK_VERSION` version numbers in this folder, test locally,
commit and push the changes.
2) Update `.gitlab-ci.yml` in the
[Proton SDK](https://gitlab.steamos.cloud/proton/sniper/sdk)
repository to point to the new commit, commit and push to trigger a
new build of "-dev" images.
3) Once the images are satisfying, tag the version in Proton SDK
repository and push the tag, this will trigger a new build of the
images and version them with the same tag as the Git tag.
4) Once the images have been published, update the default
`arg_protonsdk_image` version number in `configure.sh` to use the
newly built images by default.
Any change or addition to GPL-ed source first requires to update or add
the corresponding source to <https://repo.steampowered.com/proton-sdk>.
The `SOURCES_URLBASE` variable must be used to download the sources
from there, and its sha256 must be added to validate the sources in the
same way the existing code does.
Technical details
-----------------
The images are built incrementally, with intermediate images created
for each component of the toolchain, then assembled together in a single
`proton` image.
The reason behind this is to optimize the use of docker cache, so that
components that didn't change do not require to be rebuilt every time,
saving a lot of time in the build process, when only small additions are
made.
It also lets us build several components of the toolchain separately,
in parallel. This is especially the case when building the images on
the <https://gitlab.steamos.cloud> CI.
Because the `ARG` parameter in Dockerfile doesn't behave nicely with
docker caches it is avoided, and `Dockerfile.in` are used with variable
replacements done using `sed`.
The <https://gitlab.steamos.cloud> CI uses Kaniko instead of Docker,
with a bit of script conversion to generate commands usable there. More
details are available in
[Proton SDK](https://gitlab.steamos.cloud/proton/sniper/sdk).
The `build-base` images are there to create a common ground to build the
other elements of the toolchain. They are based on fairly recent (more
than what `steamrt` provides), but they are only used temporarily to
build a static version of the Binutils, MinGW and GCC binaries, which
are then copied over the `steamrt` base image.

View File

@ -0,0 +1,32 @@
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
RUN wget -q @BINUTILS_URLBASE@/@BINUTILS_SOURCE@ \
&& echo '@BINUTILS_SHA256@ @BINUTILS_SOURCE@' | sha256sum -c - \
&& tar xf @BINUTILS_SOURCE@ -C /tmp && rm @BINUTILS_SOURCE@ \
&& cd /tmp/binutils-@BINUTILS_VERSION@ \
&& ./configure --quiet \
--prefix=/usr \
--libdir=/usr/lib \
--host=@ARCH@-linux-gnu \
--build=@ARCH@-linux-gnu \
--target=@ARCH@-@TARGET@ \
--program-prefix=@ARCH@-@TARGET@- \
--enable-gold \
--enable-ld=default \
--enable-lto \
--enable-static \
--disable-multilib \
--disable-nls \
--disable-plugins \
--disable-shared \
--disable-werror \
--with-gmp \
--with-isl \
--with-mpc \
--with-mpfr \
--with-system-zlib \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true configure-host \
&& make --quiet -j@J@ MAKEINFO=true LDFLAGS="-static" \
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/binutils-@BINUTILS_VERSION@

View File

@ -0,0 +1,17 @@
FROM @BASE_IMAGE@ AS base
RUN apt-get update && apt-get install -y \
autoconf \
bzip2 \
g++ \
gcc \
libgmp-dev \
libisl-dev \
libmpc-dev \
libmpfr-dev \
libtool \
libz-dev \
make \
wget \
xz-utils \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /var/lib/apt/lists/*

File diff suppressed because it is too large Load Diff

48
docker/gcc.Dockerfile.in Normal file
View File

@ -0,0 +1,48 @@
FROM @PROTONSDK_URLBASE@/binutils-@ARCH@-@TARGET@:@BINUTILS_VERSION@ AS binutils
FROM @PROTONSDK_URLBASE@/mingw-headers-@ARCH@:@MINGW_VERSION@ AS mingw-headers
FROM @PROTONSDK_URLBASE@/mingw-crt-@ARCH@:@MINGW_VERSION@ AS mingw-crt
FROM @PROTONSDK_URLBASE@/mingw-pthreads-@ARCH@:@MINGW_VERSION@ AS mingw-pthreads
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
COPY --from=binutils /opt/usr /usr
COPY --from=mingw-headers /opt/usr /usr
COPY --from=mingw-crt /opt/usr /usr
COPY --from=mingw-pthreads /opt/usr /usr
RUN wget -q @GCC_URLBASE@/@GCC_SOURCE@ \
&& echo '@GCC_SHA256@ @GCC_SOURCE@' | sha256sum -c - \
&& tar xf @GCC_SOURCE@ -C /tmp && rm @GCC_SOURCE@ \
&& mkdir /tmp/gcc-@GCC_VERSION@/build && cd /tmp/gcc-@GCC_VERSION@/build \
&& ../configure --quiet \
--prefix=/usr \
--libdir=/usr/lib \
--libexecdir=/usr/lib \
--host=@ARCH@-linux-gnu \
--build=@ARCH@-linux-gnu \
--target=@ARCH@-@TARGET@ \
--program-prefix=@ARCH@-@TARGET@- \
--enable-languages=c,c++,lto \
--enable-libstdcxx-time=yes \
--enable-lto \
--enable-threads=posix \
--disable-bootstrap \
--disable-checking \
--disable-multilib \
--disable-nls \
--disable-plugin \
@TARGET_FLAGS@ \
--disable-sjlj-exceptions \
--disable-werror \
--with-arch=nocona \
--with-default-libstdcxx-abi=new \
--with-dwarf2 \
--with-system-gmp \
--with-system-isl \
--with-system-mpc \
--with-system-mpfr \
--with-system-zlib \
--with-tune=core-avx2 \
@ARCH_FLAGS@ \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" \
&& make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" install-strip DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/gcc-@GCC_VERSION@

View File

@ -0,0 +1,21 @@
FROM @PROTONSDK_URLBASE@/binutils-@ARCH@-w64-mingw32:@BINUTILS_VERSION@ AS binutils
FROM @PROTONSDK_URLBASE@/mingw-headers-@ARCH@:@MINGW_VERSION@ AS mingw-headers
FROM @PROTONSDK_URLBASE@/mingw-gcc-@ARCH@:@MINGW_VERSION@ AS mingw-gcc
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
COPY --from=binutils /opt/usr /usr
COPY --from=mingw-headers /opt/usr /usr
COPY --from=mingw-gcc /opt/usr /usr
RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
&& echo '@MINGW_SHA256@ @MINGW_SOURCE@' | sha256sum -c - \
&& tar xf @MINGW_SOURCE@ -C /tmp && rm @MINGW_SOURCE@ \
&& cd /tmp/mingw-w64-v@MINGW_VERSION@/mingw-w64-crt \
&& ./configure --quiet \
--prefix=/usr/@ARCH@-w64-mingw32/ \
--host=@ARCH@-w64-mingw32 \
--enable-wildcard \
@ARCH_FLAGS@ \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/mingw-w64-v@MINGW_VERSION@

View File

@ -0,0 +1,35 @@
FROM @PROTONSDK_URLBASE@/binutils-@ARCH@-w64-mingw32:@BINUTILS_VERSION@ AS binutils
FROM @PROTONSDK_URLBASE@/mingw-headers-@ARCH@:@MINGW_VERSION@ AS mingw-headers
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
COPY --from=binutils /opt/usr /usr
COPY --from=mingw-headers /opt/usr /usr
RUN wget -q @GCC_URLBASE@/@GCC_SOURCE@ \
&& echo '@GCC_SHA256@ @GCC_SOURCE@' | sha256sum -c - \
&& tar xf @GCC_SOURCE@ -C /tmp && rm @GCC_SOURCE@ \
&& mkdir /tmp/gcc-@GCC_VERSION@/build && cd /tmp/gcc-@GCC_VERSION@/build \
&& ../configure --quiet \
--prefix=/usr \
--libdir=/usr/lib \
--libexecdir=/usr/lib \
--host=@ARCH@-linux-gnu \
--build=@ARCH@-linux-gnu \
--target=@ARCH@-w64-mingw32 \
--program-prefix=@ARCH@-w64-mingw32- \
--enable-languages=c \
--disable-bootstrap \
--disable-checking \
--disable-multilib \
--disable-nls \
--disable-shared \
--disable-threads \
--disable-werror \
--with-system-gmp \
--with-system-isl \
--with-system-mpc \
--with-system-mpfr \
--with-system-zlib \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" all-gcc \
&& make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" install-strip-gcc DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/gcc-@GCC_VERSION@

View File

@ -0,0 +1,16 @@
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
&& echo '@MINGW_SHA256@ @MINGW_SOURCE@' | sha256sum -c - \
&& tar xf @MINGW_SOURCE@ -C /tmp && rm @MINGW_SOURCE@ \
&& cd /tmp/mingw-w64-v@MINGW_VERSION@/mingw-w64-headers \
&& ./configure --quiet \
--prefix=/usr/@ARCH@-w64-mingw32/ \
--host=@ARCH@-w64-mingw32 \
--enable-sdk=all \
--enable-secure-api \
--enable-idl \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/mingw-w64-v@MINGW_VERSION@

View File

@ -0,0 +1,23 @@
FROM @PROTONSDK_URLBASE@/binutils-@ARCH@-w64-mingw32:@BINUTILS_VERSION@ AS binutils
FROM @PROTONSDK_URLBASE@/mingw-headers-@ARCH@:@MINGW_VERSION@ AS mingw-headers
FROM @PROTONSDK_URLBASE@/mingw-gcc-@ARCH@:@MINGW_VERSION@ AS mingw-gcc
FROM @PROTONSDK_URLBASE@/mingw-crt-@ARCH@:@MINGW_VERSION@ AS mingw-crt
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
COPY --from=binutils /opt/usr /usr
COPY --from=mingw-headers /opt/usr /usr
COPY --from=mingw-gcc /opt/usr /usr
COPY --from=mingw-crt /opt/usr /usr
RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
&& echo '@MINGW_SHA256@ @MINGW_SOURCE@' | sha256sum -c - \
&& tar xf @MINGW_SOURCE@ -C /tmp && rm @MINGW_SOURCE@ \
&& cd /tmp/mingw-w64-v@MINGW_VERSION@/mingw-w64-libraries/winpthreads \
&& ./configure --quiet \
--prefix=/usr/@ARCH@-w64-mingw32/ \
--host=@ARCH@-w64-mingw32 \
--disable-shared \
@ARCH_FLAGS@ \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/mingw-w64-v@MINGW_VERSION@

View File

@ -0,0 +1,16 @@
FROM @PROTONSDK_URLBASE@/build-base-@ARCH@:latest AS build
RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
&& echo '@MINGW_SHA256@ @MINGW_SOURCE@' | sha256sum -c - \
&& tar xf @MINGW_SOURCE@ -C /tmp && rm @MINGW_SOURCE@ \
&& cd /tmp/mingw-w64-v@MINGW_VERSION@/mingw-w64-tools/widl \
&& ./configure --quiet \
--prefix=/usr \
--host=@ARCH@-linux-gnu \
--build=@ARCH@-linux-gnu \
--target=@ARCH@-w64-mingw32 \
--program-prefix=@ARCH@-w64-mingw32- \
MAKEINFO=true \
&& make --quiet -j@J@ MAKEINFO=true LDFLAGS="-static" \
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /tmp/mingw-w64-v@MINGW_VERSION@

View File

@ -0,0 +1,91 @@
FROM @PROTONSDK_URLBASE@/binutils-i686-linux-gnu:@BINUTILS_VERSION@ AS binutils-linux-i686
FROM @PROTONSDK_URLBASE@/binutils-x86_64-linux-gnu:@BINUTILS_VERSION@ AS binutils-linux-x86_64
FROM @PROTONSDK_URLBASE@/binutils-i686-w64-mingw32:@BINUTILS_VERSION@ AS binutils-mingw-i686
FROM @PROTONSDK_URLBASE@/binutils-x86_64-w64-mingw32:@BINUTILS_VERSION@ AS binutils-mingw-x86_64
FROM @PROTONSDK_URLBASE@/mingw-headers-i686:@MINGW_VERSION@ AS mingw-headers-i686
FROM @PROTONSDK_URLBASE@/mingw-headers-x86_64:@MINGW_VERSION@ AS mingw-headers-x86_64
FROM @PROTONSDK_URLBASE@/mingw-crt-i686:@MINGW_VERSION@ AS mingw-crt-i686
FROM @PROTONSDK_URLBASE@/mingw-crt-x86_64:@MINGW_VERSION@ AS mingw-crt-x86_64
FROM @PROTONSDK_URLBASE@/mingw-pthreads-i686:@MINGW_VERSION@ AS mingw-pthreads-i686
FROM @PROTONSDK_URLBASE@/mingw-pthreads-x86_64:@MINGW_VERSION@ AS mingw-pthreads-x86_64
FROM @PROTONSDK_URLBASE@/mingw-widl-i686:@MINGW_VERSION@ AS mingw-widl-i686
FROM @PROTONSDK_URLBASE@/mingw-widl-x86_64:@MINGW_VERSION@ AS mingw-widl-x86_64
FROM @PROTONSDK_URLBASE@/gcc-i686-linux-gnu:@GCC_VERSION@ AS gcc-linux-i686
FROM @PROTONSDK_URLBASE@/gcc-x86_64-linux-gnu:@GCC_VERSION@ AS gcc-linux-x86_64
FROM @PROTONSDK_URLBASE@/gcc-i686-w64-mingw32:@GCC_VERSION@ AS gcc-mingw-i686
FROM @PROTONSDK_URLBASE@/gcc-x86_64-w64-mingw32:@GCC_VERSION@ AS gcc-mingw-x86_64
FROM @BASE_IMAGE@ AS base
COPY --from=binutils-linux-i686 /opt/usr /usr
COPY --from=binutils-linux-x86_64 /opt/usr /usr
COPY --from=binutils-mingw-i686 /opt/usr /usr
COPY --from=binutils-mingw-x86_64 /opt/usr /usr
COPY --from=mingw-headers-i686 /opt/usr /usr
COPY --from=mingw-headers-x86_64 /opt/usr /usr
COPY --from=mingw-crt-i686 /opt/usr /usr
COPY --from=mingw-crt-x86_64 /opt/usr /usr
COPY --from=mingw-pthreads-i686 /opt/usr /usr
COPY --from=mingw-pthreads-x86_64 /opt/usr /usr
COPY --from=mingw-widl-i686 /opt/usr /usr
COPY --from=mingw-widl-x86_64 /opt/usr /usr
COPY --from=gcc-linux-i686 /opt/usr /usr
COPY --from=gcc-linux-x86_64 /opt/usr /usr
COPY --from=gcc-mingw-i686 /opt/usr /usr
COPY --from=gcc-mingw-x86_64 /opt/usr /usr
RUN wget -q @RUST_URLBASE@/@RUST_SOURCE_x86_64@ \
&& echo '@RUST_SHA256_x86_64@ @RUST_SOURCE_x86_64@' | sha256sum -c - \
&& tar xf @RUST_SOURCE_x86_64@ -C /tmp && rm @RUST_SOURCE_x86_64@ \
&& /tmp/rust-@RUST_VERSION@-x86_64-unknown-linux-gnu/install.sh --prefix=/opt/rust \
&& rm -rf /tmp/rust-@RUST_VERSION@-x86_64-unknown-linux-gnu
RUN wget -q @RUST_URLBASE@/@RUST_SOURCE_i686@ \
&& echo '@RUST_SHA256_i686@ @RUST_SOURCE_i686@' | sha256sum -c - \
&& tar xf @RUST_SOURCE_i686@ -C /tmp && rm @RUST_SOURCE_i686@ \
&& /tmp/rust-@RUST_VERSION@-i686-unknown-linux-gnu/install.sh --prefix=/opt/rust \
--components=rust-std-i686-unknown-linux-gnu \
&& rm -rf /tmp/rust-@RUST_VERSION@-i686-unknown-linux-gnu
RUN bash -c 'ls /opt/rust/bin/* | xargs -n1 -I{} ln -sf {} /usr/bin/'
RUN bash -c 'mkdir -p /usr/lib/ccache && ls /usr/bin/{,*-}{cc,c++,gcc,g++}{,-[0-9]*} | sed -re s:/bin:/lib/ccache: | xargs -n1 ln -sf ../../bin/ccache'
ENV PATH=/usr/lib/ccache:$PATH
RUN apt-get install -y \
autoconf-archive \
fontforge \
fonttools \
libxpresent-dev \
libxpresent-dev:i386 \
libopenblas-dev \
libopenblas-dev:i386 \
python3-mako \
python3-pefile \
libcapstone-dev \
libcapstone-dev:i386 \
libutfcpp-dev \
yasm \
nasm \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /var/lib/apt/lists/*
COPY ninja-jobserver-client.patch /tmp
RUN wget -q @NINJA_URLBASE@/@NINJA_SOURCE@ \
&& echo '@NINJA_SHA256@ @NINJA_SOURCE@' \
&& echo '@NINJA_SHA256@ @NINJA_SOURCE@' | sha256sum -c - \
&& tar xf @NINJA_SOURCE@ -C /tmp && rm @NINJA_SOURCE@ \
&& cd /tmp/ninja-@NINJA_VERSION@ \
&& patch -p1 < /tmp/ninja-jobserver-client.patch \
&& mkdir build \
&& cd build \
&& cmake .. \
&& make \
&& cp ninja $(which ninja) \
&& cd / \
&& rm -rf /tmp/ninja-@NINJA_VERSION@ \
&& rm -rf /tmp/ninja-jobserver-client.patch
ENTRYPOINT ["/usr/bin/tini-static", "-s", "-g", "--"]
CMD ["/bin/bash"]

115
docs/CONTROLLERS.md Normal file
View File

@ -0,0 +1,115 @@
---
How controllers work in Proton
---
There are five methods that Windows games can use to access controllers:
dinput, xinput, winmm, hid, and rawinput. Games can use any combination of all
of these APIs.
rawinput allows direct access to the gamepad hardware. The application must
know the HID protocol, and/or know the device-specific protocol for
non-standard devices like Xbox controllers.
hid is a layer above rawinput, where Windows will talk HID to the controller on
the game's behalf. This turns the raw HID protocol data into usable things like
buttons and joysticks.
dinput is a "legacy" API that allows applications to talk to any type of
joystick. On Windows, it is implemented on top of HID. Notably, dinput allows
easy access to controllers that no other API does, so it is still used by
modern games despite being "legacy."
xinput is the new API that supports only Xbox controllers. On Windows, it is
likely implemented on top of rawinput, as Xbox controllers do not behave like
standard HID devices.
winmm is the very legacy API, for when joysticks were hooked up through the
soundcard. On modern Windows, it is implemented on top of dinput.
Here is a diagram for how these APIs are mapped down to the system by Proton:
----------
| game.exe |
----------
/ | | | \
/ | | | \ application
*********/****|*|**|****\******************
| | | \ \ wine
| | | | \
------ | | ----- \
|xinput| | | |winmm| |
------ | | ----- |
| | \ | |
| | | | |
\ | ------ |
\ | |dinput| |
\ | ------ /
| | / /
| | | /
--- /
|hid| /
--- /
| /
| |
--------
|rawinput|
--------
|
-----------
|winebus.sys|
-----------
| | wine
************|******|***********************
| | linux
| ----
| |SDL2|
| ----
| | \
| | \
| | |
------ -----------
|hidraw| |input event|
------ -----------
| |
\ /
========
|hardware|
========
Some things to note:
SDL2 provides the controller mapping feature of the Steam client. If you don't
go through SDL2, then you don't get that mapping feature. Also notice that
winebus.sys must turn SDL2 events into usable winebus data (HID protocol). We
also allow direct access to hidraw devices so games which can speak HID (or
other) protocol can talk directly to those devices.
Xbox controllers do not speak real HID. Instead Windows provides a HID
compatibility layer so dinput, which is implemented on top of HID, will present
the Xbox controller to legacy games. Of course some games (Unity) have noticed
that, and talk directly to this internal HID interface, so we need to duplicate
it bit-for-bit in winebus.sys.
Some games support talking directly to certain controller types. For example,
many modern games support PlayStation 4 controllers directly and will provide
layouts and button images in-game specific to DualShock 4 controllers. For this
reason, we don't want to present every controller through xinput, which should
only present Xbox controllers.
However, we also want users to be able to use any controller, even if the game
only supports xinput. Steam provides a controller mapping feature, which is
presented as a virtual Steam Controller. We turn this virtual Steam Controller
into an xinput device. This means any controller which is mapped will appear to
the game as an xinput device, in addition to the other APIs. Controllers which
are not mapped will appear as the real controller, which the game may or may
not support.
One final snag is that many distros do not allow user access to hidraw devices.
Steam ships some udev rules to allow this for certain common controller types,
but not most. In other words, your user may not have access to the hidraw
device for your controller, especially if it is a less well-known controller.
In those cases, we access it through SDL2 via its linux js backend and try to
treat it as an Xbox controller, even if it is not mapped with the Steam client
mapping feature.

26
docs/ICMP_ECHO.md Normal file
View File

@ -0,0 +1,26 @@
# ICMP ECHO requests (ping)
Some games rely on ICMP ECHO requests to detect network connectivity,
or to measure connection ping.
Proton supports sending ICMP ECHO requests using RAW sockets or DGRAM
ICMP sockets, but the former requires elevated privileges, and the
latter may also be disabled by default.
DGRAM ICMP sockets can be enabled for a given set of user groups by
running the following command, and will stay enabled until next reboot:
```
sudo sysctl -w net.ipv4.ping_group_range="<low> <high>"
```
Where <low> (resp <high>) is lower bound (resp higher) of the user
groups which will be allowed to create such sockets. It is possible to
enable them for any group by using "0 4294967295".
In order for the configuration to be persistent, it is possible to add
the following line to `/etc/sysctl.conf` (or a file in `/etc/sysctl.d`):
```
net.ipv4.ping_group_range="<low> <high>"
```

146
docs/PRIME.md Normal file
View File

@ -0,0 +1,146 @@
---
How to make Proton work with PRIME
---
# Setup
## Context
PRIME is a technology that allows one GPU to perform graphics rendering and
another GPU to display the result on the screen.
This document assumes that PRIME / GPU offloading is configured and working
for native software and will touch only on things specific to Proton.
If you need help with configuring PRIME in the first place you may find the
following resources useful:
* https://wiki.archlinux.org/index.php/PRIME
* https://wiki.debian.org/NVIDIA%20Optimus
## DirectX 9, 10, 11 and 12 (DXVK and VKD3D-Proton)
The implementations of those graphics APIs are built on top of Vulkan and
**most of the games should work out of the box.** Discrete GPUs are
prioritized (i.e. enumerated first) and games should default to them.
If you have multiple discrete GPUs or the wrong GPU is selected as the
default one and the game doesn't have the means of selecting an adapter you
can limit what gets enumerated.
In Steam, set your game's Properties -> GENERAL -> LAUNCH OPTIONS to:
DXVK_FILTER_DEVICE_NAME="GTX 1650" %command%
This should work for GeForce GTX 1650. A different name may be required for
your particular graphics card (e.g. "VEGA10" for Vega 56/64). You can use
`vulkaninfo` program (usually packaged as `vulkan-tools`) to check the names
of your GPUs.
## DirectX 8 and OpenGL
Those APIs are implemented on top of OpenGL and require a bit more
configuration.
The two most common PRIME scenarios are covered, but the content should be
enough to troubleshoot and make any other configuration work.
### AMD -> Integrated Intel (Mesa -> Mesa)
In Steam, set your game's Properties -> GENERAL -> LAUNCH OPTIONS to:
DRI_PRIME=1 %command%
### Nvidia -> Integrated Intel (Nvidia's Proprietary Driver -> Mesa)
In Steam set your game's Properties -> GENERAL -> LAUNCH OPTIONS to:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%
## Vulkan
In case Vulkan games don't allow you to select a GPU or you experience
problems with graphics APIs implemented on top of Vulkan you can limit or
alter the GPU selection.
### AMD -> Integrated Intel (Mesa -> Mesa)
In Steam, set your game's Properties -> GENERAL -> LAUNCH OPTIONS to:
DRI_PRIME=1 %command%
This will cause the devices to change order, i.e. the first GPU will swap
places with another one.
You can also limit the selection using Mesa's DEVICE_SELECT Vulkan layer. To
list the GPUs:
$ MESA_VK_DEVICE_SELECT=list vulkaninfo
selectable devices:
GPU 0: 1002:67df "AMD RADV POLARIS10 (ACO)" discrete GPU 0000:01:00.0
GPU 1: 8086:412 "Intel(R) HD Graphics 4600 (HSW GT2)" integrated GPU 0000:00:02.0
Then set the launch options using one of the vendor and product ids, e.g.:
DRI_PRIME=1 MESA_VK_DEVICE_SELECT=1002:67df $command%
### Nvidia -> Integrated Intel (Nvidia's Proprietary Driver -> Mesa)
In Steam set your game's Properties -> GENERAL -> LAUNCH OPTIONS to:
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only %command%
This will load the Optimus Vulkan layer and use it to limit the GPU selection
to NVIDIA only. Using `non_NVIDIA_only` will do the opposite.
# Troubleshooting
## Performance
Having vsync enabled in-game is known to cause problems in PRIME
configurations. If you experience poor framerates / freezes try disabling
vsync.
## Device selection
To make sure that all libraries have selected the correct GPU you can check
the logs.
In the game's properties set the following 'LAUNCH OPTIONS':
PROTON_LOG=1 WINEDEBUG=+d3d VKD3D_DEBUG=trace
After running the game, you should find a file named `steam-$APPID.log` in your
Home directory.
For wined3d/DXGI, look for:
```
trace:d3d:wined3d_adapter_init_gl_caps GL_RENDERER: "Radeon RX 580 Series (POLARIS10, DRM 3.40.0, 5.10.9-zen1-1-zen, LLVM 11.0.1)".
```
For DXVK, look for:
```
info: DXVK: v1.7.3-36-g85c70ad5
...
info: AMD RADV POLARIS10 (ACO):
info: Driver: 20.3.3
info: Vulkan: 1.2.145
```
For VKD3D-Proton, look for:
```
trace:vkd3d_trace_physical_device_properties: Device name: AMD RADV POLARIS10 (ACO).
trace:vkd3d_trace_physical_device_properties: Vendor ID: 0x1002, Device ID: 0x67df.
```
Refer to the main README and each project's own documentation for more details
on logging. Extra logging can destroy game performance. Make sure that you
clear your 'LAUNCH OPTIONS' after troubleshooting.

57
docs/REBASING_TIPS.md Normal file
View File

@ -0,0 +1,57 @@
---
Rebasing Proton onto new upstream releases
---
We maintain a lot of patches on top of upstream releases. When cherry-picking
stuff from upstream into Proton, *always* use the `-x` parameter so the
original commit ID is retained in the log message. Contrarily, *never* use `-x`
when picking things that are not upstreamed. This lets us use the cherry-picked
log message as an indicator of which commits can be dropped during a rebase
because they were already upstreamed.
Here's a command which will generate the list of commits that were applied on
top of wine-4.2, which were not backported from upstream Wine:
wine$ git log --pretty=oneline --reverse --grep='cherry pick' --invert-grep wine-4.2..proton_4.2
You can then pick that list (*without* `-x`!) onto a new Wine release tag,
resolving conflicts and such as you go.
Here's a somewhat clumsy script that I think is easier to work with than git's
built-in tools:
#!/bin/bash
# Cherry-picks commits from an input file in --pretty=oneline format.
# Lines that begin with '#' are ignored.
# Aborts when a cherry-pick fails.
# Outputs the same input file on stderr, but with '#' prefixed to lines that were successfully cherry-picked.
#Usage:
# $ pick_commits to_pick 2> ~/to_pick2
# On pick failure, fix conflicts and use "git cherry-pick --continue", or
# otherwise fix up the repo as desired.
# Edit ~/to_pick2 to comment-out the commit that you fixed.
# Continue using the new file:
# $ pick_commits to_pick2 2> ~/to_pick
# Repeat, alternating between to_pick and to_pick2.
broken=0
while read -r l; do
f=$(echo -n "$l" | cut '-d ' -f1 -)
if [ $broken == 0 -a ${f:0:1} != '#' ]; then
echo "Picking $l"
git cherry-pick $f 2>&1
if [ $? -ne 0 ]; then
echo $l 1>&2
broken=1
else
echo '#'$l 1>&2
fi
else
echo $l 1>&2
fi
done < "$1"
Once your Wine rebase is done, update the prefix version in the proton Python
script, resetting the minor version back to 1.

20
docs/THREAD_PRIORITY.md Normal file
View File

@ -0,0 +1,20 @@
# Thread priorities
Proton supports fine-grained thread priority control using `setpriority(2)` to
set thread niceness values corresponding to the game threads' Windows base
priority levels. However, most default Linux configurations don't allow
individual threads to raise their priority, so some system configuration is
likely required.
It can be configured as a privileged user by editing the
`/etc/security/limits.conf` file, or using the `/etc/security/limits.d/` conf
directory, and adding the following line at the end:
```
* hard nice -15
```
Where -15 could be any value between [-20,0] that will correspond to the
minimum niceness (the highest priority) a thread can get to. The lower the
value, the more CPU time a high priority thread will get, at the expense of
others and other processes, possibly making the system less responsive.

2
dxvk

@ -1 +1 @@
Subproject commit 46908d4742d680973d40bfbed1270ed136cb4120
Subproject commit 1b31aa5dbca0749d0737cff02043acb061332fb6

1
dxvk-nvapi Submodule

@ -0,0 +1 @@
Subproject commit 0a7c48b256cafe6b3fa1db8183f089712c72e9ad

2
ffmpeg

@ -1 +1 @@
Subproject commit ace829cb45cff530b8a0aed6adf18f329d7a98f6
Subproject commit a77521cd5d27e955b16e8097eecefc779ffdcb6d

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
@ -71,7 +69,7 @@ __all__ = [
"FileLock"
]
__version__ = "3.0.4"
__version__ = "3.0.12"
_logger = None
@ -105,6 +103,29 @@ class Timeout(TimeoutError):
# Classes
# ------------------------------------------------
# This is a helper class which is returned by :meth:`BaseFileLock.acquire`
# and wraps the lock to make sure __enter__ is not called twice when entering
# the with statement.
# If we would simply return *self*, the lock would be acquired again
# in the *__enter__* method of the BaseFileLock, but not released again
# automatically.
#
# :seealso: issue #37 (memory leak)
class _Acquire_ReturnProxy(object):
def __init__(self, lock):
self.lock = lock
return None
def __enter__(self):
return self.lock
def __exit__(self, exc_type, exc_value, traceback):
self.lock.release()
return None
class BaseFileLock(object):
"""
Implements the base class of a file lock.
@ -214,7 +235,7 @@ class BaseFileLock(object):
:arg float timeout:
The maximum time waited for the file lock.
If ``timeout <= 0``, there is no timeout and this method will
If ``timeout < 0``, there is no timeout and this method will
block until the lock could be acquired.
If ``timeout`` is None, the default :attr:`~timeout` is used.
@ -239,12 +260,11 @@ class BaseFileLock(object):
with self._thread_lock:
self._lock_counter += 1
lock_id = id(self)
lock_filename = self._lock_file
start_time = time.time()
try:
start_time = time.time()
while True:
lock_id = id(self)
lock_filename = self._lock_file
with self._thread_lock:
if not self.is_locked:
logger().debug('Attempting to acquire lock %s on %s', lock_id, lock_filename)
@ -268,26 +288,7 @@ class BaseFileLock(object):
self._lock_counter = max(0, self._lock_counter - 1)
raise
# This class wraps the lock to make sure __enter__ is not called
# twiced when entering the with statement.
# If we would simply return *self*, the lock would be acquired again
# in the *__enter__* method of the BaseFileLock, but not released again
# automatically.
class ReturnProxy(object):
def __init__(self, lock):
self.lock = lock
return None
def __enter__(self):
return self.lock
def __exit__(self, exc_type, exc_value, traceback):
self.lock.release()
return None
return ReturnProxy(lock = self)
return _Acquire_ReturnProxy(lock = self)
def release(self, force = False):
"""

@ -1 +1 @@
Subproject commit 9510ebd130bcb4dfc76b053b438d8a97a3ed4600
Subproject commit 4b0192046158094654e865245832c66d2104219e

94
fonts/noto/LICENSE Normal file
View File

@ -0,0 +1,94 @@
Copyright 2018 The Noto Project Authors (github.com/googlei18n/noto-fonts)
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,8 +1,6 @@
diff --git a/LiberationMono-Regular.sfd b/LiberationMono-Regular.sfd
index 0cedbd4..13b9a63 100644
--- a/LiberationMono-Regular.sfd
+++ b/LiberationMono-Regular.sfd
@@ -3931,6 +3931,10 @@ ShortTable: maxp 16
@@ -3935,6 +3935,10 @@
3
1
EndShort
@ -10,6 +8,6 @@ index 0cedbd4..13b9a63 100644
+!!!!"!!**$!<E0/!"B2J!!iQ/s8E!)!"&](!"&]4s8;p*!"8i*!"8i9s8;p,!"Ao*!"Ju<s82j-
+!"Ju+!"],?s82j/!"],,!"o8Bs8)d0!"f2-!#,DFs8)cr
+EndTtf
LangName: 1033 "" "" "Regular" "Ascender - Liberation Mono" "" "Version 2.00.3" "" "Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and Trademark Office and certain other jurisdictions." "Ascender Corporation" "Steve Matteson" "Based on Cousine, which was designed by Steve Matteson as an innovative, refreshing sans serif design that is metrically compatible with Courier New+ISIA. Cousine offers improved on-screen readability characteristics and the pan-European WGL character set and solves the needs of developers looking for width-compatible fonts to address document portability across platforms." "http://www.ascendercorp.com/" "http://www.ascendercorp.com/typedesigners.html" "Licensed under the SIL Open Font License, Version 1.1" "http://scripts.sil.org/OFL"
LangName: 1033 "" "" "Regular" "Ascender - Liberation Mono" "" "Version 2.1.5" "" "Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and Trademark Office and certain other jurisdictions." "Ascender Corporation" "Steve Matteson" "Based on Cousine, which was designed by Steve Matteson as an innovative, refreshing sans serif design that is metrically compatible with Courier New+ISIA. Cousine offers improved on-screen readability characteristics and the pan-European WGL character set and solves the needs of developers looking for width-compatible fonts to address document portability across platforms." "http://www.ascendercorp.com/" "http://www.ascendercorp.com/typedesigners.html" "Licensed under the SIL Open Font License, Version 1.1" "http://scripts.sil.org/OFL"
GaspTable: 3 8 2 17 1 65535 3 0
Encoding: UnicodeBmp

View File

@ -0,0 +1,5 @@
[SourceHanSansK-Regular]
f=3,1,0x412,\B9D1\C740 \ACE0\B515
s=3,1,0x412,Regular
f=Malgun Gothic
s=Regular

View File

@ -0,0 +1,5 @@
[SourceHanSansSC-Regular]
f=3,1,0x804,\65B0\5B8B\4F53
s=3,1,0x804,\5E38\89C4
f=NSimSun
s=Regular

View File

@ -0,0 +1,5 @@
[SourceHanSansSC-Regular]
f=3,1,0x804,\5B8B\4F53
s=3,1,0x804,\5E38\89C4
f=SimSun
s=Regular

View File

@ -0,0 +1,86 @@
--- a/UmeGothic-nametable.ttx 2021-11-14 02:41:52.823198735 +0900
+++ b/UmeGothic-nametable.ttx 2021-11-14 02:44:50.269352384 +0900
@@ -5,8 +5,12 @@
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x411" unicode="True">
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x411" unicode="True">
- Ume Gothic
+ MS Gothic
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x411" unicode="True">
Regular
@@ -14,8 +18,12 @@
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x411" unicode="True">
Ume Gothic
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x411" unicode="True">
- Ume Gothic
+ MS Gothic
</namerecord>
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x411" unicode="True">
Look update time of this file.
@@ -29,8 +37,12 @@
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
- Ume Gothic
+ MS Gothic
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
Regular
@@ -38,8 +50,12 @@
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
Ume Gothic
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
- Ume Gothic
+ MS Gothic
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
Look update time of this file.
@@ -53,8 +69,12 @@
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x411">
作者: 蓬莱和多流. ライセンス: このフォントはフリー(自由な)ソフトウエアです。あらゆる改変の有無に関わらず、また商業的な利用であっても、自由に利用、複製、再配布することができますが、全て無保証とさせていただきます。
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x411">
- 梅ゴシック
+ ゴシック
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x411">
Regular
@@ -62,8 +82,12 @@
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x411">
梅ゴシック
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x411">
- 梅ゴシック
+ ゴシック
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x411">
Look update time of this file.

View File

@ -0,0 +1,86 @@
--- a/UmePGothic-nametable.ttx 2021-11-14 02:41:46.983127001 +0900
+++ b/UmePGothic-nametable.ttx 2021-11-14 02:44:42.413257975 +0900
@@ -5,8 +5,12 @@
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x411" unicode="True">
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x411" unicode="True">
- Ume P Gothic
+ MS PGothic
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x411" unicode="True">
Regular
@@ -14,8 +18,12 @@
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x411" unicode="True">
Ume P Gothic
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x411" unicode="True">
- Ume P Gothic
+ MS PGothic
</namerecord>
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x411" unicode="True">
Look update time of this file.
@@ -29,8 +37,12 @@
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
- Ume P Gothic
+ MS PGothic
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
Regular
@@ -38,8 +50,12 @@
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
Ume P Gothic
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
- Ume P Gothic
+ MS PGothic
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
Look update time of this file.
@@ -53,8 +69,12 @@
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x411">
作者: 蓬莱和多流. ライセンス: このフォントはフリー(自由な)ソフトウエアです。あらゆる改変の有無に関わらず、また商業的な利用であっても、自由に利用、複製、再配布することができますが、全て無保証とさせていただきます。
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x411">
- 梅Pゴシック
+ Pゴシック
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x411">
Regular
@@ -62,8 +82,12 @@
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x411">
梅Pゴシック
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x411">
- 梅Pゴシック
+ Pゴシック
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x411">
Look update time of this file.

View File

@ -0,0 +1,86 @@
--- a/UmeUIGothic-nametable.ttx 2021-11-14 02:41:57.955261726 +0900
+++ b/UmeUIGothic-nametable.ttx 2021-11-14 02:44:57.653441054 +0900
@@ -5,8 +5,12 @@
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x411" unicode="True">
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x411" unicode="True">
- Ume UI Gothic
+ MS UI Gothic
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x411" unicode="True">
Regular
@@ -14,8 +18,12 @@
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x411" unicode="True">
Ume UI Gothic
</namerecord>
++ <!--
++ NameID=4 (Full)
++ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
++ -->
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x411" unicode="True">
- Ume UI Gothic
+ MS UI Gothic
</namerecord>
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x411" unicode="True">
Look update time of this file.
@@ -29,8 +37,12 @@
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
- Ume UI Gothic
+ MS UI Gothic
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
Regular
@@ -38,8 +50,12 @@
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
Ume UI Gothic
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
- Ume UI Gothic
+ MS UI Gothic
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
Look update time of this file.
@@ -53,8 +69,12 @@
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x411">
作者: 蓬莱和多流. ライセンス: このフォントはフリー(自由な)ソフトウエアです。あらゆる改変の有無に関わらず、また商業的な利用であっても、自由に利用、複製、再配布することができますが、全て無保証とさせていただきます。
</namerecord>
+ <!--
+ NameID=1 (Family)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x411">
- 梅UIゴシック
+ MS UI Gothic
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x411">
Regular
@@ -62,8 +82,12 @@
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x411">
梅UIゴシック
</namerecord>
+ <!--
+ NameID=4 (Full)
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
+ -->
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x411">
- 梅UIゴシック
+ MS UI Gothic
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x411">
Look update time of this file.

View File

@ -0,0 +1,5 @@
[SourceHanSansSC-Regular]
f=3,1,0x804,\5FAE\8F6F\96C5\9ED1
s=3,1,0x804,Regular
f=Microsoft YaHei
s=Regular

140
fonts/ranges/arial Normal file
View File

@ -0,0 +1,140 @@
0020-007E
00A0-0377
037A-037F
0384-038A
038C
038E-03A1
03A3-052F
0531-0556
0559-055F
0561-0587
0589-058A
058D-058F
0591-05C7
05D0-05EA
05F0-05F4
0600-061C
061E-06FF
0750-077F
08A0-08B4
08B6-08BD
08D4-08FF
1D00-1DCA
1DFE-1F15
1F18-1F1D
1F20-1F45
1F48-1F4D
1F50-1F57
1F59
1F5B
1F5D
1F5F-1F7D
1F80-1FB4
1FB6-1FC4
1FC6-1FD3
1FD6-1FDB
1FDD-1FEF
1FF2-1FF4
1FF6-1FFE
2000-200F
2012-2022
2026
202A-2030
2032-2034
2039-203A
203C-203E
2044
205E
206A-2070
2074-2079
207F
2090-2094
20A0-20BF
20F0
2105
2113
2116-2117
2122
2126
212E
214D-214E
2153-2154
215B-215E
2184
2190-2195
21A8
2202
2206
220F
2211-2212
2215
2219-221A
221E-221F
2229
222B
2248
2260-2261
2264-2265
2302
2310
2320-2321
2500
2502
250C
2510
2514
2518
251C
2524
252C
2534
253C
2550-256C
2580
2584
2588
258C
2590-2593
25A0-25A1
25AA-25AC
25B2
25BA
25BC
25C4
25CA-25CC
25CF
25D8-25D9
25E6
263A-263C
2640
2642
2660
2663
2665-2666
266A-266B
266F
2C60-2C7F
2E17
A717-A7AE
A7B0-A7B7
A7F7-A7FF
AB30-AB65
FB00-FB06
FB13-FB17
FB1D-FB36
FB38-FB3C
FB3E
FB40-FB41
FB43-FB44
FB46-FBC1
FBD3-FBFF
FC5E-FC63
FCF2-FCF4
FD3C-FD3F
FDF2
FDF4
FDFA-FDFD
FE20-FE23
FE70-FE74
FE76-FEFC
FFFC

123
fonts/ranges/micross Normal file
View File

@ -0,0 +1,123 @@
0020-007E
00A0-0377
037A-037F
0384-038A
038C
038E-03A1
03A3-052F
0531-0556
0559-055F
0561-0587
0589-058A
058D-058F
0591-05C7
05D0-05EA
05F0-05F4
0600-061C
061E-06FF
0750-077F
0783
08A0-08B4
08B6-08BD
08D4-08FF
09F2-09F3
0AF1
0BF9
0E01-0E3A
0E3F-0E5B
10A0-10C5
10C7
10CD
10D0-10FF
17DB
1D00-1DCA
1DFE-1F15
1F18-1F1D
1F20-1F45
1F48-1F4D
1F50-1F57
1F59
1F5B
1F5D
1F5F-1F7D
1F80-1FB4
1FB6-1FC4
1FC6-1FD3
1FD6-1FDB
1FDD-1FEF
1FF2-1FF4
1FF6-1FFE
2000-2064
2066-2071
2074-208E
2090-209C
20A0-20BF
20E3
20F0
2105
2113
2116-2117
2122
2126
212E
2133
214D-214E
2150-218B
2190-2195
21A8
2202
2206
220F
2211-2212
2215
2219-221A
221E-221F
2229
222B
2248
2260-2261
2264-2265
2302
2310
2320-2321
2500
2502
250C
25A1
25AA-25AB
25CA
25CC
25CF
25E6
266F
2C60-2C7F
2D00-2D25
2D27
2D2D
2DE0-2DFF
2E17
A640-A69F
A717-A7AD
A7B0-A7B7
A7F7-A7FF
AB30-AB65
FB00-FB06
FB13-FB17
FB1D-FB36
FB38-FB3C
FB3E
FB40-FB41
FB43-FB44
FB46-FBC1
FBD3-FBFF
FC5E-FC63
FCF2-FCF4
FD3C-FD3F
FDF2
FDF4
FDFA-FDFD
FE20-FE23
FE70-FE74
FE76-FEFC
FEFF
FFFC-FFFD

166
fonts/ranges/nirmala Normal file
View File

@ -0,0 +1,166 @@
000D
0020-007E
00A0-00FF
0131
0152-0153
0160-0161
0178
017D-017E
0192
02BC
02C6-02C7
02D8
02DA
02DC
03BC
0900-0983
0985-098C
098F-0990
0993-09A8
09AA-09B0
09B2
09B6-09B9
09BC-09C4
09C7-09C8
09CB-09CE
09D7
09DC-09DD
09DF-09E3
09E6-09FE
0A01-0A03
0A05-0A0A
0A0F-0A10
0A13-0A28
0A2A-0A30
0A32-0A33
0A35-0A36
0A38-0A39
0A3C
0A3E-0A42
0A47-0A48
0A4B-0A4D
0A51
0A59-0A5C
0A5E
0A66-0A76
0A81-0A83
0A85-0A8D
0A8F-0A91
0A93-0AA8
0AAA-0AB0
0AB2-0AB3
0AB5-0AB9
0ABC-0AC5
0AC7-0AC9
0ACB-0ACD
0AD0
0AE0-0AE3
0AE6-0AF1
0AF9-0AFF
0B01-0B03
0B05-0B0C
0B0F-0B10
0B13-0B28
0B2A-0B30
0B32-0B33
0B35-0B39
0B3C-0B44
0B47-0B48
0B4B-0B4D
0B56-0B57
0B5C-0B5D
0B5F-0B63
0B66-0B77
0B82-0B83
0B85-0B8A
0B8E-0B90
0B92-0B95
0B99-0B9A
0B9C
0B9E-0B9F
0BA3-0BA4
0BA8-0BAA
0BAE-0BB9
0BBE-0BC2
0BC6-0BC8
0BCA-0BCD
0BD0
0BD7
0BE6-0BFA
0C00-0C0C
0C0E-0C10
0C12-0C28
0C2A-0C39
0C3D-0C44
0C46-0C48
0C4A-0C4D
0C55-0C56
0C58-0C5A
0C60-0C63
0C66-0C6F
0C78-0C8C
0C8E-0C90
0C92-0CA8
0CAA-0CB3
0CB5-0CB9
0CBC-0CC4
0CC6-0CC8
0CCA-0CCD
0CD5-0CD6
0CDE
0CE0-0CE3
0CE6-0CEF
0CF1-0CF2
0D00-0D03
0D05-0D0C
0D0E-0D10
0D12-0D44
0D46-0D48
0D4A-0D4F
0D54-0D63
0D66-0D7F
0D82-0D83
0D85-0D96
0D9A-0DB1
0DB3-0DBB
0DBD
0DC0-0DC6
0DCA
0DCF-0DD4
0DD6
0DD8-0DDF
0DE6-0DEF
0DF2-0DF4
0FD5-0FD8
1C50-1C7F
1CD0-1CF9
200B-200D
2010
2013-2014
2018-201A
201C-201E
2020-2022
2026
2030
2039-203A
2044
20A8
20AC
20B9
2122
2212
2215
2219
2236
25CC
25CF
262C
A830-A839
A8E0-A8FF
ABC0-ABED
ABF0-ABF9
110D0-110E8
110F0-110F9
11100-11134
11136-11146
111E1-111F4

View File

@ -1,7 +1,7 @@
if ($argc != 5)
Error ("Expected arguments - FileName, PSName, FamilyName, FaceName")
if ($argc != 6)
Error ("Expected arguments - FileName, PSName, FamilyName, FaceName, OutFileName")
endif
Open($1)
SetFontNames($argv[2], $argv[3], $argv[4])
Generate($1:r + ".ttf")
Generate($5)

290
fonts/scripts/merge.py Executable file
View File

@ -0,0 +1,290 @@
#!/usr/bin/env python3
# This script was created by Giovanni Mascellani for CodeWeavers
# Based on merge_noto.py and merge_fonts.py from the nototools
# (https://github.com/googlefonts/nototools), with the following
# copyright notice:
# Copyright 2014-2017 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The font name changing logic is taken from
# https://github.com/chrissimpkins/fontname.py/blob/master/fontname.py,
# with the following copyright notice:
# Copyright 2019 Christopher Simpkins
# MIT License
# The font subsetting logic is taken from
# https://github.com/fonttools/fonttools/blob/main/Lib/fontTools/subset/__init__.py
# with the following copyright notice:
# Copyright 2013 Google, Inc. All Rights Reserved.
# Google Author(s): Behdad Esfahbod
# The whole fonttools repository is distributed under the MIT license.
"""Merges a number of Noto fonts and then sets a given name to the
result.
"""
import sys
import tempfile
import os
from fontTools import merge
from fontTools import ttLib
from fontTools import subset
from fontTools.ttLib.tables import otTables
def read_line_metrics(font):
metrics = {
"ascent": font["hhea"].ascent,
"descent": font["hhea"].descent,
"usWinAscent": font["OS/2"].usWinAscent,
"usWinDescent": font["OS/2"].usWinDescent,
"sTypoAscender": font["OS/2"].sTypoAscender,
"sTypoDescender": font["OS/2"].sTypoDescender,
"sxHeight": font["OS/2"].sxHeight,
"sCapHeight": font["OS/2"].sCapHeight,
"sTypoLineGap": font["OS/2"].sTypoLineGap,
}
return metrics
def set_line_metrics(font, metrics):
font["hhea"].ascent = metrics["ascent"]
font["hhea"].descent = metrics["descent"]
font["OS/2"].usWinAscent = metrics["usWinAscent"]
font["OS/2"].usWinDescent = metrics["usWinDescent"]
font["OS/2"].sTypoAscender = metrics["sTypoAscender"]
font["OS/2"].sTypoDescender = metrics["sTypoDescender"]
font["OS/2"].sxHeight = metrics["sxHeight"]
font["OS/2"].sCapHeight = metrics["sCapHeight"]
font["OS/2"].sTypoLineGap = metrics["sTypoLineGap"]
def has_gsub_table(fontfile):
font = ttLib.TTFont(fontfile)
return "GSUB" in font
SCRIPT_TO_OPENTYPE_SCRIPT_TAG = {
# Retrieved from Opentype 1.9 delta specs. Prerelease scripttags used out of necessity. https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags
"Carian": "cari",
"CypriotSyllabary": "cprt",
"CyproMinoan": "cpmn",
"Deseret": "dsrt",
"Glagolitic": "glag",
"EgyptianHieroglyphs": "egyp",
"ImperialAramaic": "armi",
"LinearA": "lina",
"LinearB": "linb",
"Lisu": "lisu",
"Lycian": "lyci",
"Lydian": "lydi",
"Ogham": "ogam",
"OldItalic": "ital",
"OldPersian": "xpeo",
"OldSouthArabian": "sarb",
"OldTurkic": "orkh",
"OldSogdian": "sogo",
"OldNorthArabian": "narb",
"OldHungarian": "hung",
"Osmanya": "osma",
"Phoenician": "phnx",
"SumeroAkkadianCuneiform": "xsux",
"Ugaritic": "ugar",
"OlChiki": "olck",
"TaiLe": "tale",
"Cuneiform": "xsux",
"Cypriot": "cprt",
"Runic": "runr",
"Shavian": "shaw",
"Vai": "vai ",
"Yi": "yi ",
"AnatolianHieroglyphs": "hluw",
"Bamum": "bamu",
"ByzantineMusic": "byzm",
"Gothic": "goth",
"ImperialAramaic": "armi",
"InscriptionalPahlavi": "phli",
"InscriptionalParthian": "prti",
"Khojki": "khoj",
"MathematicalAlphanumericSymbols": "math",
"MeroiticCursive": "merc",
"MeroiticHieroglyphs": "mero",
"MusicalSymbols": "musc",
"Palmyrene": "palm",
"Rejang": "rjng",
"Samaritan": "samr",
"Carian": "cari",
"Ahom": "ahom",
"Adlam": "adlm",
"Dogra": "dogr",
"Lisu": "lisu",
"Mandaean": "mand",
"Manichaean": "mani",
"Tifinagh": "tfng",
"Wancho": "wcho",
"Yezidi": "yezi",
"Cherokee": "cher",
"Chorasmian": "chrs",
"PahawhHmong": "hmng",
"Phagspa": "phag",
"Sundanese": "sund",
"WarangCiti": "wara",
"SylotiNagri": "sylo",
"PsalterPahlavi": "phlp",
"CaucasianAlbanian": "aghb",
"Medefaidrin": "medf",
"MeiteiMayek": "mtei",
"MendeKikakui": "mend",
"Mro": "mroo",
"Multani": "mult",
"Nabataean": "nbat",
"Nandinagari": "nand",
"Newa": "newa",
"NewTaiLue": "talu",
"Nushu": "nshu",
"NyiakengPuachueHmong": "hmnp",
"OldPermic": "perm",
"SoraSompeng": "sora",
"Soyombo": "soyo",
"SylotiNagri": "sylo",
"Tagbanwa": "tagb",
"Tagalog": "tglg",
"Takri": "takr",
"TaiTham": "lana",
"TaiViet": "tavt",
"Tangut": "tang",
"Thaana": "thaa",
"UgariticCuneiform": "ugar",
"ZanabazarSquare": "zanb",
"SignWriting": "sgnw",
"OldUyghur": "ougr",
"Tangsa": "tnsa",
"Toto": "toto",
"Vithkuqi": "vith",
"Duployan": "dupl",
"Hatran": "hatr",
# These last two would only merge using the long script name including the 'NotoSerif' part
"NotoSerifYezidi": "yezi",
"NotoSerifNyiakengPuachueHmong": "hmnp",
}
def get_opentype_script_tag(fontfile):
fontfile = os.path.basename(fontfile)
if fontfile.startswith("NotoSans"):
fontfile = fontfile[8:]
fontfile = fontfile[: fontfile.index("-")]
return SCRIPT_TO_OPENTYPE_SCRIPT_TAG[fontfile]
def add_gsub_to_font(fontfile):
"""Adds an empty GSUB table to a font."""
font = ttLib.TTFont(fontfile)
gsub_table = ttLib.getTableClass("GSUB")("GSUB")
gsub_table.table = otTables.GSUB()
gsub_table.table.Version = 1.0
gsub_table.table.ScriptList = otTables.ScriptList()
gsub_table.table.ScriptCount = 1
gsub_table.table.LookupList = otTables.LookupList()
gsub_table.table.LookupList.LookupCount = 0
gsub_table.table.LookupList.Lookup = []
gsub_table.table.FeatureList = otTables.FeatureList()
gsub_table.table.FeatureList.FeatureCount = 0
gsub_table.table.LookupList.FeatureRecord = []
script_record = otTables.ScriptRecord()
script_record.ScriptTag = get_opentype_script_tag(fontfile)
script_record.Script = otTables.Script()
script_record.Script.LangSysCount = 0
script_record.Script.LangSysRecord = []
default_lang_sys = otTables.DefaultLangSys()
default_lang_sys.FeatureIndex = []
default_lang_sys.FeatureCount = 0
default_lang_sys.LookupOrder = None
default_lang_sys.ReqFeatureIndex = 65535
script_record.Script.DefaultLangSys = default_lang_sys
gsub_table.table.ScriptList.ScriptRecord = [script_record]
font["GSUB"] = gsub_table
target_file = tempfile.gettempdir() + "/" + os.path.basename(fontfile)
font.save(target_file)
return target_file
def parse_unicodes(s):
import re
s = re.sub(r"0[xX]", " ", s)
s = re.sub(r"[<+>,;&#\\xXuU\n ]", " ", s)
l = []
for item in s.split():
fields = item.split("-")
if len(fields) == 1:
l.append(int(item, 16))
else:
start, end = fields
l.extend(range(int(start, 16), int(end, 16) + 1))
return l
def main():
output_filename = sys.argv[-1]
ranges_filename = sys.argv[-2]
weight = sys.argv[-3]
font_name = sys.argv[-4]
ps_name = sys.argv[-5]
input_filenames = sys.argv[1:-5]
# Add a GSUB table to the fonts that do not have one, otherwise
# the merger will complain
for index, filename in enumerate(input_filenames):
if not has_gsub_table(filename):
input_filenames[index] = add_gsub_to_font(filename)
merger = merge.Merger()
font = merger.merge(input_filenames)
# Use the line metrics defined by the first font, which is
# supposed to be the basic NotoSans
metrics = read_line_metrics(ttLib.TTFont(input_filenames[0]))
set_line_metrics(font, metrics)
# Select the subset we care about
options = subset.Options(ignore_missing_unicodes=False)
subsetter = subset.Subsetter(options)
unicodes = []
with open(ranges_filename) as ranges:
for line in ranges:
unicodes.extend(parse_unicodes(line.split("#")[0]))
if len(unicodes) != 0:
subsetter.populate(unicodes=unicodes)
subsetter.subset(font)
# Rename the result
for record in font['name'].names:
if record.nameID == 1:
record.string = font_name
elif record.nameID == 4:
record.string = "{} {}".format(font_name, weight)
elif record.nameID == 6:
record.string = "{}-{}".format(ps_name, weight.replace(' ', ''))
font.save(output_filename)
if __name__ == '__main__':
main()

View File

@ -0,0 +1,96 @@
Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font
Name 'Source'. Source is a trademark of Adobe in the United States
and/or other countries.
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,28 @@
# Unicode Version 6.3 SVSes
5140 FE00; Standardized_Variants; CID+10832
51C9 FE00; Standardized_Variants; CID+11047
55C0 FE00; Standardized_Variants; CID+12623
793C FE00; Standardized_Variants; CID+58884
79CA FE00; Standardized_Variants; CID+29091
8612 FE00; Standardized_Variants; CID+58894
88CF FE00; Standardized_Variants; CID+36939
90CE FE00; Standardized_Variants; CID+40731
96A3 FE00; Standardized_Variants; CID+43278
# Unicode Version 12.0 SVSes
3001 FE00; Standardized_Variants; CID+1397
3001 FE01; Standardized_Variants; CID+63145
3002 FE00; Standardized_Variants; CID+1398
3002 FE01; Standardized_Variants; CID+63146
FF01 FE00; Standardized_Variants; CID+63147
FF01 FE01; Standardized_Variants; CID+59047
FF0C FE00; Standardized_Variants; CID+59058
FF0C FE01; Standardized_Variants; CID+63148
FF0E FE00; Standardized_Variants; CID+59060
FF0E FE01; Standardized_Variants; CID+63149
FF1A FE00; Standardized_Variants; CID+63150
FF1A FE01; Standardized_Variants; CID+59072
FF1B FE00; Standardized_Variants; CID+63151
FF1B FE01; Standardized_Variants; CID+59073
FF1F FE00; Standardized_Variants; CID+63152
FF1F FE01; Standardized_Variants; CID+59077
# EOF

View File

@ -0,0 +1,326 @@
# KRName IVSes
537F E0108; KRName; CID+11743
537F E0109; KRName; CID+61812
5795 E0101; KRName; CID+13409
5795 E0102; KRName; CID+62188
57CE E0104; KRName; CID+13486
57CE E0105; KRName; CID+61817
5ABA E0104; KRName; CID+14991
5ABA E0105; KRName; CID+14991
6210 E0105; KRName; CID+18519
6210 E0106; KRName; CID+61829
665F E0106; KRName; CID+62364
665F E0107; KRName; CID+20400
6674 E0104; KRName; CID+58877
6674 E0105; KRName; CID+20436
695E E0104; KRName; CID+62423
695E E0105; KRName; CID+21671
6D77 E0104; KRName; CID+58933
6D77 E0105; KRName; CID+23486
76DB E0104; KRName; CID+27832
76DB E0105; KRName; CID+62543
8056 E0105; KRName; CID+32435
8056 E0106; KRName; CID+32433
83BD E0108; KRName; CID+62714
83BD E0109; KRName; CID+34274
865C E0104; KRName; CID+58860
865C E0105; KRName; CID+35860
8941 E0104; KRName; CID+37188
8941 E0105; KRName; CID+62775
8AA0 E0104; KRName; CID+37864
8AA0 E0105; KRName; CID+62792
8ACB E0104; KRName; CID+62795
8ACB E0105; KRName; CID+37953
927C E0103; KRName; CID+41543
927C E0104; KRName; CID+41542
9F9C E0107; KRName; CID+47476
9F9C E0108; KRName; CID+63097
# Unicode Version 6.3 SVSes
4E0D FE00; Standardized_Variants; CID+9496
4E32 FE00; Standardized_Variants; CID+9551
4E39 FE00; Standardized_Variants; CID+9560
4E82 FE00; Standardized_Variants; CID+9653
4E86 FE00; Standardized_Variants; CID+9660
4EAE FE00; Standardized_Variants; CID+9725
4EC0 FE00; Standardized_Variants; CID+9756
4EE4 FE00; Standardized_Variants; CID+9808
4F86 FE00; Standardized_Variants; CID+10047
4F8B FE00; Standardized_Variants; CID+10054
4FBF FE00; Standardized_Variants; CID+10136
502B FE00; Standardized_Variants; CID+10320
50DA FE00; Standardized_Variants; CID+10639
5169 FE00; Standardized_Variants; CID+10900
516D FE00; Standardized_Variants; CID+10911
51B7 FE00; Standardized_Variants; CID+11016
51C9 FE00; Standardized_Variants; CID+11046
51CC FE00; Standardized_Variants; CID+11054
51DC FE00; Standardized_Variants; CID+11082
5207 FE00; Standardized_Variants; CID+11145
5217 FE00; Standardized_Variants; CID+11163
5229 FE00; Standardized_Variants; CID+11189
523A FE00; Standardized_Variants; CID+11212
5289 FE00; Standardized_Variants; CID+11340
529B FE00; Standardized_Variants; CID+11377
52A3 FE00; Standardized_Variants; CID+11385
52D2 FE00; Standardized_Variants; CID+11454
52DE FE00; Standardized_Variants; CID+11473
52F5 FE00; Standardized_Variants; CID+11509
5317 FE00; Standardized_Variants; CID+11566
533F FE00; Standardized_Variants; CID+11649
5375 FE00; Standardized_Variants; CID+11725
53C3 FE00; Standardized_Variants; CID+11848
53E5 FE00; Standardized_Variants; CID+11904
540F FE00; Standardized_Variants; CID+11958
541D FE00; Standardized_Variants; CID+11975
5442 FE00; Standardized_Variants; CID+12042
54BD FE00; Standardized_Variants; CID+12218
5587 FE00; Standardized_Variants; CID+12520
56F9 FE00; Standardized_Variants; CID+13179
585E FE00; Standardized_Variants; CID+13729
58D8 FE00; Standardized_Variants; CID+13938
58DF FE00; Standardized_Variants; CID+13954
5948 FE00; Standardized_Variants; CID+14119
5951 FE00; Standardized_Variants; CID+58855
5973 FE00; Standardized_Variants; CID+14197
5B85 FE00; Standardized_Variants; CID+15453
5BE7 FE00; Standardized_Variants; CID+62232
5BE7 FE01; Standardized_Variants; CID+62232
5BEE FE00; Standardized_Variants; CID+15675
5C3F FE00; Standardized_Variants; CID+15807
5C62 FE00; Standardized_Variants; CID+15861
5C65 FE00; Standardized_Variants; CID+15869
5D19 FE00; Standardized_Variants; CID+16219
5D50 FE00; Standardized_Variants; CID+16337
5DBA FE00; Standardized_Variants; CID+16563
5E74 FE00; Standardized_Variants; CID+16855
5EA6 FE00; Standardized_Variants; CID+16945
5EC9 FE00; Standardized_Variants; CID+58865
5ECA FE00; Standardized_Variants; CID+62259
5ED3 FE00; Standardized_Variants; CID+17040
5EEC FE00; Standardized_Variants; CID+17097
5F04 FE00; Standardized_Variants; CID+17143
5F8B FE00; Standardized_Variants; CID+17393
5FA9 FE00; Standardized_Variants; CID+17437
5FF5 FE00; Standardized_Variants; CID+17565
6012 FE00; Standardized_Variants; CID+17608
601C FE00; Standardized_Variants; CID+17622
60E1 FE00; Standardized_Variants; CID+17952
6144 FE00; Standardized_Variants; CID+18124
6190 FE00; Standardized_Variants; CID+18280
61F6 FE00; Standardized_Variants; CID+18471
6200 FE00; Standardized_Variants; CID+18496
622E FE00; Standardized_Variants; CID+18563
62C9 FE00; Standardized_Variants; CID+18812
62CF FE00; Standardized_Variants; CID+18821
62D3 FE00; Standardized_Variants; CID+18828
62FE FE00; Standardized_Variants; CID+18890
637B FE00; Standardized_Variants; CID+19086
63A0 FE00; Standardized_Variants; CID+19151
649A FE00; Standardized_Variants; CID+19595
64C4 FE00; Standardized_Variants; CID+19674
6578 FE00; Standardized_Variants; CID+20006
6599 FE00; Standardized_Variants; CID+20066
65C5 FE00; Standardized_Variants; CID+58862
6613 FE00; Standardized_Variants; CID+20292
6688 FE00; Standardized_Variants; CID+20467
66B4 FE00; Standardized_Variants; CID+20541
66C6 FE00; Standardized_Variants; CID+20573
66F4 FE00; Standardized_Variants; CID+20652
6717 FE00; Standardized_Variants; CID+62390
674E FE00; Standardized_Variants; CID+20808
677B FE00; Standardized_Variants; CID+20871
6797 FE00; Standardized_Variants; CID+20919
67F3 FE00; Standardized_Variants; CID+21054
6817 FE00; Standardized_Variants; CID+21107
6881 FE00; Standardized_Variants; CID+21275
68A8 FE00; Standardized_Variants; CID+21346
6A02 FE00; Standardized_Variants; CID+21980
6A02 FE01; Standardized_Variants; CID+21980
6A02 FE02; Standardized_Variants; CID+21980
6A13 FE00; Standardized_Variants; CID+22009
6AD3 FE00; Standardized_Variants; CID+22349
6B04 FE00; Standardized_Variants; CID+58856
6B77 FE00; Standardized_Variants; CID+22652
6BAE FE00; Standardized_Variants; CID+22766
6BBA FE00; Standardized_Variants; CID+58861
6C88 FE00; Standardized_Variants; CID+23136
6CCC FE00; Standardized_Variants; CID+23231
6CE5 FE00; Standardized_Variants; CID+23275
6D1B FE00; Standardized_Variants; CID+23352
6D1E FE00; Standardized_Variants; CID+23356
6D41 FE00; Standardized_Variants; CID+23409
6D6A FE00; Standardized_Variants; CID+23466
6DCB FE00; Standardized_Variants; CID+23618
6DDA FE00; Standardized_Variants; CID+23649
6DEA FE00; Standardized_Variants; CID+23680
6E9C FE00; Standardized_Variants; CID+23971
6EBA FE00; Standardized_Variants; CID+24026
6ED1 FE00; Standardized_Variants; CID+24080
6F0F FE00; Standardized_Variants; CID+24192
6F23 FE00; Standardized_Variants; CID+24229
6FEB FE00; Standardized_Variants; CID+24584
6FFE FE00; Standardized_Variants; CID+24619
7099 FE00; Standardized_Variants; CID+24930
70C8 FE00; Standardized_Variants; CID+25014
70D9 FE00; Standardized_Variants; CID+25045
7149 FE00; Standardized_Variants; CID+25253
71CE FE00; Standardized_Variants; CID+25539
71D0 FE00; Standardized_Variants; CID+25543
7210 FE00; Standardized_Variants; CID+25680
721B FE00; Standardized_Variants; CID+25703
7262 FE00; Standardized_Variants; CID+25841
72C0 FE00; Standardized_Variants; CID+25979
72FC FE00; Standardized_Variants; CID+26067
7375 FE00; Standardized_Variants; CID+26278
7387 FE00; Standardized_Variants; CID+26317
7387 FE01; Standardized_Variants; CID+26317
73B2 FE00; Standardized_Variants; CID+26376
73DE FE00; Standardized_Variants; CID+26433
7406 FE00; Standardized_Variants; CID+26492
7409 FE00; Standardized_Variants; CID+26497
7469 FE00; Standardized_Variants; CID+26662
7489 FE00; Standardized_Variants; CID+26720
7498 FE00; Standardized_Variants; CID+26744
7559 FE00; Standardized_Variants; CID+27123
7565 FE00; Standardized_Variants; CID+27147
7570 FE00; Standardized_Variants; CID+27167
75E2 FE00; Standardized_Variants; CID+27369
7642 FE00; Standardized_Variants; CID+27572
7669 FE00; Standardized_Variants; CID+27653
76E7 FE00; Standardized_Variants; CID+27853
7701 FE00; Standardized_Variants; CID+27896
786B FE00; Standardized_Variants; CID+28463
788C FE00; Standardized_Variants; CID+28514
78CA FE00; Standardized_Variants; CID+28617
78FB FE00; Standardized_Variants; CID+28712
792A FE00; Standardized_Variants; CID+28785
797F FE00; Standardized_Variants; CID+28943
79AE FE00; Standardized_Variants; CID+29040
79CA FE00; Standardized_Variants; CID+29091
7A1C FE00; Standardized_Variants; CID+29225
7ACB FE00; Standardized_Variants; CID+29614
7B20 FE00; Standardized_Variants; CID+29778
7C3E FE00; Standardized_Variants; CID+30373
7C60 FE00; Standardized_Variants; CID+30454
7C92 FE00; Standardized_Variants; CID+30566
7CD6 FE00; Standardized_Variants; CID+58869
7CE7 FE00; Standardized_Variants; CID+30749
7D10 FE00; Standardized_Variants; CID+30837
7D22 FE00; Standardized_Variants; CID+30879
7D2F FE00; Standardized_Variants; CID+30901
7DA0 FE00; Standardized_Variants; CID+31127
7DBE FE00; Standardized_Variants; CID+31192
7DF4 FE00; Standardized_Variants; CID+58951
7E37 FE00; Standardized_Variants; CID+31451
7F79 FE00; Standardized_Variants; CID+31966
7F85 FE00; Standardized_Variants; CID+31989
7F9A FE00; Standardized_Variants; CID+32027
8001 FE00; Standardized_Variants; CID+32271
8046 FE00; Standardized_Variants; CID+32405
806F FE00; Standardized_Variants; CID+32482
807E FE00; Standardized_Variants; CID+32518
808B FE00; Standardized_Variants; CID+32542
81D8 FE00; Standardized_Variants; CID+33244
81E8 FE00; Standardized_Variants; CID+33282
826F FE00; Standardized_Variants; CID+33601
82E5 FE00; Standardized_Variants; CID+33844
8336 FE00; Standardized_Variants; CID+34013
83C9 FE00; Standardized_Variants; CID+34302
83F1 FE00; Standardized_Variants; CID+34391
843D FE00; Standardized_Variants; CID+34557
8449 FE00; Standardized_Variants; CID+34583
84EE FE00; Standardized_Variants; CID+58863
84FC FE00; Standardized_Variants; CID+35004
85CD FE00; Standardized_Variants; CID+35513
85FA FE00; Standardized_Variants; CID+35625
8606 FE00; Standardized_Variants; CID+35658
862D FE00; Standardized_Variants; CID+58857
863F FE00; Standardized_Variants; CID+35799
865C FE00; Standardized_Variants; CID+58860
87BA FE00; Standardized_Variants; CID+36439
881F FE00; Standardized_Variants; CID+36626
884C FE00; Standardized_Variants; CID+36710
88C2 FE00; Standardized_Variants; CID+36912
88CF FE00; Standardized_Variants; CID+36938
88E1 FE00; Standardized_Variants; CID+36980
88F8 FE00; Standardized_Variants; CID+37027
8964 FE00; Standardized_Variants; CID+37260
898B FE00; Standardized_Variants; CID+37348
8AAA FE00; Standardized_Variants; CID+37887
8AAA FE01; Standardized_Variants; CID+37887
8AD2 FE00; Standardized_Variants; CID+37971
8AD6 FE00; Standardized_Variants; CID+37980
8AFE FE00; Standardized_Variants; CID+38063
8B58 FE00; Standardized_Variants; CID+38273
8B80 FE00; Standardized_Variants; CID+38357
8C48 FE00; Standardized_Variants; CID+38616
8CC2 FE00; Standardized_Variants; CID+38825
8CC8 FE00; Standardized_Variants; CID+38837
8DEF FE00; Standardized_Variants; CID+39263
8ECA FE00; Standardized_Variants; CID+39658
8F26 FE00; Standardized_Variants; CID+39792
8F2A FE00; Standardized_Variants; CID+39800
8F3B FE00; Standardized_Variants; CID+39837
8F62 FE00; Standardized_Variants; CID+39913
8FB0 FE00; Standardized_Variants; CID+40014
9023 FE00; Standardized_Variants; CID+58864
907C FE00; Standardized_Variants; CID+58866
908F FE00; Standardized_Variants; CID+40610
90CE FE00; Standardized_Variants; CID+40706
90DE FE00; Standardized_Variants; CID+40730
916A FE00; Standardized_Variants; CID+40994
91B4 FE00; Standardized_Variants; CID+41166
91CC FE00; Standardized_Variants; CID+41221
91CF FE00; Standardized_Variants; CID+41224
91D1 FE00; Standardized_Variants; CID+41227
9234 FE00; Standardized_Variants; CID+41409
9304 FE00; Standardized_Variants; CID+41812
934A FE00; Standardized_Variants; CID+41946
95AD FE00; Standardized_Variants; CID+42910
962E FE00; Standardized_Variants; CID+43087
964B FE00; Standardized_Variants; CID+43125
964D FE00; Standardized_Variants; CID+62979
9675 FE00; Standardized_Variants; CID+43193
9678 FE00; Standardized_Variants; CID+43201
9686 FE00; Standardized_Variants; CID+58868
96A3 FE00; Standardized_Variants; CID+62985
96B7 FE00; Standardized_Variants; CID+43321
96B8 FE00; Standardized_Variants; CID+43322
96E2 FE00; Standardized_Variants; CID+43413
96F6 FE00; Standardized_Variants; CID+43450
96F7 FE00; Standardized_Variants; CID+43453
9732 FE00; Standardized_Variants; CID+43581
9748 FE00; Standardized_Variants; CID+43630
9818 FE00; Standardized_Variants; CID+43995
985E FE00; Standardized_Variants; CID+58867
99F1 FE00; Standardized_Variants; CID+44843
9A6A FE00; Standardized_Variants; CID+45067
9B6F FE00; Standardized_Variants; CID+45594
9C57 FE00; Standardized_Variants; CID+45979
9DFA FE00; Standardized_Variants; CID+46622
9E1E FE00; Standardized_Variants; CID+46689
9E7F FE00; Standardized_Variants; CID+46792
9E97 FE00; Standardized_Variants; CID+63077
9E9F FE00; Standardized_Variants; CID+46885
9ECE FE00; Standardized_Variants; CID+47010
9F8D FE00; Standardized_Variants; CID+47443
9F9C FE00; Standardized_Variants; CID+63096
9F9C FE01; Standardized_Variants; CID+63096
# Unicode Version 12.0 SVSes
3001 FE00; Standardized_Variants; CID+1397
3001 FE01; Standardized_Variants; CID+63145
3002 FE00; Standardized_Variants; CID+1398
3002 FE01; Standardized_Variants; CID+63146
FF01 FE00; Standardized_Variants; CID+63147
FF01 FE01; Standardized_Variants; CID+59047
FF0C FE00; Standardized_Variants; CID+59058
FF0C FE01; Standardized_Variants; CID+63148
FF0E FE00; Standardized_Variants; CID+59060
FF0E FE01; Standardized_Variants; CID+63149
FF1A FE00; Standardized_Variants; CID+63150
FF1A FE01; Standardized_Variants; CID+59072
FF1B FE00; Standardized_Variants; CID+63151
FF1B FE01; Standardized_Variants; CID+59073
FF1F FE00; Standardized_Variants; CID+63152
FF1F FE01; Standardized_Variants; CID+59077
# EOF

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
FontName (SourceHanSansK-Regular)
FullName (Source Han Sans Korean Regular)
FamilyName (Source Han Sans Korean)
Weight (Regular)
version (2.004)
Registry (Adobe)
Ordering (Identity)
Supplement 0
Layout (AI0-SourceHanSans)
FSType 0
isFixedPitch false
UnderlinePosition -150
AdobeCopyright (Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
Trademark (Source is a trademark of Adobe in the United States and/or other countries.)
Serif false
IsBoldStyle false
IsItalicStyle false
PreferOS/2TypoMetrics false
IsOS/2WidthWeigthSlopeOnly false
IsOS/2OBLIQUE false
UseOldNameID4 false
LicenseCode ADOBE

View File

@ -0,0 +1,22 @@
FontName (SourceHanSansSC-Regular)
FullName (Source Han Sans Simplified Chinese Regular)
FamilyName (Source Han Sans Simplified Chinese)
Weight (Regular)
version (2.004)
Registry (Adobe)
Ordering (Identity)
Supplement 0
Layout (AI0-SourceHanSans)
FSType 0
isFixedPitch false
UnderlinePosition -150
AdobeCopyright (Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
Trademark (Source is a trademark of Adobe in the United States and/or other countries.)
Serif false
IsBoldStyle false
IsItalicStyle false
PreferOS/2TypoMetrics false
IsOS/2WidthWeigthSlopeOnly false
IsOS/2OBLIQUE false
UseOldNameID4 false
LicenseCode ADOBE

Some files were not shown because too many files have changed in this diff Show More