Compare commits

...

1064 commits

Author SHA1 Message Date
Arkadiusz Hiler
6c7cba9aeb update wine 2024-09-04 15:52:27 +03:00
Arkadiusz Hiler
9a8215ecd0 update dxvk to v2.4-40-gd0ea5a4a87c9 2024-09-04 15:52:20 +03:00
Arkadiusz Hiler
9fdefa4b7a update dxvk-nvapi to v0.7.1-19-gbd542144518d 2024-09-04 15:52:18 +03:00
Arkadiusz Hiler
ccddb2d72b update vkd3d-proton to v2.13-64-g47840a4bb614 2024-08-19 22:35:49 +03:00
Eric Pouech
e7a0af993f Makefile.in: Don't fail when updating openvr_api_dxvk.dll.
These files are copied into lib(64)/wine/dxvk with user-write
permission, which is later removed by default_pfx: rule.
Hence failing to 'cp' upon update.
2024-08-19 22:35:49 +03:00
Esme Povirk
72d5b322d9 Remove files that failed to download.
In some cases, wget -O will create the file even when the
download fails. This is not removed by make and will make
subsequent failures more confusing, as well as failing to
recover if the cause was an intermittent network failure.
2024-08-19 22:35:49 +03:00
Anna Lasky
cff555a823 proton: Enable gamedrive compat option for Sword of Convallaria
Option allows EULA to display properly.

CW-Bug-ID: #22421
2024-08-19 22:35:49 +03:00
Rémi Bernon
1e6e006cb6 build: Add dependencies for makedep to find generated server headers. 2024-08-19 22:35:49 +03:00
Rémi Bernon
3d99a92e17 build: Ignore dxvk version.h.in changes. 2024-08-19 22:35:49 +03:00
Rémi Bernon
6b1bed7a8d build: Add rules to generate wine requests. 2024-08-19 22:35:49 +03:00
Rémi Bernon
d1c5085a30 build: Ignore make_specfiles generated sources. 2024-08-19 22:35:49 +03:00
Rémi Bernon
7dcb011a18 build: Run make_specfiles after make_vulkan.
No-op but make_specfiles reads .specs and make_vulkan updates one.
2024-08-19 22:35:49 +03:00
Giovanni Mascellani
1683d5f143 make: Canonicalize ORIGIN paths.
That path can be relative when the build directory is inside the Proton
source directory. Since it then used to patch compile_commands.json, it
is important that it is absolute, otherwise it implicitly becomes grafted
to a directory for which it is meaningless.
2024-08-19 22:35:49 +03:00
Arkadiusz Hiler
3ffb520d58 Revert "proton: Add PROTON_NO_STEAM_FFMPEG to ignore ffmpeg that ships with Steam."
This reverts commit 5720dd3e9c.
2024-08-19 22:35:49 +03:00
Paul Gofman
ae688238b9 proton: Force 32 bit steam.exe for Undecember.
CW-Bug-Id: #24110
2024-08-19 22:35:49 +03:00
Paul Gofman
e3fbcf7e81 proton: Use server sync for Flatout 3.
CW-Bug-Id: #24102
2024-08-19 22:35:49 +03:00
Paul Gofman
2d60e4e04f proton: Enable gamedrive compat option for Strip Fighter ZERO.
CW-Bug-Id: #24096
2024-08-19 22:35:49 +03:00
Paul Gofman
e26ae368c8 proton: Use server sync for RAID: World War II.
CW-Bug-Id: #24085
2024-08-19 22:35:49 +03:00
Paul Gofman
96e08662b0 proton: Invalidate Ubisoft Launcher installation after deleting regsitry.
CW-Bug-Id: #23953
2024-08-19 22:35:49 +03:00
Paul Gofman
2e97e9f002 lsteamclient: Reset last error in Steam_BGetCallback() on no callback return.
CW-Bug-Id: #24028
2024-08-19 22:35:49 +03:00
Paul Gofman
235b0b151c lsteamclient: Preserve last error in load_steamclient().
CW-Bug-Id: #24028
2024-08-19 22:35:49 +03:00
Paul Gofman
bd471fba97 proton: Enable gamedrive compat option for Aimlabs.
CW-Bug-Id: #24014
2024-08-19 22:35:47 +03:00
Paul Gofman
9d1cadcaa3 build: Build apetag gstreamer plugin.
CW-Bug-Id: #23991
2024-08-19 22:33:50 +03:00
Paul Gofman
d432aa6673 proton: Add Farlight 84 to MFDXGI hack.
CW-Bug-Id: #23986
2024-08-19 22:33:50 +03:00
Paul Gofman
2164e3bae6 proton: Enable gamedrive early for Bad Mojo Redux.
CW-Bug-Id: #23924
2024-08-19 22:33:50 +03:00
Paul Gofman
1a349add90 proton: Prefer native ddraw for Arcanum (500810).
CW-Bug-Id: #23916
2024-08-19 22:33:50 +03:00
Paul Gofman
6e584890c0 proton: Disable GL_ARB_bindless_texture for Zaccaria Pinball.
CW-Bug-Id: #23874
2024-08-19 22:33:50 +03:00
Paul Gofman
bf479d31d9 lsteamclient: Use default conversion in convert_callback_utow / callback_message_utow even if Unix len is unknown.
CW-Bug-Id: #23875
2024-08-19 22:33:50 +03:00
Yuxuan Shui
08c566d928 wineopenxr: Support acquiring/releasing images from D3D12 swapchains. 2024-08-19 22:33:50 +03:00
Yuxuan Shui
ef4785f325 wineopenxr: Support creating a D3D12 XR instance. 2024-08-19 22:33:50 +03:00
Yuxuan Shui
2cf4673153 wineopenxr: Don't recreate swapchain images for subsequent calls to EnumerateSwapchainImages. 2024-08-19 22:33:50 +03:00
Yuxuan Shui
0181ecc872 wineopenxr: Print warnings if the application is giving us funny swapchain formats. 2024-08-19 22:33:50 +03:00
Esme Povirk
ebf9795240 Update Wine Mono to 9.2.0. 2024-08-19 22:33:50 +03:00
Arkadiusz Hiler
8d7f593f9d proton: Add PROTON_DXVK_D3D8 / dxvkd3d8. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
9aa92b8b13 proton: Correctly Popen.communicate() with timeout. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
9f209e9091 proton: Suppress type checker errors about non-existing user_settings. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
730acf592b proton: Don't assign exception to a variable when the value is not used. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
732a1296a1 proton: Stop using bare except. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
0405ca582b proton: Use more meaningful variable names. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
7c3accab4e proton: Access env variables directly when we know they are set. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
3d716a9db2 proton: Don't try track .debug files if there's not tracking file. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
c57940a528 proton: Use None instead of False for default argument value.
This fixes type inference - tools no longer assume that there's a
possibility of the value ever being True.
2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
ea996efc3d proton: Use _ for ignored values. 2024-08-16 21:22:45 +03:00
Arkadiusz Hiler
3ea1bf2170 proton: Change 'not x in y' to 'x not in y'. 2024-08-16 21:22:35 +03:00
Arkadiusz Hiler
126f121b74 proton: Remove unused imports. 2024-08-16 16:52:50 +03:00
Brendan McGrath
85e2b8751b build: Add gst-plugins-bad.
Enables hls, videoparsers and mpegtsdemux.

CW-Bug-Id: #23810
CW-Bug-Id: #23226
CW-Bug-Id: #23425
2024-08-16 16:52:50 +03:00
Esme Povirk
fdc578a939 proton: Add documentation URL for file descriptor limit warning. 2024-08-16 16:52:50 +03:00
Esme Povirk
b183fae4b7 proton: Check for low file descriptor limit.
CW-Bug-Id: #24035
2024-08-16 16:52:50 +03:00
Anna Lasky
4b0d481450 proton: Add comment to explain STEAM_COMPAT_APP_ID option in os.environ 2024-08-16 16:52:50 +03:00
Giovanni Mascellani
1477a4f9f3 Vulkan-Loader: Remove the Vulkan loader.
Its only dependency was vkd3d, but vkd3d doesn't need it. I don't know
why we used to build it.
2024-08-16 16:52:50 +03:00
Anna Lasky
2e6565db41 proton: Disable nvapi for GRID 2 and GRID Autosport
CW-Bug-ID: #24055
2024-08-16 16:52:50 +03:00
Arkadiusz Hiler
b904b2c6e4 proton: Disable nvapi for Alan Wake's American Nightmare.
This helps with the DLC crashing.

CW-Bug-Id: #24055
2024-08-16 16:52:50 +03:00
Anna Lasky
dc9f68f100 proton: Enable gamedrive compat option for Yakuza Kiwami
CW-Bug-Id: #22421
2024-08-16 16:52:02 +03:00
Zhiyi Zhang
69de6a7d34 Revert "proton: Add Iragon: Prologue (2229490) to MFDXGI manager hack."
This reverts commit 44c58e0857.

The hack is no longer needed and causes the game to crash after a game update.

CW-Bug-Id: #23184
2024-08-16 16:52:02 +03:00
Zhiyi Zhang
a9b51e2733 Revert "proton: Added Iragon: Prologue 18+ (1522260) to MFDXGI hack"
This reverts commit 500d6608c4.

The hack is no longer needed and causes the game to crash after a game update.

CW-Bug-Id: #23184
2024-08-16 16:52:02 +03:00
Zhiyi Zhang
fd83c902e0 Revert "proton: Added Iragon and Iragon 18+ to MFDXGI hack"
This reverts commit 436634421b.

The hack is no longer needed and causes the game to crash after a game update.

CW-Bug-Id: #23184
2024-08-16 16:52:02 +03:00
Esme Povirk
70cc4dc305 proton: Use STEAM_COMPAT_APP_ID to decide when to run xalia.
CW-Bug-Id: #23808

SteamAppId isn't set for InstallScripts, but this variable is.
2024-08-16 16:52:02 +03:00
Aric Stewart
5a66da7ed4 steam-helper: Create list of games to ignore selected locale
First, and only on this list so far is Guild Wars 2 (1284210)

CW-Bug-Id: #23824
2024-08-16 16:52:02 +03:00
Arkadiusz Hiler
962bbc4e74 update vkd3d-proton 2024-07-15 19:57:17 +03:00
Paul Gofman
63e81a1a95 vrclient_x64: Fix source length for ntdll_umbstowcs().
CW-Bug-Id: #23962
2024-07-02 17:01:48 +03:00
Paul Gofman
54378d5357 lsteamclient: Fix source length for ntdll_umbstowcs().
CW-Bug-Id: #23962
2024-07-02 17:01:46 +03:00
Rémi Bernon
dbc381d95e lsteamclient: Generate SteamWorks SDK 1.60 support.
CW-Bug-Id: #23976
2024-07-01 10:10:27 +03:00
Rémi Bernon
25890a64ca lsteamclient: Import SteamWorks SDK 1.60.
CW-Bug-Id: #23976
2024-07-01 10:10:26 +03:00
Arkadiusz Hiler
bb76da532e update wine 2024-06-17 21:49:25 +03:00
Rémi Bernon
592362a666 update wine 2024-06-03 19:53:42 +02:00
Rémi Bernon
1473b6131b update dxvk 2024-05-27 12:07:49 +02:00
Arkadiusz Hiler
8d47eb5e0a update wine 2024-05-23 18:33:56 +03:00
Arkadiusz Hiler
9dc3b4832d update dxvk-nvapi to v0.7.0-7-gaae4902b6ff7 2024-05-23 17:50:04 +03:00
Arkadiusz Hiler
48fef397c6 update vkd3d-proton to v2.12-58-gf6d39052afb1 2024-05-23 17:50:04 +03:00
Arkadiusz Hiler
307e7c4220 update dxvk to v2.3.1-64-g889802887fa5 2024-05-23 17:50:01 +03:00
Paul Gofman
b4b6617224 lsteamclient: Zero unused output message pointers in networking_message_pool_receive().
CW-Bug-Id: #23829
2024-05-23 10:54:50 +03:00
Paul Gofman
6202be5348 steam_helper: Try to handle same app id restart ourselves instead of forwarding to Steam command handler.
CW-Bug-Id: #23816
2024-05-23 10:54:50 +03:00
Paul Gofman
77f1af2afc proton: Enable WINE_HEAP_DELAY_FREE for Planet of the Apes: Last Frontier.
CW-Bug-Id: #23811
2024-05-23 10:54:50 +03:00
Zhiyi Zhang
692e07d139 HACK: steam.exe: Force Japanese locale for Granado Espada Japan.
Granado Espada Japan (1219160) launcher needs Japanese locale to display correctly. Otherwise, it
displays gibberish, even on Windows.

CW-Bug-Id: #23597
2024-05-23 10:54:50 +03:00
Ziqing Hui
b80ceddeed user_settings.sample.py: Change media converter GST debug channel name.
CW-Bug-Id: #23225
2024-05-23 10:54:50 +03:00
Ziqing Hui
40494f74a1 proton: Add media files.
The media files are used in new media converter.

CW-Bug-Id: #23225
2024-05-23 10:54:50 +03:00
Ziqing Hui
da36c977f9 media-converter: Remove media-converter.
Remove it since it has been integrated into winegstreamer.

CW-Bug-Id: #23225
2024-05-23 10:54:50 +03:00
Esme Povirk
d72fb93507 proton: Enable Xalia on known-working games. 2024-05-23 10:54:50 +03:00
Esme Povirk
876158c2b8 proton: Add and document compat flag for xalia. 2024-05-23 10:54:50 +03:00
Esme Povirk
1f400c7606 Download and include Xalia in distribution. 2024-05-23 10:54:50 +03:00
Rémi Bernon
21751b6ac6 docs: Update DEBUGGING.md for 9.0-2. 2024-05-23 10:54:50 +03:00
Rémi Bernon
be97a7e470 docs: Add a paragraph about the new GDB integration. 2024-05-23 10:54:50 +03:00
Arkadiusz Hiler
f53bc2edfe docs/DEBUGGING.md: Add a section on different binaries. 2024-05-23 10:54:50 +03:00
Arkadiusz Hiler
08636f843f docs/DEBUGGING.md: Add a note on predictable bus names. 2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
40efc25c8e Makefile: Update Wine Mono to 9.1.0. 2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
06e412ab60 make: Use SOURCE_DATE_EPOCH for unique timestamps.
... and vary them between 32 and 64bit builds.
2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
32e3b6edfe make: Preserve PE timestamps with objcopy. 2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
a860eab9ca Makefile.in: Update Proton SDK image. 2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
9b10a7670a docker: Update binutils to 2.42. 2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
9b2fed6fe4 Makefile.in: Disable inline assembly for ffmpeg.
It doesn't build with newer versions of GNU ld. We don't ship the
artifacts anyway, it's just to build gstreemer for use with Steam's
libav.
2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
e11744fcb7 Makefile.in: Specify the name of libvulkan shared object for vkd3d.
Vkd3d doesn't seem to like to be be built as a PE. When it tries to look
for the vulkan library it does so by trying a very naive program that
defines `char vkGetInstanceProcAddr()`. This misses both being marked as
stdcall and the correct number of parameters to link against
Vulkan-Loader in PE32 mode.

This used to work with binutils pre 2.41 because it wasn't including the
@NUM part in the export libs but since that was fixed we have to be
explicit to skip the check.
2024-05-23 10:54:49 +03:00
Esme Povirk
25eb24e4e9 Makefile: Update Wine Mono to 9.0.0. 2024-05-23 10:54:49 +03:00
Esme Povirk
271ad809be Makefile: Use wget --no-use-server-timestamps.
If the -dist target were created after a file was uploaded to the
server, it wouldn't be rebuilt after downloading, because the
timestamp on the downloaded file would be newer than the -dist
file. Using a local timestamp to download prevents this.
2024-05-23 10:54:49 +03:00
Krzysztof Bogacki
235a203f8a proton: Enable dxvk-nvapi logging when PROTON_LOG is used. 2024-05-23 10:54:49 +03:00
kisak-valve
dfd3b65de6 Refresh request for Steam Runtime information
Looks like this menu option got renamed in the Steam client.
2024-05-23 10:54:49 +03:00
Anna Lasky
bbacb57b06 proton: Limit CPU count for Call of Juarez: Gunslinger.
CW-Bug-ID: #23766
2024-05-23 10:54:49 +03:00
Yuxuan Shui
22fa6c7346 wineopenxr: Propagate vulkan device IDs from steam.exe to the application. 2024-05-23 10:54:49 +03:00
Paul Gofman
c35598bb21 wineopenxr: Lock d3d11 device in xrReleaseSwapchainImage().
CW-Bug-Id: #23491
2024-05-23 10:54:49 +03:00
Paul Gofman
231c4b7112 wineopenxr: Lock d3d11 device in xrAcquireSwapchainImage().
CW-Bug-Id: #23491
2024-05-23 10:54:49 +03:00
Paul Gofman
cce9c8b308 wineopenxr: Lock d3d11 device in xrBeginFrame().
CW-Bug-Id: #23491
2024-05-23 10:54:49 +03:00
Paul Gofman
5a996971d7 lsteamclient: Initialize sockets in load_steamclient().
CW-Bug-Id: #23749
2024-05-23 10:54:49 +03:00
Paul Gofman
5cfe529c2a wineopenxr: Use API version 1.0.0 if current is not supported by the runtime.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
c25afe23ab proton: Limit CPU count for C&C and The Covert Operations.
CW-Bug-Id: #23691
2024-05-23 10:54:49 +03:00
Paul Gofman
d3b7e7b647 fixup! proton: Limit CPU count for some games.
CW-Bug-Id: #23691
2024-05-23 10:54:49 +03:00
Paul Gofman
0fd8364e06 wineopenxr: Add some missing events unwrapping to wine_xrPollEvent().
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
da30672797 wineopenxr: Update to 1.1.36 registry version.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
3661124333 wineopenxr: Drop extensions from UNSUPPORTED_EXTENSIONS which can now be auto generated.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
ded1941e73 wineopenxr: Implement auto mapping specified handles to dispatch table instead of manually wrapping those.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
9ff5c9da91 wineopenxr: Define some structs earlier when generating definitions.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
98b0d5a4e0 wineopenxr: Don't break on recursive struct definition.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
26e5b94e4c wineopenxr: Don't sort funcpointers.
Sorting breaks generated code compilation due to funcpointers
dependencies on each other in the up to date registry.

CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
7c56794fa5 wineopenxr: Support function pointer definition with paramaters specified as plain element text.
To handle PFN_xrCreateApiLayerInstance definition in the up to date registry XML which
does that.

CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Paul Gofman
be90b5e952 wineopenxr: Handle XrPosef tracing.
CW-Bug-Id: #23689
2024-05-23 10:54:49 +03:00
Yuxuan Shui
a3711d4747 vrclient_x64: Support submitting D3D12 textures.
CW-Bug-Id: #23542
2024-05-23 10:54:49 +03:00
Paul Gofman
e3798c1adb lsteamclient: Delete matchmaking callback objects on request completion.
CW-Bug-Id: #23577
2024-05-23 10:54:49 +03:00
Paul Gofman
0389125f9a lsteamclient: TRACE all the strings with debugstr_a() in execute_pending_callbacks().
CW-Bug-Id: #23577
2024-05-23 10:54:49 +03:00
Paul Gofman
061231e29c steam_helper: Clean up backgroundservice.ini for EA Desktop.
CW-Bug-Id: #23434
2024-05-23 10:54:49 +03:00
Paul Gofman
76369eb526 vrclient: Support v2.2.3.
CW-Bug-Id: #23412
2024-05-23 10:54:49 +03:00
Paul Gofman
2d93d45926 vrclient: Support v2.0.10.
CW-Bug-Id: #23412
2024-05-23 10:54:49 +03:00
Paul Gofman
5ec8d4dcfb vrclient: Remove upper version limit for IVRCompositor_WaitGetPoses manual override.
CW-Bug-Id: #23412
2024-05-23 10:54:49 +03:00
Shawn Wallace
0efcd7d787 wineopenxr: change instance type to session type
Graphics in OpenXR are bound by their sessions, not by their instances.

https://github.com/ValveSoftware/Proton/pull/7424
2024-05-23 10:54:49 +03:00
Paul Gofman
1df6335f80 Revert "proton: Add nowritewatch config option to disable write watch support"
This reverts commit 9f614e83ce.

