Test build of branch oot-optimization-fixes at 7b1aeff.
This is not a release. It is for testing, and the next push to the branch replaces it.
Commits on top of nx2
- nvdrv: count command list entries copied after a queued GPU map (
7b1aeff913) - dma_pusher: count entries parsed from memory that differ from their submit-time copy (
2c9263140d) - nvdrv: keep submit-time copies of entries no pending map covers (
49d1e8cb74) - nvdrv: copy command lists submitted behind a queued GPU map later (
74cd3b432e) - vulkan: keep task and mesh pipelines in their own disk cache file (
bc121caf3e) - video_core: reuse the last memory layout interval during draw setup (
d713f4462a) - video_core: batch GPU-written page marks by bitmap word (
abb9ae8426) - video_core: count only memory-writing compute and DMA methods as split writers (
dc5938b8bb) - perf(video_core): cache storage buffer bindings and continuous ranges per page table serial (
c8415d0e80) - buffer_cache: skip unchanged words while binding clean buffers (
1725659895) - video_core: skip resetting untouched buffer usage trackers (
1b7995d89c) - video_core: define usage masks for empty and partial blocks (
5778922694) - vk_pipeline_cache: keep sixteen sessions of used pipelines and save the list every 15 s (
88ad4037e4) - vulkan: round the alpha test reference to 1/255 in the pipeline key (upstream #544) (
3a4c00a3c9) - shader: find visited blocks and sibling order without full list scans (
dc96fb139e) - vulkan: build a pipeline a draw or dispatch waits on instead of queueing behind others (
56881674fe) - vulkan: build the cached pipelines boot skips on background threads (
72f3c47996) - externals: FFmpeg with AV1 on MinGW Windows (
7f6f1d1289) - video_core: keep 4096 MaxContinuousRange answers per thread (
292a68df46) - shader: mesh programs that output points or lines (
743d5bbaed) - texture_cache: skip the upload of a new render target a clear overwrites whole (#141) (
7d26d3b2fb) - core: serialize GPU dirty memory gathers (
cc0fc78005) - vulkan: drop draws recorded after a graphics pipeline that failed to build (#142) (
53c1fa18b4) - vk_scheduler: pause, don't reset, the occlusion counter at each submission (Ocarina white flashes) (#121) (
226f92afdb) - common: retry early UMWAIT wakes until the Event deadline (#137) (
5e2cdc9f1a) - common: retry unsignalled MWAITX wakes until the Event deadline (#120) (
687a4943e0) - shader: count nested returns before moving demotes to the end (AMD black scene) (#127) (
a539f224b9) - vulkan: skip tessellation pipelines the driver would refuse (
3a7477111f) - vulkan: say why a draw was skipped, and cap async-build skips separately (
8d356dfa56) - nx2: keep other threads out of the Vulkan scheduler while the split's back submits (
23457ccf7b) - 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 | ||
| ARM (aarch64) | 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 |
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 . |