Skip to content

Eglantine smileytatsu/dev-rebased build 18 (2ff2871)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Nov 07:47

Automatic build of smileytatsu/dev-rebased at 2ff2871.

Mario Kart World: photo mode in docked mode

In Mario Kart World 1.8.0, photo mode in docked mode showed a black screen with only the UI buttons. Handheld mode was fine. This build fixes it.

What was wrong

Docked, the photo mode renders at 2560x1440 and upscales to 3840x2160 with a network of tensor-core passes. Eglantine cannot run those passes, so the 4K image was never written and only the UI drawn over it showed. Handheld does not use the network, which is why it worked. Eglantine already had a stand-in for such passes (a plain blit of their input to their output), but it only looked at a few fixed places in the pass's constant buffer and, for this game, found nothing useful there.

What changed

  • Photo mode shows the scene again in docked mode. After the first rejected pass, the next dispatches are searched for a pass that has a colour image and one 1.5 times its size in its constant buffers, and its result is replaced by a bilinear blit of the first to the second. The pass and the places of the two handles are remembered, so later frames read only those two. The picture is a plain upscale, not the game's network.
  • The old fallback no longer blits look-up tables. Its generic search ignores output images under 1024 texels wide, so it stops copying unrelated small textures.
  • Titles the old fallback already handled are unchanged. It runs first; the new search only starts when it did not handle the pass, and it stops after a few attempts without a match, so other games do not pay for it.

Handheld mode and games that never hit the tensor-core rejection do not run any of the new code.

Risks

  • It looks for an exact 1.5x pair of colour images. If a future game update changes the photo mode's sizes, the stand-in finds nothing and photo mode goes back to the black screen.
  • A game whose passes happen to expose a matching pair that is not the upscale could get a wrong blit. It cannot crash, and it can be turned off (below).
  • The last two small changes (the search window closing after a few tries, and the old fallback running first) were compiled but not played again after the first working test.

Switch

EDEN_NX2_PHOTO_UPSCALE=0 in nx2_switches.txt turns the stand-in off.

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.