CW-Bug-Id: #23654
2024-05-23 10:54:49 +03:00
Arkadiusz Hiler
85c21a159c update wine 2024-04-26 18:29:54 +03:00
Anna Lasky
90220973c7 proton: Disable nvapi for Cryptic Studios games
CW-Bug-Id: #23700
2024-04-24 13:00:18 -05:00
Paul Gofman
6ceb2e8d30 proton: Limit CPU count for some games.
CW-Bug-Id: #22223
2024-04-19 10:24:31 -06:00
Paul Gofman
44d95e0df2 proton: Enable PROTON_HEAP_ZERO_MEMORY for Sonic Colors: Ultimate.
CW-Bug-Id: #23525
2024-04-19 09:53:54 -06:00
Paul Gofman
7367494355 proton: Enable PROTON_HEAP_ZERO_MEMORY for Call of Juarez: Bound in Blood.
CW-Bug-Id: #23466
2024-04-19 09:53:45 -06:00
Paul Gofman
b3d9b1c0a0 proton: Add PROTON_HEAP_ZERO_MEMORY runtime config option.
And enable it for Helldivers 2.

CW-Bug-Id: #23394
2024-04-19 09:50:49 -06:00
Paul Gofman
d3e49cc154 Revert "HACK: proton: Add PROTON_HEAP_ZERO_MEMORY runtime config option."
This reverts commit ccc1fda889.
2024-04-19 09:50:16 -06:00
Paul Gofman
0b317f8464 lsteamclient: Collapse path in dos to unix conversion.
CW-Bug-Id: #23664
2024-04-19 09:47:18 -06:00
Paul Gofman
4e289629ce lsteamclient: Strip extra /'s from file:/// in steamclient_dos_to_unix_path().
CW-Bug-Id: #23664
2024-04-19 09:47:18 -06:00
Paul Gofman
6e7e17776e lsteamclient: Return empty string from steamclient_dos_to_unix_path() when conversion failed.
CW-Bug-Id: #23664
2024-04-19 09:47:18 -06:00
Paul Gofman
a287ebaaf9 lsteamclient: Propagate Unix side access violation to the PE side exception.
CW-Bug-Id: #23623
2024-04-04 08:53:20 -06:00
Paul Gofman
3cba1580fe lsteamclient: Convert callbacks with a best guess even if specified message length is too short.
CW-Bug-Id: #23620
2024-04-04 08:53:20 -06:00
Paul Gofman
ccc1fda889 HACK: proton: Add PROTON_HEAP_ZERO_MEMORY runtime config option.
Based on Paul's patches for CW bug 23394.

And enable this heap zero hack for Call of Juarez: Bound in Blood (21980).

CW-Bug-Id: #23394
CW-Bug-Id: #23466
2024-03-25 23:45:46 +08:00
Arkadiusz Hiler
bc4d2acf3b update wine 2024-03-22 13:41:34 +02:00
Arkadiusz Hiler
4341729100 lsteamclient: Generate SteamWorks SDK 1.59 support. 2024-03-22 13:30:06 +02:00
Arkadiusz Hiler
c17db0b838 proton: Don't use copy_file_range if fs doesn't support it. 2024-03-22 13:30:06 +02:00
Paul Gofman
bd8d7e374e lsteamclient: Reimplement callback_message_utow() in manual code using table.
CW-Bug-Id: #23550
2024-03-20 19:52:21 -06:00
Paul Gofman
7e98577a74 lsteamclient: Reimplement alloc_callback_wtou(), convert_callback_utow() in manual code using generated table.
And try to handle the case of non-matching Windows callback length
similar to  before commit 6a5d5757ca.

CW-Bug-Id: #23550
2024-03-20 19:52:21 -06:00
Paul Gofman
ce08f3ca53 lsteamclient: Generate C conversion functions.
CW-Bug-Id: #23550
2024-03-20 19:52:21 -06:00
Anna Lasky
b7f80e85d0 proton: Disable nvapi for Carmageddon: Max Damage
CW-Bug-Id: 23594
2024-03-19 14:42:59 -05:00
Arkadiusz Hiler
8ebec92664 update wine 2024-03-14 17:30:40 +02:00
Anna Lasky
0d54d1fa40 proton: Disable nvapi for Divinity: Original Sin 2 - Definitive Edition
CW-Bug-Id: #23561
2024-03-13 13:09:38 -05:00
John Brooks
d3fb3759a6 proton: Enable gamedrive compat option for Descent 3
Descent 3 corrupts its stack if the installation path is too long. The
return pointer gets overwritten with the path to the intro movie and we
crash.

Signed-off-by: John Brooks <john@fastquake.com>
Link: https://github.com/ValveSoftware/Proton/pull/7365
2024-03-11 12:18:16 -05:00
Anna Lasky
c48b88d7b9 proton: Disable nvapi for Alan Wake (108710)
CW-Bug-Id: #23545
2024-03-11 11:40:04 -05:00
Arkadiusz Hiler
fdc3ef77db update wine 2024-03-05 17:03:09 +02:00
Arkadiusz Hiler
61e139d5eb update wine 2024-03-04 22:38:06 +02:00
Paul Gofman
d3f7ecfc32 proton: Add hideapu config option and enable it for Deathloop.
CW-Bug-Id: #23489
2024-03-04 22:37:52 +02:00
Arkadiusz Hiler
7620dd6249 update wine 2024-03-01 17:23:49 +02:00
Anna Lasky
e78a69d011 Revert "proton: Disable nvapi for THE FINALS"
This reverts commit 24d5272316.
2024-02-28 08:35:06 -06:00
Rémi Bernon
1ef9a3674b update wine 2024-02-23 20:06:41 +01:00
Paul Gofman
b108af777b update dxvk to e2a46a347d7193ee853bd8c75cbca5939f10a987
v2.3-47-ge2a46a34 with Granblue Fantasy: Relink workarounds on top.
2024-02-22 11:38:58 -06:00
Anna Lasky
436634421b proton: Added Iragon and Iragon 18+ to MFDXGI hack
CW-Bug-Id: #23184
2024-02-15 15:19:16 -06:00
Arkadiusz Hiler
b911e631b1 update wine 2024-02-15 18:04:02 +02:00
Arkadiusz Hiler
5dcd60269c update dxvk-nvapi to v0.6.4-48-g0951afb 2024-02-15 15:53:29 +02:00
Arkadiusz Hiler
e7244cf4ed update vkd3d-proton to v2.11.1-49-g32ff676b 2024-02-15 15:53:29 +02:00
Arkadiusz Hiler
06480c6148 update dxvk to v2.3-47-ge2a46a34 2024-02-15 15:53:29 +02:00
Arkadiusz Hiler
1d04497177 docs: Add DEBUGGING.md. 2024-02-15 15:53:29 +02:00
Arkadiusz Hiler
809b6b66dc proton: Remove PROTON_DUMP_DEBUG_COMMANDS. 2024-02-15 15:53:29 +02:00
Anna Lasky
500d6608c4 proton: Added Iragon: Prologue 18+ (1522260) to MFDXGI hack
CW-Bug-Id: #23184
2024-02-15 15:53:29 +02:00
Paul Gofman
8f03470527 vrclient_x64: Unload native vrclient shared library on process detach.
CW-Bug-Id: #23390
2024-02-15 15:53:29 +02:00
Paul Gofman
250242f66a vrclient: Return STATUS_SUCCESS from vrclient_init() on initialization failures.
Initialization status is returned in parameters, returning non-zero
NTSTATUS causes unneeded assertion failure.

CW-Bug-Id: #23354
2024-02-15 15:53:29 +02:00
Zhiyi Zhang
44c58e0857 proton: Add Iragon: Prologue (2229490) to MFDXGI manager hack.
CW-Bug-Id: #23184
2024-02-15 15:53:29 +02:00
Rémi Bernon
9982db7405 proton: Enable the new SDL 2.30 Steam Input integration.
CW-Bug-Id: #23185
2024-02-15 15:53:29 +02:00
Rémi Bernon
121cdab5fc lsteamclient: Copy the ServerResponded parameter for delayed callbacks.
CW-Bug-Id: #23272
2024-02-15 15:53:29 +02:00
Anna Lasky
24d5272316 proton: Disable nvapi for THE FINALS 2024-02-15 15:53:29 +02:00
Rémi Bernon
457407ffd5 lsteamclient: Copy the m_hSteamUser member in callback_message_utow. 2024-02-15 15:53:29 +02:00
Anna Lasky
5f9603eb23 proton: Enable gamedrive compat option for Bayonetta.
CW-Bug-Id: #22421
2024-02-15 15:53:29 +02:00
Paul Gofman
49b1120eb9 proton: Copy more VC runtime redists.
CW-Bug-Id: #23227
2024-02-15 15:53:29 +02:00
Rémi Bernon
faf681cd9c lsteamclient: Execute any pending callback before ReleaseRequest.
CW-Bug-Id: #22729
2024-02-15 15:53:29 +02:00
Paul Gofman
22672c5b0a lsteamclient: Clear last error in create_win_interface().
CW-Bug-Id: #23178
2024-02-15 15:53:29 +02:00
Paul Gofman
1eb8799803 proton: Use server sync for Disaster Report 4: Summer Memories.
CW-Bug-Id: #22415
2024-02-15 15:53:29 +02:00
Paul Gofman
051cb009df lsteamclient: Fix g_tmppath buffer length.
CW-Bug-Id: #23197
2024-02-15 15:53:29 +02:00
Paul Gofman
ff94f04eca steam_helper, vrclient, openxr: Use Unix ABI for winevulkan unwrappers.
CW-Bug-Id: #23180
2024-02-15 15:53:29 +02:00
Paul Gofman
9e6011147d vrclient: Fail initialization if winevulkan unwrappers cannot be loaded.
CW-Bug-Id: #23180
2024-02-15 15:53:29 +02:00
Eric Pouech
53eee3161e default_pfx: Set DLL search path. 2024-02-15 15:53:29 +02:00
Paul Gofman
2781aa3d1c proton: Add ir50_32.dll to dll copy list.
CW-Bug-Id: #23172
2024-02-15 15:53:29 +02:00
Paul Gofman
5d374bdc2c lsteamclient: Use GetEnvironmentVariableW() in load_steamclient().
CW-Bug-Id: #23142
2024-02-15 15:53:29 +02:00
Paul Gofman
f2fa9ed325 Revert "lsteamclient: Use getenv() in load_steamclient()."
This reverts commit df4821f3612b8876bcbd2e0803f9c57f72b209d4.

CW-Bug-Id: #23170
2024-02-15 15:53:29 +02:00
Rémi Bernon
29e9357b09 vrclient: Fix incorrect sized int type for VRInputValueHandle_t.
Fixes a regression in Racket: NX from 9b0930f925.

CW-Bug-Id: #22729
CW-Bug-Id: #23147
2024-02-15 15:53:29 +02:00
Rémi Bernon
3784d63a26 vrclient: Remove unnecessary struct_needs_size_adjustment.
CW-Bug-Id: #22729
CW-Bug-Id: #23147
2024-02-15 15:53:29 +02:00
Rémi Bernon
77c5345632 vrclient: Respect provided struct sizes when returning structures.
CW-Bug-Id: #22729
CW-Bug-Id: #23147
2024-02-15 15:53:29 +02:00
Rémi Bernon
37dc6df5eb lsteamclient: Avoid accessing entry->callback.size after free.
Fixes a crash in Space Engineers.

CW-Bug-Id: #23145
2024-02-15 15:53:29 +02:00
Paul Gofman
6858265bd3 proton: Enable WINE_HEAP_DELAY_FREE for WITCH ON THE HOLY NIGHT.
CW-Bug-Id: #23142
2024-02-15 15:53:29 +02:00
Paul Gofman
b86aa755d9 lsteamclient: Use getenv() in load_steamclient().
CW-Bug-Id: #23142
2024-02-15 15:53:29 +02:00
Joshua Ashton
46c2f720d2 proton: Enable forcenvapi for Tony Hawk's Pro Skater 1 + 2
CW-Bug-Id: #23140
2024-02-15 15:53:29 +02:00
Joshua Ashton
0f45b24677 proton: Add forcenvapi
To allow titles like Tony Hawk's Pro Skater 1+2 to support HDR on
SteamOS by default.

These games use statically linked AMD AGS.

CW-Bug-Id: #23140
2024-02-15 15:53:29 +02:00
Paul Gofman
b9040886de proton: Add hidevggpu option and enable it for Serious Sam 4.
CW-Bug-Id: #20527
2024-02-15 15:53:29 +02:00
Rémi Bernon
d8f44fe58e build: Enable -Werror for wine. 2024-02-15 15:53:29 +02:00
Paul Gofman
c8669fbcbd steamclient: Read access input strings on the PE side. 2024-02-15 15:53:29 +02:00
Andrew Eikum
de63ea5341 Handle steampipe quirks in deploy builds 2024-02-15 15:53:29 +02:00
Andrew Eikum
3d5022de71 Don't ship proton dist files in a tarball anymore 2024-02-15 15:53:29 +02:00
Arkadiusz Hiler
ab1db897be Revert ".gitmodules: Use downstream dxvk."
This reverts commit 15854dbb99.
2024-02-15 15:53:29 +02:00
Arkadiusz Hiler
05d8723647 proton: Remove enableamdags.
CW-Bug-Id: #22976
2024-02-15 15:53:29 +02:00
Adam Moss
eda0f05272 proton: Change DXVK-NVAPI to enabled-by-default.
it's now disabled by PROTON_DISABLE_NVAPI=1

Link: https://github.com/ValveSoftware/Proton/pull/7335
2024-02-15 15:53:29 +02:00
Rémi Bernon
c9dca2e770 Bump dxvk, dxvk-nvapi, vkd3d-proton submodules. 2024-02-15 15:53:29 +02:00
Rémi Bernon
dc9220271e proton: Bump proton and prefix version. 2024-02-15 15:53:29 +02:00
Rémi Bernon
9079a24016 build: Make sure configure uses configure.ac mtime.
Since we moved the rsync into the container, configure dependency on
configure.ac was broken, leading to it not being regenerated until a
second build. This is because timestamps are read by make earlier than
the rsync, which runs after the top-level rules are checked.
2024-02-15 15:53:29 +02:00
Rémi Bernon
59699bb4d1 build: Run tools/make_specfiles if it exists. 2024-02-15 15:53:29 +02:00
Rémi Bernon
f8bf0861b2 steam.exe: Define SHGetFolderPath(A|W) to remove shlobj.h include.
It breaks on DECLSPEC_IMPORT EXTERN_C.
2024-02-15 15:53:29 +02:00
Rémi Bernon
e24f98aa3b vrclient: Add warnings and asserts to unixlib calls.
CW-Bug-Id: #22729
2024-02-15 15:53:29 +02:00
Rémi Bernon
eb45ddf6f8 lsteamclient: Add warnings and asserts to unixlib calls.
CW-Bug-Id: #22729
2024-02-15 15:53:29 +02:00
Rémi Bernon
37785cfbd3 vrclient: Split unixlib and build with msvcrt.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
838d14d66e lsteamclient: Split unixlib and build with msvcrt.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
99bdd62d6c lsteamclient: Get rid of unused functions declarations. 2024-02-15 15:53:28 +02:00
Rémi Bernon
60d50a11e6 lsteamclient: Get rid of DECLSPEC_HIDDEN. 2024-02-15 15:53:28 +02:00
Rémi Bernon
1e55f9de08 vrclient: Get rid of DECLSPEC_HIDDEN. 2024-02-15 15:53:28 +02:00
Rémi Bernon
859e51c65a wineopenxr: Get rid of DECLSPEC_HIDDEN. 2024-02-15 15:53:28 +02:00
Rémi Bernon
726879ea78 lsteamclient: Add missing break in ISteamNetworkingUtils_SetConfigValue switch.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Gabriel Ivăncescu
40ff3aa623 gecko: Update version to 2.47.4. 2024-02-15 15:53:28 +02:00
Rémi Bernon
5e70a92e17 lsteamclient: Default calling convention is cdecl.
CW-Bug-Id: #22729
CW-Bug-Id: #23085
2024-02-15 15:53:28 +02:00
Rémi Bernon
dcc841cab0 vrclient: Default calling convention is cdecl.
CW-Bug-Id: #22729
CW-Bug-Id: #23085
2024-02-15 15:53:28 +02:00
Tyson Whitehead
ae89737911 vrclient: Ignore Submit_TextureWithDepth for TextureType_DirectX
Don't bother passing as SteamVR compositor ignores depth textures.

Link: https://github.com/ValveSoftware/Proton/pull/7286
2024-02-15 15:53:28 +02:00
Tyson Whitehead
8c44c9e9ee vrclient: Handle Submit_TextureWithPose for TextureType_DirectX
This resolves a black HMD with the log message
"fixme:vrclient:ivrcompositor_submit_dxvk Unhandled flags 0x8".

