1
0
mirror of https://github.com/ValveSoftware/Proton.git synced 2025-03-13 14:00:34 +03:00

Compare commits

...

490 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: 
2023-12-07 13:43:40 +02:00
Paul Gofman
52667847c4 proton: Enable WINE_HEAP_DELAY_FREE for Trivia Tricks.
CW-Bug-Id: 
2023-12-07 13:43:40 +02:00
Paul Gofman
d229821fdf vrclient: Support v1.26.7.
CW-Bug-Id: 
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: 
2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
fc5c40db76 Update gst-orc to 0.4.34
CW-Bug-Id: 
2023-09-27 20:14:12 +03:00
Arkadiusz Hiler
dd087f3c03 Update gstreamer to 1.22.5.
CW-Bug-Id: 
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: 
2023-09-27 20:14:12 +03:00
Eric Pouech
21efd44cf2 Creation of symbol store generation.
CW-Bug-Id: 
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: 
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: 
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: 
2023-09-12 14:44:08 +03:00
Paul Gofman
231e7f24d8 proton: Enable gamedrive compat option for Empyrion - Galactic Survival.
CW-Bug-Id: 
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: 
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: 
2023-09-12 14:44:08 +03:00
Paul Gofman
e8df09e258 lsteamclient: Also overload lin SteamNetworkingMessage_t.m_pfnRelease.
CW-Bug-Id: 

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: 
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: 
2023-09-12 14:44:08 +03:00
Paul Gofman
a7bdd61d20 lsteamclient: Use plain memory allocation / free for SteamNetworkingMessage_t wrapper.
CW-Bug-Id: 
2023-09-12 14:44:08 +03:00
Paul Gofman
6ed890c9e9 lsteamclient: Avoid code duplication in handling SteamNetworkingMessage_t wrapping.
CW-Bug-Id: 
2023-09-12 14:44:08 +03:00
Paul Gofman
6d51ed29f3 steam_helper: Clear IsUnavailable for EA Desktop if set.
CW-Bug-Id: 
2023-09-12 14:44:08 +03:00
Paul Gofman
727f81d380 steam_helper: Increase desktop close timeout for EA Desktop.
CW-Bug-Id: 
2023-09-12 14:44:08 +03:00
Rémi Bernon
c53ff7a082 proton: Add dx8vb to the native redist DLLs list.
CW-Bug-Id: 
2023-09-12 14:44:08 +03:00
Anna Lasky
9b3457c857 proton: Enable gamedrive compat option for Garry's Mod.
CW-Bug-Id: 
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: 
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: 
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: 
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: 
2023-06-05 17:55:10 +03:00
Paul Gofman
3f57a0b71b proton: Disable fsync and esync for Call of Duty 2.
CW-Bug-Id: 
2023-06-05 17:55:10 +03:00
Paul Gofman
e488a6cbaf wineopenxr: Update to 1.0.27 registry version.
CW-Bug-Id: 
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: 
2023-06-05 17:55:10 +03:00
Paul Gofman
40103342d5 proton: Set enablenvapi for SoPFFO.
CW-Bug-Id: 
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: 
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: 
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: 
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: 
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: 
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: 
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: 
2023-03-08 17:35:54 +02:00
Paul Gofman
5610e4538f steam_helper: Set desktop close timeout for EA Desktop.
CW-Bug-Id: 
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: 
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: 
2023-02-14 16:07:44 +02:00
Paul Gofman
b59a3040d9 lsteamclient: Fix _GetAppInstallDir() return value.
CW-Bug-Id: 
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: 
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: 
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: 
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: 
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: 
2023-02-14 16:07:43 +02:00
Paul Gofman
f693c48a4c proton: Enable gamedrive compat option for As Dusk Fails.
CW-Bug-Id: 
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: 
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: 
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: 
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 ) 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
.

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: 
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: 
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: 
2022-10-14 18:21:56 +03:00
Paul Gofman
8d2e85be8c proton: Disable forced LAA for Sword and Fairy 4.
CW-Bug-Id: 
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: 
CW-Bug-Id: 
CW-Bug-Id: 
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: 
CW-Bug-Id: 
2022-08-10 19:29:30 +03:00
Jacek Caban
f3c98217cc gecko: Update version to 2.47.3.
CW-Bug-Id: 
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: 
2022-08-10 19:29:30 +03:00
Paul Gofman
7e27da4bc2 proton: Add Warframe to OPWR disablement list.
CW-Bug-Id: 

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: 
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: 
2022-08-10 19:29:30 +03:00
Paul Gofman
5e7036d566 steam_helper: Also store PROTON_VR_RUNTIME in registry.
CW-Bug-Id: 
2022-08-10 19:29:30 +03:00
Paul Gofman
bcd3d5218f lsteamclient: Wrap SteamAPIWarningMessageHook_t callback.
CW-Bug-Id: 
2022-08-10 19:29:30 +03:00
Paul Gofman
242d655a0f proton: Add dotnetfx35setup.exe builtin override.
CW-Bug-Id: 
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: 
2022-08-10 19:29:30 +03:00
Newbyte
7785b9ab78 proton: Add Terra Nil Demo to MFDXGI hack.
CW-Bug-Id: 
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: 
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: 
2022-08-10 19:23:14 +03:00
Bitwolf
0ba9319113 proton: Add POSTAL: Brain Damaged to MFDXGI hack
CW-Bug-Id: 
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: 
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: 
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: 
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: 
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: 
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
faf8b2e64d proton: Add Outward to MFDXGI hack.
CW-Bug-Id: 
2022-06-03 17:57:43 +03:00
Paul Gofman
673e1ae43d proton: Add V Rising to MFDXGI hack.
CW-Bug-Id: 
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
203580f96f Add two more games to MFDXGI manager hack.
CW-Bug-Id: 
CW-Bug-Id: 
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
cc8db7609b Add three more games to MFDXGI manager hack.
CW-Bug-Id: 
2022-06-03 17:57:43 +03:00
Anna Lasky
ced280e888 Add Ember Knights to IMFDXGIDeviceManager hack
CW-Bug-Id: 
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: 
2022-06-03 17:57:43 +03:00
Anna Lasky
d7452b523f Add EZ2ON REBOOT : R to MFDXGI manager hack
CW-Bug-ID: 
2022-06-03 17:57:43 +03:00
Paul Gofman
a216f5baa0 Add POSTAL4: No Regerts to MFDXGI manager hack.
CW-Bug-Id: 
2022-06-03 17:57:29 +03:00
Andrew Eikum
94772426ac Add Disintegration to MFDXGI manager hack
CW-Bug-Id: 
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: 

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: 
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: 
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: 
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: 
2022-04-21 13:02:27 +03:00
Paul Gofman
cd60b70756 lsteamclient: Fixup gameID parameter for SteamUser008_InitiateGameConnection().
CW-Bug-Id: 
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: 
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: 
2022-04-05 18:13:11 +03:00
Anna Lasky
f0876fb99c Add DJMAX RESPECT V to IMFDXGIDeviceManager hack
CW-Bug-Id: 
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: 
2022-04-05 18:13:11 +03:00
Andrew Eikum
023a715241 Add Rust to IMFDXGIDeviceManager hack
CW-Bug-Id: 
2022-04-05 18:13:11 +03:00
Andrew Eikum
0bbc7e480a Add Cook-Out to IMFDXGIDeviceManager hack
CW-Bug-Id: 
2022-04-05 18:03:47 +03:00
Andrew Eikum
99c07e4dae Add Haven to IMFDXGIDeviceManager hack
CW-Bug-Id: 
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: 

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: 
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: 
2022-01-24 22:53:20 +02:00
Andrew Eikum
293d4c2d8e add gst-plugins-rs submodule at 0.7.2
CW-Bug-Id: 
2022-01-24 22:53:20 +02:00
Andrew Eikum
32e058dcbc Makefile.in: Build dav1d
CW-Bug-Id: 
2022-01-24 22:53:20 +02:00
Andrew Eikum
07d27b9a81 add dav1d submodule at 0.9.2
CW-Bug-Id: 
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: 
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: 
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: 
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: 
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: 
2022-01-24 16:03:38 +02:00
Andrew Eikum
20ac2d95bc update liberation-fonts to 2.1.5
CW-Bug-Id: 
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: 
CW-Bug-Id: 
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: 
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: 
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: 
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: 
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: 
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: 
2022-01-19 11:29:54 +02:00
Andrew Eikum
e190c26058 media-converter: Use AV1/Opus instead of Theora/Vorbis
CW-Bug-Id: 
2022-01-19 11:29:54 +02:00
Andrew Eikum
48196af449 media-converter: Query upstream duration if needed
CW-Bug-Id: 
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: 
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: 
2021-11-19 18:35:48 +02:00
Derek Lesho
856c5e422e build: Build battleye bridge when present.
CW-Bug-Id: 
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: 
CW-Bug-Id: 
2021-11-12 17:28:23 +02:00
Paul Gofman
c218238762 wineopenxr: Get required vulkan extensions from registry.
CW-Bug-ID: 
2021-11-11 18:36:08 +02:00
Paul Gofman
daf8263323 steam_helper: Store OpenXR vulkan extensions in registry.
CW-Bug-ID: 
2021-11-11 18:36:08 +02:00
Paul Gofman
034ff27cf3 wineopenxr: Export __wineopenxr_get_extensions_internal() function.
CW-Bug-ID: 
2021-11-11 18:36:08 +02:00
Paul Gofman
89f8134740 steam_helper: Build as 64 bit.
CW-Bug-ID: 
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: 
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: 
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: 
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: 
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: 
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: 
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: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
0d88b6db78 build: Build vkd3d.
CW-Bug-Id: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
3b375e5463 build: Build SPIRV-Headers, sort of.
CW-Bug-Id: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
cac66b1914 build: Build Vulkan-Headers, sort of.
CW-Bug-Id: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
59fd9ea1da SPIRV-Headers: New submodule.
CW-Bug-Id: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
eb9c5d1821 Vulkan-Headers: New submodule.
CW-Bug-Id: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
d61fe4467d vkd3d: New submodule.
CW-Bug-Id: 
2021-11-11 18:36:07 +02:00
Zebediah Figura
44d9fb94b2 build: Run autoreconf in the container.
CW-Bug-Id: 
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: 
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: 
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: 
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: 

