Skip to content

Eglantine smileytatsu/dev-rebased build 20 (864ab41)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Nov 23:38

Automatic build of smileytatsu/dev-rebased at 864ab41.

Texture cache memory limit

The texture cache used to start evicting at a fixed 5 GiB on every GPU, so a card with more memory than that evicted and decoded again textures that would have fit in it. The cap is now a setting that follows the GPU. This build also carries the changes of the previous one.

What changed

  • New setting: Adv. Graphics > Texture Cache Memory Limit (in MiB, also available per game in Properties). Auto (0, the default) uses three quarters of the device's memory budget and follows the driver when the budget changes while a game runs. An explicit value is clamped between 1 GiB and the device's memory.
  • The settings page knows the GPU. The maximum is the selected GPU's memory and changes with the device or backend selection. Auto shows the value it resolves to, and a value under the recommendation shows a warning that more textures will be evicted and decoded again, which can stutter. The log carries the same warning at boot.
  • Starting thresholds come from the device budget. The collector's thresholds, for Switch 1 and Switch 2 titles alike, are now derived from the driver's memory budget instead of the Conservative VRAM mode figure.
  • Safety margins are unchanged. The budget margins, the out-of-memory back-off and the block-slack reserve still apply under the limit, so a limit close to the GPU's memory is never reached.

What it affects

  • Every title, on every GPU with a memory budget. Integrated GPUs keep their existing share of system memory.
  • Video memory use is higher than before, up to the limit. If you run other GPU-heavy programs next to the emulator, lower the limit.
  • A title that streams more texture data than fits still evicts; the change only stops it from doing so earlier than the GPU requires.

Risks

  • If the driver's budget shrinks because another program takes video memory, the limit follows it down, but a small margin of garbage or missing textures is possible until the collector catches up. Please report it with the log.
  • The effect on frame times has been measured only as the absence of memory pressure in long runs (no out-of-memory events, unbacked images or device loss), not against the old cap on the same route.

Switches

  • EDEN_NX2_TC_EXPECTED_MIB and EDEN_NX2_TC_CRITICAL_MIB override the collector's thresholds and win over the setting.
  • EDEN_NX2_TC_LOG=1 logs the cache's device memory against its thresholds every 600 frames (Texture cache: device memory lines).

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.