Link: https://github.com/ValveSoftware/Proton/pull/7286
2024-02-15 15:53:28 +02:00
Rémi Bernon
3813708ca9 build: Also set makedep C++ compiler for cross-compilation. 2024-02-15 15:53:28 +02:00
Rémi Bernon
8de58db409 vrclient: Trace IVRCompositor_Submit parameters.
CW-Bug-Id: #22729
CW-Bug-Id: #23000
2024-02-15 15:53:28 +02:00
Rémi Bernon
8ff2cf5e8e vrclient: Make sure the param structs are consistently aligned.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
1bf0e86507 lsteamclient: Make sure the param structs are consistently aligned.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
fd574a64ca vrclient: Use int8_t instead of ambiguous sized bool.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
cd4a31f4e0 lsteamclient: Use int8_t instead of ambiguous sized bool.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
5190d26e7e vrclient: Remove unnecessary return value cast.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
f5ef49cf29 vrclient: Use manual method for IVRTrackedCamera_GetVideoStreamFrame. 2024-02-15 15:53:28 +02:00
Rémi Bernon
e9aeba85f2 vrclient: Move sources out of vrclient_x64 subfolder.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
98a90a1458 lsteamclient: Queue callback for input EnableActionEventCallbacks functions.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
6a7dbe6160 lsteamclient: Queue callback for networking SetConfigValue functions.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
5a552fbe77 lsteamclient: Use unix callbacks for custom client classes.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
bc000612cd lsteamclient: Move callback function handling to unixlib.cpp.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
d8574d35a5 vrclient: Add traces to path conversion helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
38573d2875 lsteamclient: Add traces to path conversion helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
1e8d243065 vrclient: Move unix to dos path conversions to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
c95536019c lsteamclient: Move unix to dos path conversions to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
43481a24ff vrclient: Move dos to unix path conversion to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:28 +02:00
Rémi Bernon
049342a555 lsteamclient: Move dos to unix path conversion to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
fd5711e93b vrclient: Use unixlib interface for C API functions.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
cf89fdf018 lsteamclient: Use unixlib interface for C API functions.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
4e8556ae62 vrclient: Move json conversion to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
13fa4c9b13 vrclient: Remove now unused PE-side unwrappers.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
9219ad9490 vrclient: Unwrap Submit vulkan objects on the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
59205c21ee vrclient: Unwrap SetSkyboxOverride vulkan objects on the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
0e092b3940 vrclient: Unwrap IVROverlay_SetOverlayTexture vulkan objects on the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
5ef99b39a3 vrclient: Unwrap vulkan objects outside of vrclient_translate_texture_dxvk.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
ec9b2692c7 vrclient: Move physical device wrapping to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
a185561e88 vrclient: Generate unixlib interface in unixlib_generated.h.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
b22627053d lsteamclient: Generate unixlib interface in unixlib_generated.h.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
7449bca90b vrclient: Generate C++ interfaces in unix_private_generated.h.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
bd51335a8c lsteamclient: Generate C++ interfaces in unix_private_generated.h.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
1071c99388 lsteamclient: Move manual_convert_nNativeKeyCode to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
53e65e1ffd vrclient: Update cxx.h to latest msvcp90 version.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
6741a504f0 lsteamclient: Update cxx.h to latest msvcp90 version.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
03366c4d33 vrclient: Move vulkan wrapper / unwrapper loading to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
c6a9e4ce99 vrclient: Move initialization to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
e0b2b50fb1 lsteamclient: Move unix library loading to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
4823be943d vrclient: Generate iface constructor lookup function.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
3e2dde20de lsteamclient: Generate iface constructor lookup function.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
0564207f84 lsteamclient: Use the new converters for Steam_BGetCallback.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
2170b64142 lsteamclient: Generate callback wrappers with the new structs.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
77e83d193a lsteamclient: Execute debug callbacks from within Steam_BGetCallback.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
1b4cd4fc7a lsteamclient: Remove now unused steamclient_manual_common.cpp.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
05f84c8595 lsteamclient: Rewrite SteamNetworkingMessage_t_153a unix thunks.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
fa9ded4baf lsteamclient: Rewrite SteamNetworkingMessage_t_147 unix thunks.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
b56d6aa766 lsteamclient: Rewrite SteamNetworkingMessage_t_144 unix thunks.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
0e4fab2dff lsteamclient: Use manual methods for glyphs path return.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
4d5d6322b0 lsteamclient: Move ISteamInput and ISteamController manual thunks.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
96a26ea211 lsteamclient: Move ISteamNetworkingFakeUDPPort creation / destroy to the PE side.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
537b4096a5 lsteamclient: Use manual methods instead of codegen for callbacks.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
9183543836 lsteamclient: Use manual method wrapper instead of post-exec.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
15c5ad5242 lsteamclient: Simplify manual method description.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
70629f4d71 vrclient: Remove unused tests generation code.
CW-Bug-Id: #22729
2024-02-15 15:53:27 +02:00
Rémi Bernon
c31c7b7144 vrclient: Remove old struct conversion code.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
3defc39189 vrclient: Use manual methods instead of wrap / unwrap.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
3bfdfc205f vrclient: Use the new structures in thunks.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
9ea65fe0d0 lsteamclient: Use the new structures in thunks.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
9b1a3cb349 lsteamclient: Move the client wrapper creation to the unix side.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
f5944b9ae5 vrclient: Generate wtou / utow struct conversion helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
1fc7e4381a lsteamclient: Generate wtou / utow struct conversion helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
f1f483a443 vrclient: Generate struct definitions for all abis.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
7c622566cf lsteamclient: Generate struct definitions for all abis.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
cafc3fb8e7 vrclient: Classify struct compatibility over SDK versions.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
fb25831f68 lsteamclient: Classify struct compatibility over SDK versions.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
ee98a08f4c vrclient: Use Struct and Field class for conversions.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
8a2881dd90 lsteamclient: Use Struct and Field class for conversions.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
d4cefca096 vrclient: Introduce new Struct generator class.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
f835c3ab66 lsteamclient: Introduce new Struct generator class.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
f8cb502eea vrclient: Generate function types with ABI attributes.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
5ec5ec2923 lsteamclient: Generate function types with ABI attributes.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
cc69121738 lsteamclient: Use the generated interfaces in the manual converters.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
09846111bd lsteamclient: Fixup ISteamUser_SteamUser_InitiateGameConnection directly.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
468731b011 vrclient: Generate linux interface structs.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
a1445b757d lsteamclient: Generate linux interface structs.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
4988734817 vrclient: Remove unnecessary typedefs.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
4dfab8d8b6 lsteamclient: Remove unnecessary typedefs.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
0a2a3c514f vrclient: Get rid of the remaining openvr typedefs.
CW-Bug-Id: #22729
2024-02-15 15:53:26 +02:00
Rémi Bernon
a5fe4d774b lsteamclient: Get rid of the remaining steam typedefs.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
aaf9ba6e56 lsteamclient: Generate functions with calling convention.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
783cde21bd lsteamclient: Generate functions with calling convention.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
77d381cd1d vrclient: Use standard fixed size integer types.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
560fc53226 lsteamclient: Use standard fixed size integer types.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
af68b26a9b vrclient: Use integer types instead of enums.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
b83f5fe79e lsteamclient: Use integer types instead of enums.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
5aefaf36d8 vrclient: Update the params nSubmitFlags instead of the local variable.
CW-Bug-Id: #23000
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
92ac73e803 vrclient: Wrap compositor data cleanup with parameter struct.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
e8d83b6527 vrclient: Update the submit flags in load_compositor_texture_dxvk.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
a20d4f3547 wineopenxr: Use SOURCES instead of C(XX)_SRCS. 2024-02-15 15:53:25 +02:00
Rémi Bernon
750d2689a6 vrclient: Use SOURCES instead of C(XX)_SRCS. 2024-02-15 15:53:25 +02:00
Rémi Bernon
64cdf179b9 steam.exe: Use SOURCES instead of C(XX)_SRCS. 2024-02-15 15:53:25 +02:00
Rémi Bernon
c9b3ee14c5 lsteamclient: Use SOURCES instead of C(XX)_SRCS. 2024-02-15 15:53:25 +02:00
Rémi Bernon
6d9762bfef vrclient: Fix IVRCompositor_WaitGetPoses calls after struct wrapping.
And call the right versions of the interfaces.

CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
ec675e1fe3 wineopenxr: Link with unix vulkan, not PE.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
fc49fe100e steam.exe: Build as a GUI subsystem executable. 2024-02-15 15:53:25 +02:00
Rémi Bernon
4fee987bf6 vrclient: Correctly assign converted paths to params members.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
fc1f3d83ee vrclient: Wrap parameters in structures.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
6b21c32d2a lsteamclient: Wrap parameters in structures.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
e4d75b2fb0 vrclient: Simplify unix side parameter conversions.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
d8038254d4 lsteamclient: Simplify unix side parameter conversions.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
87a65c1993 vrclient: Allocate memory for every path conversion.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
1e11264606 lsteamclient: Allocate memory for every path conversion.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
c3495c7f25 vrclient: Simplify path convertion using separate dicts.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
10d907c5f7 lsteamclient: Simplify path convertion using separate dicts.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
c67298dda0 vrclient: Inline some IVRClientCore override code.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
e812ab48ee vrclient: Use manual methods instead of generated wrappers.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
eff166af7e vrclient: Inline some IVRCompositor override code.
CW-Bug-Id: #22729
2024-02-15 15:53:25 +02:00
Rémi Bernon
c3ccae9d23 vrclient: Use manual methods for IVRCompositor overrides.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
192dc52fcd vrclient: Split IVRCompositor helpers to vrcompositor_manual.c.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
b48a38b688 vrclient: Inline some IVRInput override code.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
d21441d3ef vrclient: Use manual methods for IVRInput overrides.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
d26ee86dcd vrclient: Split IVRInput helpers to vrinput_manual.c.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
51f76d68ab vrclient: Inline some IVROverlay override code.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
5f787ff524 vrclient: Use manual methods for IVROverlay overrides.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
09a92a1ce2 vrclient: Split IVROverlay helpers to vroverlay_manual.c.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
f0887911a3 vrclient: Use manual methods for IVRRenderModels overrides.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
ef849f4822 vrclient: Split IVRRenderModels helpers to vrrendermodels_manual.c.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
17644c7bbf vrclient: Use manual methods for IVRSystem overrides.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
6b50dd5920 vrclient: Split IVRSystem helpers to vrsystem_manual.c.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
d2ef33eb25 vrclient: Use a generic interface wrapper struct.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
7e5eed6c71 lsteamclient: Use a generic interface wrapper struct.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
eb531f7764 vrclient: Remove unused wrapper generation case.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
08fe99382f vrclient: Use with statement to generate the .c files.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
224f0af6ad lsteamclient: Use with statement to generate the .c files.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
f0cbd25230 vrclient: Generate the .h and .cpp files separately.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
42b0968c32 lsteamclient: Generate the .h and .cpp files separately.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
37853f8469 vrclient: Pass write function as parameter to handle_method*.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
9130b93597 lsteamclient: Pass write function as parameter to handle_method*.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
7b11b2a3a6 lsteamclient: Replace do_cb_wrap with (alloc|convert)_callback.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
31e7035f64 lsteamclient: Split do_cb_wrap into conversion helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
358f8f5841 vrclient: Consistently use the computed return type.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
bf156c5161 vrclient: Fix inconsistent const qualifier handling.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
8d78cb5107 lsteamclient: Consistently use the computed return type.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
ef91c04a22 vrclient: Always use a return result variable.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
f6871a6b73 lsteamclient: Always use a return result variable.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
cc38f0c8c1 vrclient: Fix incorrect size paramter passed to lin_to_win.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
453b5bdc5a make: Correctly link external modules unixlib with ntdll.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
273c5c22d1 wineopenxr: Fix compilation warnings.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
ad41ceefce wineopenxr: Build using makedep rules.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
3f94f884ae steam.exe: Fix compilation warnings.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
861ea515bb steam.exe: Build using makedep rules.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
dcb11c0d4b vrclient: Fix some compilation warnings.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
dd34dad5a1 vrclient: Build using makedep rules.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
ece68edb6a lsteamclient: Fix some compilation warnings.
CW-Bug-Id: #22729
2024-02-15 15:53:24 +02:00
Rémi Bernon
40f210f20c lsteamclient: Build using makedep rules.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
5e415e552c vrclient: Cleanup C method generator.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
c34fc635ce lsteamclient: Cleanup C method generator.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
87cdc4fcad vrclient: Generate thiscall wrappers separately.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
caa21ea5d0 lsteamclient: Generate thiscall wrappers separately.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
0ffeec686f vrclient: Introduce a new Method cursor wrapper.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
ad8cbcfc2d lsteamclient: Introduce a new Method cursor wrapper.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
957ce193f9 vrclient: Introduce a new Class cursor wrapper.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
e9e6dd3117 lsteamclient: Introduce a new Class cursor wrapper.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
5990126dad vrclient: Use the generated names in the C++ method.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
1909c6d441 vrclient: Simplify next-is-size handling a bit.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
4fc0934c83 lsteamclient: Use the names array for the param converters.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
f8a14dfd27 vrclient: Use declspec to generate C++ method signature.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
122e0e362c lsteamclient: Use declspec to generate C++ method signature.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
992384b88f vrclient: Use method.get_arguments instead of get_params.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
5e89fb156a vrclient: Split C++/C method generation helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
e1c7f3e3f3 lsteamclient: Split C++/C method generation helpers.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
c9dda0d5b7 lsteamclient: Reorder do_cb_wrap first parameters.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
f3eb7b9491 vrclient: Split cpp_h generation to a dedicated method.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
064d511e66 lsteamclient: Split cpp_h generation to a dedicated method.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
30e873331c vrclient: Return all struct abis from find_struct.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
9bf3f81987 lsteamclient: Return all struct abis from find_struct.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
c5a4bc1729 vrclient: Filter structs and classes while parsing.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
f31b6d43fb lsteamclient: Filter structs and classes while parsing.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
6a59c1377a vrclient: Use the all_records dict to lookup structs.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
18e3344745 lsteamclient: Use the all_records dict to lookup structs.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
2aa6fac5cb vrclient: Introduce new canonical_typename helper.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
c3cb0a26b0 lsteamclient: Introduce new canonical_typename helper.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
f82c90c71a vrclient: Sort classes by their version string.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
9da0e96f94 lsteamclient: Sort classes by their version string.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
dd7031d547 vrclient: Filter classes by version before generating.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
e4ca59abab lsteamclient: Filter classes by version before generating.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
cc1963dbba lsteamclient: Strip interface version suffixes early.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
e6cce9236c vrclient: Parse SDK versions and ABIs in parallel.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
f19380c190 lsteamclient: Parse SDK versions and ABIs in parallel.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
60876a1cc6 vrclient: Split loading, parsing, and generating steps.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
d4cb359f4b lsteamclient: Split loading, parsing, and generating steps.
CW-Bug-Id: #22729
2024-02-15 15:53:23 +02:00
Rémi Bernon
d8bb8ba6a3 vrclient: Introduce a dedicated parsing function.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
f6bb931d9a lsteamclient: Introduce a dedicated parsing function.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
73db1a9176 vrclient: Use a dict for SDK sources / class mapping.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
ff2999e563 lsteamclient: Use a dict for SDK sources / class mapping.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
67210df56b vrclient: Use upper-case global constants.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
adbe64d4bf lsteamclient: Use upper-case global constants.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
34f52223fc vrclient: Remove unused imports and duplicate entries.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Rémi Bernon
5f6ee9a06e lsteamclient: Remove unused imports and duplicate entries.
CW-Bug-Id: #22729
2024-02-15 15:53:22 +02:00
Paul Gofman
623d71250f proton: Disable forced LAA for Final Fantsy X/X-2.
CW-Bug-Id: #22930
2024-02-15 15:50:55 +02:00
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 bc63dbbf2a.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Link: https://github.com/HansKristian-Work/vkd3d-proton/pull/1458
2023-04-27 17:51:45 +03:00
Arkadiusz Hiler
f679be3cc0 update wine 2023-04-18 17:04:27 +03:00
Andrew Eikum
576a839c18 Don't ship filenames with colons in them
CW-Bug-Id: #22054
2023-04-18 17:04:27 +03:00
Arkadiusz Hiler
ccb1c5a413 update wine 2023-04-13 22:12:34 +03:00
Giovanni Mascellani
10db41a416 Update vkd3d submodule. 2023-03-08 17:36:03 +02:00
Arkadiusz Hiler
9ec1e2714e update vkd3d-proton to v2.8-84-g08909d98 2023-03-08 17:36:03 +02:00
Arkadiusz Hiler
1164e4b0b8 update dxvk to v2.1-4-gcaf31033 2023-03-08 17:36:03 +02:00
Arkadiusz Hiler
9130990527 update dxvk-nvapi to v0.6.2 2023-03-08 17:35:54 +02:00
Esme Povirk
0b8c0e97b2 Update Wine Mono to 7.4.1. 2023-03-08 17:35:54 +02:00
Paul Gofman
f7c895c287 steam_helper: Trigger EA Desktop reinstall if link2ea association is missing.
CW-Bug-Id: #21645
2023-03-08 17:35:54 +02:00
Paul Gofman
5610e4538f steam_helper: Set desktop close timeout for EA Desktop.
CW-Bug-Id: #21645
2023-03-08 17:35:54 +02:00
Adam Moss
e171c46460 proton: Set enablenvapi for Red Dead 2 / Online.
Link: https://github.com/ValveSoftware/Proton/pull/6227
2023-03-08 17:35:54 +02:00
Arkadiusz Hiler
e34482a580 proton: Disable hidenvgpu if nvapi is enabled.
Link: https://github.com/ValveSoftware/Proton/pull/6227
2023-03-08 17:35:54 +02:00
Adam Moss
6b4dce48bc proton: Enable dxvknvapi on a bunch of (DLSS) titles.
Link: https://github.com/ValveSoftware/Proton/pull/6120
Link: https://github.com/ValveSoftware/Proton/pull/6227

(squashed a bunch of commits)
2023-03-08 17:35:54 +02:00
Rémi Bernon
c7cb79128e fonts: Only convert simsun.ttc to TrueType.
This partially reverts commit 303299793f.

CW-Bug-Id: #21346
2023-03-08 17:35:54 +02:00
Rémi Bernon
303299793f fonts: Convert simsun.ttc / msyh.ttf / malgun.ttf to TrueType.
CW-Bug-Id: #21346
2023-02-14 16:07:44 +02:00
Paul Gofman
b59a3040d9 lsteamclient: Fix _GetAppInstallDir() return value.
CW-Bug-Id: #21864
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
36f8ada2cd fonts: Include in fake Nirmala UI all the codepoints from the original font.
New fonts are from https://github.com/notofonts/noto-fonts.git at
2725c70baa8b0176c7577093ba1fc6179aa79478, in the hinted/ttf folder.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
b75a61bc1f fonts: Include in fake Microsoft Sans Serif all the codepoints from the original font. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
3d635bd789 fonts: Include in fake Arial all the codepoints from the original font.
New fonts are from https://github.com/notofonts/noto-fonts.git at
2725c70baa8b0176c7577093ba1fc6179aa79478, in the hinted/ttf folder.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
a6f3965460 Makefile.in: Fix typo preventing Armenian fonts to be picked up. 2023-02-14 16:07:44 +02:00
Rémi Bernon
a8eeb1c9ac build: Move the MONO_TARBALL_URL variable down. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
85ed53c1d8 fonts: Provide an alternative fake Arial font.
The fake Arial already distributed with Python is based on Liberation fonts.
It is metrically compatible with the original Arial, but it doesn't support
all its glyphs (specifically, it misses Arabic).

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

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

CW-Bug-Id: #20302
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
77fd6c3b2d proton: Install all available fonts to the prefix.
This requires commit "loader: Install all fonts provided by Proton in the
registry." in Wine, otherwise font support will be broken.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
4378ee718a fonts: Install Liberation fonts using their fake name.
For homogeneity with the other fake fonts. That's mostly cosmetic.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
7e10a41649 fonts/noto: Update all Noto fonts.
New fonts are from https://github.com/notofonts/noto-fonts.git at
2725c70baa8b0176c7577093ba1fc6179aa79478, in the hinted/ttf folder.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
5b52756384 LICENSE: Fix a typo. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
8e9e6da034 fonts: Rewrite font merging script based on fonttools.
The current script based on fontforge seems to have a few problems.
The generated fonts show glitches, for example in Cyberpunk 2077 for
Thai and in FIFA 22 for Arabic.

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

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

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

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

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

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

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

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

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

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

Let's silence those errors.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
bc63dbbf2a build: Get rid of runtime selection options.
Those were first added when we were working on using the new
pressure-vessel based runtime but have basically no use during current
development.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
10a240c341 docker: Use sniper as a base. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
cbf52aaafa default_pfx: Filter out fully qualified paths from the registry.
The default registry contains some fully qualified paths to fonts
that are available on the build machine, but make no sense on any
other system. This is useless, and also known to cause bug, because
it confuses the Wine font caching code. An affected game is
Lumberjack's Dynasty.
2023-02-14 16:07:44 +02:00
Giovanni Mascellani
84012c12aa Do not use the vkd3d version emebededd in Wine, but rebuild from its submodule. 2023-02-14 16:07:44 +02:00
Giovanni Mascellani
929733036f Revert "Build vkd3d as ELF."
This reverts commit 69d6b82e94.
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 c90d4c34d8)
2023-02-14 16:07:43 +02:00
Paul Gofman
e1d797fd97 wineopenxr: Use custom Vk structures instead of custom functions for creating Vk device through OpenXR. 2023-02-14 16:07:43 +02:00
Paul Gofman
09bbd8c0bf wineopenxr: Load unwrappers from winevulkan.so. 2023-02-14 16:07:43 +02:00
Paul Gofman
e2ab395020 steam_helper: Load unwrappers from winevulkan.so. 2023-02-14 16:07:43 +02:00
Paul Gofman
74ae018197 vrclient: Load unwrappers from winevulkan.so. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
1489a6a8d5 proton: Bump prefix version. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
19f18b660e Makefile.in: Ignore autogenerated winevulkan files. 2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
f7a03d620e steam_helper: Use PROCESSINFOCLASS.
We no longer have PROCESS_INFORMATION_CLASS as of ce91ef6426bf ("kernelbase: Add SetProcessInformation().")
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
dc3a951754 Makefile.in: Build wineopenxr with -ldl.
Required as of bef09697227c ("ntdll: Move the .so module initialization to winecrt0.")
2023-02-14 16:07:43 +02:00
Esme Povirk
f2223c0ba7 Update Wine Mono to 7.4.0. 2023-02-14 16:07:43 +02:00
Paul Gofman
89a2dac0b2 proton: Enable gamedrive compat option for Creativerse.
CW-Bug-Id: #21729
2023-02-14 16:07:43 +02:00
Paul Gofman
f693c48a4c proton: Enable gamedrive compat option for As Dusk Fails.
CW-Bug-Id: #21485
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
8e67412fcc media-converter: Use the test pattern video even without dump/transcoded files.
So the game won't trip over lack of media when shader pre-cacheing is
disabled in Steam.

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

This patch includes some changes from Arek Hiler.

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

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

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

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

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

6. query.view_mut() returns QueryViewMut

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

There are some extra cleanups as well:

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

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

