<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/common, 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-03T17:33:16+00:00</updated>
<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>common: measure the TSC only on CPUs without CPUID leaf 0x15 (#373)</title>
<updated>2026-11-03T06:28:21+00:00</updated>
<author>
<name>Duck</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-11-03T06:28:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=ad7282cd736ae75b126088d7d6986efebd048c15'/>
<id>urn:sha1:ad7282cd736ae75b126088d7d6986efebd048c15</id>
<content type='text'>
The fallback that measures the TSC rate when the CPU reports none was
meant for AMD, which has no leaf 0x15 at all. It also caught Intel CPUs
that have the leaf but report a crystal frequency of 0 (Coffee Lake,
e.g. the i5-9400F) and moved them from the OS clock to the measured
RDTSC clock. With the same fallback in another Eden-based build, an
i5-9400F crashed about 3.5 s after launch; limiting the fallback to
CPUs without the leaf fixed it for that tester.

Those Intel CPUs now keep the OS clock, as before the fallback. AMD
CPUs still get the measured RDTSC clock (a Ryzen 7 9800X3D reports
max leaf 0xd, so nothing changes there).

Assisted-by: Claude Opus 5.5 (debugging, porting and drafting)

Signed-off-by: Duck912 &lt;350528965+Duck912@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Merge pull request #313 from cira0100/ldn/room-handshake</title>
<updated>2026-11-03T00:48:22+00:00</updated>
<author>
<name>Mako</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-11-03T00:48:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=28051fc764f6d2a6f9c64f8166c02dd2d13d77e7'/>
<id>urn:sha1:28051fc764f6d2a6f9c64f8166c02dd2d13d77e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>network: close each bsd fd once and drop unwanted or malformed room packets</title>
<updated>2026-11-03T00:39:54+00:00</updated>
<author>
<name>cirakg</name>
<email>cirakg@cirakg.xyz</email>
</author>
<published>2026-11-03T00:39:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=0b927d171c6d918a675c25f57b2bc0121b7f889d'/>
<id>urn:sha1:0b927d171c6d918a675c25f57b2bc0121b7f889d</id>
<content type='text'>
Two threads closing the same fd both copied the descriptor and both called
Close(), so a host socket could be closed twice, and the second closesocket
could hit an unrelated socket that had reused the host fd. CloseImpl now
frees the slot under file_descriptors_mutex first and only that thread closes
the socket; the other gets EBADF.

OnProxyPacketReceived decompressed every room packet when any fd had a
socket, including native sockets and proxy sockets on other ports. Sockets
now report through AcceptsProxyPacket whether they want a packet, and only
those are collected, so an unwanted packet is not decompressed.

DecompressDataZSTD passed the frame's declared size straight to the vector
constructor, so a malformed or unsized frame from a room member threw on the
room thread. The new TryDecompressDataZSTD rejects invalid, unsized and
oversized frames, and bsd drops such packets with a warning.
DecompressDataZSTD now returns an empty vector for them instead of throwing.

Assisted-by: Claude Opus 5.5 (investigation and implementation)
</content>
</entry>
<entry>
<title>fix: update BUILD_ID definition and improve path handling in GameListWorker</title>
<updated>2026-11-03T00:23:50+00:00</updated>
<author>
<name>kraibse</name>
<email>33869366+kraibse@users.noreply.github.com</email>
</author>
<published>2026-11-02T18:35:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=bd12e7c4ef7ddfcc56d88ee71612a671f582e47b'/>
<id>urn:sha1:bd12e7c4ef7ddfcc56d88ee71612a671f582e47b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>settings: default to ScaleForce and FXAA</title>
<updated>2026-11-02T21:14:39+00:00</updated>
<author>
<name>snowstormxd</name>
<email>214507868+snowstormxd@users.noreply.github.com</email>
</author>
<published>2026-11-02T21:14:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=405adb698e5ed76b1252fec41d3cb8780d1e6a49'/>
<id>urn:sha1:405adb698e5ed76b1252fec41d3cb8780d1e6a49</id>
<content type='text'>
Include both filters in the accepted MKW preset and verify defaults and saved-preference overrides.

Assisted by Codex.
</content>
</entry>
<entry>
<title>settings: restore the recommended MKW settings prompt</title>
<updated>2026-11-02T20:51:10+00:00</updated>
<author>
<name>snowstormxd</name>
<email>214507868+snowstormxd@users.noreply.github.com</email>
</author>
<published>2026-11-02T20:51:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=b75ea7bcba60b70349274747cca04549908797bd'/>
<id>urn:sha1:b75ea7bcba60b70349274747cca04549908797bd</id>
<content type='text'>
Apply accepted settings visibly and save them, then reapply after per-game configuration. Include handheld mode.

Assisted by Codex.
</content>
</entry>
<entry>
<title>settings: default to handheld mode on all platforms</title>
<updated>2026-11-02T19:07:54+00:00</updated>
<author>
<name>snowstormxd</name>
<email>214507868+snowstormxd@users.noreply.github.com</email>
</author>
<published>2026-11-02T19:07:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=9e5f9bbdb9fe6a717f7c26ffbd13e213a74435de'/>
<id>urn:sha1:9e5f9bbdb9fe6a717f7c26ffbd13e213a74435de</id>
<content type='text'>
Assisted by Codex.
</content>
</entry>
<entry>
<title>core: skip empty bitmap ranges during cache and scheduler traversal</title>
<updated>2026-11-02T19:07:54+00:00</updated>
<author>
<name>snowstormxd</name>
<email>214507868+snowstormxd@users.noreply.github.com</email>
</author>
<published>2026-11-02T19:07:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=00285925faebcd9fce6f12b4ebfaccdab491203c'/>
<id>urn:sha1:00285925faebcd9fce6f12b4ebfaccdab491203c</id>
<content type='text'>
Adapted bitmap scans from sylvieistaken/selevet-eglantine performance build 4. Keep the wide-priority fallback and fix the first live slot after empty bitmap words. Include randomized lifecycle and ordering checks.

Assisted by Codex.
</content>
</entry>
<entry>
<title>Merge nx2 into nx2-experimental</title>
<updated>2026-11-02T13:43:01+00:00</updated>
<author>
<name>kraibse</name>
<email>33869366+kraibse@users.noreply.github.com</email>
</author>
<published>2026-11-02T12:50:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=c0cb3325e22756edb65c87d33ef298349ade0ad3'/>
<id>urn:sha1:c0cb3325e22756edb65c87d33ef298349ade0ad3</id>
<content type='text'>
Resolved by area:
- audio feature_support.h: nx2's native revision handling.
- fiber.cpp: ours, which also drops the unused rewind stack.
- host_memory.cpp: ours granule bitmap and HintCold, plus nx2's
  fallocate hole punching per whole dirty granule on Linux.
- texture_cache.h: nx2's old-age eviction pass, then our Collect().
- kepler_compute.cpp: shared upscale slots, then Fortune's Weave's,
  then the Kirby Air Riders scan.
- nx2_gsv.h: ours, plus nx2's GetBufferMaxResolution and graphics
  device ids (1-based).
- nvhost_ctrl_gpu.cpp: engine support flag bits 40-44.
- lower_to_maxwell.h: ours as the base, with nx2's seven lowering
  commits applied one at a time. Second texture descriptor buffers
  are read bindless in TEX, TLD.SCR (level zero) and SUST; FSEL
  keeps its operand modifiers; TXD takes any channel mask.

lower_to_maxwell.h lowers 837 Fortune's Weave and 1183 Mario Kart
World shader dumps with the same rejects as nx2 and ours (12 and 0).

Assisted-by: Claude Sonnet 5.5 (conflict analysis and drafting)
</content>
</entry>
</feed>
