<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/video_core/renderer_opengl, 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-02T23:26:23+00:00</updated>
<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>shader: evaluate handle programs for image and texture buffer descriptors</title>
<updated>2026-11-02T19:53:47+00:00</updated>
<author>
<name>Sssnowyyy</name>
<email>78863999+Sssnowyyy@users.noreply.github.com</email>
</author>
<published>2026-11-02T16:28:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=bda49e810b5955bff8474e7b8f2b09eab51e9be2'/>
<id>urn:sha1:bda49e810b5955bff8474e7b8f2b09eab51e9be2</id>
<content type='text'>
561f87abec only gave TextureDescriptor a handle_program. Image load/store/atomics
and texture/image buffers whose handle comes from a storage buffer still got the
placeholder constant buffer address (index 0, offset 0), so the pipelines read
cbuf 0 word 0 as the handle (and asserted if cbuf 0 was unbound). Add
handle_program to TextureBufferDescriptor, ImageBufferDescriptor and
ImageDescriptor, compare it when merging, and let all four pipelines evaluate it
for every descriptor kind instead of only TextureDescriptor.

ImageQueryDimensions on such a handle was always declared Color2D, so array,
cube and 3D views got a 2D declaration. The instruction carries no type, so take
it from another instruction using the same handle program, falling back to
Color2D when there is none.

Follow-up to 561f87abec. The OpenGL pipeline edits are the same change as the
Vulkan ones but were not compiled here.

Assisted-by: Claude Sonnet 5.5 (implementation and commit message)
</content>
</entry>
<entry>
<title>video_core: bump the shader cache versions for the FSEL lowering fix</title>
<updated>2026-11-02T14:25:15+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-11-02T14:25:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=7f42af81ad657e339f5cba78487cb7422e49e9ae'/>
<id>urn:sha1:7f42af81ad657e339f5cba78487cb7422e49e9ae</id>
<content type='text'>
The disk shader cache keeps the lowered native code. "shader: apply
FSEL's floating operand modifiers" (ef3ae4ae23) changed that code
without a version bump, so caches built before it keep programs that
drop FSEL's negate until the user deletes them by hand.

In Splatoon Raiders those stale programs leave the tutorial island and
the dock with no shadows (the depth linearization ends with
FSEL R0, -R0, 1.0, P and comes out negated), no aiming reticle and no
steam (particle quads pick their corners with FSEL +0.5 / -0.5 and
collapse to a point).
</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>
<entry>
<title>nx2: capture and lower native shader programs once</title>
<updated>2026-11-01T23:11:25+00:00</updated>
<author>
<name>kraibse</name>
<email>33869366+kraibse@users.noreply.github.com</email>
</author>
<published>2026-11-01T02:20:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=10e70639058b9adc4f7fc77e11982bb834fce86b'/>
<id>urn:sha1:10e70639058b9adc4f7fc77e11982bb834fce86b</id>
<content type='text'>
Native programs were captured and lowered when their ShaderInfo was
made and again for every environment built for their pipelines. The
ShaderInfo now keeps the lowered code and the environments adopt it.
Capture also reads a 4 KiB page at a time instead of flushing caches per
instruction, and cached native programs fold bank 1 reads like live ones.

Ported from Wael3rd/Eglantine-MKW (0ae093058e, 65a6aa877a, df076133c4).

Assisted-by: Claude Sonnet 5.5 (porting the fixes)
(cherry picked from commit 3af11ac401ad3061c183281d8c98c16c1d6da456)
</content>
</entry>
<entry>
<title>nx2:vi2: crop presents to their frame size and honour RGB10A2 images</title>
<updated>2026-11-01T19:59:07+00:00</updated>
<author>
<name>duck912</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-10-31T05:45:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=cce19772ce434e462223663b88294bfd8a0f203e'/>
<id>urn:sha1:cce19772ce434e462223663b88294bfd8a0f203e</id>
<content type='text'>
Present word 7 holds the size of the frame drawn into the image's
top-left corner, and image preference word 6 its format (1 RGBA8,
4 RGB10A2). Fire Emblem: Fortune's Weave draws 1280x720 RGB10A2 frames
into 3840x2160 images; showing the whole image as RGBA8 gave a corner
of wrongly decoded pixels.

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>shader: compute texture handles read from storage buffers for each draw</title>
<updated>2026-10-31T20:03:16+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-31T20:03:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=561f87abec2f76b3ca40c59277752ed4d3b6bf16'/>
<id>urn:sha1:561f87abec2f76b3ca40c59277752ed4d3b6bf16</id>
<content type='text'>
Switch 2 shaders can read a texture handle from a storage buffer (Switch
Sports' scenery: a per-object entry of a table whose pointer is in the driver
constant buffer). The bindless handle search looked through the load into its
address and returned the table pointer's constant buffer word as the handle,
which named an arbitrary descriptor; the game repoints that one at transient
render targets every few seconds, so the island and menu lighting flipped
between correct, dark and red.

The search no longer looks into memory loads. A handle it cannot trace is now
built into a small program over constant buffer words, storage buffer words and
integer operations (Shader::Info::handle_programs), which the pipelines evaluate
when they bind the texture. Handles a single evaluation cannot give (one that
changes in a loop) keep the previous search.
</content>
</entry>
<entry>
<title>1st pass of review: code cleanup &amp; windows test</title>
<updated>2026-10-31T17:04:23+00:00</updated>
<author>
<name>néo Luigi</name>
<email>85024393+neoluigi4123@users.noreply.github.com</email>
</author>
<published>2026-10-31T14:33:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=82963e6750cef756d2ad4d1115dc9dca420d4313'/>
<id>urn:sha1:82963e6750cef756d2ad4d1115dc9dca420d4313</id>
<content type='text'>
Assisted-by: Claude Opus 5.5 (review, cleanup and log analysis)
</content>
</entry>
<entry>
<title>Added FSR 3 Upscaling and Frame Generation</title>
<updated>2026-10-30T18:37:31+00:00</updated>
<author>
<name>Djihads80</name>
<email>mahboubijoujou111@gmail.com</email>
</author>
<published>2026-10-30T18:34:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=8a72dc011e0a30a6bddd1f2476a94927787e6e15'/>
<id>urn:sha1:8a72dc011e0a30a6bddd1f2476a94927787e6e15</id>
<content type='text'>
</content>
</entry>
<entry>
<title>build: fixes for clang-cl</title>
<updated>2026-10-30T00:49:48+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-29T19:56:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=d327881c44ada520d6ea939af59bdd420906b99f'/>
<id>urn:sha1:d327881c44ada520d6ea939af59bdd420906b99f</id>
<content type='text'>
- (std::min)/(std::max) where windows.h's macros are visible
- LAMBDA_FORCEINLINE: always_inline under clang (clang-cl defines
  _MSC_VER but rejects [[msvc::forceinline]] on lambdas)
- ImageBase::FindView: find_if, as MSVC's STL takes its vectorized find
  for ImageViewInfo under clang-cl and fails a size assertion
- parentheses for -Wlogical-op-parentheses in the Ampere lowering
</content>
</entry>
</feed>
