Repository navigation
Releases
Eglantine v0.1.0-rc3
Release candidate of 0.1.0. Please test it and report problems before the final release.
- Initial release candidate
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 26 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.
Eglantine Build 09/11/2026
Automatic daily build of nx2 at 78743f3.
Changes since the previous daily build
- bump to 0.1.0-rc3 (
78743f30c2) - downgraded ubuntu for older gzip (
293b5598fb) - chore: bumped to 0.1.0-rc2 (
66bfbc5321) - fix: fixed change log (
fbcfe365d7) - fixed stupid ci (
eff9f843af) - shader: lower BRA.U and HSETP2 with a constant buffer (
1e2c2dd4db) - ci: added discord RPC to builds (
373a7f5ac1) - fix: add translations to build (fixes #767) (
0fa5991d0e) - docs: added theme fix to changelog (
5726e5f6be) - Revert "Merge pull request #700 from Djihads80/revert-609-fix/mkw-performance-601" (
45ad48059b) - fixed closing software using wrong colors (
e5d9dcc2e3) - vk_pipeline_cache: keep the disk cache across translation-only version bumps (
eab2c2246d) - spirv: keep native global memory helpers as calls and route with one switch (
9a362357a2) - add relower_words.cpp for instruction lowering from hex input (
77c41e14db) - Fix discord invite link in docs (
7f07486c29) - fix: gcc build failed (
a61fb4154d) - fixed missing ccache command (
cf72eec6ad) - vulkan: use Info::UsesWarpOps for mesh and task stages (
0e82056820) - vulkan: mesh and task stages now require the guest warp size (
ff72fed972) - shader: share the warp-op check between pipeline stages (
70a841058e) - tools/nx2: catalogue: Ocarina of Time: 6 programs (
ac20ee1535) - shader, buffer_cache: let compute programs bind up to 64 storage buffers (
de4ed9d9d7) - shader: shadow copies for SHF, IADD3.UR, FSETP and I2F in the lowering (
900ab5a825) - fix: build on ninja (
a2b70664fc) - fixed llvm download (
ebecf65655) - applied updated setup build action (
c02ab82326) - ci: fixed duplicated caches (
583b125d5a) - docs: added current features in changelog (
a4d3aa40cf) - ci: added way to build only certain oses and only pgo (
baa6d295ac) - ci: updated runners (
a6ffbeb24f) - ci: cache builds (
aff8b2569b) - build(deps): bump the all-actions group with 2 updates (
6c96e95611) - ci: added dependabot for github actions (
a017245408) - mkw: enable targeted water feedback and full-speed movie presentation (
39a33c4a78) - file_sys: guard LayeredFS/ExeFS patch dirs against missing mod roots (
34a791dbd8) - LOCAL TEST: EDEN_NX2_FRONT_BATCH sends runs of incrementing 3D writes to the split front in one call (
ed6632e258) - local: fence operation lists as vectors (no allocation per queued operation) (
d52e5f1036) - local: LayeredFS for NUP RomFS (merged, not updatable), cached (
539b830205) - local: texture cache threshold overrides capped at the device budget (
5d5fba1ca1) - LOCAL TEST: EDEN_NX2_SWAP_INTERVAL doesn't apply while video frames are decoded (Ocarina's 60 fps cutscene videos) (
854b81b17b) - vulkan: drop queued shader builds on close (
37a3ad3ad9) - vulkan: wait for shader builds before the cache save on close (
f9de7d8551) - vulkan: intel arc fixes for MKW (
8e87cf5a66) - Toggle USE_DISCORD_PRESENCE flag in release workflow (
a25ad9582e) - Include string_util.h in deconstructed_rom_directory.cpp (
0b0d4d43a2) - Add cover fetching functionality for Discord RPC (
b174764a37) - Add game_version member to DiscordRPC struct (
5b0df6085e) - Enabling discord rpc (
05cad80d0e)
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 26 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.
Eglantine Branch: nx2-experimental
Test build of branch nx2-experimental at df2989c.
This is not a release. It is for testing, and the next push to the branch replaces it.
Commits on top of nx2
- fixed stupid ci (
eff9f843af) - shader: lower BRA.U and HSETP2 with a constant buffer (
1e2c2dd4db) - ci: added discord RPC to builds (
373a7f5ac1) - fix: add translations to build (fixes #767) (
0fa5991d0e) - docs: added theme fix to changelog (
5726e5f6be) - Revert "Merge pull request #700 from Djihads80/revert-609-fix/mkw-performance-601" (
45ad48059b) - fixed closing software using wrong colors (
e5d9dcc2e3) - vk_pipeline_cache: keep the disk cache across translation-only version bumps (
eab2c2246d) - spirv: keep native global memory helpers as calls and route with one switch (
9a362357a2) - add relower_words.cpp for instruction lowering from hex input (
77c41e14db) - fix: gcc build failed (
a61fb4154d) - vulkan: use Info::UsesWarpOps for mesh and task stages (
0e82056820) - vulkan: mesh and task stages now require the guest warp size (
ff72fed972) - shader: share the warp-op check between pipeline stages (
70a841058e) - fixed llvm download (
ebecf65655) - ci: added way to build only certain oses and only pgo (
baa6d295ac) - ci: updated runners (
a6ffbeb24f) - vulkan: drop queued shader builds on close (
37a3ad3ad9) - vulkan: wait for shader builds before the cache save on close (
f9de7d8551) - vulkan: intel arc fixes for MKW (
8e87cf5a66) - Toggle USE_DISCORD_PRESENCE flag in release workflow (
a25ad9582e) - Include string_util.h in deconstructed_rom_directory.cpp (
0b0d4d43a2) - Add cover fetching functionality for Discord RPC (
b174764a37) - Add game_version member to DiscordRPC struct (
5b0df6085e) - Enabling discord rpc (
05cad80d0e)
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 26 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.
Eglantine Build 07/11/2026
Automatic daily build of nx2 at 216d3e2.
Changes since the previous daily build
- tools/nx2: catalogue: Ocarina of Time: 6 programs (
3f4c7a3f8d) - vk_pipeline_cache: rebuild compute pipelines once a null pointer slot holds a buffer (
688c6fa7d8) - ci: send discord webhook on daily releases, cache apt packages (
58187e9cb2) - tools/nx2: shader catalogue for the shader lab (
3ef8031da6) - debugger, video_core: port Lichii's live debug server and frame dump (
7602efc518) - nx2: drop late movie frames so the picture keeps up with the sound (
1f52ac7e2e) - nx2: wait for each of Ocarina of Time's frames (
a23be213d5) - video_core: replace Ocarina's movie network by an input copy (
92f119195f) - common: count stopped workers under the queue mutex (
45ebf0f7ae) - vulkan: reinterpret depth-stencil images through the depth aspect only (
70c22d1415) - vulkan: wait for the device before recreating the swapchain (
d039880df9) - vulkan: build two stalling AMD compute shaders without driver optimization (
7f9eb7cc5c) - vulkan: order compute writes before later draws, indirect reads and idle waits (
77bec76845) - shader: split misaligned SSBO accesses, fix AMD depth sampling, CAS retries and shuffles (
18106bdf49) - dynarmic: x64: fix VectorCountLeadingZeros16 on AVX-512 (
a8edfd1bec) - shader: bind loaded pointers that compete with a paired cbuf pointer (
a51a69fbfb) - feat(oot): desactivated handheld mode in recommended settings (
33805757a1) - feat(oot): added recommended settings + fixed CMakeLists windows options (
d9330e37c2) - Revert "Revert "vk_pipeline_cache: keep Switch 2 pipelines built"" (
0ba4606e27) - Revert "StarFox compatibility update" (
e87ad31068) - Revert "video_core: reduce native readbacks and fix MKW pacing" (
edd84b7567) - Revert "vk_pipeline_cache: keep Switch 2 pipelines built" (
095fd4b5ed) - 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) - kepler_compute: stand in for Mario Kart World's docked photo mode upscale (
5512454976) - 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) - Add INx2FontService, a service which wonder ns2e needs (
c6cf43efe8) - 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)
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](https://github.com/Djihads80/Eglantine/rele... |
Eglantine Branch: fix/oot-blackscreen
Test build of branch fix/oot-blackscreen at 743d5bb.
This is not a release. It is for testing, and the next push to the branch replaces it.
Commits on top of nx2
- 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 . |
Eglantine Branch: exp/nx2-welcome-tour-1121
Test build of branch exp/nx2-welcome-tour-1121 at 0271a81.
This is not a release. It is for testing, and the next push to the branch replaces it.
Commits on top of nx2
- nx2: relayout decoder frames written before the first GPU query (
0271a81811) - shader: pack TEX FP16 results with the first component in the low half (
f0f3f509e9) - debug: trace the indirect draws too (
fd0d392542) - debug: trace every screen-sized draw, with its target size (
5280bca1e6) - debug: dump the TIC descriptors programs read, and the traced target format (
63bb5b2790) - shader: read a second descriptor buffer for the array depth comparison TEX (
4bd876a103) - shader_environment: dump a TIC that reads as format 0 (
8af73fcbc9) - shader: bind the descriptor buffer array depth comparison TEX names (
b1f0db3777) - nx2: gsv 1121 returns a session (
2e771322b1) - shader: lower Ampere TLD4 per-tap offsets (
e7ab34df67)
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.
FFmpeg 9.0.2 + dav1d, MinGW package for CI (not an emulator build)
FFmpeg 9.0.2 + dav1d 1.5.4, MinGW (UCRT64) amd64
Static FFmpeg for Eglantine's MinGW builds (windows-x86_64-pgo), in CPMUtil's CI package layout
(CMakeLists.txt, include/, lib/). crueter-ci's MinGW package has no AV1 decoder, so the AV1
movies of Switch 2 titles (Fire Emblem: Fortune's Weave, The Legend of Zelda: Ocarina of Time) played
black on those builds. This is the MinGW counterpart of Takoroka/ffmpeg-av1 9.0.2-av1-1 (MSVC and Linux).
Sources
- FFmpeg
946fcce07b6dcd0331c8cc609192aeff5e1924f8
with crueter-ci's0001-steamdeck.patch
(https://git.eden-emu.dev/eden-emu/eden/raw/commit/ac86f96efadeac4cea0b335cffe3324f95051800/.patch/ffmpeg/0001-steamdeck.patch) - dav1d 1.5.4: MSYS2's
mingw-w64-ucrt-x86_64-dav1d 1.5.4-1static library (https://code.videolan.org/videolan/dav1d),
merged intolibavcodec.a - nv-codec-headers 13.0.19.0 and Vulkan headers 1.4.363 from MSYS2
- Built with MSYS2 UCRT64 GCC 16.2 by
build_ffmpeg_av1_mingw.sh(included)
Configure flags
--pkg-config-flags=--static --disable-avdevice --disable-avformat --disable-doc --disable-everything
--disable-ffmpeg --disable-ffprobe --disable-network --enable-static --disable-shared
--enable-filter=yadif,scale --enable-small --enable-pic --enable-swresample
--enable-decoder=h264 --enable-decoder=vp8 --enable-decoder=vp9 --enable-decoder=opus
--enable-libdav1d --enable-decoder=libdav1d
--enable-vulkan --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-d3d11va --enable-d3d12va --enable-dxva2
--enable-hwaccel={h264,vp9}_{d3d11va,d3d11va2,d3d12va,dxva2,nvdec,vulkan} --enable-hwaccel=vp8_nvdec
--cc=gcc --cxx=g++
MSYS2's dav1d is compiled with -fstack-protector-strong and _FORTIFY_SOURCE, so CMakeLists.txt
also links mingw-w64's static libssp.a.
License
FFmpeg is built without --enable-gpl or --enable-nonfree (configure: "License: LGPL version 2.1
or later"), see LICENSES/COPYING.LGPLv2.1. dav1d is BSD-2-Clause, see LICENSES/dav1d-COPYING and
LICENSES/dav1d-PATENTS. Sources are at the links above.
Eglantine Build 06/11/2026
Automatic daily build of nx2 at 0ca2032.
Changes since the previous daily build
- feat(translation): changed eden to eglantine (
0ca2032bff) - retarget unverified prs to nx2-experimental (
6051d36e80) - core: release the guest RAM when a Switch 2 game stops (
8ef3563080) - Fixed discord link (
cb60749eb9) - nx2: keep other threads out of the Vulkan scheduler while the split's back submits (
df92fc6c95) - Revert "Revert "buffer_cache: size native storage buffers from the mapping only in DL…"" (
8820bb79aa) - fix: broken migration button strategy selection (
320f081816) - added legacy eden to migration prompt (
c7b1ab446a) - renamed eden folder to eglantine (
6dd4781249)
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.
Eglantine v0.1.0-rc1 - DONT USE
Release candidate of 0.1.0. Please test it and report problems before the final release.
PLEASE DONT USE THIS RELEASE, USE BUILD 212 INSTEAD, THIS BUILD IS BROKEN AND CAN CAUSE DEGRADED PERFORMANCES
- Initial release candidate
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.
Eglantine Build 05/11/2026
Automatic daily build of nx2 at e736dfd.
Changes since the previous daily build
- Revert "buffer_cache: size native storage buffers from the mapping only in DL…" (
4bc1ede493) - kernel: Fix OOT startup by implementing WaitIfEqual64 (
b6706b0c29) - pls coderabit, pls (
2814b15174) - buffer_cache: size native storage buffers from the mapping only in DLSS passes (
3c131fb692) - pls final fix (
578d88b67c) - final fixes (
97db036789) - fixes (
5016e217b8) - Update .github/workflows/release.yml (
91b74512ee) - docs: removed unnecessary docs (
21cfc42c97) - feat: implemented coderabbit suggestions (
d31066ee04) - added some todos (
97d3d9dec9) - ci: whole new ci, needs a lot of review, this is draft (
689d08400b) - buffer_cache: keep native storage bindings in one device range (
979d652d90) - yuzu, video_core: always use the game's own DLSS where it can run (
3c45b94cae) - buffer_cache: size native compute storage buffers from the mapping (
2e12e0def5) - shader_recompiler: don't require PT in UISETP bits 68-71 (
adacbaae7b) - game_list: surface the NUP display version in the tooltip (
35cde43095) - refactor: remove unused variable is_intel_anv from Device constructor (
d6efc8ef08) - test: enhance StubEnvironment with additional methods for shader testing (
4b1a1823ea) - nup_container: treat a contentless ExeFS as absent (
9279b24e4c) - ci: remove fork-only local build workflow (
d2f6956a1a) - shader: correct H0_NH1 mixed-sign half source (
662545c5b0) - shader: fix H0_NH1 mixed-sign native half source (
77952c8d8c) - core: detect NUP platform from the update ExeFS (
24c9b2b0ba) - kepler_compute: emulate tensor programs only for Donkey Kong Bananza (
fef7d2fc6c) - kepler_compute: emulate all of Donkey Kong Bananza's tensor programs (
721b189bb7) - kepler_compute: emulate tensor programs that no upscale stands in for (
3944c47805) - nx2: count the presents that return before their frame is done (
204ae115e4) - nx2: wait for each of Donkey Kong Bananza's frames (
6a22450d82) - set: correct the Polish language code (
551fa99a99)
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.