Vulkan: Change double buffered VSync to match display without blocking #1012
Loading…
Reference in a new issue
No description provided.
Delete branch "goeiecool9999/vsyncoverhaul"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This replaces the Double buffered VSync mode with a mode that tries to match the physical display.
It tracks how fast frames are being presented and takes over signalling vsync if the presentation interval is within 1% of the emulated vsync interval for more than 60 frames. It returns to the fixed emulated timer if it is more than 1% from the desired interval for 60 frames.
Tripple buffered VSync and VSync off use the old method of driving present with SwapBuffers, to allow VRR to reduce stuttering and external tools to see exact frametimes.
How is the match display mode implemented:
Why:
Questions:
It seems that on linux when using the match physical display mode the GPU thread idles a lot. I can't figure out exactly why. vkAcquireNextImage does not block but when I pause the process in a debugger the GPU thread is always in that function waiting for a condition variable. This isn't the case using any of the modes where vkAcquireNextImage is only called at the emulated vsync interval.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.