Repository navigation
feat(vk): live switches for an A/B in one session (hookshot_ctl.py ab); RX_VK_OCC_QUERIES the first - #2932
Open
jordanella wants to merge 2 commits into
Open
feat(vk): live switches for an A/B in one session (hookshot_ctl.py ab); RX_VK_OCC_QUERIES the first#2932jordanella wants to merge 2 commits into
jordanella wants to merge 2 commits into
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Comparing a switch's two values meant two launches: a minute apart, another walk to the scene, other warm caches, and differences of a few percent lost in that. This makes a switch changeable while the game runs, so both values are measured in one session, alternating, with the game's own numbers for each half. The dev-loop proposal's in-session A/B (#2636, D4/D5 review); the first switch is #2871's
RX_VK_OCC_QUERIES.Stacked on #2871: review the last commit; this rebases to it alone once #2871 is in.
Change
gpu/vk/vk_live.h(new): live switches. Each starts as its environment variable says (hookshot_env.h's rule). The control bridge asks for another value with the command it already has:hookshot_ctl.py option set RX_VK_OCC_QUERIES 1. The bridge's settings list (menu_setting) ends with the live switches (tablive, keyenv.<NAME>); they are not in the menu and not saved tohookshot_options.ini. No interface change:setting/setting_setcarry them.live_tick, instatus_tick) and first logs the time since the last ask:vk: live: 590 frames in 9.5 s with RX_VK_OCC_QUERIES=0: 62.1 fps (1% low 51.0), GPU 8.12 ms a frame, 1830 draws a frameThe first half second after a change is left out (frames already on their way; GPU times are read when their slots come round). An ask for the value a switch already has changes nothing and still ends the period, so a run can start clean.
RX_VK_OCC_QUERIESis asked once a command buffer, before its dry pass (replay_handle'socc_room), so the dry pass and its workers agree:hookshot_ctl.py ab NAME [--every 10] [--rounds 4]:In use
Windows 11, RTX 3080, Castle Town Market from a save, one headless launch,
ab RX_VK_OCC_QUERIES --every 10 --rounds 4standing, then again with the camera turning:absays so.Testing
tests/test_live_switches.py(new):vk_live.h,live_tick,live_fillandmenu_setting_set'senv.branch are cut out and run against stub counters: the start value from the variable; an ask taken at the next frame, not before; the settle time left out; the frame counts, fps, 1% low, GPU ms and draws of each half, read back withhookshot_ctl's own pattern; a mark; a half too short.abagainst a fake bridge: the order of the asks, the halves kept, the medians and spread, a half with a map change marked, a menu row refused.live_tickwrites what the readers take.tests/test_vk_occlusion_queries.py: the switch is invk_live.hnow, andocc_queries_onasks it before the pool is made.run_all.py, Windows: 176 pass.test_linux_driver_fault_guardandtest_readback_wait_boundedfail the same way onmainhere, andtest_input_backgroundfails the same way at fix(vk): give samples-passed reports the GPU's counts (RX_VK_OCC_QUERIES) #2871's head (its older base; it passes on today'smain).See #2636, #2871.
🤖 Generated with Claude Code