<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/video_core/renderer_vulkan/vk_swapchain.cpp, 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-10-30T00:49:48+00:00</updated>
<entry>
<title>vulkan: never flush the scheduler from the async present thread</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-29T15:15:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=00c059cd39f4fd9d1244345d6727a171acec4f86'/>
<id>urn:sha1:00c059cd39f4fd9d1244345d6727a171acec4f86</id>
<content type='text'>
Swapchain::AcquireNextImage waits for the main scheduler's tick of the
image's last use; when that tick was not submitted yet, Scheduler::Wait
flushed, recording into the current chunk on the present thread while
the GPU thread recorded into it too (corrupt command buffers, crashes
in vkCmdEndRenderPass and in CommandChunk::Record). With async
presentation the present thread now waits up to 20 ms for the
recording thread to submit the tick, and goes on without the wait
otherwise (the copy to the swapchain has its own fences).
</content>
</entry>
<entry>
<title>[vulkan, android] Initial implementation of LSFG-VK (#4263)</title>
<updated>2026-08-16T22:30:19+00:00</updated>
<author>
<name>CamilleLaVey</name>
<email>camillelavey99@gmail.com</email>
</author>
<published>2026-08-16T22:30:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2000fdfb7b27e5e2546098b44268fc74887b22a5'/>
<id>urn:sha1:2000fdfb7b27e5e2546098b44268fc74887b22a5</id>
<content type='text'>
Pretty much self explanatory, own implementation based on LSFG-VK available with some additional reverse engineer work for the actual use of shaders inside Lossless.dll, we don't store/ bundle any tools that bypass security and self ownership: to use this feature is required to own your own copy of Lossless Scaling and I encourage to support developers behind this work.

Special thanks:

1.- THS - Original developer behind Lossless Scaling
2.- PancakeTAS - Developer behind LSFG-VK
3.- The Big Smolio The Sleeper (@gidoly)

Co-authored-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4263
</content>
</entry>
<entry>
<title>[*] basic in-house cpp linting (#4039)</title>
<updated>2026-06-04T03:49:07+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-06-04T03:49:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=89199f4d279bff0c664fb9142b1945d0c6d93ee8'/>
<id>urn:sha1:89199f4d279bff0c664fb9142b1945d0c6d93ee8</id>
<content type='text'>
- add `#pragma once` to remainder files
- "correcter" defines (ANDROID), see https://groups.google.com/g/android-ndk/c/cf9_f1SLXls
- extra miscelly fixups

Signed-off-by: lizzie &lt;lizzie@eden-emu.dev&gt;

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4039
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
Reviewed-by: crueter &lt;crueter@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[vk,swapchain] vsync: Changed Immediate fallback from (FIFO) to (Mailbox, then FIFO) (#3746)</title>
<updated>2026-04-11T00:49:55+00:00</updated>
<author>
<name>xbzk</name>
<email>xbzk@eden-emu.dev</email>
</author>
<published>2026-04-11T00:49:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=abb616c3570f88133e8717d80c48fc5cffe7c8e4'/>
<id>urn:sha1:abb616c3570f88133e8717d80c48fc5cffe7c8e4</id>
<content type='text'>
Just discovered that stock adreno drivers on a730 had no Immediate VSync mode available, and it was falling back to FIFO, which causes a lot of response delay in Unity games.

But if someone chose Immediate, it prefers low latency above buffering, so Mailbox is his friend, and FIFO is his nemesis.

So i just changed Immediate to fall back to Mailbox first, and only if Mailbox is not available either it falls back to FIFO:

Immediate -&gt; Mailbox -&gt; FIFO;
Mailbox -&gt; FIFO;
FIFO Relaxed -&gt; FIFO.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3746
Reviewed-by: crueter &lt;crueter@eden-emu.dev&gt;
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
Co-authored-by: xbzk &lt;xbzk@eden-emu.dev&gt;
Co-committed-by: xbzk &lt;xbzk@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[android] Rework of frame pacing mode + Surface mode detection per API level. (#3735)</title>
<updated>2026-03-24T00:25:44+00:00</updated>
<author>
<name>PavelBARABANOV</name>
<email>pavelbarabanov94@gmail.com</email>
</author>
<published>2026-03-24T00:25:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=8f770618d27a053b8ce70e7fd5e699885e23325e'/>
<id>urn:sha1:8f770618d27a053b8ce70e7fd5e699885e23325e</id>
<content type='text'>
This Pr is a reply to certain issues found on Android due to the new artificial waits inside Vulkan (Frame Pacing Mode); which caused GPU/CPU desync's even if TimelineSemaphore (Adreno's drivers) does a constant check to retain synchronization with each frame-data, removes the yield() for all platforms (remains the same on PC) and aligns a new way to handle the output of video by using native Android tools, such as AGP, which makes a bridge inside Vulkan to Android's Surface (screen) and reduces not only the latency, but also improves the smoothness of each frame processed; currently we quantize the amount of frame processed by hinting the surface on Android space and adjust the heuristics of the old handling (yuzu) and we link it to screen refresh rate; this way we ensure that even if the game moves below the screen's HZ, we can always pick up the cadence by clamping the duration of each frame and using a chrono function to work as internal fernce if performance goes below the game speed requirment or game's frame rate requirements.

Co-authored-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3735
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Reviewed-by: Lizzie &lt;lizzie@eden-emu.dev&gt;
Co-authored-by: PavelBARABANOV &lt;pavelbarabanov94@gmail.com&gt;
Co-committed-by: PavelBARABANOV &lt;pavelbarabanov94@gmail.com&gt;
</content>
</entry>
<entry>
<title>[common/logging] Simplify logging logic and fix issues when logging before system is created (#3688)</title>
<updated>2026-03-12T17:29:15+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-03-12T17:29:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=395613b01f918b559f0a3b1718c78f81987c49d4'/>
<id>urn:sha1:395613b01f918b559f0a3b1718c78f81987c49d4</id>
<content type='text'>
- our logging code was bigger than spdlog itself, why???? just keep it simple
- fix issues when logging before logging system is even started
- removes the "initialized logging twice" issue
- removes uneeded indirection in file logging
- uses direct formatting instead of jumping hoopla-around the fmt::format() ressult
- code duplication and dead code removal as usual

I did explore dup2() but I think it's not worth the hassle
I did try `fwopen()` but it's better if things are just kept as-is.

there is a lot of noise because I removed a bunch of redundant files on logging and just put everything in one file

now normally this wouldn't be a good idea, however consider: the complexity of logging; it's less than 500 lines... does it really need a whole subsystem?!?!?! ITS JUST LOGGING

Signed-off-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3688
Reviewed-by: crueter &lt;crueter@eden-emu.dev&gt;
Reviewed-by: DraVee &lt;chimera@dravee.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Co-authored-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Co-committed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[vk] unify VkSurfaceKHR with Android and the rest of platforms; remove technically incorrect nullptr() ctor for handles (#2971)</title>
<updated>2026-03-05T06:32:18+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-03-05T06:32:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=9a07bd0570ceba262b4a918f4927e5674b6f7269'/>
<id>urn:sha1:9a07bd0570ceba262b4a918f4927e5674b6f7269</id>
<content type='text'>
Removes some odd #ifdef-ing that just can use a shrimple opaque type.

Also removes nullptr() ctor'ing for vulkan handles and such; it's not incorrect per se like how `void *p = 0;` isn't incorrect, just that, y'know, any static analyzer will go "woah". Also there isn't any guarantee that handles `sizeof(Handle) == sizeof(void*)` so may as well :)

Signed-off-by: lizzie lizzie@eden-emu.dev

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2971
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
Co-authored-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Co-committed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[vk] Disable vsync when Turbo Mode is enabled (#3633)</title>
<updated>2026-02-26T00:04:23+00:00</updated>
<author>
<name>crueter</name>
<email>crueter@eden-emu.dev</email>
</author>
<published>2026-02-26T00:04:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=f957c36238103bf3dc88bc6105991fcea3b8ad54'/>
<id>urn:sha1:f957c36238103bf3dc88bc6105991fcea3b8ad54</id>
<content type='text'>
Note to self: you have a 60Hz display, use it

Signed-off-by: crueter &lt;crueter@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3633
Reviewed-by: DraVee &lt;dravee@eden-emu.dev&gt;
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[vulkan] Improve frame pacing (#3535)</title>
<updated>2026-02-15T03:12:01+00:00</updated>
<author>
<name>MaranBr</name>
<email>maranbr@outlook.com</email>
</author>
<published>2026-02-15T03:12:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=8e373eb714aa01117ec885680477501cdb572112'/>
<id>urn:sha1:8e373eb714aa01117ec885680477501cdb572112</id>
<content type='text'>
This improves frame pacing control, fixes accumulated drift, and adds the ability to change it while the game is running.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3535
Co-authored-by: MaranBr &lt;maranbr@outlook.com&gt;
Co-committed-by: MaranBr &lt;maranbr@outlook.com&gt;
</content>
</entry>
<entry>
<title>[vulkan] Add support for target FPS frame pacing (#3494)</title>
<updated>2026-02-11T23:23:19+00:00</updated>
<author>
<name>MaranBr</name>
<email>maranbr@outlook.com</email>
</author>
<published>2026-02-11T23:23:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=5f676a6a55aa4d748e545b0fc6956e9a5dbd2f7f'/>
<id>urn:sha1:5f676a6a55aa4d748e545b0fc6956e9a5dbd2f7f</id>
<content type='text'>
This allows users to choose how the emulator manages frame pacing to reduce stuttering and provide a smoother and more consistent frame rate.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3494
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Co-authored-by: MaranBr &lt;maranbr@outlook.com&gt;
Co-committed-by: MaranBr &lt;maranbr@outlook.com&gt;
</content>
</entry>
</feed>