3. some unneeded imports were removed
2023-02-14 16:07:43 +02:00
Rémi Bernon
9eb5a1753c docker: Add autoconf-archive dependency.
For OpenFST.
2023-02-14 16:07:43 +02:00
Simon McVittie
4db08dc766 proton: Don't crash if sys.stderr is not usable
If a Steam user runs Steam from a terminal, puts it in the background
and then exits from that terminal, or if they restart their desktop
session from a terminal (as in ValveSoftware/Proton#6277) and then exit
from that terminal, then we can inherit a stdout and/or stderr file
descriptor pointing to an invalid file descriptor. Writing to such a
file descriptor fails with EIO. Similarly, we could get write errors
as a result of OS state, such as ENOSPC if we are writing to a disk
that is full, or EPIPE if a stream to a logging framework such as the
systemd journal has been shut down.

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

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

Signed-off-by: Simon McVittie <smcv@collabora.com>
Link: https://github.com/ValveSoftware/Proton/pull/6341
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
b5d58d27ad docker: Bump Rust to 1.65.
For let-else statements and generic associated types.
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
c04ca71f7a docker: Don't specify the image tag in --cache-from
The option is badly documented. Apparently the image name is enough.
Specifying the tag breaks podman/buildah build.
2023-02-14 16:07:43 +02:00
Rémi Bernon
4514ff3eff docker: Add python3-mako to the SDK images. 2023-02-14 16:07:43 +02:00
Rémi Bernon
d8fbadbd2a docker: Add OpenBLAS dependency.
For Kaldi / Vosk.
2023-02-14 16:07:43 +02:00
Anna Lasky
dd32534265 proton: Remove games that need shared resources from MFDXGI hack
This comments out all of the games that do not need the MFDXGI hack on
the experimental branch because the experimental branch has support for
shared resources.
2023-02-14 16:07:43 +02:00
Anna Lasky
f9b51bc244 proton: Remove LOST EMBER from MFDXGI hack
CW-Bug-ID: #21097
2023-02-14 16:07:43 +02:00
Anna Lasky
5328d61f5a proton: Reorganize games in MFDXGI hack and add missing titles
This separates out the games that only need shared resources in order to
play video correctly without the MFDXGI hack.  El Hijo (853050) and
Labyrinth City: Pierre the Maze Detective (1421790) were also added.
2023-02-14 16:07:43 +02:00
Arkadiusz Hiler
8959349ac9 configure.sh: Use SDK 0.20220601.0-1 2022-11-23 14:06:19 +02:00
Arkadiusz Hiler
175bc06a3f update wine 2022-10-31 13:25:15 +00:00
Arkadiusz Hiler
04dfc0937c update dxvk to v1.10.3-28-ge3daa699 2022-10-14 18:36:09 +03:00
Connor McAdams
c04edcea36 Update Wine Mono to 7.3.1. 2022-10-14 18:36:09 +03:00
Arkadiusz Hiler
79134b581a docker: Update Rust to 1.63.0. 2022-10-14 18:36:09 +03:00
Arkadiusz Hiler
42e034ece8 docker: Bump steamrt version to 0.20220601.0.
It contains libsoup.
2022-10-14 18:36:09 +03:00
Shawn Wallace
618221db82 Return proper number of recognized swapchain formats if some are not recognized.
Link: https://github.com/ValveSoftware/Proton/pull/6079

Edited by Paul Gofman:
- fixed behaviour for Vulkan instance type;
- stylistic changes.
2022-10-14 18:36:01 +03:00
Arkadiusz Hiler
66e57462c1 media-converter: Use crates.io version of the gstreamer crates. 2022-10-14 18:21:56 +03:00
Giovanni Mascellani
9ae252db4f Ensure vkd3d-proton is used for D3D12 unless wined3d is explicitly requested. 2022-10-14 18:21:56 +03:00
Giovanni Mascellani
69d6b82e94 Build vkd3d as ELF. 2022-10-14 18:21:56 +03:00
Paul Gofman
30c6b5c41e lsteamclient: Return NULL from manual_convert_SteamAPI_CheckCallbackRegistered_t() if win_func is NULL.
CW-Bug-Id: #21313
2022-10-14 18:21:56 +03:00
Paul Gofman
be25891a0c proton: Enable WINE_HEAP_DELAY_FREE for Call of Duty: Black Ops II Zombies and Multiplayer.
CW-Bug-Id: #21106
2022-10-14 18:21:56 +03:00
Paul Gofman
8d2e85be8c proton: Disable forced LAA for Sword and Fairy 4.
CW-Bug-Id: #21180
2022-10-14 18:21:56 +03:00
Rémi Bernon
4ee7c0c666 glslang: Build from source instead of prebuilt binary. 2022-10-14 18:21:56 +03:00
Rémi Bernon
8f0b458bca
gst-plugins-base: Support GLX backend for GL plugins. 2022-08-23 10:28:19 +02:00
Andrew Eikum
981ca6febe Also ship gst libsoup plugin for network video 2022-08-15 17:47:03 +03:00
Rémi Bernon
f3cc9f0610 gst-base: Enable GL video processing plugins.
CW-Bug-Id: #20363
CW-Bug-Id: #20905
CW-Bug-Id: #20981
2022-08-15 17:47:03 +03:00
Arkadiusz Hiler
4221d9ef07 Update wine. 2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
fb9231f0ca Update dxvk to v1.10.3. 2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
1db86a772d Update vkd3d-proton to v2.6-1-gc05900da. 2022-08-10 19:29:30 +03:00
Giovanni Mascellani
d760b63792 Update vkd3d submodule.
CW-Bug-Id: #20349
CW-Bug-Id: #21016
2022-08-10 19:29:30 +03:00
Jacek Caban
f3c98217cc gecko: Update version to 2.47.3.
CW-Bug-Id: #20775
2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
5720dd3e9c proton: Add PROTON_NO_STEAM_FFMPEG to ignore ffmpeg that ships with Steam.
CW-Bug-Id: #20923
2022-08-10 19:29:30 +03:00
Paul Gofman
7e27da4bc2 proton: Add Warframe to OPWR disablement list.
CW-Bug-Id: #20944

The game's launcher starts hitting unimplemented d3dcompiler
bits with OPWR supported.
2022-08-10 19:29:30 +03:00
Paul Gofman
7d4ca96ae1 proton: Add WINE_DISABLE_VULKAN_OPWR hack appid list.
CW-Bug-Id: #20680
2022-08-10 19:29:30 +03:00
Paul Gofman
a62a80be58 vrclient: Use PROTON_VR_RUNTIME from registry if env var is not there.
CW-Bug-Id: #21036
2022-08-10 19:29:30 +03:00
Paul Gofman
5e7036d566 steam_helper: Also store PROTON_VR_RUNTIME in registry.
CW-Bug-Id: #21036
2022-08-10 19:29:30 +03:00
Paul Gofman
bcd3d5218f lsteamclient: Wrap SteamAPIWarningMessageHook_t callback.
CW-Bug-Id: #20813
2022-08-10 19:29:30 +03:00
Paul Gofman
242d655a0f proton: Add dotnetfx35setup.exe builtin override.
CW-Bug-Id: #20733
2022-08-10 19:29:30 +03:00
Arkadiusz Hiler
707741dcc1 toolmanifest: Specify the compatmanager layer name
Link: https://github.com/ValveSoftware/Proton/pull/5891
2022-08-10 19:29:30 +03:00
Simon McVittie
79c9b6a15d proton: Allow forwarding commands into the Proton environment
Recent versions of the Steam Runtime include an IPC server/client pair
which can be used to run commands inside the container environment
(or any other special execution environment), analogous to sshd/ssh or
flatpak-portal/flatpak-spawn. The server runs inside the Steam Runtime
container and accepts commands over D-Bus; the client runs on the host
system, asks the server to run a command, and forwards its stdin, stdout
and stderr back to the host.

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

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

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

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

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

CW-Bug-ID: #19126
2022-08-10 19:23:14 +03:00
Bitwolf
0ba9319113 proton: Add POSTAL: Brain Damaged to MFDXGI hack
CW-Bug-Id: #19126
Link: https://github.com/ValveSoftware/Proton/pull/5899
2022-08-03 14:24:42 +03:00
Paul Gofman
18195c558d lsteamclient: Also don't cache interfaces with vtable allocated from steamclient.dll.
CW-Bug-Id: #20909
2022-08-03 14:24:42 +03:00
Paul Gofman
ba3d473ec1 lsteamclient: Place vtables for some interfaces in native steamclient.dll data.
CW-Bug-Id: #20869
2022-08-03 14:24:42 +03:00
Arkadiusz Hiler
be4a80dac6 lsteamclient: Assume manual wrappers are needed for newer revisions of the interfaces. 2022-08-03 14:24:42 +03:00
Supreeeme
ade0363654 steam_helper: Respect VR_OVERRIDE envvar
Link: https://github.com/ValveSoftware/Proton/pull/5922
2022-08-03 14:24:42 +03:00
Esme Povirk
d141d538bc proton: Make reflinks for file copies when possible.
CW-Bug-Id: #18633
2022-08-03 14:24:34 +03:00
Arkadiusz Hiler
d957ff7c35 Use GitHub mirrors for gstreamer rust repos.
Those are the original repos that were later moved to freedesktop.org.
The author recently started updating them as mirrors.

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

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

CW-Bug-Id: #20803
2022-06-13 22:22:15 +03:00
Andrew Eikum
112d3635f4 Makefile.in: Fix build with recent meson
It errors out on unknown options.
2022-06-13 22:22:15 +03:00
Arkadiusz Hiler
7523181830 lsteamclient: Fix the order of arguments in steamclient_isteaminput_getglyph_png(). 2022-06-13 22:16:42 +03:00
Arkadiusz Hiler
db61ec1f1e lsteamclient: Wrap EnableActionEventCallbacks's callback also for SteamInput006. 2022-06-10 16:31:19 +03:00
Arkadiusz Hiler
6ded785ccd lsteamclient: Make helpers for EnableActionEventCallbacks reusable. 2022-06-10 16:31:18 +03:00
Arkadiusz Hiler
05efcef3fa lsteamclient: Fixup paths for GetGlyph*() also in SteamInput006. 2022-06-10 16:31:17 +03:00
Arkadiusz Hiler
46a427e8d0 lsteamclient: Make getglyph png and svg helpers non-static. 2022-06-10 16:31:17 +03:00
Arkadiusz Hiler
fd79f236ca lsteamclient: Bump clang to 13.0.1. 2022-06-10 16:31:15 +03:00
Arkadiusz Hiler
0178b2bc6f update wine 2022-06-07 18:57:26 +03:00
Esme Povirk
3a7e2f03a7 Update Wine Mono to 7.3.0. 2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
a5d28386b9 update dxvk to v1.10.1-57-g279b4b7e 2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
fe93b92ddc update dxvk-nvapi to v0.5.4 2022-06-03 17:57:43 +03:00
Anna Lasky
ff7bfc5595 Add Dread X Collection: The Hunt to MFDXGI hack
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
faf8b2e64d proton: Add Outward to MFDXGI hack.
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Paul Gofman
673e1ae43d proton: Add V Rising to MFDXGI hack.
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
203580f96f Add two more games to MFDXGI manager hack.
CW-Bug-Id: #19126
CW-Bug-Id: #20655
2022-06-03 17:57:43 +03:00
Arkadiusz Hiler
cc8db7609b Add three more games to MFDXGI manager hack.
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Anna Lasky
ced280e888 Add Ember Knights to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-06-03 17:57:43 +03:00
Anna Lasky
8909720216 Add El Hijo - A Wild West Tale to MFDXGI manager hack
CW-Bug-ID: #19126
2022-06-03 17:57:43 +03:00
Anna Lasky
d7452b523f Add EZ2ON REBOOT : R to MFDXGI manager hack
CW-Bug-ID: #19126
2022-06-03 17:57:43 +03:00
Paul Gofman
a216f5baa0 Add POSTAL4: No Regerts to MFDXGI manager hack.
CW-Bug-Id: #20611
2022-06-03 17:57:29 +03:00
Andrew Eikum
94772426ac Add Disintegration to MFDXGI manager hack
CW-Bug-Id: #20592
2022-06-03 14:26:11 +03:00
Georg Lehmann
7e7f6155d3 Set VKD3D_SHADER_DEBUG=none by default.
Link: https://github.com/ValveSoftware/Proton/pull/5326
2022-06-03 14:26:11 +03:00
Paul Gofman
47ae0819ae lsteamclient: Execute SteamNetworkingSocketsDebugOutput callback from a Wine thread.
CW-Bug-Id: #20684

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

CW-Bug-Id: #20379
2022-06-03 14:26:11 +03:00
Andrew Eikum
5fd2584fa5 Makefile: Fix SDK build 2022-06-03 14:26:11 +03:00
Andrew Eikum
43a131b97f docker: Use full URLs for base images
podman doesn't automatically use the docker.io registry.
2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
d2e7a76010 configure.sh: Update default Proton SDK image to 0.20220329.0-0 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
252e903ff2 docker: Bump steamrt version to 0.20220329.0. 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
b1aea5b33e Makefile: Stop mentioning VMs. 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
f8a8301f4c Makefile: Get rid of install-internal target.
Since the migration off Vagrant we no longer need to copy Proton
installation from the VM to the host. This was replaced with a `make
install` invoked using the new build system which already puts things in
the right place. This render install-internal an unnecessary no-op.
2022-06-03 14:26:11 +03:00
Paul Gofman
4e20758255 Revert "lsteamclient: HACK Do not unset SteamAppId for 'Splitgate: Arena Warfare'."
This reverts commit 57dc9d7062.
2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
c8486ad372 .gitmodules: Use upstream dxvk.
We no longer carry any downstream patches.
2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
0f50e49b85 Makefile.in: Use vk.xml included with Wine instead of downloading one. 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
ec4f158666 update wine 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
1af0593ce8 update dxvk to v1.10.1 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
c523ec1382 update vkd3d-proton to v2.6 2022-04-21 13:02:27 +03:00
Arkadiusz Hiler
f487cf436e update dxvk-nvapi to v0.5.3 2022-04-21 13:02:27 +03:00
Anna Lasky
44e38af171 Add Monster Train to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-21 13:02:27 +03:00
Anna Lasky
34b55deb55 Add 3 more titles to IMFDXGIDeviceManager hack
Titles added: Hardspace: Shipbreaker (1161580), Nine Sols Demo
(1809540), Car Mechanic Simulator 2021 (1190000)

CW-Bug-Id: #19126
2022-04-21 13:02:27 +03:00
Paul Gofman
cd60b70756 lsteamclient: Fixup gameID parameter for SteamUser008_InitiateGameConnection().
CW-Bug-Id: #20195
2022-04-20 18:54:06 +03:00
Paul Gofman
e03828cdc3 lsteamclient: Also treat TypeKind.UNEXPOSED as unspecified function pointer in genwrapper.py. 2022-04-20 18:54:06 +03:00
Arkadiusz Hiler
aaabeb5567 Revert "proton: Add noesync,nofsync for Apex Legends"
This reverts commit 25a58123a1.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
f45b165030 Revert "proton: Add noesync,nofsync for PixelJunk Eden"
This reverts commit 0623da2af4.
2022-04-05 18:13:11 +03:00
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
44d9fb94b2 ("build: Run autoreconf in the container.")
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
d101742156 docker: Install nasm package.
Required by dav1d. This got lost somewhere between rebases and branches.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
43bfd2a6ae docker: Install fonttools package. 2022-04-05 18:13:11 +03:00
Rémi Bernon
a5bfe6edda docker: Add fontforge and libutfcpp-dev to the Proton SDK images. 2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
d9ae1265c0 docker: Bump steamrt version to 0.20220119.0.
It contains afdko.
2022-04-05 18:13:11 +03:00
Liam Middlebrook
aa33dd9cb8 proton: Set DXVK_ENABLE_NVAPI envvar when NvAPI is enabled
See: https://github.com/doitsujin/dxvk/pull/2544

Link: https://github.com/ValveSoftware/Proton/pull/5687
2022-04-05 18:13:11 +03:00
Andrew Eikum
22a1828158 Makefile: Improve module target for modules with periods 2022-04-05 18:13:11 +03:00
Andrew Eikum
7195a2c542 media-converter: Fix read-only DB detection 2022-04-05 18:13:11 +03:00
Paul Gofman
a4824da779 proton: Optionally setup T: drive for native Steam directory.
CW-Bug-Id: #20285
2022-04-05 18:13:11 +03:00
Itoh Shimon
b46a3bf712 fonts: Update PROTON_NOTE.md for Ume
Link: https://github.com/ValveSoftware/Proton/pull/5609
2022-04-05 18:13:11 +03:00
Andrew Eikum
addf6dc5b6 proton: Remove the FFXIV launcher workaround
CW-Bug-Id: #20242
2022-04-05 18:13:11 +03:00
Anna Lasky
f0876fb99c Add DJMAX RESPECT V to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
6ab3403b1e Add The Complex to IMFDXGIDeviceManager hack 2022-04-05 18:13:11 +03:00
Andrew Eikum
7b49d43020 Add Gloomhaven to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:13:11 +03:00
Andrew Eikum
023a715241 Add Rust to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:13:11 +03:00
Andrew Eikum
0bbc7e480a Add Cook-Out to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:03:47 +03:00
Andrew Eikum
99c07e4dae Add Haven to IMFDXGIDeviceManager hack
CW-Bug-Id: #19126
2022-04-05 18:03:47 +03:00
Andrew Eikum
14ffc4d0f7 Use CARGO_HOME on the host
This lets cargo's cache persist across builds, so there are fewer (often
zero) network pulls during the build process.
2022-03-04 13:30:29 +02:00
Andrew Eikum
ab06ba22a0 Use media-converter's Cargo.lock 2022-03-04 13:30:29 +02:00
Andrew Eikum
473ce8c81d Add Rustler to IMFDXGIDeviceManager hack 2022-03-01 12:32:14 -06:00
Andrew Eikum
c5b505393a proton: Move mfplat MFDXGIDeviceManager hack appid list to proton script 2022-02-25 13:52:40 +02:00
Andrew Eikum
ccb2397f4c proton: Force append_forever to be a named argument
And remove redundant default parameter value.
2022-02-25 13:52:40 +02:00
Andrew Eikum
32fe36d9b2 proton: Extend PROTON_LOG to support adding extra WINEDEBUG channels 2022-02-25 13:52:40 +02:00
Rémi Bernon
6a3c03d64b build: Don't change debug file .text section flags.
This breaks perf ELF symbol tracking somehow.
2022-02-25 13:52:40 +02:00
Rémi Bernon
42cb4d31bb build: Remove pefixup invocation for module rule too. 2022-02-25 13:52:40 +02:00
Derek Lesho
33c77c5687 fixup! build: Build easyanticheat bridge when present. 2022-02-25 13:52:40 +02:00
Rémi Bernon
82b5301d55 build: Remove unnecessary pefixup.py script. 2022-02-25 13:52:40 +02:00
Rémi Bernon
88064f86ee build: Fixup .text section flags using objcopy and assert in pefixup. 2022-02-25 13:52:40 +02:00
Rémi Bernon
47fe4a8063 pefixup: Assert that IMAGE_SCN_ALIGN_MASK isn't required anymore. 2022-02-25 13:52:40 +02:00
Andrew Eikum
17683bff97 proton: Better handle broken symlinks 2022-02-25 13:52:40 +02:00
Andrew Eikum
90a11aca8e proton: Add file_exists helper function
To make desired handling of symlinks more clear at the callsite.
2022-02-25 13:52:40 +02:00
Arkadiusz Hiler
7cb4c4dc93 update wine 2022-02-23 18:08:43 +02:00
Andrew Eikum
0623da2af4 proton: Add noesync,nofsync for PixelJunk Eden 2022-02-11 17:39:00 +02:00
Andrew Eikum
25a58123a1 proton: Add noesync,nofsync for Apex Legends 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
b7d532badf update vkd3d-proton to v2.5-146-g33f17cc7 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
e97e717175 update dxvk-nvapi to v0.5.2 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
2a5b25a7a2 update dxvk to upstream v1.9.4
we can drop all the proton-specific customizations now that dxvk's dgxi
is the default one and wined3d interop is gone from vrclient
2022-02-11 17:39:00 +02:00
Andrew Eikum
f3b9480b5f docs: Update CONTROLLERS for Wine 7.0 2022-02-11 17:39:00 +02:00
Arkadiusz Hiler
053954076c Update wine 2022-02-11 17:39:00 +02:00
Esme Povirk
f0553aabb5 Update Wine Mono to 7.1.2. 2022-02-09 21:37:47 +02:00
Derek Lesho
34bed50ea3 build: Build easyanticheat bridge when present. 2022-02-09 21:37:47 +02:00
Derek Lesho
a5d2b67315 steam_helper: Place Easy Anti Cheat runtime path into PROTON_EAC_RUNTIME. 2022-02-09 21:37:47 +02:00
Arkadiusz Hiler
9a07890d7e vrclient: Remove wined3d interop.
DXVK interop is still in place.
2022-01-24 22:53:20 +02:00
Paul Gofman
b908213041 wineopenxr: Set Unix __WINE_OPENXR_VK_DEVICE_EXTENSIONS env var instead of Windows.
CW-Bug-Id: #20036

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

Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
2022-01-24 22:53:20 +02:00
Rémi Bernon
b203ba6bdd proton: Run steam from its Program Files (x86) location.
For CoD: Black Ops 3.

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

Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
2022-01-24 22:53:20 +02:00
Andrew Eikum
a18ffa9b8b Makefile.in: Build dav1d gst plugin
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
293d4c2d8e add gst-plugins-rs submodule at 0.7.2
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
32e058dcbc Makefile.in: Build dav1d
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
07d27b9a81 add dav1d submodule at 0.9.2
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Derek Lesho
be0bdb7fb9 proton: Add gst-libav and ffmpeg to build.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
2022-01-24 22:53:20 +02:00
Jactry Zeng
710257adb4 proton: Add workaround for FFXIV to enable old launcher by default.
CW-Bug-Id: #19609
2022-01-24 16:03:39 +02:00
Andrew Eikum
71e306aaaa proton: Bump dumped audio file version 2022-01-24 16:03:39 +02:00
Andrew Eikum
d4e3c477dd proton: Add destroyprefix verb 2022-01-24 16:03:39 +02:00
Eduard Permyakov
d6aec09c05 lsteamclient: Fix forwarding incorrect result for certain path-related operations.
The SteamAPI may return non-zero values even when a NULL pointer is
passed in for the target path buffer. For example, GetAppInstallDir
will still return the required size of the distination buffer.

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

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

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

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

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

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

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