For Mafia II.
2021-11-11 18:36:07 +02:00
Andrew Eikum
b3c6c677bc lsteamclient: Fix SteamIPAddress_t size
CW-Bug-Id: 
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: 
2021-10-08 13:22:52 -05:00
Andrew Eikum
f9eef72c88 lsteamclient: Convert glyph paths in new ISteamInput005 methods
CW-Bug-Id: 
2021-10-08 13:22:52 -05:00
Andrew Eikum
4b9b102b31 lsteamclient: Convert path given to ISteamInput::SetInputActionManifestFilePath
CW-Bug-Id: 
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
929 changed files with 369769 additions and 434102 deletions
.github/ISSUE_TEMPLATE
.gitignore.gitmodulesFAudioLICENSELICENSE.protonMakefileMakefile.inOpenXR-SDKREADME.mdSPIRV-HeadersVagrantfileVulkan-HeadersVulkan-Loader
build
configure.shdav1ddefault_pfx.pydist.LICENSE
docker
docs
dxvkdxvk-nvapiffmpeg
fonts
glslang/bin

@ -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:
@ -39,6 +39,8 @@ attach the generated $HOME/steam-$APPID.log to this issue report as a file.
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.
-->

@ -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:

1
.gitignore vendored

@ -5,3 +5,4 @@
/.vagrant/
/vagrant_share/
/build/

43
.gitmodules vendored

