<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/video_core/renderer_vulkan, branch nx2</title>
<subtitle>Mirror of github.com/cira0100/Eglantine-public nx2, a fork of Djihads80/Eglantine.</subtitle>
<id>https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2</id>
<link rel='self' href='https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2'/>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/'/>
<updated>2026-11-03T18:06:59+00:00</updated>
<entry>
<title>video_core: clear the DLSS output when Streamline writes nothing to it</title>
<updated>2026-11-03T18:06:59+00:00</updated>
<author>
<name>Duck912</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-11-03T17:56:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=b1179a44fbd1cf514c2bed56bf235fbe456c8c7b'/>
<id>urn:sha1:b1179a44fbd1cf514c2bed56bf235fbe456c8c7b</id>
<content type='text'>
The upscaler records its work on the worker thread and reports success once it is queued. When
Streamline then rejects the DLSS options, gives no frame token or fails the evaluation, nothing is
written to the output image, but the caller still draws it into the game's image that frame:
undefined contents after a resize, the previous frame otherwise. FSR 3.1 takes over from the next
frame.

Clear the output on those paths, with barriers around the clear, so that frame is black instead.

Found by CodeRabbit review.

Assisted-by: Claude Opus 5.5 (implementation)
Signed-off-by: Duck912 &lt;350528965+Duck912@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>video_core: NVIDIA DLSS through NVIDIA Streamline in place of a game's DLSS</title>
<updated>2026-11-03T17:33:16+00:00</updated>
<author>
<name>Duck912</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-11-03T17:13:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=63e87a22c60394bc4f427ee5f8d6ddbce7b0ac7f'/>
<id>urn:sha1:63e87a22c60394bc4f427ee5f8d6ddbce7b0ac7f</id>
<content type='text'>
Adds a Graphics setting, "Use NVIDIA DLSS in place of a game's DLSS" (nvidia_dlss, off by
default). When it is on, in Windows builds configured with EGLANTINE_STREAMLINE_SDK, the
evaluation Eglantine already replaces with FSR 3.1 goes to NVIDIA DLSS on GeForce RTX cards, with
the same inputs (colour, depth, motion vectors, jitter). When DLSS can't run, FSR 3.1 runs as
before.

Only Streamline's MIT-licensed headers are compiled in; nothing of NVIDIA's is linked or shipped.
At run time Eglantine looks for sl.interposer.dll in the user folder's "streamline" folder (or
EDEN_STREAMLINE_DIR, or "streamline" next to the executable), checks its Streamline signature and
starts Streamline with manual hooking. Streamline's plugins come from that folder or the NVIDIA
app's downloads. DLSS itself is nvngx_dlss.dll in the same folder, else the newest DLSS 310 or
later that the NVIDIA app has downloaded, checked for NVIDIA's Authenticode signature and copied
as streamline/nvidia-app/nvngx_dlss.dll. Like other tools that call DLSS outside a game, it uses
its own fixed project id with the custom engine type.

- Preset K for all modes (EDEN_NX2_DLSS_PRESET overrides it): the default Performance model (M)
  and L draw thin dark horizontal lines in some frames at 2x resolution scale; K doesn't.
- HDR input with auto exposure; the mode follows the render/output ratio.
- Buffer device address stays enabled when DLSS needs it, for DLSS only.
- The upscaler waits for the device instead of submitting when it is destroyed: by then the
  game's channels are released, and a submit read the state tracker's stale flags (a crash when
  stopping a game).

With the setting off, or in builds without the SDK path (the setting is hidden there), nothing
changes.

Testing: Windows 11, RTX 5080, Fire Emblem: Fortune's Weave docked at 1x (720p -&gt; 1440p) and 2x
(1440p -&gt; 2880p), CLI runs and GUI play, stopping and restarting games with DLSS on. Not tested on
other GPUs or games.

Assisted-by: Claude Opus 5.5 (implementation, debugging)
Signed-off-by: Duck912 &lt;350528965+Duck912@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>video_core: read the framebuffer before recording the upscaled-output blit</title>
<updated>2026-11-03T17:33:16+00:00</updated>
<author>
<name>Duck912</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-11-03T17:10:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=1d4ccdbb0cf01add647247a4ab64b5060b1bb8eb'/>
<id>urn:sha1:1d4ccdbb0cf01add647247a4ab64b5060b1bb8eb</id>
<content type='text'>
BlitColor(VkImageView, VkImage, ...), which draws FSR 3.1's output into the game's DLSS output,
captured the Framebuffer pointer and read its render pass, handle and size on the worker thread.
The pointer points into the texture cache's framebuffer slots, which can be reallocated before the
worker records the command, so the render pass could begin with a stale or null render pass and
framebuffer. FSR 3.1 records quickly enough that this rarely shows; with a slower first evaluation
(NVIDIA DLSS creating its feature) it crashed in vkCmdBeginRenderPass at the first evaluation in
every run.

Read the three values on the calling thread and capture those instead. Nothing else changes.