CW-Bug-ID: #19584
2022-01-19 11:29:55 +02:00
Rémi Bernon
a7d8aabc0d vrclient: Parse all include files at once. 2022-01-19 11:29:54 +02:00
Rémi Bernon
57ea5353ee lsteamclient: Parse all include files at once. 2022-01-19 11:29:54 +02:00
Rémi Bernon
db7e0e7a14 vrclient: Remove unnecessary includes. 2022-01-19 11:29:54 +02:00
Rémi Bernon
226313fa1d lsteamclient: Remove unnecessary includes.
The -Isteamworks_sdk_{sdkver} was not expanded anyway.
2022-01-19 11:29:54 +02:00
Rémi Bernon
fc14f36b9d vrclient: Use dicts to lookup structs in gen_wrapper.py. 2022-01-19 11:29:54 +02:00
Rémi Bernon
de5557448b lsteamclient: Use dicts to lookup structs in gen_wrapper.py. 2022-01-19 11:29:54 +02:00
Rémi Bernon
e868aa6e1a vrclient: Import from clang.cindex instead of prefixing. 2022-01-19 11:29:54 +02:00
Rémi Bernon
5e3dab64e2 lsteamclient: Import from clang.cindex instead of prefixing. 2022-01-19 11:29:54 +02:00
Paul Gofman
b01153b165 proton: Also setup S: drive for game directory for run verb.
CW-Bug-Id: #19930
2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
b502860b34 vkd3d: Update submodule's url to github 2022-01-19 11:29:54 +02:00
Paul Gofman
d1e6e83c15 wineopenxr: Convert projection view info chain in convert_XrCompositionLayer().
CW-Bug-Id: #19878
2022-01-19 11:29:54 +02:00
Paul Gofman
47d21b5618 wineopenxr: Update to 1.0.20 registry version. 2022-01-19 11:29:54 +02:00
Paul Gofman
3dd273022e Update OpenXR-SDK submodule. 2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
100dfb9476 Makefile: Use correct paths for dlls build with winemaker 2022-01-19 11:29:54 +02:00
Andrew Eikum
ad07f9fef1 Makefile: Remove redundant ccache make argument 2022-01-19 11:29:54 +02:00
Andrew Eikum
9d742a5332 Makefile: Remove Vagrant build path 2022-01-19 11:29:54 +02:00
Andrew Eikum
3bffbe24b3 build: Rename build/makefile_base.mak to Makefile.in 2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
f28e37b95c configure: Autodetect docker or podman 2022-01-19 11:29:54 +02:00
Esme Povirk
de7ac78030 Set .update-timestamp for new prefixes.
CW-Bug-Id: #19818
2022-01-19 11:29:54 +02:00
Andrew Eikum
725dd255fc media-converter: Update dependencies 2022-01-19 11:29:54 +02:00
Andrew Eikum
f002efd808 media-converter: Fall back to OGV if no MKV is available
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
f1893068c3 media-converter: Don't panic on unknown tags for read-only DBs
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
e190c26058 media-converter: Use AV1/Opus instead of Theora/Vorbis
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
48196af449 media-converter: Query upstream duration if needed
CW-Bug-Id: #19516
2022-01-19 11:29:54 +02:00
Andrew Eikum
bfc4b2330d make: Don't set CMAKE_SYSTEM_NAME=Linux
This broke libaom optimization detection, since cmake appears not to set
vars like CMAKE_SYSTEM_PROCESSOR if CMAKE_SYSTEM_NAME is set.
2022-01-19 11:29:54 +02:00
Andrew Eikum
e3a12c2f18 media-converter: Clean up already-converted entries
CW-Bug-Id: #19614
2022-01-19 11:29:54 +02:00
Rémi Bernon
7e4ee66328 proton: Link overridable DLLs debug files too. 2022-01-19 11:29:54 +02:00
Rémi Bernon
808920b6b3 proton: Add overridable DLLs to the tracked_files. 2022-01-19 11:29:54 +02:00
Rémi Bernon
83e40165ba proton: Move try_copy calls into the tracked_files block. 2022-01-19 11:29:54 +02:00
Rémi Bernon
b3d4aa02a6 proton: Add a prefix parameter to try_copy. 2022-01-19 11:29:54 +02:00
Rémi Bernon
16b662a0bf proton: Always set dst to the target file name in try_copy. 2022-01-19 11:29:54 +02:00
Andrew Eikum
212cbc0c9a lsteamclient: Generate steamworks sdk 1.53a support 2022-01-19 11:29:54 +02:00
Andrew Eikum
0b9c8a34aa lsteamclient: Import steamworks sdk 1.53a 2022-01-19 11:29:54 +02:00
Andrew Eikum
58860a6cc6 lsteamclient: Support reference parameters 2022-01-19 11:29:54 +02:00
Andrew Eikum
67316452df lsteamclient: Use python f-strings 2022-01-19 11:29:54 +02:00
Nikolay Sivov
55fb5b0bd3 Remove +tid from WINEDEBUG example.
It's now always enabled, and can't be suppressed.
2022-01-19 11:29:54 +02:00
Nikolay Sivov
ab07135a89 Do not use d3d10/d3d10_1 from dxvk.
That allows games to use d3d10 effects framework that wine's modules provide.
2022-01-19 11:29:54 +02:00
Rémi Bernon
c308ae9f32 configure.sh: Update default Proton SDK image to 0.20211207.0-0. 2022-01-19 11:29:54 +02:00
Rémi Bernon
6da8b268dd docker: Update Proton SDK components. 2022-01-19 11:29:54 +02:00
Rémi Bernon
f46e62c775 docker: Install yasm in Proton SDK images. 2022-01-19 11:29:54 +02:00
Jacek Caban
7e287a4614 proton: Allow relative paths in PROTON_REMOTE_DEBUG_CMD.
Patch by Timothee Besset.
2022-01-19 11:29:54 +02:00
Andrew Eikum
fa157d39f0 Remove unused mingw-w64 patches 2022-01-19 11:29:54 +02:00
Andrew Eikum
252d4c8b1d Makefile: Update module target for new wine library paths 2022-01-19 11:29:54 +02:00
Andrew Eikum
264ca8eda3 build: Simplify gst-plugins-good and -base configure 2022-01-19 11:29:54 +02:00
Andrew Eikum
1ba590a207 user_settings: Improve default gst logging 2022-01-19 11:29:54 +02:00
Andrew Eikum
8db0a29d4a Update gstreamer to 1.18.5 2022-01-19 11:29:54 +02:00
Paul Gofman
920a2e52f0 makefile: Also pefixup .drv files. 2022-01-19 11:29:54 +02:00
Rémi Bernon
959f3665c3 proton: Add +unwind to the default debug channels. 2022-01-19 11:29:54 +02:00
Rémi Bernon
2b4bfa46d6 build: Call dlls/winevulkan/make_vulkan in wine post-source. 2022-01-19 11:29:54 +02:00
Rémi Bernon
0b729bded4 build: Stop building FAudio and jxrlib. 2022-01-19 11:29:54 +02:00
Rémi Bernon
0f1f692c70 proton: Start steam.exe from C:\\windows\\system32. 2022-01-19 11:29:54 +02:00
Rémi Bernon
ec2a650072 build: Install builtin libraries to target-arch lib subdirs. 2022-01-19 11:29:54 +02:00
Rémi Bernon
73982eb20f build: Use winebuild --exe mode for fake exe module generation.
This fixes steam.exe.so not being able to start from system32
automatically, as the fake module was flagged with IMAGE_FILE_DLL, which
caused GetBinaryTypeW to fail.
2022-01-19 11:29:54 +02:00
Rémi Bernon
9b8046131d steam.exe: Use NtSetInformationProcess instead of __wine_make_process_system. 2022-01-19 11:29:54 +02:00
Rémi Bernon
5838c1fbda build: Don't depend on wine for building libvkd3d-shader. 2022-01-19 11:26:04 +02:00
Rémi Bernon
c35122e209 build: Cross-compile Vulkan Loader with Vulkan and SPIRV Headers. 2022-01-19 11:26:04 +02:00
Rémi Bernon
e0e1d984c2 Vulkan-Loader: Add new submodule. 2022-01-19 11:26:04 +02:00
Rémi Bernon
cb94853f03 Vulkan-Headers: Update to v1.2.198. 2022-01-19 11:26:04 +02:00
Rémi Bernon
04bf8f150e build: Build vkd3d-shader with cross-compilation rules. 2022-01-19 11:26:04 +02:00
Rémi Bernon
587f86fb9d build: Better support meson cross compilation. 2022-01-19 11:26:04 +02:00
Rémi Bernon
5b8a6c72f9 build: Remove CCACHE_BIN variable, use wrappers in PATH instead.
Container have ccache wrappers in the PATH already, and the two
components CC / CXX just makes it harder to generate meson cross files.
2022-01-19 11:26:04 +02:00
Rémi Bernon
4ade59b2ca build: Better support cross-compilation in common rules. 2022-01-19 11:26:04 +02:00
Rémi Bernon
09568c2159 build: Simplify cargo target replacement. 2022-01-19 11:26:04 +02:00
Rémi Bernon
808b99bd27 build: Use $$(OBJ) consistently in rules macros. 2022-01-19 11:26:04 +02:00
Rémi Bernon
6d682e4b17 build: Cleanup target directories before building.
And force copy artifacts after.
2022-01-19 11:26:04 +02:00
Giovanni Mascellani
512208d15f docker: Install Capstone development files. 2022-01-19 11:26:04 +02:00
Rémi Bernon
2286a8e592 docker: Add python3-pefile package to SDK image. 2022-01-19 11:26:04 +02:00
Rémi Bernon
be485ab504 docker: Don't install tini, it's already there now. 2022-01-19 11:26:04 +02:00
Rémi Bernon
1c04188bc0 docker: Install libxpresent-dev packages. 2022-01-19 11:26:04 +02:00
Rémi Bernon
c9a428090f docker: Bump steamrt version to 0.20210505.0. 2022-01-19 11:26:04 +02:00
Johannes Bauer
0d186ab788 README: Fix a few small typos.
Link: https://github.com/ValveSoftware/Proton/pull/5357/
2021-12-09 17:55:07 +02:00
Arkadiusz Hiler
2443100316 update vkd3d-proton to v2.5-88-gc0a3fa8a 2021-12-06 13:01:04 +02:00
Arkadiusz Hiler
f158f52e44 update wine 2021-12-03 15:21:12 +02:00
Arkadiusz Hiler
50b4c8785f update wine 2021-11-22 21:10:16 +02:00
Arkadiusz Hiler
ea7eaa41d1 update vkd3d-proton to v2.5-50-g0251b404 2021-11-22 17:39:01 +02:00
Arkadiusz Hiler
3d5c0375a7 update dxvk to v1.9.2-13-g714ca482 2021-11-22 17:38:54 +02:00
Arkadiusz Hiler
e252df46d9 update dxvk-nvapi to v0.4-37-gacbcf35 2021-11-19 18:35:48 +02:00
Esme Povirk
9f3ba9d9c3 Update Wine Mono to 6.4.1. 2021-11-19 18:35:48 +02:00
Derek Lesho
cfaf65d982 steam_helper: Place BattlEye runtime path into PROTON_BATTLEYE_RUNTIME.
CW-Bug-Id: #16650
2021-11-19 18:35:48 +02:00
Derek Lesho
856c5e422e build: Build battleye bridge when present.
CW-Bug-Id: #16650
2021-11-19 18:35:48 +02:00
Arkadiusz Hiler
3e4e8be82c proton: Add disablelibglesv2 compat config option.
Some games and launcher based on older CEF / Chromium versions require
this to render properly.

CW-Bug-Id: #19501
CW-Bug-Id: #19483
2021-11-12 17:28:23 +02:00
Paul Gofman
c218238762 wineopenxr: Get required vulkan extensions from registry.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Paul Gofman
daf8263323 steam_helper: Store OpenXR vulkan extensions in registry.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Paul Gofman
034ff27cf3 wineopenxr: Export __wineopenxr_get_extensions_internal() function.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Paul Gofman
89f8134740 steam_helper: Build as 64 bit.
CW-Bug-ID: #19504
2021-11-11 18:36:08 +02:00
Arkadiusz Hiler
cc9c109bf6 proton: Add usenativexinput13 compat config option.
Various games using KT Engine like recent WRC and TT Isle of Man, when
run in a win10 prefix, try to load UWP/xinput1_3.dll that ships with the
games. It seems to be mostly-compatible xinput implementation built on
top of windows.gaming.input.dll.

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

Since our windows.gaming.input.dll implementation is just a stub
controllers other than steering wheels (which are handled through
dinput) do not work.
2021-11-11 18:36:08 +02:00
Andrew Eikum
fdc3651992 proton: Return the real application return code on exit.
CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
pchome
ef7b6fd07e steam_helper: Fix small typo
Link: https://github.com/ValveSoftware/Proton/pull/5266
2021-11-11 18:36:07 +02:00
Paul Gofman
7d37e79328 steam_helper: Create a thread to signal DIPC objects.
CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
Andrew Eikum
5b7de85bdf steam_helper: Add PROTON_HIDE_PROCESS_WINDOW for hiding the child process's window
CW-Bug-Id: #15930
2021-11-11 18:36:07 +02:00
Pierre-Loup A. Griffais
f2ff463c08 steam_helper: create Config directory
This is checked by CEG.

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

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

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

CW-Bug-Id: #19340
2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
99a58cf845 Make README more digestible 2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
06c9f221ec proton: Log the kernel version. 2021-11-11 18:36:07 +02:00
SSYSS000
b39c95a7e1 proton: Delete PID leading zeros instead of all zeros
Link: https://github.com/ValveSoftware/Proton/pull/5157
2021-11-11 18:36:07 +02:00
Zebediah Figura
50cab53a7b proton: Copy libvkd3d-shader-1.dll into the system32 directory.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
0d88b6db78 build: Build vkd3d.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
3b375e5463 build: Build SPIRV-Headers, sort of.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
cac66b1914 build: Build Vulkan-Headers, sort of.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
59fd9ea1da SPIRV-Headers: New submodule.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
eb9c5d1821 Vulkan-Headers: New submodule.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
d61fe4467d vkd3d: New submodule.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Zebediah Figura
44d9fb94b2 build: Run autoreconf in the container.
CW-Bug-Id: #15810
2021-11-11 18:36:07 +02:00
Andrew Eikum
4aac973ecf media-converter: Add an option to disable dumping audio to disk
CW-Bug-Id: #19009
2021-11-11 18:36:07 +02:00
Andrew Eikum
ac2caa3e54 media-converter: Remove audio data repeat logic 2021-11-11 18:36:07 +02:00
Andrew Eikum
905fc8ef44 media-converter: Don't pad filler audio data
Fixes corrupt streams when dumping audio to disk. Relies on the client
(e.g. FAudio) to fill in blank data when a buffer results in a short
decode.
2021-11-11 18:36:07 +02:00
legendofmiracles
9845a94d1c media-converter: Make Rust more idiomatic 2021-11-11 18:36:07 +02:00
Andrew Eikum
d02b5dc9ce media-converter: Always set write offset past header 2021-11-11 18:36:07 +02:00
Jactry Zeng
1ae6c80f3e fonts: Add an alternative of Nirmala UI (nirmala.ttf).
Fonts are from https://github.com/googlefonts/noto-fonts.git at
04a4c62ce05b628f80c0d3b6a455ca8201b65286, in hinted/ttf folder.

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

CW-Bug-Id: #17132
2021-11-11 18:36:07 +02:00
Jactry Zeng
5525cf9931 Revert "Add and install Noto Sans Arabic."
This reverts commit 9eb14500c2.
We are going to introduce a fake micross.ttf which also includes
all of these Arabic characters. We will use that one instead.
2021-11-11 18:36:07 +02:00
Paul Gofman
7a90ff74ce lsteamclient: Get memory for SteamClient interface within native steamclient.dll loader range.
CW-Bug-ID: #19605

For Mafia II.
2021-11-11 18:36:07 +02:00
Andrew Eikum
b3c6c677bc lsteamclient: Fix SteamIPAddress_t size
CW-Bug-Id: #19598
2021-11-11 18:29:03 +02:00
Andrew Eikum
2165c3ff81 lsteamclient: Also key glyph path cache off of flags parameter 2021-11-11 17:52:16 +02:00
Andrew Eikum
0b1db713ac lsteamclient: Also convert paths from GetGlyphForXboxOrigin
CW-Bug-Id: #19517
2021-10-08 13:22:52 -05:00
Andrew Eikum
f9eef72c88 lsteamclient: Convert glyph paths in new ISteamInput005 methods
CW-Bug-Id: #19517
2021-10-08 13:22:52 -05:00
Andrew Eikum
4b9b102b31 lsteamclient: Convert path given to ISteamInput::SetInputActionManifestFilePath
CW-Bug-Id: #19517
2021-10-08 13:22:52 -05:00
Andrew Eikum
da911c3bf9 lsteamclient: generate 1.52 support 2021-10-08 13:22:51 -05:00
Andrew Eikum
a1244bdf38 lsteamclient: import steamworks sdk 1.52 2021-10-08 13:22:51 -05:00
Arkadiusz Hiler
5536e50175 update wine 2021-09-29 16:27:35 +03:00
Arkadiusz Hiler
0254a0fe15 update dxvk to v1.9.2-7-gb63ceeda 2021-09-29 16:27:27 +03:00
Arkadiusz Hiler
1db7f930a9 update vkd3d-proton to v2.4-101-g173b8ece 2021-09-24 20:22:55 +03:00
Paul Gofman
d9f80272c0 proton: Enabled nvcuda.dll when nvapi is enabled.
Link: https://github.com/ValveSoftware/wine/pull/119
2021-09-23 19:07:57 +03:00
Esme Povirk
4940f69c90 Remove default overrides for Microsoft.Xna.Framework.
This default is no longer needed because it's built into Wine.
The Wine default is now version-specific so XNA 3.x redists can load.

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

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

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

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