@ -10,21 +10,12 @@
[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://gitlab.freedesktop.org/gstreamer/gstreamer.git
[submodule "gst-plugins-base"]
path = gst-plugins-base
url = https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git
[submodule "gst-plugins-good"]
path = gst-plugins-good
url = https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git
url = https://github.com/GStreamer/gstreamer.git
[submodule "gst-orc"]
path = gst-orc
url = https://gitlab.freedesktop.org/gstreamer/orc.git
url = https://github.com/GStreamer/orc.git
[submodule "vkd3d-proton"]
path = vkd3d-proton
url = https://github.com/HansKristian-Work/vkd3d-proton
@ -34,3 +25,33 @@
[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 0c352eb92de9a4901030c1bce4fc3ddf3b3f1aac

@ -1,10 +1,10 @@
Copyright (c) 2018-2020, 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

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

244
Makefile

@ -13,8 +13,10 @@ endif
# remove special chars
override _build_name := $(shell echo $(_build_name) | tr -dc '[:alnum:] ._-')
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),)
@ -23,17 +25,17 @@ else
DEPLOY_DIR := $(_build_name)
endif
enable_ccache := 1
ifneq ($(enable_ccache),0)
CCACHE_FLAG := ENABLE_CCACHE=1
endif
ifneq ($(module),)
ifneq ($(findstring .,$(module)),)
MODULE_SFX :=
else
MODULE_SFX := .dll
endif
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),)
@ -41,7 +43,7 @@ ifneq ($(unstripped),)
DEPLOY_DIR := $(DEPLOY_DIR)_unstripped
endif
CONFIGURE_CMD := ../proton/configure.sh \
CONFIGURE_CMD := ../../configure.sh \
--build-name="$(_build_name)"
ifneq ($(protonsdk_version),)
@ -50,10 +52,17 @@ 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 protonsdk
.PHONY: $(TOPLEVELGOALS)
help:
@echo "Proton Makefile instructions"
@ -61,8 +70,8 @@ help:
@echo "\"Quick start\" Makefile targets:"
@echo " install - Install Proton into current user's Steam installation"
@echo " redist - Build a package suitable for manual installation or distribution"
@echo " to other users in vagrant_share/ named after the nearest git tag"
@echo " deploy - Build Steam deployment files into a directory in vagrant_share/ named"
@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 ""
@ -73,55 +82,41 @@ help:
@echo " remember to always set it!"
@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 to disable ccache."
@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 ""
@echo " The following targets are development targets only useful after building Proton."
@echo " module - Rebuild a single Wine module and copy into vagrant_share/."
@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 vagrant_share/."
@echo " lsteamclient - Rebuild the Steam client wrapper and copy it into vagrant_share/."
@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 " with the current Proton branch name as the tool's name."
@echo ""
@echo " make redist - Build a Proton redistribution package in a tagged directory"
@echo " in vagrant_share/."
@echo " in $(BUILD_ROOT)/."
@echo ""
@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 ""
@echo "Running out of disk space in the VM? See resize-vagrant-disk.sh"
@echo " in the \"mytest\" build directory and place it into $(BUILD_ROOT)/dsound/."
VAGRANT_SHELL := vagrant ssh
clean:
rm -rf $(BUILD_DIR)
vagrant: private SHELL := $(SHELL)
vagrant:
vagrant up
vagrant rsync debian10
protonsdk:
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C docker $(UNSTRIPPED) PROTONSDK_VERSION=$(protonsdk_version) proton
clean: private SHELL := $(VAGRANT_SHELL)
clean: vagrant
rm -rf $(BUILD_DIR)/
protonsdk: private SHELL := $(VAGRANT_SHELL)
protonsdk: vagrant
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C proton/docker $(UNSTRIPPED) $(CCACHE_FLAG) PROTONSDK_VERSION=$(protonsdk_version) proton
configure: private SHELL := $(VAGRANT_SHELL)
configure: vagrant
if [ ! -e $(BUILD_DIR)/Makefile ]; \
then mkdir -p $(BUILD_DIR); \
configure: | $(BUILD_DIR)
if [ ! -e $(BUILD_DIR)/Makefile ]; then \
(cd $(BUILD_DIR) && $(CONFIGURE_CMD)); \
fi
@ -129,96 +124,101 @@ ifeq ($(protonsdk_version),local)
configure: protonsdk
endif
downloads: private SHELL := $(VAGRANT_SHELL)
downloads: configure
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR) downloads
proton: configure
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) dist && \
echo "Proton built locally. Use 'install', 'deploy' or 'redist' targets."
proton: private SHELL := $(VAGRANT_SHELL)
proton: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dist && \
echo "Proton built in VM. Use 'install' or 'deploy' targets to retrieve the build."
install-internal: | vagrant_share/compatibilitytools.d/$(_build_name)
install-internal: private SHELL := $(VAGRANT_SHELL)
install-internal: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) STEAM_DIR=/vagrant/ install
install: install-internal
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
cp -Rf --no-dereference --preserve=mode,links vagrant_share/compatibilitytools.d/$(_build_name) $(STEAM_DIR)/compatibilitytools.d/
install: configure
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) install
echo "Proton installed to your local Steam installation"
redist: | vagrant_share/$(DEPLOY_DIR)
redist: private SHELL := $(VAGRANT_SHELL)
redist: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && cp $(BUILD_DIR)/redist/* /vagrant/$(DEPLOY_DIR) && \
echo "Proton build available at 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: | vagrant_share/$(DEPLOY_DIR)-deploy
deploy: private SHELL := $(VAGRANT_SHELL)
deploy: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && cp $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)-deploy && \
echo "Proton deployed to vagrant_share/$(DEPLOY_DIR)-deploy"
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: | vagrant_share/$(module)/lib/wine/
module: | vagrant_share/$(module)/lib64/wine/
module: private SHELL := $(VAGRANT_SHELL)
module: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) module=$(module) module && \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module)$(MODULE_SFX)* /vagrant/$(module)/lib/wine/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module)$(MODULE_SFX)* /vagrant/$(module)/lib64/wine/ && \
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so ]; then \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so /vagrant/$(module)/lib/wine/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module).so /vagrant/$(module)/lib64/wine/; \
fi && \
rm -f /vagrant/$(module)/lib*/wine/*.fake
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
$(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
dxvk: | vagrant_share/dxvk/lib/wine/dxvk
dxvk: | vagrant_share/dxvk/lib64/wine/dxvk
dxvk: private SHELL := $(VAGRANT_SHELL)
dxvk: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll /vagrant/dxvk/lib/wine/dxvk/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll /vagrant/dxvk/lib64/wine/dxvk/
any $(CONTAINERGOALS): configure
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CONTAINERGOALS)
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib/wine/nvapi
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib64/wine/nvapi
dxvk-nvapi: private SHELL := $(VAGRANT_SHELL)
dxvk-nvapi: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk-nvapi && \
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib/wine/nvapi/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib64/wine/nvapi/
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/
vkd3d-proton: | vagrant_share/vkd3d-proton/lib/wine/vkd3d-proton
vkd3d-proton: | vagrant_share/vkd3d-proton/lib64/wine/vkd3d-proton
vkd3d-proton: private SHELL := $(VAGRANT_SHELL)
vkd3d-proton: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vkd3d-proton && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib/wine/vkd3d-proton/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib64/wine/vkd3d-proton/
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/
lsteamclient: | vagrant_share/lsteamclient/lib/wine
lsteamclient: | vagrant_share/lsteamclient/lib64/wine
lsteamclient: private SHELL := $(VAGRANT_SHELL)
lsteamclient: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) lsteamclient && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib/wine && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib64/wine
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/
vrclient: | vagrant_share/vrclient/lib/wine
vrclient: | vagrant_share/vrclient/lib64/wine
vrclient: private SHELL := $(VAGRANT_SHELL)
vrclient: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vrclient && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vrclient.dll.so /vagrant/vrclient/lib/wine && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vrclient_x64.dll.so /vagrant/vrclient/lib64/wine
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/
wineopenxr: | vagrant_share/wineopenxr/lib/wine
wineopenxr: | vagrant_share/wineopenxr/lib64/wine
wineopenxr: private SHELL := $(VAGRANT_SHELL)
wineopenxr: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) wineopenxr && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/wineopenxr.dll.so /vagrant/wineopenxr/lib64/wine
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/
vagrant_share/%:
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 +1 @@
Subproject commit 960c4a6aa8cc9f47e357c696b5377d817550bf88
Subproject commit 58a00cf85c39ad5ec4dc43a769624e420c06179a

484
README.md

@ -1,287 +1,265 @@
---
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 works best with the latest graphics drivers. For some cutting edge games and graphical features, you may need drivers newer than what your distribution ships.
* 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
Obtaining Proton sources
------------------------
Acquire Proton's source by cloning <https://github.com/ValveSoftware/Proton>
and checking out the branch you desire. Be sure to update submodules when
switching between or updating branches.
and checking out the branch you desire.
You can clone the latest Proton to your system with this command:
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
cd proton
```bash
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
```
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.
Be sure to update submodules when switching between branches:
---
Easy build path
---
```bash
git checkout experimental_6.3
git submodule update --init --recursive
```
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.
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.
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 and configure before invoking these commands. Proton's build
system is most well tested with Vagrant's VirtualBox and libvirt/qemu backends.
It also requires the vagrant-sshfs plugin. You may run into problems with the
shared folder (`vagrant_share`) and/or CPU and memory usage with other
backends.
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.
Building Proton
---------------
After checking out Proton and updating its submodules, you can use these
targets to build Proton:
Most of Proton builds inside the Proton SDK container with very few
dependencies on the host side.
`make install` - This will build and install Proton into your user's Steam
directory. 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.
## Preparing the build environment
`make redist` - This will create a build which you can easily redistribute to
other users. The package will be dropped into a new directory in
`vagrant_share/`, named after the nearest Git tag (see `git describe`). Copying
this directory into `~/.steam/root/compatibilitytools.d/` will make the build
available after restarting the Steam client. If you distribute your build to
other users, be sure to understand and follow your obligations to make your
source code modifications available to your users, see <tt>LICENSE</tt>.
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]).
`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`).
[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 clean` - This will completely erase the Proton build tree within the VM.
`make help` - View the Makefile documentation and examples.
## The Easy Way
We also provide targets useful for simple Wine development:
We provide a top-level Makefile which will execute most of the build commands
for you.
`make proton` - This will build Proton without copying its files out of the VM.
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:
`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.
```bash
make install
```
`make dxvk` - This will rebuild DXVK and copy it into `vagrant_share`.
If your build system is missing dependencies, it will fail quickly with a clear
error message.
`make vkd3d-proton` - This will rebuild vkd3d-proton and copy it into
`vagrant_share`.
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.
If you are doing significant Wine development or want to control the build with
more fine detail, see the full documentation below.
See `make help` for other build targets and options.
---
Building
---
At a high level, the build instructions are:
1. Set up your build environment
1. Configure the build
1. Build Proton
1. Install Proton locally (optional)
See below for more details on all of these steps. Please read all of the
instructions before proceeding.
## Manual building
---
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 virtual machine. However, you should be able to follow these
instructions on other distributions as well.
### Configuring the build
Proton provides a Vagrantfile, which will automatically set up the Debian VM
for you. After installing [Vagrant](https://www.vagrantup.com/), initialize the
VM by running from within the Proton directory:
```bash
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
```
vagrant up
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.
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
At this point you will need to configure the build directory. See below.
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.
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.
When you are done with the VM, you can shut it down from the host machine:
vagrant halt
Please read the Vagrant documentation for more information about how to use
Vagrant VMs.
If you do not wish to use Vagrant, you can read through the Vagrantfile 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 10, but you should be able
to adapt them for other distributions.
---
Configure the build
---
After setting up the build machine, 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.
To build Proton using the official Proton SDK images:
mkdir build/
cd build
../proton/configure.sh
If you want to build with a custom version of the Proton SDK images, then instead use:
../proton/configure.sh --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>
Or, if you want to build without the Proton SDK, then instead use:
../proton/configure.sh --no-proton-sdk
**Tip**: If you are building without the Steam runtime, you should now run
`make wine-configure64 wine-configure32` 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`, `oss`. More than that may indicate a problem. Please see your
distro's documentation to acquire the considerable build dependencies for Wine.
Be aware that the build you make may not run correctly on other machines and
distributions.
---
Build Proton
---
A couple of Makefile targets are provided.
`make dist` will create a Proton installation in `dist/` that you can install
manually (see below), or automatically with `make install`.
`make deploy` will package Proton up for distribution via Steamworks.
---
Building without the VM
---
Since most of the build happens inside the Proton SDK container, building
without a VM should be mostly safe. It requires a working container engine
(Docker / Podman) and few command line tools.
Running `configure.sh` will check if containers are functional and prompt you
if any dependencies are missing.
The build by default uses Docker, but you can switch to another, compatible
engine with `--container-engine=<executable_name>`.
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>`.
You can enable ccache with `--enable-cache` flag. This will mount your
`$CCACHE_DIR` or `$HOME/.ccache` inside the container.
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.
`--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.
Check `--help` for other configuration options.
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.
[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/
Example:
### Building
```
make
```
**Important make targets:**
`make install` - install Proton into your user's Steam directory, see the [install Proton
locally](#install-proton-locally) section for details.
`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
```
mkdir build && cd build
../proton/configure.sh --container-engine=podman --enable-ccache
make dist
---
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 Steam Play 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
├── 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
@ -295,40 +273,44 @@ 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-<tt>0</tt> value. To disable an
option, set the variable to <tt>0</tt>. To use Steam's default configuration, do
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 `$PROTON_LOG_DIR/steam-$APPID.log` For more thorough logging, use `user_settings.py`. |
| | <tt>PROTON_LOG_DIR</tt> | Output log files into the directory specified. Defaults to your home directory. |
| | <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>PROTON_CRASH_REPORT_DIR</tt> | Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually. |
| <tt>wined3d</tt> | <tt>PROTON_USE_WINED3D</tt> | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9. |
| <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>nofsync</tt> | <tt>PROTON_NO_FSYNC</tt> | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no `FUTEX_WAIT_MULTIPLE` support.) |
| <tt>noxim</tt> | <tt>PROTON_NO_XIM</tt> | 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. |
| <tt>enablenvapi</tt> | <tt>PROTON_ENABLE_NVAPI</tt> | Enable NVIDIA's NVAPI GPU support library. |
| <tt>nativevulkanloader</tt> | | 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. |
| <tt>forcelgadd</tt> | <tt>PROTON_FORCE_LARGE_ADDRESS_AWARE</tt> | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. |
| <tt>heapdelayfree</tt>| <tt>PROTON_HEAP_DELAY_FREE</tt>| Delay freeing some memory, to work around application use-after-free bugs. |
| <tt>gamedrive</tt> | <tt>PROTON_SET_GAME_DRIVE</tt> | Create an S: drive which points to the Steam Library which contains the game. |
| <tt>noforcelgadd</tt> | | Disable forcelgadd. If both this and `forcelgadd` are set, enabled wins. |
| <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. |
| <tt>vkd3dfl12</tt> | | Force the Direct3D 12 feature level to 12, regardless of driver support. |
| <tt>vkd3dbindlesstb</tt>| | Put `force_bindless_texel_buffer` into `VKD3D_CONFIG`. |
| <tt>hidenvgpu</tt> | <tt>PROTON_HIDE_NVIDIA_GPU</tt>| 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. |
| | <tt>WINE_FULLSCREEN_INTEGER_SCALING</tt> | Enable integer scaling mode, to give sharp pixels when upscaling. |
| <tt>cmdlineappend:</tt>| | 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. |
| <tt>nowritewatch</tt> | <tt>PROTON_NO_WRITE_WATCH</tt> | 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). |
| <tt>seccomp</tt> | <tt>PROTON_USE_SECCOMP</tt> | **Note: Obsoleted in Proton 5.13.** In older versions, enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work. |
| <tt>d9vk</tt> | <tt>PROTON_USE_D9VK</tt> | **Note: Obsoleted in Proton 5.0.** In older versions, use Vulkan-based DXVK instead of OpenGL-based wined3d for d3d9. |
| 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

103
Vagrantfile vendored

@ -1,103 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version ">= 2.2.0"
module OS
def OS.windows?
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
end
def OS.mac?
(/darwin/ =~ RUBY_PLATFORM) != nil
end
def OS.unix?
!OS.windows?
end
def OS.linux?
OS.unix? and not OS.mac?
end
end
# Vagrant file for setting up a build environment for Proton.
if OS.linux?
cpus = `nproc`.to_i
# meminfo shows KB and we need to convert to MB
memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
elsif OS.mac?
cpus = `sysctl -n hw.physicalcpu`.to_i
# sysctl shows bytes and we need to convert to MB
memory = `sysctl hw.memsize | sed -e 's/hw.memsize: //'`.to_i / 1024 / 1024 / 2
else
cpus = 1
memory = 1024
puts "Vagrant launched from unsupported platform."
end
memory = [memory, 4096].max
puts "Platform: " + cpus.to_s + " CPUs, " + memory.to_s + " MB memory"
Vagrant.configure(2) do |config|
#libvirt doesn't have a decent synced folder, so we have to use vagrant-sshfs.
#This is not needed for virtualbox, but I couldn't find a way to use a
#different synced folder type per provider, so we always use it.
config.vagrant.plugins = "vagrant-sshfs"
config.vm.provider "virtualbox" do |v|
v.cpus = [cpus, 32].min # virtualbox limit is 32 cpus
v.memory = memory
end
config.vm.provider "libvirt" do |v|
v.cpus = cpus
v.memory = memory
v.random_hostname = true
v.default_prefix = ENV['USER'].to_s.dup.concat('_').concat(File.basename(Dir.pwd))
end
#debian10-based build VM
config.vm.define "debian10", primary: true do |debian10|
debian10.vm.box = "generic/debian10"
debian10.vm.synced_folder "./vagrant_share/", "/vagrant/", create: true, type: "sshfs", sshfs_opts_append: "-o cache=no"
debian10.vm.synced_folder ".", "/home/vagrant/proton", id: "proton", type: "rsync", rsync__exclude: ["vagrant_share"]
debian10.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 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 buster stable"
#install host build-time dependencies
apt-get update
apt-get install -y ccache texinfo gpgv2 gnupg2 git docker-ce docker-ce-cli containerd.io \
fontforge-nox python-debian python-pip
#install adobe font devkit to build source san hans
pip install afdko
#work around an afdko dependency bug
pip install singledispatch==3.4.0.4
#allow vagrant user to run docker
adduser vagrant docker
# use faster overlay2 docker driver
echo '{"storage-driver": "overlay2"}' >/etc/docker/daemon.json
#allow user to run stuff in steamrt
sysctl kernel.unprivileged_userns_clone=1
mkdir -p /etc/sysctl.d/
echo kernel.unprivileged_userns_clone=1 > /etc/sysctl.d/docker_user.conf
#ensure we use only the mingw-w64 that we built
apt-get remove -y '*mingw-w64*'
SHELL
end
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

@ -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} $*"; }
@ -46,34 +46,24 @@ dependency_command() {
fi
}
dependency_afdko() {
if command -v makeotf &> /dev/null; then
AFDKO_VERB=
elif command -v afdko &> /dev/null; then
AFDKO_VERB=afdko
else
err "Couldn't find 'afdko'. Install it and make sure that 'makeotf' is in your PATH or 'afdko makeotf' works."
MISSING_DEPENDENCIES=1
fi
}
CONTAINER_MOUNT_OPTS=""
check_container_engine() {
info "Making sure that the container engine is working."
if ! cmd $arg_container_engine run --rm $arg_protonsdk_image; then
die "Broken container engine. Please fix your $arg_container_engine setup."
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="$($arg_container_engine run -v "$(pwd):/test$CONTAINER_MOUNT_OPTS" \
--rm $arg_protonsdk_image \
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 $arg_container_engine setup works."
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
@ -81,7 +71,7 @@ check_container_engine() {
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 $arg_container_engine setup."
die "Don't know how to map permissions. Please check your $1 setup."
fi
}
@ -104,11 +94,21 @@ function escape_for_make() {
}
function configure() {
local steamrt_image="$1"
local steamrt_name="$2"
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
@ -118,18 +118,7 @@ function configure() {
info "No build name specified, using default: $build_name"
fi
dependency_command fontforge
dependency_command find "findutils"
dependency_command make "GNU Make"
dependency_command rsync
dependency_command wget
dependency_command xz
dependency_command patch
dependency_command autoconf
dependency_command git
dependency_command python3
dependency_afdko
if [ "$MISSING_DEPENDENCIES" -ne 0 ]; then
die "Missing dependencies, cannot continue."
@ -140,9 +129,20 @@ function configure() {
fi
if [[ -n "$arg_container_engine" ]]; then
check_container_engine
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"
@ -154,9 +154,10 @@ function configure() {
echo "SRCDIR := $(escape_for_make "$srcdir")"
echo "BUILD_NAME := $(escape_for_make "$build_name")"
# SteamRT
echo "STEAMRT_NAME := $(escape_for_make "$steamrt_name")"
echo "STEAMRT_IMAGE := $(escape_for_make "$steamrt_image")"
# SteamRT was specified, baking it into the Makefile
if [[ -n $arg_protonsdk_image ]]; then
echo "STEAMRT_IMAGE := $(escape_for_make "$arg_protonsdk_image")"
fi
echo "ROOTLESS_CONTAINER := $ROOTLESS_CONTAINER"
echo "CONTAINER_ENGINE := $arg_container_engine"
@ -169,12 +170,13 @@ function configure() {
if [[ -n "$arg_enable_ccache" ]]; then
echo "ENABLE_CCACHE := 1"
fi
echo "AFDKO_VERB := $AFDKO_VERB"
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."
@ -185,14 +187,13 @@ function configure() {
# Parse arguments
#
arg_steamrt="soldier"
arg_protonsdk_image="registry.gitlab.steamos.cloud/proton/soldier/sdk:0.20210505.0-2"
arg_no_protonsdk=""
arg_protonsdk_image=""
arg_build_name=""
arg_container_engine="docker"
arg_container_engine=""
arg_docker_opts=""
arg_relabel_volumes=""
arg_enable_ccache=""
arg_enable_bear=""
arg_help=""
invalid_args=""
function parse_args() {
@ -239,14 +240,11 @@ function parse_args() {
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_protonsdk_image="$val"
elif [[ $arg = --steam-runtime ]]; then
val_used=1
arg_steamrt="$val"
elif [[ $arg = --no-proton-sdk ]]; then
arg_no_protonsdk=1
else
err "Unrecognized option $arg"
return 1
@ -281,7 +279,7 @@ function parse_args() {
}
usage() {
"$1" "Usage: $0 { --no-proton-sdk | --proton-sdk-image=<image> --steam-runtime=<name> }"
"$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" ""
@ -290,8 +288,8 @@ usage() {
"$1" ""
"$1" " --build-name=<name> Set the name of the build that displays when used in Steam"
"$1" ""
"$1" " --container-engine=<engine> Which container Docker-compatible container engine to use,"
"$1" " e.g. podman. Defaults to docker."
"$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" ""
@ -299,6 +297,8 @@ usage() {
"$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."
@ -307,21 +307,10 @@ usage() {
"$1" " for build steps that must be run in an SDK"
"$1" " environment. See README.md for instructions to"
"$1" " create this image."
"$1" " --steam-runtime=soldier Name of the steam runtime release to build for (soldier, scout)."
"$1" ""
"$1" " --no-proton-sdk Do not automatically invoke any runtime SDK as part of the build."
"$1" " Build steps may still be manually run in a runtime environment."
exit 1;
}
parse_args "$@" || usage err
[[ -z $arg_help ]] || usage info
# Sanity check arguments
if [[ -n $arg_no_protonsdk && -n $arg_protonsdk_image ]]; then
die "Cannot specify --proton-sdk-image as well as --no-proton-sdk"
elif [[ -z $arg_no_protonsdk && -z $arg_protonsdk_image ]]; then
die "Must specify either --no-proton-sdk or --proton-sdk-image"
fi
configure "$arg_protonsdk_image" "$arg_steamrt"
configure

1
dav1d Submodule

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

@ -6,6 +6,7 @@
import os
import subprocess
import re
def file_is_wine_builtin_dll(path):
if not os.path.exists(path):
@ -59,36 +60,72 @@ def setup_dll_symlinks(default_pfx_dir, dist_dir):
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')
libdir = os.path.join(dist_dir, 'lib/wine/i386-windows')
elif bitness == 64:
libdir = os.path.join(dist_dir, 'lib64/wine')
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_)
elif os.path.exists(os.path.join(libdir, 'fakedlls', file_)):
target = os.path.join(libdir, 'fakedlls', file_)
else:
continue
os.unlink(filename)
make_relative_symlink(target, filename)
def make_default_pfx(default_pfx_dir, dist_dir, runtime):
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"
if runtime is None:
local_env["LD_LIBRARY_PATH"] = ld_path
local_env["WINEPREFIX"] = default_pfx_dir
local_env["WINEDEBUG"] = "-all"
runtime_args = []
else:
#the runtime clears the environment, so we pass it in on the CL via env
runtime_args = runtime + ["env",
"LD_LIBRARY_PATH=" + ld_path,
"WINEPREFIX=" + default_pfx_dir,
"WINEDEBUG=-all"]
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 && " +
@ -96,10 +133,11 @@ def make_default_pfx(default_pfx_dir, dist_dir, runtime):
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
if len(sys.argv) > 3:
make_default_pfx(sys.argv[1], sys.argv[2], sys.argv[3:])
else:
make_default_pfx(sys.argv[1], sys.argv[2], None)
make_default_pfx(sys.argv[1], sys.argv[2])

@ -1,4 +1,4 @@
Copyright (c) 2018-2021, Valve Corporation
Copyright (c) 2018-2022, Valve Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@ -34,7 +34,7 @@ Browse the source code for more information
This software contains a modified version of Wine licensed under the LGPL 2.1. Wine is
Copyright (c) 1993-2021 the Wine project authors
Copyright (c) 1993-2022 the Wine project authors
Visit Wine at
@ -48,8 +48,8 @@ View our modifications at
This software contains a modified version of DXVK licensed under the zlib/libpng license. DXVK is
Copyright (c) 2017-2021 Philip Rebohle
Copyright (c) 2019-2021 Joshua Ashton
Copyright (c) 2017-2022 Philip Rebohle
Copyright (c) 2019-2022 Joshua Ashton
Visit DXVK at
@ -61,9 +61,19 @@ View our modifications at
---- ---- ---- ----
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-2021 Ethan Lee, Luigi Auriemma, and the MonoGame Team
Copyright (c) 2011-2022 Ethan Lee, Luigi Auriemma, and the MonoGame Team
Visit FAudio at
@ -71,14 +81,6 @@ Visit FAudio at
---- ---- ---- ----
This software contains glib licensed under the LGPL 2.1.
Visit glib at
https://wiki.gnome.org/Projects/GLib
---- ---- ---- ----
This software contains gstreamer, gst-plugins-base, and gst-plugins-good licensed under the LGPL 2.
Visit gstreamer at
@ -100,7 +102,7 @@ Visit Liberation Fonts at
This software contains Source Han Sans licensed under the SIL Open Font License, available at LICENSE.OFL. This font is
Copyright 2020 Adobe (http://www.adobe.com/)
Copyright 2014-2021 Adobe (http://www.adobe.com/)
Visit Source Han Sans at
@ -108,6 +110,19 @@ Visit Source Han Sans at
---- ---- ---- ----
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.
@ -174,16 +189,6 @@ wine-gecko is available in Source Code form at
---- ---- ---- ----
This software contains vkd3d-proton licensed under the LGPL 2.1. vkd3d-proton is
Copyright 2016-2020 the vkd3d-proton project authors
Visit vkd3d-proton at
https://github.com/HansKristian-Work/vkd3d-proton
---- ---- ---- ----
This software contains orc. Orc is
Copyright 2002 - 2009 David A. Schleef <ds@schleef.org>
@ -252,12 +257,10 @@ Visit orc at
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) 2010 The Rust Project Developers
autocfg <https://github.com/cuviper/autocfg>
Copyright (c) 2018 Josh Stone
Copyright (c) 2017-2020 The array-init developers
bitflags <https://github.com/bitflags/bitflags>
num-integer <https://github.com/rust-num/num-integer>
@ -266,29 +269,24 @@ This software contains the following Rust libraries under the MIT license:
Copyright (c) 2014 The Rust Project Developers
cfg-if <https://github.com/alexcrichton/cfg-if>
pkg-config <https://github.com/rust-lang/pkg-config-rs>
proc-macro2 <https://github.com/alexcrichton/proc-macro2>
proc-macro2 <https://github.com/dtolnay/proc-macro2>
toml <https://github.com/alexcrichton/toml-rs>
Copyright (c) 2014 Alex Crichton
chrono <https://github.com/chronotope/chrono>
Copyright (c) 2014 Kang Seonghoon
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-macro <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
glib <https://github.com/gtk-rs/glib>
Copyright (c) 2013-2015 The Gtk-rs Project Developers
heck <https://github.com/withoutboats/heck>
unicode-segmentation <https://github.com/unicode-rs/unicode-segmentation>
unicode-xid <https://github.com/unicode-rs/unicode-xid>
@ -303,41 +301,35 @@ This software contains the following Rust libraries under the MIT license:
murmur3 <https://github.com/stusmall/murmur3>
Copyright (c) 2016 Stu Small
pin-utils <https://github.com/rust-lang/pin-utils>
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
proc-macro-hack <https://github.com/dtolnay/proc-macro-hack>
Copyright (c) 2018 David Tolnay
quote <https://github.com/dtolnay/quote>
Copyright (c) 2016 The Rust Project Developers
slab <https://github.com/carllerche/slab>
slab <https://github.com/tokio-rs/slab>
Copyright (c) 2019 Carl Lerche
time <https://github.com/time-rs/time>
Copyright (c) 2019 Jacob Pratt
version_check <https://github.com/SergioBenitez/version_check>
Copyright (c) 2017-2018 Sergio Benitez
smallvec <https://github.com/servo/rust-smallvec>
Copyright (c) 2018 The Servo Project Developers
anyhow <https://github.com/dtolnay/anyhow>
either <https://github.com/bluss/either>
itertools <https://github.com/rust-itertools/itertools>
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 <https://github.com/taiki-e/pin-project>
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>
syn-mid <https://github.com/taiki-e/syn-mid>
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
@ -443,3 +435,33 @@ This software contains the jxrlib library, which is
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.

@ -1,41 +1,44 @@
STEAMRT_VERSION = 0.20210126.1
STEAMRT_VERSION = 0.20230905.59202
STEAMRT_URLBASE = registry.gitlab.steamos.cloud
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/soldier/sdk
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_i686 = i386/ubuntu:18.04
BASE_IMAGE_x86_64 = ubuntu:18.04
BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:0.20221017.1
BINUTILS_VERSION = 2.36.1
GCC_VERSION = 10.2.0
MINGW_VERSION = 8.0.0
RUST_VERSION = 1.50.0
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 = e81d9edf373f193af428a0f256674aea62a9d74dfe93f65192d4eae030b0f3b0
GCC_SHA256 = b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c
MINGW_SHA256 = 44c740ea6ab3924bc3aa169bad11ad3c5766c5c8459e3126d44eabb8735a5762
RUST_SHA256_x86_64 = fa889b53918980aea2dea42bfae4e858dcb2104c6fdca6e4fe359f3a49767701
RUST_SHA256_i686 = dee56dc425ed5d8e8112f26fba3060fd324c49f1261e0b7e8e29f7d9b852b09a
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
%.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' \
@ -56,37 +59,43 @@ DOCKER = docker
-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): BASE_IMAGE = $(BASE_IMAGE_$(1))
build-base-$(1): build-base-$(1).Dockerfile
rm -rf build; mkdir -p build
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/build-base-$(1):latest \
--cache-from=$(PROTONSDK_URLBASE)/build-base-$(1) \
-t $(PROTONSDK_URLBASE)/build-base-$(1):latest \
build
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/build-base-$(1):latest
push::
@ -100,12 +109,11 @@ define create-binutils-rules
.PHONY: binutils-$(1)-$(2)
all binutils: binutils-$(1)-$(2)
binutils-$(1)-$(2): binutils-$(1)-$(2).Dockerfile | build-base
rm -rf build; mkdir -p build
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION) \
--cache-from=$(PROTONSDK_URLBASE)/binutils-$(1)-$(2) \
-t $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION) \
-t $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):latest \
build
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION)
push::
@ -118,16 +126,21 @@ $(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
rm -rf build; mkdir -p build
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION) \
--cache-from=$(PROTONSDK_URLBASE)/mingw-$(2)-$(1) \
-t $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION) \
-t $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):latest \
build
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION)
push::
@ -146,20 +159,23 @@ $(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
rm -rf build; mkdir -p build
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION) \
--cache-from=$(PROTONSDK_URLBASE)/gcc-$(1)-$(2) \
-t $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION) \
-t $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):latest \
build
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION)
push::
@ -175,14 +191,13 @@ $(eval $(call create-gcc-rules,x86_64,w64-mingw32))
define create-proton-rules
.PHONY: proton
all: proton
proton: BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/soldier/sdk:$(STEAMRT_VERSION)
proton: BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:$(STEAMRT_VERSION)
proton: proton.Dockerfile | gcc
rm -rf build; mkdir -p build
$(DOCKER) build -f $$< \
--cache-from=$(PROTONSDK_URLBASE):$(PROTONSDK_VERSION) \
--cache-from=$(PROTONSDK_URLBASE) \
-t $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION) \
-t $(PROTONSDK_URLBASE):latest \
build
context
pull::
-$(DOCKER) pull $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION)
push::
@ -198,13 +213,16 @@ sources::
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 -

@ -1,9 +1,9 @@
Proton (soldier) SDK
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/soldier/sdk>, but this can be
<https://gitlab.steamos.cloud/proton/sniper/sdk>, but this can be
used to create local images too.
Local usage
@ -31,11 +31,11 @@ To update the official Proton SDK images:
commit and push the changes.
2) Update `.gitlab-ci.yml` in the
[Proton SDK](https://gitlab.steamos.cloud/proton/soldier/sdk)
[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 satifying, tag the version in Proton SDK
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.
@ -72,7 +72,7 @@ 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/soldier/sdk).
[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

File diff suppressed because it is too large Load Diff

@ -40,6 +40,7 @@ RUN wget -q @GCC_URLBASE@/@GCC_SOURCE@ \
--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 \

@ -13,7 +13,8 @@ RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
--prefix=/usr/@ARCH@-w64-mingw32/ \
--host=@ARCH@-w64-mingw32 \
--enable-wildcard \
MAKEINFO=true || cat config.log \
@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 \

@ -15,6 +15,7 @@ RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
--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 \

@ -52,9 +52,40 @@ RUN bash -c 'mkdir -p /usr/lib/ccache && ls /usr/bin/{,*-}{cc,c++,gcc,g++}{,-[0-
ENV PATH=/usr/lib/ccache:$PATH
RUN apt-get install -y \
tini \
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"]

@ -14,54 +14,69 @@ 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 applictions to talk to any type of
joystick. On Windows, it is likely 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."
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 likely implemented on top of hid.
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| | | | |
------ / | | |
| / | | |
--- / / | \
|hid|--- / | \
--- / | \
| / | \
-------- ------ -----
|rawinput| |dinput| |winmm|
-------- ------ -----
| | |
----------- | ----------------
|winebus.sys| | |winejoystick.drv|
----------- | ----------------
| \ / | wine
***|*********|***********|****************
\ | | linux
\ ---- |
\ |SDL2| |
\ ---- |
\ | \ |
\ | ---- |
\ | \ |
------ -----------
|hidraw| |input event|
------ -----------
----------
| game.exe |
----------
/ | | | \
/ | | | \ application
*********/****|*|**|****\******************
| | | \ \ wine
| | | | \
------ | | ----- \
|xinput| | | |winmm| |
------ | | ----- |
| | \ | |
| | | | |
\ | ------ |
\ | |dinput| |
\ | ------ /
| | / /
| | | /
--- /
|hid| /
--- /
| /
| |
--------
|rawinput|
--------
|
-----------
|winebus.sys|
-----------
| | wine
************|******|***********************
| | linux
| ----
| |SDL2|
| ----
| | \
| | \
| | |
------ -----------
|hidraw| |input event|
------ -----------
| |
\ /
========
|hardware|
========
Some things to note:
@ -74,7 +89,7 @@ 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 had to duplicate
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,
@ -98,16 +113,3 @@ 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.
Future improvements:
winmm's joystick APIs should be implemented on top of HID so it can use the
Steam controller mapping feature via winebus/SDL2.
xinput should be implemented on top of rawinput, as the Xbox HID compatibility
layer does not provide all of the features xinput requires. We currently use a
hack to work around this.
dinput should be implemented on top of HID, so we can avoid the code
duplication we have now with both winebus and dinput using SDL2 directly.

