Skip to content

Eglantine smileytatsu/dev-rebased build 15 (662ed6f)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Nov 05:33

Automatic build of smileytatsu/dev-rebased at 662ed6f.

What changed in this build

This build is the same as build 13 (upstream build-194, 09e539a65c, plus this fork's changes) with one more commit: a revert of upstream b547bda625 ("texture_cache: finish between chunked uploads so staging memory is reused"). The README lists it.

Why: an AMD user got VK_ERROR_DEVICE_LOST (an AMD "driver timeout" popup) on the loading screen of Mario Kart World, about 20 s after the game started loading. It happens on upstream build-194 too. I bisected it on upstream, one build at a time, with the same settings each time:

  • Builds up to 93821e84c7 and cca4548805: start fine.
  • cca4548805 plus 073b877965 (large 2D images uploaded in 32 MiB chunks): starts fine.
  • The same plus b547bda625: VK_ERROR_DEVICE_LOST at 26 s.

That commit adds a runtime.Finish() (submit and wait for the GPU) between the chunks of a large image upload. I do not know why that wait makes AMD's driver time out; that is a guess, not something I measured. The tester also said that a build with only that commit reverted starts fine; I did not read that log. Each build was run once.

What reverting it costs: the commit wanted the staging memory of a large image (64 MiB and up) to be reused between chunks. Without the wait, the staging buffers of all the chunks stay alive until the next scheduler flush, so a 600 MiB image accumulates its full staging size again. I did not measure how much memory that is in practice.

Tested on:

  • GPU: AMD Radeon RX 9070 XT, AMD proprietary driver 2.0.416
  • Game: Mario Kart World (title ID 0400C3F00006E000), Windows
  • Linux (RADV), NVIDIA and other AMD GPUs were not tested with this change.

The binaries below were built by CI; I did not run them. I only compiled vk_texture_cache.cpp on Windows after the revert. The upstream commit is not reported there yet.

The other changes of this fork are listed in the README.

Linux

Linux packages come as an AppImage (self-contained, needs glibc 2.39 or newer: Ubuntu 24.04, Fedora 40, Debian 13, Arch) and a tar.gz (uses your system libraries, so Qt 6 and the usual libraries must be installed).

Build Type Standard PGO (Recommended) Notes
amd64 AppImage · tar.gz AppImage · tar.gz Make the AppImage executable (chmod +x) and run it
ARM (aarch64) AppImage · tar.gz AppImage · tar.gz

Windows

Windows packages are in-place zip files: extract and run eglantine.exe, or eden-cli.exe from a terminal.

Build Type Standard PGO (Recommended) Notes
amd64 / x86_64 (MSVC) MSVC zip Use if you run into graphical issues on other builds
amd64 / x86_64 (MinGW) PGO zip Built with MinGW clang; bundles its own DLLs, no Visual C++ redistributable needed

The PGO builds are the same programs compiled with profile-guided optimization (clang plus Eglantine's profile); prefer them when your CPU supports it.