Reviewed-by: Adam Moss <amoss@nvidia.com>
2021-08-17 10:11:32 -05:00
Andrew Eikum
3f865b5b5b update FAudio to 21.08-1-g0c352eb 2021-08-17 10:11:32 -05:00
Andrew Eikum
e82e98b1ff proton: Migrate old user paths to new paths
CW-Bug-Id: 18905
2021-08-17 10:11:32 -05:00
Andrew Eikum
b5cfb6b549 update wine 2021-08-17 10:11:32 -05:00
Andrew Eikum
49047eaba2 update dxvk to v1.9.1 2021-08-12 10:54:20 -05:00
Andrew Eikum
542d82c93e build: Fix copying .so files in module target 2021-08-12 10:54:20 -05:00
Giovanni Mascellani
9eb14500c2 Add and install Noto Sans Arabic.
This is useful to work around an issue with Arabic font rendering in
Cyberpunk 2077 installer, first reported at
https://github.com/ValveSoftware/Proton/issues/4450#issuecomment-882996582.

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

CW-Bug-Id: #18969
2021-08-12 10:54:19 -05:00
Paul Gofman
d2080ad0fd steam_helper: Don't hand off Steam appid to OpenVR runtime in initialize_vr_data().
CW-Bug-Id: 19220

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

CW-Bug-Id: 19220
2021-08-12 10:54:19 -05:00
Paul Gofman
6981478bf5 wineopenxr: Substitute XR_KHR_convert_timespec_time for XR_KHR_win32_convert_performance_counter_time.
CW-Bug-Id: 19220
2021-08-12 10:54:19 -05:00
Paul Gofman
c35f4120d4 wineopenxr: Use array for coding extension substitution.
CW-Bug-Id: 19220
2021-08-12 10:54:19 -05:00
Paul Gofman
450f3e8025 vrclient: HACK: Fixup digital action 'bChange' parameter on 32 bit.
CW-Bug-Id: 19067
2021-08-12 10:54:19 -05:00
Paul Gofman
d46e6aaada vrclient: Fixup size for structs with matching field offsets but mismatched size.
CW-Bug-Id: 19067
2021-08-12 10:54:19 -05:00
Arkadiusz Hiler
ed7c5db865 docs: Add Vulkan section to PRIME.md. 2021-08-12 08:54:18 -05:00
Arkadiusz Hiler
b82289bd0d build: Add support for relabeling container volumes. 2021-08-12 08:53:50 -05:00
Andrew Eikum
7ff77df377 proton: More easily enable always-on logging 2021-08-12 08:53:50 -05:00
Andrew Eikum
f27ab32edb vkd3d-proton: Update to v2.4 2021-08-12 08:53:50 -05:00
Jacek Caban
5bc6cdaa8e proton: Add support for PROTON_REMOTE_DEBUG_CMD to allow integration with remote debugger.
CW-Bug-Id: 16785
2021-08-12 08:53:50 -05:00
Arkadiusz Hiler
6f35d1e8bd docs: Update PRIME.
To reflect the switch to DXVK's DXGI.
2021-06-25 10:42:53 -05:00
Andrew Eikum
a1d6093f87 update vkd3d-proton to v2.3.1-71-g72d9b322 2021-06-24 11:42:44 -05:00
Andrew Eikum
feded58bec update wine 2021-06-24 11:42:44 -05:00
Zebediah Figura
8475bf39bc proton: Always check if the prefix config changed.
In particular, make sure that we update builtin dlls for the first process that runs.
2021-06-21 08:31:01 -05:00
Andrew Eikum
353e1b00c6 proton: Use DXVK's DXGI by default 2021-06-21 08:31:01 -05:00
Andrew Eikum
da9b641e7d update dxvk to v1.9 2021-06-17 15:39:42 -05:00
Andrew Eikum
edb77b173b Makefile: Don't consider proton-sdk tags for build name 2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
5df15e1149 README: Document the VM-less build. 2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
fc18afd71e configure.sh: Expose --enable-ccache.
Until now the option had to be added by hand to the Makefile or
specified each `make` invocation.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
c52532efce configure.sh: Detect rootless container setups.
Until now the option had to be added by hand to the Makefile or
specified each `make` invocation.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
82ae47758f configure.sh: Add option to select container engine.
Configure will also test the container engine by trying to run the
selected SDK image.

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

Python's pip installs the executables in bin.

Let's support both.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
f55d7adcb1 configure.sh: Check for host-side tools and warn if something is missing.
The checks don't exit immediately so users won't have to rerun configure
after installing only a single dependency.
2021-06-17 15:24:39 -05:00
Paul Gofman
68fc0e1c11 wineopenxr: Update to 1.0.17 registry version. 2021-06-17 15:10:20 -05:00
Paul Gofman
a079bcd080 wineopenxr: Fix spec entries. 2021-06-17 15:10:20 -05:00
Paul Gofman
e8aa632064 Update OpenXR-SDK submodule. 2021-06-17 15:10:20 -05:00
Rémi Bernon
cabe4dee6f build: Make sure wineopenx64.json depends on prefix.
So that deleting the prefix to recreate it also forces the file to be
copied again.
2021-06-17 15:10:20 -05:00
Shawn M. Chapla
1916502152 proton: Remove winebrowser shell DDE registry keys
CW-Bug-Id: #18527
2021-06-17 15:10:20 -05:00
Rémi Bernon
c1fc8283d1 build: Use jobs to control xargs parallelism. 2021-06-17 15:10:20 -05:00
Rémi Bernon
bdb6a31e8c build: Make silent builds actually quiet. 2021-06-17 15:10:20 -05:00
Paul Gofman
5b406be13e build: Fixup PE section headers.
For FH4.
2021-06-17 15:10:20 -05:00
Rémi Bernon
8448591ebd build: Build with Proton SDK 0.20210505.0-2.
But disable XPresent extension for now.
2021-06-17 15:10:20 -05:00
Paul Gofman
fb569a17e3 wineopenxr: Update to 1.0.15 registry version. 2021-06-17 15:10:20 -05:00
Andrew Eikum
607618b3df proton: Add PROTON_CRASH_REPORT_DIR runtime config
CW-Bug-Id: #18944
2021-06-17 15:10:17 -05:00
Renaud Lepage
139ad89ed3 proton: Assume STEAM_COMPAT_CLIENT_INSTALL_PATH is always set 2021-05-27 13:43:12 -05:00
Paul Gofman
57dc9d7062 lsteamclient: HACK Do not unset SteamAppId for 'Splitgate: Arena Warfare'.
CW-Bug-Id: 18924

To be dropped on the next rebase.
2021-05-27 21:30:27 +03:00
Rémi Bernon
751535d863
build: Restore missing tabulation in Makefile. 2021-05-27 19:13:24 +02:00
Arkadiusz Hiler
d2d52bd68a proton: Open the log file in append mode.
Opening file in append mode sets the offset to the end of the file prior
to each write. This allows user to append tags/notes to the log file
just before interesting events, e.g.:

    local $ ssh ivyl@test
    test  $ echo "!!! FOCUS CHANGE" >> ~/steam-XYZ.log

