github Djihads80/Eglantine branch-scratch-oot-shader-lab-791e9e5f
Eglantine Branch: scratch/oot-shader-lab

pre-release3 hours ago

Test build of branch scratch/oot-shader-lab at e88024e.

This is not a release. It is for testing, and the next push to the branch replaces it.

Commits on top of nx2

  • shader, video_core: run Ocarina's end-of-frame network through a compact software HMMA (e88024e6b0)
  • shader: gather each tap with its own offset when per-tap offsets stay dynamic (993a31c593)
  • shader: apply F2I constant-buffer abs and neg (9b27d7eac8)
  • shader: lower Ocarina's extended uniform, LEA and conversion forms by default (61bfe3dce6)
  • shader: fold multiplies by 0 and 1 again so Ocarina's sky ambient binds its buffer (954985d351)
  • skills: Balanced fences cost ~11 ms of front-thread time (545b852ba0)
  • buffer_cache: don't download GPU data over newer CPU writes (fe2cd8be2b)
  • shader, buffer_cache: turn the post-90ff431884 runtime changes back off by default (87bd90ae35)
  • skills: unattended lab runs are silent (fc6da12033)
  • skills: add the walk survey script, with captures that report failures (7e63dcff49)
  • skills: flash watch for 1-2 frame artifacts (83d10df33c)
  • nx2_gsv: EDEN_NX2_FLASH_WATCH counts near-white pixels and keeps the flashing frames (4749c9436c)
  • buffer_cache: let the native bank re-upload cover banks of any size (8b3aff59e4)
  • skills: LOD vegetation flashes = compute programs rejected every frame (8dafde5150)
  • skills: oot_burst.sh takes a PRE camera sequence before the burst (346d825ed2)
  • shader: lower Ocarina's byte uniform loads, ULEA carries, F2IP pairs and I2F.U8 of a UR byte (9a69d8eaf0)
  • skills: white one-frame material flashes = stale native uniform bank (b213a58ab5)
  • buffer_cache: re-upload a native program's 64 KiB uniform bank on every bind (031e07436c)
  • skills: vendor the lab skill's split-hang reference and gdb wrapper (4a2dafae3e)
  • nx2_gsv: save a burst of consecutive presents on request (8fcdba8f88)
  • skills: reach OoT gameplay in ~130 s instead of ~180 s (9fa1702cce)
  • puller: release fences again while an acquire waits with delayed fence operations (90ff431884)
  • fence_manager: submit deferred work before waiting on our own fence (1b594aa6b6)
  • Revert "video_core: release fences that carry downloads after the downloads land (#72)" (3601b06b0f)
  • skills: switch GPU accuracy from the lab; split restart verification (17593e251b)
  • video_core: release fences that carry downloads after the downloads land (#72) (2cb4cc8bbb)
  • yuzu_cmd: set the GPU accuracy from the live keys file (0f40940b1e)
  • engines: hand the macros back to the engines when the GPU split stops (66b9ff826f)
  • skills: OoT white wash comes from culled vegetation; split check on Linux (65e5b1011d)
  • shader, video_core: bind storage buffers behind loaded pointers for OoT's vegetation (4ac9e703fe)
  • gpu_split: report back-owned scheduler use on Linux too (1789b05d94)
  • video_core: run the front's fence work, macro DMA flushes and maps on the split's back (3087c1cf07)
  • video_core: bump pipeline cache versions past the reverted constant folding (caec666a25)
  • Revert "shader: fold multiplies by 0 and 1 so Ocarina's sky ambient binds its buffer" (270732f525)
  • video_core: run front-side buffer flushes on the GPU split back thread (727a9a4eb4)
  • Revert "buffer_cache: bind native read-only storage buffers to the end of their mapping" (34f24ae551)
  • buffer_cache: bind native read-only storage buffers to the end of their mapping (1992f6ef99)
  • shader: fold multiplies by 0 and 1 so Ocarina's sky ambient binds its buffer (b1a0e3fbf8)
  • shader: shadow ISBEWR data registers (Ocarina door NaN) (#100) (582ecc4568)
  • shader: follow subgroup broadcasts when finding native storage buffer pointers (c58d474d32)
  • macro: flush pending query writes before native MME DMA reads (d83a7a346d)
  • buffer_cache: size native graphics storage buffers like compute ones (405e5f7ac8)
  • buffer_cache: upload CPU writes onto GPU-written pages instead of downloading them (575d0a5bfd)
  • buffer_cache: download only the Preflushable parts of a GPU write at fences (5d742e369e)
  • video_core: invalidate caches after MemoryManager::WriteBlock copies the data (8acfc248b3)
  • video_core: cache MaxContinuousRange until the GPU page table changes (47b4169b3f)
  • kernel: spin briefly before idling cores for Switch 2 titles (8dc1e6e9c4)
  • buffer_cache: re-upload a native program's 64 KiB uniform bank once per frame (5c7da2713a)
  • shader: pack FP16 texture results with c0 in the low half (29ed33831a)
  • shader: drop the U64 clamp from lowered SHF.R funnel immediates (223c752f44)
  • agents: OOT notes after the upscale stand-in fix (179dbdbb63)
  • video_core: upscale stand-in takes its images from the native program (dbf3417099)
  • agents: vendor the NX2 shader triage and lab automation skills (f3cc85c2a7)
  • nx2: scriptable shader lab control, live keys for eden-cli (ed5974a7ae)
  • nx2: save a screenshot with each diagnostics capture (29ca661970)
  • nx2: start the shader lab when the process starts (a2cf8b5a64)
  • nx2: remove a stale lab address before starting the shader lab (99ed21bad9)
  • nx2: start the shader lab from the emulator, add clear buttons (baf8906b2d)
  • nx2: add a per-draw pixels-written probe to the diagnostics (a06cd8323a)
  • nx2: add a live shader lab for the diagnostics (cd19eb541a)
  • nx2: add program keys to the diagnostics draw list (efb36199b4)
  • nx2: add draw and dispatch diagnostics (450331d35b)
  • tools/nx2: add shader triage and VMA analysis tools (fd1d5d4637)
  • shader: route untracked 32-bit global atomics to their storage buffer (6b934346d7)
  • shader: lower the rest of Ocarina's dumped native programs (19e25d0cfb)
  • shader: lower Ocarina 2D array, per-pixel offset and depth gathers (f1a5c6e04f)
  • shader: lower Ocarina guarded uniform compares and uniform SEL (edf4eacc7d)
  • shader: lower Ocarina CALL helpers, 64-bit shifts and high uniform forms (bb5998f497)
  • shader: lower more Ocarina compute and high-register graphics forms (3f065ef733)
  • shader: lower Ocarina ISETP.EX accumulation and F32 global reductions (350b7d8ffd)

Linux

The AppImage is self-contained (needs glibc 2.39 or newer: Ubuntu 24.04, Fedora 40, Debian 13, Arch): make it executable with chmod +x and run it. The 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
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) MinGW PGO zip Built with MinGW clang; bundles its own DLLs, no Visual C++ redistributable needed

macOS

Build Type Standard PGO (Recommended) Notes
arm64 (Apple Silicon) zip · dmg macOS 15 or newer. Not notarized: right-click and choose Open the first time, or run . is inside the app, in .

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

Don't miss a new Eglantine release

NewReleases is sending notifications on new releases.