After tuning all video and accuracy related settings, including shaders, I went on to test input lag. 2D systems are easy to configure (on a PC) by playing with the runahead values. Hard Sync at 0 (VSync ON) didn’t make a difference, at least testing with the Pause + Frame Advance procedure. 3D Systems however are harder to deal with, bugs, performance issues, etc Below I present a summary of my findings. PC specs: i5-4670K @ 4.1Ghz, GTX 1070 OC, 16Gb RAM, Win7 x64.
10 frames -> Saturn 3D (GL, kronos, tested with Sonic R)
5 frames -> N64 (Vulkan, parallel_n64)
5 frames -> PSX (Vulkan, mednafen_psx_hw)
4 frames -> Saturn 2D (GL, mednafen_saturn)
3 frames -> Dreamcast (GL, reicast)(p+k procedure is buggy)
OpenGL
Hard Sync Didn’t yield any changes even with high “Hard GPU Sync Frames”
Frame Delay Can save 1 frame of input lag at most before turning performance to crawl.
Vulkan
Max Swapchain Images Didn’t yield any changes even with higher values
Both backends
Runahead Mostly good, but specially with such high demanding 3D cores and input lag it proves to not be sufficient. Yielded issues on some cores explained below.
Saturn 3D Here I’m rendering at an increased resolution, then scaling down to native resolution with shaders. I tested with Sonic R so other titles might have a slight different input lag. Saturn is by far the slowest of all the main 3D systems I tested. Enabling runahead with a value of 1 turns performance down, even enabling the second instance. Hard Sync didn’t make a change. An issue with Kronos is that it crashes when getting in or out RetroArch menu, so it’s a difficult core to test things out.
N64 Basically the same as the Kronos core involving runahead. Since we use Vulkan Hard Sync is not an option. Because I’m using angrylion multithreaded a good candidate to alleviate the bottleneck would be to use the parallel RDP. I think in this case we could run runahead with a value of 1 or 2.
PSX I’m using super sampling here leveraging the increased resolution options of the core. When using runahead performance is fine but the IR is lost.
Saturn 2D Hard Sync had no effect. Runahead even at 1 and second instance enabled made the game unplayable (sub 60fps)
Dreamcast Testing with a 3D game at an increased resolution. Like Kronos getting into the menu and out of it can freeze Retroarch, although not always. Hard Sync didn’t improve things neither runahead at 1.
I thought on using Vulkan for the cores running on GL backend but I’m not sure how good compatibility is, if anyone can give me an opinion on that.