The log file is deleted just before we open it anyway, so there won't be
any leftover content from previous session.
2021-05-27 18:06:34 +03:00
Arkadiusz Hiler
a0c2cf6cac Use relative paths for wine and dxvk submodules. 2021-05-27 18:06:32 +03:00
Arkadiusz Hiler
bbf68812bc build: Add option to use rootless containers. 2021-05-27 18:06:31 +03:00
Rémi Bernon
0e897ff8b7
build: Move protonsdk_version default value to configure.sh. 2021-05-27 16:59:02 +02:00
Rémi Bernon
a8b3580679
configure: Rename --no-steam-runtime to --no-proton-sdk. 2021-05-27 16:58:19 +02:00
Rémi Bernon
9d5b7eb0cc
configure: Rename --steam-runtime-image to --proton-sdk-image. 2021-05-27 16:58:19 +02:00
Rémi Bernon
ecca62efa8
build: Create CCACHE_DIR if it doesn't exist and mount it.
Instead of the HOME dir, and only when ENABLE_CCACHE is set.
2021-05-27 16:58:18 +02:00
Rémi Bernon
8dd5db85dd
build: Pass CCACHE environment variable to the container build. 2021-05-27 16:58:18 +02:00
Rémi Bernon
d3e4d8a811
build: Pass -j flags and overrides to sub-make inside Vagrant. 2021-05-27 16:58:16 +02:00
Rémi Bernon
b84a7593b7
build: Pass -j flags to ninja build steps too. 2021-05-27 16:57:45 +02:00
Rémi Bernon
bb4c28c6ac
build: Use a separate rule for downloads. 2021-05-27 16:57:41 +02:00
Rémi Bernon
9283c7b50d
build: Use SHELL variable to execute commands in Vagrant. 2021-05-27 16:57:22 +02:00
Rémi Bernon
1e561a8bc0
build: Split non-vagrant commands from install rule. 2021-05-27 16:52:27 +02:00
Rémi Bernon
2269616052
build: Use a rule to create the vagrant_share/* directories. 2021-05-27 16:52:23 +02:00
Rémi Bernon
b58a10a265
build: Simplify and cleanup TTF font creation rules. 2021-05-27 16:52:09 +02:00
Rémi Bernon
acded80882
build: Install wineopenxr64.json after the prefix is created. 2021-05-27 16:52:08 +02:00
Rémi Bernon
41d488deee
build: Pass make flags and parallel flags to module rule. 2021-05-27 16:52:08 +02:00
Rémi Bernon
08992c126e
build: Make sure that module target triggers wine-configure. 2021-05-27 16:52:08 +02:00
Rémi Bernon
8726ea849d
build: Add specified modules to the container build list.
And not only when ending with 32/64.
2021-05-27 16:52:08 +02:00
Rémi Bernon
5dd383efff
build: Remove duplicate BUILD_DIR variable. 2021-05-27 16:52:07 +02:00
Andrew Eikum
bb11c5177c update wine 2021-05-13 11:14:44 -05:00
Jacek Caban
f632b693bd proton: Add runinprefix verb for running a program in a running session
CW-Bug-Id: 16785
2021-05-13 10:07:29 -05:00
Paul Gofman
ec9bf7f85d steam_helper: Create libraryfolders.vdf file.
For 2K Launcher.

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

CW-Bug-Id: 18912
2021-05-13 10:07:20 -05:00
Paul Gofman
301e733bbf steam_helper: Forward steam:// protocol requests to winebrowser.
CW-Bug-Id: 18912
2021-05-13 10:07:20 -05:00
Paul Gofman
7c30c77105 vrclient: Return stored BMD presence from BIsHmdPresent() if client core is not initialized.
CW-Bug-Id: 18901
2021-05-13 10:06:49 -05:00
Paul Gofman
0e9c2536c0 steam_helper: Store HMD presence status in registry.
CW-Bug-Id: 18901
2021-05-13 10:06:49 -05:00
Andrew Eikum
6cc6afaa3b update wine 2021-04-29 13:04:38 -05:00
Paul Gofman
8ddd3c36a1 proton: Link tahoma.ttf to Windows/Fonts.
CW-Bug-Id: 18862
2021-04-27 13:40:50 -05:00
Paul Gofman
e1885f8496 Add replacement font for Courier Bold.
CW-Bug-Id: 18862
2021-04-27 13:40:40 -05:00
Arkadiusz Hiler
575d9bc1f9 Don't install amd_ags_x64 into prefix
The DLL ships with the games and having the built-in version in
system32/syswow64 has unexpected consequences.

If the game is launched from a subdirectory, but the DLL is in current
working directory, the built-in takes precedence as CWD has lower search
priority than system directories (with the default SafeDllSearchMode).

By not installing amd_ags_x64.dll in system32/syswow64 the built-in is
still picked up correctly from lib/ when necessary.

There's an accompanying patch for wine that makes sure wineboot won't
install the dll, but since we construct our default_pfx in a special way
we also need to make sure that files won't get copied/linked there.

To make prefix updates smooth this change also removes any stale
amd_ags_x64.dlls that may have been installed by previous version of
Proton.

CW-Bug-Id: 18804
2021-04-27 11:11:14 -05:00
Andrew Eikum
afc9bf84c7 update vkd3d-proton to v2.3.1 2021-04-27 10:27:01 -05:00
Andrew Eikum
937607d1e5 proton: Log important variables set by the system and user_settings 2021-04-27 09:20:11 -05:00
Andrew Eikum
372d299ed6 update wine 2021-04-06 11:11:16 -05:00
kisak-valve
2d14c192a3 Ask for Proton logs to be attached as a file
Occasionally the previous wording gets read as copy/paste a wall of text into a new compatibility report instead of attaching files, which makes it more difficult to have a discussion when many pages of log added to the scroll bar.
2021-03-31 14:08:11 -05:00
Paul Gofman
5d57ef328f vrclient: Cleanup vrclient before native library unload if the app failed to do so.
Unloading native library without the cleanup hangs. If the native
library is not unloaded explicitly the Linux process then hangs on exit.

Fixes hang on exit from Doom VFR.

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

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

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

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

The targets dependency graph is still complete, so "source" targets
will always all be executed before the container, and configure steps
will optionally run if the generated files are missing. When source
change is detected, only the build rules are executed again, trusting
each build system to decide if configure should be run again or not.
2021-03-31 14:08:10 -05:00
Rémi Bernon
3d2a7a09af build: Move misc helpers to make/utility.mk. 2021-03-31 14:08:10 -05:00
Rémi Bernon
f0d1278458 build: Don't use priviledged / init docker.
Images already embed tini to pass kill signals.
2021-03-31 14:08:10 -05:00
Rémi Bernon
0197a981f4 build: Enable docker overlay2 driver by default. 2021-03-31 14:08:10 -05:00
Rémi Bernon
68bd1c20e8 build: Use proton sdk docker image for building. 2021-03-31 14:08:10 -05:00
Rémi Bernon
6eba98ad23 build: Bump GCC to 10.2.0, Binutils to 2.36.1 and Rust to 1.50.0. 2021-03-31 14:08:10 -05:00
Andrew Eikum
fe4663159d steam_helper: Call FreeConsole before waiting to exit
Patch by Jacek Caban. This allows conhost to exit so it won't block server exit.
2021-03-31 14:08:10 -05:00
Andrew Eikum
8398ebded4 update wine to 6.3 2021-03-31 14:08:09 -05:00
1644 changed files with 882628 additions and 362301 deletions

View file

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

View file

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

1
.gitignore vendored
View file

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

50
.gitmodules vendored
View file

@ -1,33 +1,57 @@
[submodule "wine"]
path = wine
url = https://github.com/ValveSoftware/wine
url = ../wine
[submodule "dxvk"]
path = dxvk
url = https://github.com/ValveSoftware/dxvk
url = https://github.com/doitsujin/dxvk.git
[submodule "openvr"]
path = openvr
url = https://github.com/ValveSoftware/openvr
[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
[submodule "OpenXR-SDK"]
path = OpenXR-SDK
url = https://github.com/KhronosGroup/OpenXR-SDK
[submodule "dxvk-nvapi"]
path = dxvk-nvapi
url = https://github.com/jp7677/dxvk-nvapi
[submodule "vkd3d"]
path = vkd3d
url = https://github.com/ValveSoftware/vkd3d
[submodule "Vulkan-Headers"]
path = Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers
[submodule "SPIRV-Headers"]
path = SPIRV-Headers
url = https://github.com/KhronosGroup/SPIRV-Headers
[submodule "Vulkan-Loader"]
path = Vulkan-Loader
url = https://github.com/KhronosGroup/Vulkan-Loader
[submodule "gst-libav"]
path = gst-libav
url = https://github.com/GStreamer/gst-libav
[submodule "ffmpeg"]
path = ffmpeg
url = https://github.com/FFmpeg/FFmpeg
[submodule "dav1d"]
path = dav1d
url = https://github.com/videolan/dav1d.git
[submodule "gst-plugins-rs"]
path = gst-plugins-rs
url = https://github.com/sdroege/gst-plugin-rs
[submodule "graphene"]
path = graphene
url = https://github.com/ebassi/graphene
[submodule "glslang"]
path = glslang
url = https://github.com/KhronosGroup/glslang

1
FAudio

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

View file

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

View file

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

220
Makefile
View file

@ -13,25 +13,28 @@ 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_ROOT)/build-$(shell echo $(_build_name) | sed -e 's/ /_/g')
STEAM_DIR := $(HOME)/.steam/root
BUILD_DIR := $(_build_name)
ifeq ($(build_name),)
DEPLOY_DIR := $(shell git describe --tags --always)
DEPLOY_DIR := $(shell git describe --tags --always --exclude proton-sdk*)
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 :=
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_SFX := .dll
MODULE_PEFILE := $(module).dll
MODULE_SOFILE := $(module).so
endif
endif
@ -40,17 +43,26 @@ ifneq ($(unstripped),)
DEPLOY_DIR := $(DEPLOY_DIR)_unstripped
endif
protonsdk_version := 0.20210126.1-0
CONFIGURE_CMD := ../proton/configure.sh \
--steam-runtime-image=steam-proton-dev \
CONFIGURE_CMD := ../../configure.sh \
--build-name="$(_build_name)"
# make doesn't handle spaces well... replace them with underscores in paths
BUILD_DIR := "build-$(shell echo $(_build_name) | sed -e 's/ /_/g')"
ifneq ($(protonsdk_version),)
CONFIGURE_CMD += --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:$(protonsdk_version)
else
protonsdk_version := $(shell grep '^arg_protonsdk_image=' configure.sh|xargs echo|cut -d: -f2)
endif
enable_ccache := 1
ifneq ($(enable_ccache),0)
CONFIGURE_CMD += --enable-ccache
endif
TOPLEVELGOALS := all any clean configure deploy downloads help install module proton protonsdk redist
CONTAINERGOALS := $(filter-out $(TOPLEVELGOALS),$(MAKECMDGOALS))
CONTAINERGOALS := $(filter-out $(BUILD_ROOT)/%,$(CONTAINERGOALS))
all: help
.PHONY: help vagrant clean configure proton install deploy module protonsdk
.PHONY: $(TOPLEVELGOALS)
help:
@echo "Proton Makefile instructions"
@ -58,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 ""
@ -70,120 +82,144 @@ 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:
vagrant up
vagrant rsync debian10
clean:
rm -rf $(BUILD_DIR)
clean: vagrant
vagrant ssh -c 'rm -rf $(BUILD_DIR)/'
protonsdk:
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C docker $(UNSTRIPPED) PROTONSDK_VERSION=$(protonsdk_version) proton
protonsdk: vagrant
vagrant ssh -c 'make -C proton/docker $(UNSTRIPPED) $(CCACHE_FLAG) PROTONSDK_VERSION=$(protonsdk_version) proton'
configure: vagrant
@vagrant ssh -c 'if [ ! -e $(BUILD_DIR)/Makefile ]; then mkdir -p $(BUILD_DIR); (cd $(BUILD_DIR) && $(CONFIGURE_CMD)); fi && make -C $(BUILD_DIR) downloads'
configure: | $(BUILD_DIR)
if [ ! -e $(BUILD_DIR)/Makefile ]; then \
(cd $(BUILD_DIR) && $(CONFIGURE_CMD)); \
fi
ifeq ($(protonsdk_version),local)
configure: protonsdk
endif
proton: configure
vagrant ssh -c 'make -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dist'
echo "Proton built in VM. Use 'install' or 'deploy' targets to retrieve the build."
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) dist && \
echo "Proton built locally. Use 'install', 'deploy' or 'redist' targets."
install: configure
vagrant ssh -c 'make -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) STEAM_DIR=/vagrant/ install'
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
cp -Rf --no-dereference --preserve=mode,links vagrant_share/compatibilitytools.d/$(_build_name) $(STEAM_DIR)/compatibilitytools.d/
rm -rf $(STEAM_DIR)/compatibilitytools.d/$(_build_name)/files/ #remove proton's internal files, but preserve user_settings etc from top-level
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) install
echo "Proton installed to your local Steam installation"
redist: | $(BUILD_ROOT)/$(DEPLOY_DIR)
redist: configure
mkdir -p vagrant_share/$(DEPLOY_DIR)
vagrant ssh -c 'make -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && cp $(BUILD_DIR)/redist/* /vagrant/$(DEPLOY_DIR)'
echo "Proton build available at vagrant_share/$(DEPLOY_DIR)"
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)/* && \
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) redist && \
cp -Rf $(BUILD_DIR)/redist/* $(BUILD_ROOT)/$(DEPLOY_DIR) && \
echo "Proton build available at $(BUILD_ROOT)/$(DEPLOY_DIR)"
deploy: | $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy
deploy: configure
mkdir -p vagrant_share/$(DEPLOY_DIR)-deploy
vagrant ssh -c 'make -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && cp $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)-deploy'
echo "Proton deployed to vagrant_share/$(DEPLOY_DIR)-deploy"
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy/* && \
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) deploy && \
cp -Rf $(BUILD_DIR)/deploy/* $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy && \
echo "Proton deployed to $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy"
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-windows
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-unix
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix
module: configure
mkdir -p vagrant_share/$(module)/lib/wine/ vagrant_share/$(module)/lib64/wine/
vagrant ssh -c 'make -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-wine64/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_share/$(module)/lib*/wine/*.fake
$(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: configure
mkdir -p vagrant_share/dxvk/lib/wine/dxvk/
mkdir -p vagrant_share/dxvk/lib64/wine/dxvk/
vagrant ssh -c 'make -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)
d9vk: configure
mkdir -p vagrant_share/d9vk/lib/wine/dxvk/
mkdir -p vagrant_share/d9vk/lib64/wine/dxvk/
vagrant ssh -c 'make -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) d9vk && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll /vagrant/d9vk/lib/wine/dxvk/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll /vagrant/d9vk/lib64/wine/dxvk/'
dxvk: | $(BUILD_ROOT)/dxvk/lib/wine/dxvk
dxvk: | $(BUILD_ROOT)/dxvk/lib64/wine/dxvk
dxvk: any
cp -f $(BUILD_DIR)/dist/files/lib/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib/wine/dxvk/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib64/wine/dxvk/
vkd3d-proton: configure
mkdir -p vagrant_share/vkd3d-proton/lib/wine/vkd3d-proton/
mkdir -p vagrant_share/vkd3d-proton/lib64/wine/vkd3d-proton/
vagrant ssh -c 'make -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: configure
mkdir -p vagrant_share/lsteamclient/lib/wine
mkdir -p vagrant_share/lsteamclient/lib64/wine
vagrant ssh -c 'make -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/files/lib/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton/
vrclient: configure
mkdir -p vagrant_share/vrclient/lib/wine
mkdir -p vagrant_share/vrclient/lib64/wine
vagrant ssh -c 'make -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/files/lib/wine/i386-windows/lsteamclient.dll $(BUILD_ROOT)/lsteamclient/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/dist/files/lib/wine/i386-unix/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/x86_64-windows/lsteamclient.dll $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/x86_64-unix/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-unix/
wineopenxr: configure
mkdir -p vagrant_share/wineopenxr/lib64/wine
vagrant ssh -c 'make -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/files/lib/wine/i386-windows/vrclient.dll $(BUILD_ROOT)/vrclient/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/dist/files/lib/wine/i386-unix/vrclient.dll.so $(BUILD_ROOT)/vrclient/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/x86_64-windows/vrclient_x64.dll $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/x86_64-unix/vrclient_x64.dll.so $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-unix/
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-windows
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-unix
wineopenxr: any
cp -f $(BUILD_DIR)/dist/files/lib64/wine/x86_64-windows/wineopenxr.dll $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-windows/ && \
cp -f $(BUILD_DIR)/dist/files/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 $@

1215
Makefile.in Normal file

File diff suppressed because it is too large Load diff

@ -1 +1 @@
Subproject commit 5197afbf199c026eca82a47a8573ed10b0c6fa4e
Subproject commit 8899a91c17ce9618f565f42408b47db1d6e9ccc7

407
README.md
View file

@ -1,223 +1,188 @@
---
Introduction
---
Proton is a tool for use with the Steam client which allows games which are
------------
**Proton** is a tool for use with the Steam client which allows games which are
exclusive to Windows to run on the Linux operating system. It uses Wine to
facilitate this.
Most users will prefer to use Proton provided by the Steam client itself. The
source code is provided to enable advanced users the ability to alter
Proton. For example, some users may wish to use a different version of Wine with
a particular title.
**Most users should use Proton provided by the Steam Client itself.** See
[this Steam Community post][steam-play-introduction] for more details.
---
Getting Started with Proton from Steam Play
---
* As the new Steam Play is still in Beta, it is recommended that you opt into the [Steam Client Beta](https://steamcommunity.com/sharedfiles/filedetails/?id=182912431) for the latest features and fixes.
* Proton requires graphics drivers that are more recent than what is typically packaged in most distributions; please read the [list of requirements and quickstart for Ubuntu 18.04 users](https://github.com/ValveSoftware/Proton/wiki/Requirements)
* Install and play games! Please refer to [this post](https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561) for more information.
* Visit the [changelog](https://github.com/ValveSoftware/Proton/wiki/Changelog) for information about recent updates.
The source code is provided to enable advanced users the ability to alter
Proton. For example, some users may wish to use a different version of Wine
with a particular title.
---
Obtaining Proton from source
---
**NOTE:** If you are not comfortable in a command line terminal, or if you find
any of the information presented in here strange and uncomfortable, then
this is probably not for you. The instructions are likely to be incomplete
and require some knowledge and skill on your part, and there is no warranty
or guarantee that anyone will help you with this process.
**The changelog** is available on [our wiki][changelog].
We strongly recommend that most users use the production build of Proton.
[steam-play-introduction]: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561
[changelog]: https://github.com/ValveSoftware/Proton/wiki/Changelog
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 branches.
and checking out the branch you desire.
You can clone the latest Proton to your system with this command:
```bash
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
cd 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 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 install Proton into your user's Steam directory.
You may need to restart the Steam client to see it. The tool's name in the
Steam client will be based on the currently checked out branch of Proton. You
can override this name using the `build_name` variable.
## 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.
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 build tree in 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.
If you are doing significant Wine development or want to control the build with
more fine detail, see the full documentation below.
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.
---
Building
---
At a high level, the build instructions are:
See `make help` for other build targets and options.
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.
---
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.
## Manual building
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:
### Configuring the build
vagrant up
```bash
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_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:
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.
vagrant ssh
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>`.
At this point you will need to configure the build directory. See below.
You can enable ccache with `--enable-cache` flag. This will mount your
`$CCACHE_DIR` or `$HOME/.ccache` inside the container.
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.
`--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.
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.
Check `--help` for other configuration options.
When you are done with the VM, you can shut it down from the host machine:
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.
vagrant halt
[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/
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 both Vagrantfile and
`vagrant-user-setup.sh` for the list of dependencies and instructions on how to
set up your own machine or another VM of your choosing. It is aimed at Debian
10, but you should be able to adapt them for other distributions.
### Building
---
Alternative: Building without the Steam Runtime
---
The Steam Runtime provides a clean and consistent set of libraries. Software
distributed through Steam should depend only on libraries available through the
runtime, and so we build in that environment for production Proton builds. The
Vagrantfile described above will set this up for you. However, if you are
simply making a build for yourself, you may want to skip setting up the Steam
runtime, as it takes a very long time to set up. To do this, edit the
`vagrant-user-setup.sh` script appropriately before running `vagrant up`.
```
make
```
---
Configure the build
---
After setting up the build system, it is time to run the configure script which
will generate the Makefile to build your project. Run these steps. You may of
course use whatever paths you like.
**Important make targets:**
mkdir build/
cd build
../proton/configure.sh --steam-runtime-image=steam-proton-dev
`make install` - install Proton into your user's Steam directory, see the [install Proton
locally](#install-proton-locally) section for details.
If you are building without the Steam runtime, then instead use:
`make redist` - create a redistribute build (`redist/`) that can be copied to
`~/.steam/root/compatibilitytools.d/`.
../proton/configure.sh --no-steam-runtime
`make deploy` - create a deployment build (`deploy/`). This is what we use to
deploy Proton to Steam users via Steamworks.
**Tip**: If you are building without the Steam runtime, you should now run
`make obj-wine64/Makefile obj-wine32/Makefile` and check the files
`obj-wine64/config.log` and `obj-wine32/config.log` for missing packages.
Search for `won't be supported`. A couple of missing packages are normal:
`opencv`, `oss`. More than that may indicate a problem. Please see your
distro's documentation to acquire the considerable build dependencies for Wine.
`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.
---
Build Proton
---
A couple of Makefile targets are provided.
`make dxvk` / `make vkd3d-proton` - rebuild DXVK / vkd3d-proton.
`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.
### 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
```
---
Install Proton locally
---
----------------------
Steam ships with several versions of Proton, which games will use by default or
that you can select in Steam Settings's SteamPlay page. Steam also supports
that you can select in Steam Settings' Steam Play page. Steam also supports
running games with local builds of Proton, which you can install on your
machine. The `install` target will perform the below steps for you.
machine.
To install a local build of Proton into Steam, make a new directory in
`~/.steam/root/compatibilitytools.d/` with a tool name of your choosing and
place the contents of `dist` into that folder. The `make install` target will
perform this task for you, installing the Proton build into the Steam folder
for the current user. You will have to restart the Steam client for it to pick
up on a new tool.
place the directory containing your redistributable build under that path.
A correct local tool installation should look like this:
The `make install` target will perform this task for you, installing the
Proton build into the Steam folder for the current user. You will have to
restart the Steam client for it to pick up on a new tool.
A correct local tool installation should look similar to this:
```
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
@ -227,22 +192,76 @@ A correct local tool installation should look like this:
├── 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.
For tips on debugging see [docs/DEBUGGING.md](docs/DEBUGGING.md).
`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
@ -256,36 +275,42 @@ 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>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>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>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. |
| :-------------------- | :--------------------------------- | :----------- |
| | `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_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. |
| `dxvkd3d8` | `PROTON_DXVK_D3D8` | Use DXVK's `d3d8.dll`. |
| `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. |
| `disablenvapi` | `PROTON_DISABLE_NVAPI` | Disable 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. |
| `xalia` | `PROTON_USE_XALIA` | Enable Xalia, a program that can add a gamepad UI for some keyboard/mouse interfaces. |
| `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

112
Vagrantfile vendored
View file

@ -1,112 +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 meson libmpc-dev libmpc-dev:i386 \
gcc g++ gcc-i686-linux-gnu g++-i686-linux-gnu binutils-i686-linux-gnu \
gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 \
g++-mingw-w64-i686 g++-mingw-w64-x86-64
update-alternatives --set x86_64-w64-mingw32-gcc `which x86_64-w64-mingw32-gcc-posix`
update-alternatives --set x86_64-w64-mingw32-g++ `which x86_64-w64-mingw32-g++-posix`
update-alternatives --set i686-w64-mingw32-gcc `which i686-w64-mingw32-gcc-posix`
update-alternatives --set i686-w64-mingw32-g++ `which i686-w64-mingw32-g++-posix`
#install adobe font devkit to build source san hans
pip install afdko
#allow vagrant user to run docker
adduser vagrant docker
#add steamrt docker
docker pull registry.gitlab.steamos.cloud/steamrt/soldier/sdk
docker image tag registry.gitlab.steamos.cloud/steamrt/soldier/sdk steam-proton-dev
#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
# the script below will set up the steam-runtime docker containers
sudo -u vagrant /home/vagrant/proton/vagrant-user-setup.sh
#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

View file

@ -1,229 +0,0 @@
#!/bin/bash
set -e
# We need two cross-compilers to build Proton:
#
# 64-bit cross-compiler:
# Build (where the compiler is built): 64-bit linux (our VM)
# Host (where the compiler is run): 64-bit linux (64-bit Steam runtime)
# Target (what the compiler outputs): 64-bit win32 (PE files to be run)
#
# 32-bit cross-compiler:
# Build (where the compiler is built): 64-bit linux (our VM)
# Host (where the compiler is run): 64-bit linux (64-bit Steam runtime)
# Target (what the compiler outputs): 32-bit win32 (PE files to be run)
if [ -z "$1" ]; then
echo "Makes a local build of mingw-w64 in this directory and installs it to the given path."
echo ""
echo "Note: Requires a system mingw-w64 compiler to be present already on your build machine, for us to bootstrap with."
echo ""
echo "usage:"
echo -e "\t$0 <installation path e.g. \$HOME/.local>"
exit 1
fi
if [ -z "$MAKEFLAGS" ]; then
JOBS=-j$(($(nproc) - 1))
fi
DST_DIR="$1"
BINUTILS_VER=2.35
BINUTILS_SRCTARBALL=binutils-$BINUTILS_VER.tar.xz
BINUTILS_URL="https://ftp.gnu.org/gnu/binutils/$BINUTILS_SRCTARBALL"
BINUTILS_SRCDIR=binutils-$BINUTILS_VER
GCC_VER=9.3.0
GCC_SRCTARBALL=gcc-$GCC_VER.tar.xz
GCC_URL="https://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/$GCC_SRCTARBALL"
GCC_SRCDIR=gcc-$GCC_VER
MINGW_W64_GITVER=v8.0.0
MINGW_W64_GITURL="git://git.code.sf.net/p/mingw-w64/mingw-w64"
MINGW_W64_SRCDIR=mingw-w64-git
ISL_VER=0.22.1
ISL_SRCTARBALL=isl-$ISL_VER.tar.bz2
ISL_URL="http://isl.gforge.inria.fr/isl-$ISL_VER.tar.bz2"
ISL_SRCDIR=isl-$ISL_VER
function setup_src {
if [ ! -e "$BINUTILS_SRCTARBALL" ]; then
wget -O "$BINUTILS_SRCTARBALL" "$BINUTILS_URL"
fi
if [ ! -e "$BINUTILS_SRCDIR" ]; then
tar -xf "$BINUTILS_SRCTARBALL"
fi
if [ ! -e "$ISL_SRCTARBALL" ]; then
wget -O "$ISL_SRCTARBALL" "$ISL_URL"
fi
if [ ! -e "$ISL_SRCDIR" ]; then
tar -xf "$ISL_SRCTARBALL"
fi
if [ ! -e "$GCC_SRCTARBALL" ]; then
wget -O "$GCC_SRCTARBALL" "$GCC_URL"
fi
if [ ! -e "$GCC_SRCDIR" ]; then
tar -xf "$GCC_SRCTARBALL"
ln -s ../$ISL_SRCDIR $GCC_SRCDIR/isl
for f in $(dirname $0)/mingw-w64-patches/gcc-*; do
patch -d "$GCC_SRCDIR" -p1 < $f
done
fi
if [ ! -e "$MINGW_W64_SRCDIR" ]; then
#shallow clone, we just want this one version
git clone -b $MINGW_W64_GITVER --depth 1 \
"$MINGW_W64_GITURL" "$MINGW_W64_SRCDIR"
fi
}
function build_arch {
BUILD_ARCH=$(gcc -dumpmachine) #machine which is building the compiler
HOST_ARCH=$1 #machine which will run the compiler
WIN32_TARGET_ARCH=$2 #machine which we are building for
NEWPATH=$DST_DIR/bin:$PATH
mkdir -p build-$WIN32_TARGET_ARCH/
pushd build-$WIN32_TARGET_ARCH/
mkdir -p binutils/
pushd binutils/
if [ ! -e Makefile ]; then
../../$BINUTILS_SRCDIR/configure \
--prefix=$DST_DIR/ \
--build=$BUILD_ARCH \
--host=$HOST_ARCH \
--target=$WIN32_TARGET_ARCH \
--enable-lto \
--enable-plugins \
--enable-deterministic-archives \
--disable-multilib \
--disable-nls \
--disable-werror \
$BINUTILS_EXTRA_CONFIGURE
fi
make $JOBS configure-host
make $JOBS LDFLAGS=-all-static
make $JOBS install
popd
mkdir -p mingw-w64-headers/
pushd mingw-w64-headers/
if [ ! -e Makefile ]; then
PATH=$NEWPATH:$PATH ../../$MINGW_W64_SRCDIR/mingw-w64-headers/configure \
--prefix=$DST_DIR/$WIN32_TARGET_ARCH/ \
--host=$WIN32_TARGET_ARCH \
--enable-sdk=all \
--enable-secure-api \
$MINGW_W64_HEADERS_EXTRA_CONFIGURE
fi
PATH=$NEWPATH:$PATH make $JOBS install
popd
mkdir -p gcc/
pushd gcc/
if [ ! -e Makefile ]; then
#arguments mostly taken from Arch AUR mingw-w64-gcc PKGBUILD,
#except "--disable-dw2-exceptions" swapped for "--disable-sjlj-exceptions --with-dwarf2"
#for performance reasons on 32-bit
LDFLAGS=-static PATH=$NEWPATH:$PATH ../../$GCC_SRCDIR/configure \
--prefix=$DST_DIR/ \
--build=$BUILD_ARCH \
--host=$HOST_ARCH \
--target=$WIN32_TARGET_ARCH \
--enable-static \
--enable-shared \
--enable-languages=c,lto,c++ \
--disable-multilib \
--enable-threads=posix \
--enable-fully-dynamic-string \
--enable-libstdcxx-time=yes \
--enable-libstdcxx-filesystem-ts=yes \
--enable-cloog-backend=isl \
--enable-libgomp \
--enable-lto \
--disable-sjlj-exceptions \
--with-dwarf2 \
$GCC_EXTRA_CONFIGURE
fi
PATH=$NEWPATH make $JOBS all-gcc
PATH=$NEWPATH make $JOBS install-gcc
popd
mkdir -p mingw-w64-crt/
pushd mingw-w64-crt/
if [ ! -e Makefile ]; then
PATH=$NEWPATH ../../$MINGW_W64_SRCDIR/mingw-w64-crt/configure \
--prefix=$DST_DIR/$WIN32_TARGET_ARCH/ \
--host=$WIN32_TARGET_ARCH \
--enable-wildcard \
$MINGW_W64_CRT_EXTRA_CONFIGURE
fi
PATH=$NEWPATH make $JOBS
PATH=$NEWPATH make $JOBS install
popd
mkdir -p mingw-w64-winpthreads/
pushd mingw-w64-winpthreads/
if [ ! -e Makefile ]; then
PATH=$NEWPATH ../../$MINGW_W64_SRCDIR/mingw-w64-libraries/winpthreads/configure \
--prefix=$DST_DIR/$WIN32_TARGET_ARCH/ \
--host=$WIN32_TARGET_ARCH \
--enable-static \
--enable-shared \
$MINGW_W64_WINPTHREADS_EXTRA_CONFIGURE
fi
PATH=$NEWPATH make $JOBS
PATH=$NEWPATH make $JOBS install
popd
pushd gcc/
#next step requires libgcc in default library location, but
#"canadian" build doesn't handle that(?), so install it explicitly
PATH=$NEWPATH make configure-target-libgcc
PATH=$NEWPATH make -C $WIN32_TARGET_ARCH/libgcc $JOBS
PATH=$NEWPATH make -C $WIN32_TARGET_ARCH/libgcc $JOBS install
#install libstdc++ and other stuff
PATH=$NEWPATH make $JOBS
PATH=$NEWPATH make $JOBS install
#libstdc++ requires that libstdc++ is installed in order to find gettimeofday(???)
#so, rebuild libstdc++ after installing it above
PATH=$NEWPATH make $JOBS -C $WIN32_TARGET_ARCH/libstdc++-v3/ distclean
PATH=$NEWPATH make $JOBS
PATH=$NEWPATH make $JOBS install
popd
mkdir -p mingw-w64-tools/widl
pushd mingw-w64-tools/widl/
if [ ! -e Makefile ]; then
PATH=$NEWPATH ../../../$MINGW_W64_SRCDIR/mingw-w64-tools/widl/configure \
--prefix=$DST_DIR/ \
--target=$WIN32_TARGET_ARCH \
--program-prefix="${WIN32_TARGET_ARCH}-"
fi
PATH=$NEWPATH make $JOBS
PATH=$NEWPATH make $JOBS install
popd
popd
}
setup_src
mkdir -p $DST_DIR
MINGW_W64_CRT_EXTRA_CONFIGURE="--disable-lib64 --enable-lib32" build_arch x86_64-linux-gnu i686-w64-mingw32
MINGW_W64_CRT_EXTRA_CONFIGURE="--disable-lib32 --enable-lib64" build_arch x86_64-linux-gnu x86_64-w64-mingw32
echo "Done!"

File diff suppressed because it is too large Load diff

View file

@ -31,6 +31,50 @@ die() { err "$@"; exit 1; }
finish() { stat "$@"; exit 0; }
cmd() { showcmd "$@"; "$@"; }
#
# Dependency Checks
#
MISSING_DEPENDENCIES=0
dependency_command() {
local COMMAND=$1
shift
if ! command -v "$COMMAND" &> /dev/null; then
err "Couldn't find command '$COMMAND'. Please install ${@:-$COMMAND}."
MISSING_DEPENDENCIES=1
fi
}
CONTAINER_MOUNT_OPTS=""
check_container_engine() {
stat "Trying $1."
if ! cmd $1 run --rm $2; then
info "$1 is unable to run the container."
return 1
fi
touch permission_check
local inner_uid="$($1 run -v "$(pwd):/test$CONTAINER_MOUNT_OPTS" \
--rm $2 \
stat --format "%u" /test/permission_check 2>&1)"
rm permission_check
if [[ $inner_uid == *"Permission denied"* ]]; then
err "The container cannot access files. Are you using SELinux?"
die "Please read README.md and check your $1 setup works."
elif [ "$inner_uid" -eq 0 ]; then
# namespace maps the user as root or the build is performed as host's root
ROOTLESS_CONTAINER=1
elif [ "$inner_uid" -eq "$(id -u)" ]; then
ROOTLESS_CONTAINER=0
else
err "File owner's UID doesn't map to 0 or $(id -u) in the container."
die "Don't know how to map permissions. Please check your $1 setup."
fi
}
#
# Configure
#
@ -50,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
@ -64,6 +118,31 @@ function configure() {
info "No build name specified, using default: $build_name"
fi
dependency_command make "GNU Make"
if [ "$MISSING_DEPENDENCIES" -ne 0 ]; then
die "Missing dependencies, cannot continue."
fi
if [[ -n "$arg_relabel_volumes" ]]; then
CONTAINER_MOUNT_OPTS=:Z
fi
if [[ -n "$arg_container_engine" ]]; then
check_container_engine "$arg_container_engine" "$steamrt_image" || die "Specified container engine \"$arg_container_engine\" doesn't work"
else
stat "Trying to find usable container engine."
if check_container_engine docker "$steamrt_image"; then
arg_container_engine="docker"
elif check_container_engine podman "$steamrt_image"; then
arg_container_engine="podman"
else
die "${arg_container_engine:-Container engine discovery} has failed. Please fix your setup."
fi
fi
stat "Using $arg_container_engine."
## Write out config
# Don't die after this point or we'll have rather unhelpfully deleted the Makefile
[[ ! -e "$MAKEFILE" ]] || rm "$MAKEFILE"
@ -75,17 +154,29 @@ 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"
if [[ -n "$arg_docker_opts" ]]; then
echo "DOCKER_OPTS := $arg_docker_opts"
fi
if [[ -n "$CONTAINER_MOUNT_OPTS" ]]; then
echo "CONTAINER_MOUNT_OPTS := $CONTAINER_MOUNT_OPTS"
fi
if [[ -n "$arg_enable_ccache" ]]; then
echo "ENABLE_CCACHE := 1"
fi
if [[ -n "$arg_enable_bear" ]]; then
echo "ENABLE_BEAR := 1"
fi
# Include base
echo ""
echo "include \$(SRCDIR)/build/makefile_base.mak"
echo "include \$(SRCDIR)/Makefile.in"
} >> "$MAKEFILE"
stat "Created $MAKEFILE, now run make to build."
@ -96,11 +187,13 @@ function configure() {
# Parse arguments
#
arg_steamrt="soldier"
arg_steamrt_image=""
arg_no_steamrt=""
arg_protonsdk_image=""
arg_build_name=""
arg_container_engine=""
arg_docker_opts=""
arg_relabel_volumes=""
arg_enable_ccache=""
arg_enable_bear=""
arg_help=""
invalid_args=""
function parse_args() {
@ -137,17 +230,21 @@ function parse_args() {
elif [[ $arg = --build-name ]]; then
arg_build_name="$val"
val_used=1
elif [[ $arg = --container-engine ]]; then
arg_container_engine="$val"
val_used=1
elif [[ $arg = --docker-opts ]]; then
arg_docker_opts="$val"
val_used=1
elif [[ $arg = --steam-runtime-image ]]; then
elif [[ $arg = --relabel-volumes ]]; then
arg_relabel_volumes="1"
elif [[ $arg = --enable-ccache ]]; then
arg_enable_ccache="1"
elif [[ $arg = --enable-bear ]]; then
arg_enable_bear="1"
elif [[ $arg = --proton-sdk-image ]]; then
val_used=1
arg_steamrt_image="$val"
elif [[ $arg = --steam-runtime ]]; then
val_used=1
arg_steamrt="$val"
elif [[ $arg = --no-steam-runtime ]]; then
arg_no_steamrt=1
arg_protonsdk_image="$val"
else
err "Unrecognized option $arg"
return 1
@ -182,7 +279,7 @@ function parse_args() {
}
usage() {
"$1" "Usage: $0 { --no-steam-runtime | --steam-runtime-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" ""
@ -191,32 +288,29 @@ usage() {
"$1" ""
"$1" " --build-name=<name> Set the name of the build that displays when used in Steam"
"$1" ""
"$1" " --container-engine=<engine> Which Docker-compatible container engine to use,"
"$1" " e.g. podman. Tries to do autodiscovery when not specified."
"$1" ""
"$1" " --docker-opts='<options>' Extra options to pass to Docker when invoking the runtime."
"$1" ""
"$1" " --relabel-volumes Bind-mounted volumes will be relabeled. Use with caution."
"$1" ""
"$1" " --enable-ccache Mount \$CCACHE_DIR or \$HOME/.ccache inside of the container and use ccache for the build."
"$1" ""
"$1" " --enable-bear Invokes make via bear creating compile_commands.json."
"$1" ""
"$1" " Steam Runtime"
"$1" " Proton builds that are to be installed & run under the steam client must be built with"
"$1" " the Steam Runtime SDK to ensure compatibility. See README.md for more information."
"$1" ""
"$1" " --steam-runtime-image=<image> Automatically invoke the Steam Runtime SDK in <image>"
"$1" " --proton-sdk-image=<image> Automatically invoke the Steam Runtime SDK in <image>"
"$1" " for build steps that must be run in an SDK"
"$1" " environment. See README.md for instructions to"
"$1" " create this image."
"$1" " --steam-runtime=soldier Name of the steam runtime release to build for (soldier, scout)."
"$1" ""
"$1" " --no-steam-runtime Do not automatically invoke any runtime SDK as part of the build."
"$1" " Build steps may still be manually run in a runtime environment."
exit 1;
}
[[ $# -gt 0 ]] || usage info
parse_args "$@" || usage err
[[ -z $arg_help ]] || usage info
# Sanity check arguments
if [[ -n $arg_no_steamrt && -n $arg_steamrt_image ]]; then
die "Cannot specify --steam-runtime-image as well as --no-steam-runtime"
elif [[ -z $arg_no_steamrt && -z $arg_steamrt_image ]]; then
die "Must specify either --no-steam-runtime or --steam-runtime-image"
fi
configure "$arg_steamrt_image" "$arg_steamrt"
configure

1
dav1d Submodule

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

View file

@ -6,6 +6,7 @@
import os
import subprocess
import re
def file_is_wine_builtin_dll(path):
if not os.path.exists(path):
@ -50,42 +51,83 @@ def make_relative_symlink(target, linkname):
os.symlink(rel, linkname)
def setup_dll_symlinks(default_pfx_dir, dist_dir):
skip_dlls = [ 'amd_ags_x64.dll' ]
for walk_dir, dirs, files in os.walk(default_pfx_dir):
for file_ in files:
filename = os.path.join(walk_dir, file_)
if file_ in skip_dlls:
continue
if os.path.isfile(filename) and file_is_wine_builtin_dll(filename):
bitness = dll_bitness(filename)
if bitness == 32:
libdir = os.path.join(dist_dir, 'lib/wine')
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"
dll_path = dist_dir + "/lib64/vkd3d:" + dist_dir + "/lib/vkd3d"
if runtime is None:
local_env["LD_LIBRARY_PATH"] = ld_path
local_env["WINEPREFIX"] = default_pfx_dir
local_env["WINEDEBUG"] = "-all"
local_env["WINEDLLPATH"] = dll_path
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"]
subprocess.run(runtime_args + ["/bin/bash", "-c",
os.path.join(dist_dir, 'bin', 'wine') + " wineboot && " +
@ -93,10 +135,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])

View file

@ -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,29 @@ 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.
Visit the Google Noto fonts collection at
https://www.google.com/get/noto/
---- ---- ---- ----
This software contains wine-mono, parts of which are included under a variety of licenses.
Parts of Mono (mono/) are variously licensed under the GPL, LGPL, and MIT X11 licenses. All parts are available as LGPL or MIT X11 except for the following:
@ -164,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>
@ -242,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>
@ -256,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>
@ -293,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
@ -433,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.

View file

@ -1,41 +1,44 @@
STEAMRT_VERSION = 0.20210126.1
STEAMRT_VERSION = 0.20240307.80401
STEAMRT_URLBASE = registry.gitlab.steamos.cloud
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/soldier/sdk
PROTONSDK_VERSION = $(STEAMRT_VERSION)-0
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.35
GCC_VERSION = 9.3.0
MINGW_VERSION = 8.0.0
RUST_VERSION = 1.44.1
BINUTILS_VERSION = 2.42
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 = 1b11659fb49e20e18db460d44485f09442c8c56d5df165de9461eb09c8302f85
GCC_SHA256 = 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1
MINGW_SHA256 = 44c740ea6ab3924bc3aa169bad11ad3c5766c5c8459e3126d44eabb8735a5762
RUST_SHA256_x86_64 = a41df89a461a580536aeb42755e43037556fba2e527dd13a1e1bb0749de28202
RUST_SHA256_i686 = e69689b0a1b66599cf83e7dd54f839419007e44376195e93e301a3175da3d854
BINUTILS_SHA256 = f6e4d41fd5fc778b06b7891457b3620da5ecea1006c6a4a41ae998109f85a800
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 -

81
docker/README.md Normal file
View file

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

File diff suppressed because it is too large Load diff

View file

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

View file

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

View file

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

View file

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

View file

@ -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| | | |winmm| |
------ | | ----- |
| | \ | |
| | | | |
\ | ------ |
\ | |dinput| |
\ | ------ /
| | / /
| | | /
--- /
|hid| /
--- /
| /
| |
--------
/ | | | | application
********|**|*|*|**|***********************
------ / | | | | wine
|xinput| | | | |
------ / | | |
| / | | |
--- / / | \
|hid|--- / | \
--- / | \
| / | \
-------- ------ -----
|rawinput| |dinput| |winmm|
-------- ------ -----
|rawinput|
--------
|
-----------
|winebus.sys|
-----------
| | wine
************|******|***********************
| | linux
| ----
| |SDL2|
| ----
| | \
| | \
| | |
----------- | ----------------
|winebus.sys| | |winejoystick.drv|
----------- | ----------------
| \ / | 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.

186
docs/DEBUGGING.md Normal file
View file

@ -0,0 +1,186 @@
Proton Debugging Tips
=====================
For loading dev builds of games onto a Steam Deck see
<https://partner.steamgames.com/doc/steamdeck/loadgames>
Debug Proton Builds
-------------------
See [README.md#debugging](../README.md#debugging).
Attaching A Debugger
--------------------
Running GDB and attaching to a running .exe works out of the box:
```
$ ps | grep Game
2263566 ? tsl 0:09 Z:\home\ivyl\.local\share\Steam\steamapps\common\Game\Game.exe
$ gdb
GNU gdb (GDB) 14.1
...
(gdb) attach 2263566
Attaching to process 2263566
[New LWP 2263569]
...
0x000075dce0cd788d in ?? ()
```
With Proton Experimental (and >= 9.0-2), GDB should be able to load the symbols right
away. However, for the most seamless experience you will want to use a
custom version of GDB with a couple of patches to better integrate with
Wine.
You can find this fork at https://gitlab.winehq.org/rbernon/binutils-gdb,
which you can build with `configure && make all-gdb && make install-gdb`.
Make sure to have python development packages installed, as GDB python
support will be required.
With this custom GDB you can `source` [Wine's custom unwinder](https://github.com/ValveSoftware/wine/blob/experimental_9.0/tools/gdbunwind.py)
in your `~/.gdbinit`, and you will get backtraces across PE / unix boundaries.
With older Proton you can use `source` [wine's
gdbinit](https://github.com/ValveSoftware/wine/blob/proton_8.0/tools/gdbinit.py)
to make `load-symbol-files` command available that uses `/proc/$pid/maps` to
load the symbols:
```
(gdb) source ~/src/proton/wine/tools/gdbinit.py
(gdb) load-symbol-files
loading symbols for /home/ivyl/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/wine/x86_64-windows/kernelbase.dll
...
(gdb) bt
#0 0x000075dce0cd788d in ?? ()
#1 0x000075dcdf26e842 in futex_wait (timeout=0x0, val=0, addr=0x75dcdd8383e0) at ../src-wine/dlls/ntdll/unix/sync.c:127
#2 NtWaitForAlertByThreadId (address=<optimized out>, timeout=0x0) at ../src-wine/dlls/ntdll/unix/sync.c:2658
#3 <signal handler called>
#4 0x000000017000ebb4 in NtWaitForAlertByThreadId ()
#5 0x00000001700367f9 in RtlWaitOnAddress (addr=addr@entry=0x4850970, cmp=0x3d12fa9c, cmp@entry=0x3d12fabc, size=size@entry=4, timeout=timeout@entry=0x0) at ../src-wine/dlls/ntdll/sync.c:941
#6 0x000000017003276a in RtlSleepConditionVariableSRW (variable=0x4850970, lock=0x4850908, timeout=0x0, flags=<optimized out>) at ../src-wine/dlls/ntdll/sync.c:837
#7 0x000000007b061e41 in SleepConditionVariableSRW (variable=<optimized out>, lock=<optimized out>, timeout=<optimized out>, flags=<optimized out>) at ../src-wine/dlls/kernelbase/sync.c:1064
#8 0x000000035915c892 in dxvk::condition_variable::wait (lock=..., this=0x4850970) at ../src-dxvk/src/dxvk/../util/log/../thread.h:251
#9 dxvk::condition_variable::wait<dxvk::DxvkPipelineWorkers::runWorker(dxvk::DxvkPipelinePriority)::<lambda()> > (pred=..., lock=..., this=0x4850970) at ../src-dxvk/src/dxvk/../util/log/../thread.h:257
#10 dxvk::DxvkPipelineWorkers::runWorker (this=0x48508f0, maxPriority=dxvk::DxvkPipelinePriority::Normal) at ../src-dxvk/src/dxvk/dxvk_pipemanager.cpp:140
#11 0x00000003591a7781 in std::function<void ()>::operator()() const (this=0x4852ee0) at /usr/x86_64-w64-mingw32/include/c++/10.3.0/bits/std_function.h:622
#12 dxvk::thread::threadProc (arg=0x4852ed0, arg@entry=<error reading variable: value has been optimized out>) at ../src-dxvk/src/util/thread.cpp:68
#13 0x000000007b6146ed in BaseThreadInitThunk (unknown=<optimized out>, entry=<optimized out>, arg=<optimized out>) at ../src-wine/dlls/kernel32/thread.c:61
#14 0x000000017000f1a7 in RtlUserThreadStart ()
#15 0x0000000000000000 in ?? ()
```
Attaching Before The Program Starts
-----------------------------------
Launch the software with `PROTON_WAIT_ATTACH=1 %command%` set as the launch
command in game's properties. Our `steam.exe` shim will then wait for debugger
and only then exec the proper executable.
Make sure that you follow child processes:
```
set follow-fork-mode child
```
Getting Shell Inside Of The Steam Runtime
------------------------------------------
Set your launch options to: `PROTON_LOG=1 STEAM_COMPAT_LAUNCHER_SERVICE=proton
%command%`
Then in `steam-$GAMEID.log` you should see the following:
```
Starting program with command-launcher service.
To run commands in the per-app container, use a command like:
/home/ivyl/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/pressure-vessel/bin/steam-runtime-launch-client \
--bus-name=:1.307 \
--directory='' \
-- \
bash
```
After invoking it you end up in a shell with the environment variables,
including `WINEPREFIX` are set and you can invoke `wine` directly, e.g.:
```
[ivyl@crabcraft x64]$ wine winedbg
Wine-dbg> info process
pid threads executable (all id:s are in hex)
0000028c 1 'start.exe'
0000029c 1 \_ 'winedbg.exe'
=000002a4 1 \_ 'winedbg.exe'
00000294 2 \_ 'conhost.exe'
00000030 10 'services.exe'
000000e4 6 \_ 'rpcss.exe'
000000b0 3 \_ 'svchost.exe'
00000094 6 \_ 'plugplay.exe'
00000064 9 \_ 'winedevice.exe'
0000003c 8 \_ 'winedevice.exe'
00000020 3 'steam.exe'
00000128 62 \_ 'Game.exe'
000000d0 3 \_ 'explorer.exe'
0000010c 3 \_ 'tabtip.exe'
```
**NOTE:** If you need a predictable bus name instead of the unique connection
name (the `:1.307` from example above) you can use `com.steampowered.App1234567`
where 1234567 is the Steam App ID for the title you are debugging.
You can always use a tool like `qdbus` to list available bus names.
Starting A Different Binary
---------------------------
If you want to start a different binary than the game's default you can use a
few methods. All of the examples below will use `winecfg`.
### Substitution
You can use the following launch option:
```
echo "%command%" | sed 's/proton waitforexitandrun .*/proton waitforexitandrun winecfg/' | sh
```
The full substitution of `proton waitforexitandrun .*` is necessary as the
original `%command%` is very long and may contain multiple mentions of `proton`
or the original binary.
### Pressure-Vessel Shell
[Pressure-vessel][pv] allows to spawn an xterm instead of launching Proton. This
can be accomplished by setting `PRESSURE_VESSEL_SHELL=instead`. The easiest way
is to set the launch option to:
[pv]: (https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/tree/main/pressure-vessel)
`PRESSURE_VESSEL_SHELL=instead %command%`
The original coommand is then contained in `$@`, e.g.:
```
/home/ivyl/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/pressure-vessel/bin/steam-runtime-launcher-interface-0 container-runtime /home/ivyl/.local/share/Steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /home/ivyl/.local/share/Steam/steamapps/common/Game/Game.exe
```
From this point you can invoke `proton` script as all the required environment
variables are set. If you are copying the path from `$@` make sure to escape or
quote parts that contain spaces.
To start `winecfg` something like this can be entered:
```
"/home/ivyl/.local/share/Steam/steamapps/common/Proton - Experimental/proton" waitforexitandrun winecfg
```

26
docs/ICMP_ECHO.md Normal file
View file

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

146
docs/PRIME.md Normal file
View file

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

20
docs/THREAD_PRIORITY.md Normal file
View file

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

2
dxvk

@ -1 +1 @@
Subproject commit 3f91cdbc126abde7b2334e739d08de0ef2edd1d2
Subproject commit d0ea5a4a87c9b4ee8a7d700c5f55baf26054bd6a

1
dxvk-nvapi Submodule

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

1
ffmpeg Submodule

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

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

94
fonts/noto/LICENSE Normal file
View file

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

140
fonts/ranges/arial Normal file
View file

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

123
fonts/ranges/micross Normal file
View file

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

166
fonts/ranges/nirmala Normal file
View file

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

View file

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

1
graphene Submodule

@ -0,0 +1 @@
Subproject commit 4e2578450809c2099400cf85caf18eafcd7100aa

@ -1 +1 @@
Subproject commit 9901a96eaff271c2d3b595214213f6805ff803c8
Subproject commit 7d5bbada3f1c6cf34182abccf47a34d79b83fa97

@ -1 +0,0 @@
Subproject commit 9d3581b2e6f12f0b7e790d1ebb63b90cf5b1ef4e

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

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