Assisted-by: Claude Opus 5.5 (debugging, implementation)
Signed-off-by: Duck912 &lt;350528965+Duck912@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>nx2: fewer render pass splits on tiled GPUs, log failed GPU waits (Pokopia) (#361)</title>
<updated>2026-11-03T06:29:23+00:00</updated>
<author>
<name>Alex</name>
<email>78863999+Sssnowyyy@users.noreply.github.com</email>
</author>
<published>2026-11-03T06:29:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=f50099038ee4c95901821e137471a8ce87bf52a4'/>
<id>urn:sha1:f50099038ee4c95901821e137471a8ce87bf52a4</id>
<content type='text'>
* buffer_cache: don't end the render pass after mapped buffer uploads

Every upload set any_buffer_uploaded, and the next draw or dispatch then
recorded a transfer-to-shader barrier outside the render pass. On Vulkan
the uploads are mapped: each copy either records its own barriers
(CopyBuffer with barrier set) or goes to the upload command buffer,
which ends with a barrier before the frame's commands run. The extra
barrier only ended the render pass.

On tiled GPUs every such split writes the attachments out and reads
them back. Pokopia's first gameplay scene had ~50 of these splits a
frame. Without them, an M3 MacBook Air (MoltenVK, 1x docked) goes from
~35 to ~29.5 ms of GPU time a frame and from 28.5 to 32 fps.

OpenGL uploads immediately and keeps the barrier.

Assisted-by: Claude Opus 5.5 (profiling, implementation and commit message)

* vulkan: log a failed GPU wait before it ends the process

When the device is lost, vkWaitSemaphores in MasterSemaphore::Wait
returns VK_ERROR_DEVICE_LOST and the exception goes uncaught on the
fence thread or the GPU thread, so the process aborts without a line in
the log: ReportLoss is only reached from submit and present. A Pokopia
crash on macOS left the log ending a second before the abort, with no
hint that the GPU was lost.

Log the wait's result before rethrowing. On macOS, MoltenVK prints the
Metal reason (a GPU hang or page fault) to stderr only.

Assisted-by: Claude Opus 5.5 (diagnosis, implementation and commit message)</content>
</entry>
<entry>
<title>video_core: fix the -Wshadow error in the FSR 3.1 upscaler</title>
<updated>2026-11-03T01:10:48+00:00</updated>
<author>
<name>Jonas</name>
<email>baguettegamerofficial2020@gmail.com</email>
</author>
<published>2026-11-03T01:10:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=537c1f4e173a863d87b6a0e5cd71e167db26f187'/>
<id>urn:sha1:537c1f4e173a863d87b6a0e5cd71e167db26f187</id>
<content type='text'>
Fsr3Upscaler::Pass::Dispatch took a scheduler parameter that shadows
Fsr3Upscaler::scheduler, which fails the Windows MinGW PGO build under
-Werror=shadow.
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/nx2' into fe-fsr31</title>
<updated>2026-11-02T23:56:59+00:00</updated>
<author>
<name>Duck912</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-11-02T23:56:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=9acd36eb9a291e0631346f5b17d69d0e8eb26cc5'/>
<id>urn:sha1:9acd36eb9a291e0631346f5b17d69d0e8eb26cc5</id>
<content type='text'>
# Conflicts:
#	src/video_core/renderer_vulkan/blit_image.cpp
#	src/video_core/renderer_vulkan/blit_image.h
</content>
</entry>
<entry>
<title>Merge pull request #305 from Djihads80/fix/nx2-cache-version-fsel</title>
<updated>2026-11-02T23:26:23+00:00</updated>
<author>
<name>Jonas</name>
<email>104419015+jojo-chaechae@users.noreply.github.com</email>
</author>
<published>2026-11-02T23:26:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=5c8858ebdb0ba91d5260d356214f4f1bf3074018'/>
<id>urn:sha1:5c8858ebdb0ba91d5260d356214f4f1bf3074018</id>
<content type='text'>
video_core: bump the shader cache versions for the FSEL lowering fix</content>
</entry>
<entry>
<title>Merge pull request #334 from snowstormxd/codex/upstream-mkw-test</title>
<updated>2026-11-02T22:36:01+00:00</updated>
<author>
<name>Jonas</name>
<email>104419015+jojo-chaechae@users.noreply.github.com</email>
</author>
<published>2026-11-02T22:36:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=8362c44ff835d7be73d2adad9ce3e2d4467a6aeb'/>
<id>urn:sha1:8362c44ff835d7be73d2adad9ce3e2d4467a6aeb</id>
<content type='text'>
MKW performance improvements</content>
</entry>
<entry>
<title>Merge pull request #337 from Sssnowyyy/nx2-review-fixes</title>
<updated>2026-11-02T22:18:21+00:00</updated>
<author>
<name>Jonas</name>
<email>104419015+jojo-chaechae@users.noreply.github.com</email>
</author>
<published>2026-11-02T22:18:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=155bf34fc297b6b8e4c281ecf7ea5d9ce3140762'/>
<id>urn:sha1:155bf34fc297b6b8e4c281ecf7ea5d9ce3140762</id>
<content type='text'>
nx2: fix pokopia regressions, textures that handle shader computes, and more</content>
</entry>
<entry>
<title>Merge pull request #284 from Djihads80/fix/nx2-upscale-fallback-srgb</title>
<updated>2026-11-02T22:09:05+00:00</updated>
<author>
<name>Jonas</name>
<email>104419015+jojo-chaechae@users.noreply.github.com</email>
</author>
<published>2026-11-02T22:09:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=1c9afc7248243576dc1e57824eb19ffcc00aa93d'/>
<id>urn:sha1:1c9afc7248243576dc1e57824eb19ffcc00aa93d</id>
<content type='text'>
nx2: decode sRGB in the upscale fallback when the program does (washed-out Splatoon Raiders)</content>
</entry>
</feed>