26
docs/ICMP_ECHO.md Normal 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>"
```

@ -6,7 +6,7 @@ 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 priviledged user by editing the
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:

2
dxvk

@ -1 +1 @@
Subproject commit b63ceedaef9333d82056e0fca71ef6a9165e3011
Subproject commit 1b31aa5dbca0749d0737cff02043acb061332fb6

@ -1 +1 @@
Subproject commit 8b3987f6707946b9202eda3dda38632197d2286b
Subproject commit 0a7c48b256cafe6b3fa1db8183f089712c72e9ad

1
ffmpeg Submodule

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

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

@ -1,3 +1,5 @@
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.

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.

@ -1,11 +0,0 @@
This package is part of the noto project. Visit
google.com/get/noto for more information.
Built on 2017-10-24 from the following noto repository:
-----
Repo: noto-fonts
Tag: v2017-10-24-phase3-second-cleanup
Date: 2017-10-24 12:10:34 GMT
Commit: 8ef14e6c606a7a0ef3943b9ca01fd49445620d79
Remove some files that aren't for release.

@ -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

@ -1,5 +0,0 @@
[SourceHanSans-Regular]
f=3,1,0x411,\FF2D\FF33 \30B4\30B7\30C3\30AF
s=3,1,0x411,\6A19\6E96
f=MS Gothic
s=Regular

@ -1,5 +0,0 @@
[SourceHanSans-Regular]
f=3,1,0x411,\FF2D\FF33 \FF30\30B4\30B7\30C3\30AF
s=3,1,0x411,\6A19\6E96
f=MS PGothic
s=Regular

@ -1,5 +0,0 @@
[SourceHanSans-Regular]
f=3,1,0x411,MS UI Gothic
s=3,1,0x411,\6A19\6E96
f=MS UI Gothic
s=Regular

@ -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.

@ -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.

@ -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.

140
fonts/ranges/arial Normal 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

@ -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

@ -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

@ -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

@ -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()

File diff suppressed because it is too large Load Diff

@ -29,8 +29,8 @@
8941 E0105; KRName; CID+62775
8AA0 E0104; KRName; CID+37864
8AA0 E0105; KRName; CID+62792
8ACB E0104; KRName; CID+62792
8ACB E0105; KRName; CID+37864
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

@ -3,9 +3,9 @@
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (UniSourceHanSansCN-UTF32-H)
%%Title: (UniSourceHanSansCN-UTF32-H Adobe Identity 0)
%%Version: 2.001
%%Version: 2.004
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2019 Adobe. All rights reserved.
%%Copyright: Copyright 1990-2021 Adobe. All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
@ -53,7 +53,7 @@ begincmap
end def
/CMapName /UniSourceHanSansCN-UTF32-H def
/CMapVersion 2.001 def
/CMapVersion 2.004 def
/CMapType 1 def
/WMode 0 def
@ -11804,7 +11804,7 @@ endcidchar
<0002f91a> 61840
endcidchar
8 begincidchar
12 begincidchar
<0002f945> 61843
<0002f947> 61844
<0002f96c> 61845
@ -11813,6 +11813,10 @@ endcidchar
<0002f9d0> 61849
<0002f9d4> 61850
<0002f9f4> 61853
<00030729> 61858
<00030edd> 61859
<00030ede> 61856
<0003106c> 61861
endcidchar
100 begincidrange

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

File diff suppressed because it is too large Load Diff

@ -1,22 +0,0 @@
FontName (SourceHanSans-Regular)
FullName (Source Han Sans Regular)
FamilyName (Source Han Sans)
Weight (Regular)
version (2.001)
Registry (Adobe)
Ordering (Identity)
Supplement 0
Layout (AI0-SourceHanSans)
FSType 0
isFixedPitch false
UnderlinePosition -150
AdobeCopyright (Copyright 2014-2019 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

@ -2,7 +2,7 @@ FontName (SourceHanSansK-Regular)
FullName (Source Han Sans Korean Regular)
FamilyName (Source Han Sans Korean)
Weight (Regular)
version (2.001)
version (2.004)
Registry (Adobe)
Ordering (Identity)
Supplement 0
@ -10,7 +10,7 @@ Layout (AI0-SourceHanSans)
FSType 0
isFixedPitch false
UnderlinePosition -150
AdobeCopyright (Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
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

@ -2,7 +2,7 @@ FontName (SourceHanSansSC-Regular)
FullName (Source Han Sans Simplified Chinese Regular)
FamilyName (Source Han Sans Simplified Chinese)
Weight (Regular)
version (2.001)
version (2.004)
Registry (Adobe)
Ordering (Identity)
Supplement 0
@ -10,7 +10,7 @@ Layout (AI0-SourceHanSans)
FSType 0
isFixedPitch false
UnderlinePosition -150
AdobeCopyright (Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
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

File diff suppressed because it is too large Load Diff

@ -37,7 +37,7 @@ languagesystem hani ZHT;
languagesystem hani ZHH;
table head {
FontRevision 2.001;
FontRevision 2.004;
} head;
table hhea {
@ -47,7 +47,7 @@ table hhea {
} hhea;
table name {
nameid 0 "\00A9 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
nameid 0 "\00A9 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
nameid 7 "Source is a trademark of Adobe in the United States and/or other countries.";
nameid 8 "Adobe";
nameid 9 "Ryoko NISHIZUKA \897F\585A\6DBC\5B50 (kana, bopomofo & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Sandoll Communications \C0B0\B3CC\CEE4\BBA4\B2C8\CF00\C774\C158, Soo-young JANG \C7A5\C218\C601 & Joo-yeon KANG \AC15\C8FC\C5F0 (hangul elements, letters & syllables)";
@ -364,47 +364,6 @@ lookup std_ccmp {
substitute \63128 \63128 by \63143;
substitute \723 \723 \723 by \63144;
substitute \723 \723 by \63143;
# UTC-00791 (Extension G)
# JP
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61854;
# KR
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61855;
# CN
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61856;
# TW
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
# HK
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
# UTC-01200 (Extension G)
# JP/KR
substitute \1384 \23011 \17745 by \61858;
# CN/TW/HK
substitute \1384 \23011 \17746 by \61858;
# UTC-01312 (Extension G)
# JP
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
# KR
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
# CN
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
# TW
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
# HK
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
# UK-02960 (Extension G): Long IDS
# JP/KR
substitute \1387 \43442 \1386 \43442 \47443 \43442 \1384 \47443 \47443 by \61860;
# CN
substitute \1387 \43443 \1386 \43443 \47444 \43443 \1384 \47444 \47444 by \61861;
# TW
substitute \1387 \43444 \1386 \43444 \47445 \43444 \1384 \47445 \47445 by \61862;
# HK
substitute \1387 \43444 \1386 \43444 \47444 \43444 \1384 \47444 \47444 by \61863;
# UK-02960 (Extension G): Short IDS
# JP/KR/CN/HK
# substitute \1389 \8547 \47471 by \61860;
# TW
# substitute \1389 \8547 \47472 by \61862;
substitute \1447 \1449 by \1445;
substitute \1448 \1449 by \1446;
substitute \1461 \1546 by \61872;
@ -3905,6 +3864,7 @@ lookup kr2jp useExtension {
substitute \13215 by \13214;
substitute \13690 by \13689;
substitute \13787 by \13786;
substitute \13900 by \13899;
substitute \14020 by \14019;
substitute \14036 by \14035;
substitute \14065 by \14064;
@ -4185,7 +4145,6 @@ lookup kr2jp useExtension {
substitute \61852 by \39830;
substitute \61855 by \61854;
substitute \61899 by \10855;
substitute \61900 by \10989;
substitute \61905 by \11892;
substitute \61909 by \12827;
substitute \61920 by \17069;
@ -5065,6 +5024,7 @@ lookup kr2cn useExtension {
substitute \10973 by \10974;
substitute \10983 by \10984;
substitute \10985 by \10986;
substitute \10989 by \61900;
substitute \10990 by \10991;
substitute \11005 by \11006;
substitute \11010 by \11011;
@ -5666,7 +5626,6 @@ lookup kr2cn useExtension {
substitute \13890 by \13891;
substitute \13894 by \13895;
substitute \13896 by \13897;
substitute \13899 by \13900;
substitute \13901 by \13902;
substitute \13904 by \13905;
substitute \13906 by \13907;
@ -14243,6 +14202,7 @@ lookup kr2tw useExtension {
substitute \10979 by \10980;
substitute \10983 by \10984;
substitute \10985 by \10987;
substitute \10989 by \61900;
substitute \10990 by \10991;
substitute \10996 by \10997;
substitute \11005 by \11006;
@ -14990,7 +14950,6 @@ lookup kr2tw useExtension {
substitute \13890 by \13891;
substitute \13894 by \13895;
substitute \13896 by \13897;
substitute \13899 by \13900;
substitute \13901 by \13902;
substitute \13904 by \13905;
substitute \13906 by \13908;
@ -26220,6 +26179,7 @@ lookup kr2hk useExtension {
substitute \10973 by \10974;
substitute \10983 by \10984;
substitute \10985 by \10987;
substitute \10989 by \61900;
substitute \10990 by \10991;
substitute \10996 by \10997;
substitute \11005 by \11006;
@ -26934,7 +26894,6 @@ lookup kr2hk useExtension {
substitute \13890 by \13891;
substitute \13894 by \13895;
substitute \13896 by \13897;
substitute \13899 by \13900;
substitute \13901 by \13902;
substitute \13904 by \13905;
substitute \13906 by \13907;
@ -27544,7 +27503,6 @@ lookup kr2hk useExtension {
substitute \15731 by \15732;
substitute \15737 by \15739;
substitute \15742 by \15743;
substitute \15744 by \15745;
substitute \15755 by \15756;
substitute \15761 by \15763;
substitute \15769 by \15770;
@ -27584,6 +27542,7 @@ lookup kr2hk useExtension {
substitute \15912 by \15914;
substitute \15915 by \15916;
substitute \15917 by \15918;
substitute \15923 by \65530;
substitute \15925 by \15926;
substitute \15927 by \15928;
substitute \15929 by \15930;

@ -37,7 +37,7 @@ languagesystem hani ZHT;
languagesystem hani ZHH;
table head {
FontRevision 2.001;
FontRevision 2.004;
} head;
table hhea {
@ -47,7 +47,7 @@ table hhea {
} hhea;
table name {
nameid 0 "\00A9 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
nameid 0 "\00A9 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
nameid 7 "Source is a trademark of Adobe in the United States and/or other countries.";
nameid 8 "Adobe";
nameid 9 "Ryoko NISHIZUKA \897F\585A\6DBC\5B50 (kana, bopomofo & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Sandoll Communications \C0B0\B3CC\CEE4\BBA4\B2C8\CF00\C774\C158, Soo-young JANG \C7A5\C218\C601 & Joo-yeon KANG \AC15\C8FC\C5F0 (hangul elements, letters & syllables)";
@ -363,47 +363,6 @@ lookup std_ccmp {
substitute \63128 \63128 by \63143;
substitute \723 \723 \723 by \63144;
substitute \723 \723 by \63143;
# UTC-00791 (Extension G)
# JP
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61854;
# KR
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61855;
# CN
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61856;
# TW
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
# HK
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
# UTC-01200 (Extension G)
# JP/KR
substitute \1384 \23011 \17745 by \61858;
# CN/TW/HK
substitute \1384 \23011 \17746 by \61858;
# UTC-01312 (Extension G)
# JP
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
# KR
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
# CN
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
# TW
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
# HK
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
# UK-02960 (Extension G): Long IDS
# JP/KR
substitute \1387 \43442 \1386 \43442 \47443 \43442 \1384 \47443 \47443 by \61860;
# CN
substitute \1387 \43443 \1386 \43443 \47444 \43443 \1384 \47444 \47444 by \61861;
# TW
substitute \1387 \43444 \1386 \43444 \47445 \43444 \1384 \47445 \47445 by \61862;
# HK
substitute \1387 \43444 \1386 \43444 \47444 \43444 \1384 \47444 \47444 by \61863;
# UK-02960 (Extension G): Short IDS
# JP/KR/CN/HK
# substitute \1389 \8547 \47471 by \61860;
# TW
# substitute \1389 \8547 \47472 by \61862;
substitute \1447 \1449 by \1445;
substitute \1448 \1449 by \1446;
substitute \1461 \1546 by \61872;
@ -13931,7 +13890,6 @@ lookup cn2kr useExtension {
substitute \13891 by \13890;
substitute \13895 by \13894;
substitute \13897 by \13896;
substitute \13900 by \13899;
substitute \13902 by \13901;
substitute \13905 by \13904;
substitute \13907 by \13906;
@ -21579,6 +21537,7 @@ lookup cn2kr useExtension {
substitute \61830 by \18829;
substitute \61856 by \61855;
substitute \61861 by \61860;
substitute \61900 by \10989;
substitute \61907 by \12272;
substitute \61910 by \12850;
substitute \61913 by \13658;
@ -31145,6 +31104,7 @@ lookup cn2hk useExtension {
substitute \15734 by \15735;
substitute \15737 by \15739;
substitute \15741 by \15740;
substitute \15745 by \15744;
substitute \15749 by \15748;
substitute \15755 by \15756;
substitute \15760 by \15759;
@ -31168,6 +31128,7 @@ lookup cn2hk useExtension {
substitute \15910 by \15911;
substitute \15913 by \15914;
substitute \15917 by \15918;
substitute \15923 by \65530;
substitute \15925 by \15926;
substitute \15927 by \15928;
substitute \15933 by \15934;

21
fonts/ume/PROTON_NOTE.md Normal file

@ -0,0 +1,21 @@
# UmeFont (version 670)
https://osdn.net/projects/ume-font/
## Fonts
https://osdn.net/projects/ume-font/downloads/22212/umefont_670.tar.xz/
- ume-tgo4.ttf: Ume Gothic
- ume-pgo4.ttf: Ume P Gothic
- ume-ugo4.ttf: Ume UI Gothic
## License
See license.html for details.
## Why UmeFont?
UmeFont is metric-compatible fonts with MS Japanese fonts.
https://wiki.archlinux.org/title/Metric-compatible_fonts#Ume

79
fonts/ume/license.html Normal file

@ -0,0 +1,79 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
</head>
<body>
<pre>
-------------------------------------------------------------------------------
梅フォントのライセンス (日本語 UTF-8) (UmeFont license (In Japanese UTF-8))
-------------------------------------------------------------------------------
本ライセンスは以下の梅フォントに共通のライセンスです。
* 梅ゴシック
* 梅ゴシックC4
* 梅ゴシックS4
* 梅ゴシックO5
* 梅ゴシックC5
* 梅ゴシックS5
* 梅Pゴシック
* 梅PゴシックC4
* 梅PゴシックS4
* 梅PゴシックO5
* 梅PゴシックC5
* 梅PゴシックS5
* 梅UIゴシック
* 梅UIゴシックO5
* 梅Hyゴシック
* 梅HyゴシックO5
* 梅明朝
* 梅明朝S3
* 梅P明朝
* 梅P明朝S3
これらのフォントはフリー(自由な)ソフトウエアです。
あらゆる改変の有無に関わらず、また商業的な利用であっても、自由にご利用、複製、
再配布することができますが、全て無保証とさせていただきます。
-------------------------------------------------------------------------------
UmeFont license (In English)
-------------------------------------------------------------------------------
This is common license of the UmeFont family. UmeFont family provides the
following fonts:
* Ume Gothic
* Ume Gothic C4
* Ume Gothic S4
* Ume Gothic O5
* Ume Gothic C5
* Ume Gothic S5
* Ume P Gothic
* Ume P Gothic C4
* Ume P Gothic S4
* Ume P Gothic O5
* Ume P Gothic C5
* Ume P Gothic S5
* Ume UI Gothic
* Ume UI Gothic O5
* Ume Hy Gothic
* Ume Hy Gothic O5
* Ume Mincho
* Ume Mincho S3
* Ume P Mincho
* Ume P Mincho S3
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.
</pre>
</body>
</html>

BIN
fonts/ume/ume-pgo4.ttf Normal file

Binary file not shown.

BIN
fonts/ume/ume-tgo4.ttf Normal file

Binary file not shown.

BIN
fonts/ume/ume-ugo4.ttf Normal file

Binary file not shown.

1
glslang Submodule

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

Binary file not shown.

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