feat(menu): a V-Sync row (Auto, On, Off) #2041
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2041
Loading…
Reference in a new issue
No description provided.
Delete branch "menu/vsync-row"
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?
The present mode (V-Sync) could only be chosen with two undocumented environment switches. Players who see tearing, or who want the least delay, had no menu option for it.
This adds a V-Sync row on the Graphics tab, under Frame pacing:
It applies at once: the swapchain is made again, as it is for an HDR change. It is saved as
vsync=and leaves the Quality preset alone.RX_VK_FIFO=1(On) andRX_VK_IMMEDIATE=1(Off) still choose for a run. They apply where the mode is chosen (menu_vsync), so they never reachhookshot_options.ini. The swapchain's log line now names the row's choice, for examplevk: swapchain 1916x1051, 4 images, fifo (V-Sync On). The readme's menu table and notes and the development guide list the row and the two switches.Tested
Linux, RTX 3090, current
main:hookshot_vk.so, with the shaders prepared.python -I -B tests/run_all.py: 339 passed, 13 skipped. The three failures (nx2/test_nup_read_name,tests/test_builder_log_read_only,tests/test_wayland_libdecor_hint) also fail onmainon this machine.tests/test_vsync_row.pychecks the row, its key, and the environment's precedence. It also runscreate_swapchain's own choice of mode over the lists drivers give (all three modes, no mailbox, FIFO only), as on Windows and as on Linux.mailbox (V-Sync Auto).fifo (V-Sync On)and thenimmediate (V-Sync Off), with no errors, and the options file then heldvsync=2.RX_VK_FIFO=1over a savedvsync=2gavefifo (V-Sync On), and the file keptvsync=2.RX_VK_IMMEDIATE=1over a savedvsync=0gaveimmediate (V-Sync Off), and the file keptvsync=0.Not tested
The modes a driver offers differ, which is why the choice falls back as described above.
github-sync referenced this pull request2026-11-12 06:22:54 +00:00