Repository navigation
perf(pipeline): reuse key storage and hash keys in blocks - #1331
Conversation
|
Isolated measurements for the request in #1324. Baseline: upstream Linux, Ryzen 5 5600, Fedora 44, GCC 16 Release (
The ranges of process medians do not overlap in any case. The key-identity, changed-state, unidentified-shader and cache-lifetime checks pass. The proposed version also passes Vulkan core and synchronization validation without errors. This measures warmed CPU cache lookups. It does not measure frame time, pipeline compilation or game FPS. Command: AI-assisted measurement and reply. |
|
Conflicts with main in |
Keep serialized lookup scratch under the existing pipeline cache mutex and use the standard byte-string hash for indexing. Preserve exact key comparison and private handling of unidentified shaders. Add a real-device cache lifetime fixture and warmed lookup benchmark. Written with AI assistance.
|
Rebased on current Added:
Checked: build and ctest for |
c6ba437 to
e5c6099
Compare
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
The Windows runner has no Vulkan driver, so agc_pipeline_cache (boykopovar#1331) fails at device creation: 'AGC graphics: vkCreateInstance: Vulkan result -9'. Skip with 77 like the other agc execution tests, unless ANYPS5_REQUIRE_VULKAN is set, as on the Linux job.
#1331 registered the agc_pipeline_cache ctest, which runs agc_driver_recorder_tests, without removing that executable from KNOWN_UNRUN, so check_test_registration fails on main: 'agc_driver_recorder_tests is run by ctest now; remove it from KNOWN_UNRUN'. The list is empty now; keep it a set for the set operations below.
perf(pipeline): reuse key storage and hash keys in blocks
boykopovar#1331 registered the agc_pipeline_cache ctest, which runs agc_driver_recorder_tests, without removing that executable from KNOWN_UNRUN, so check_test_registration fails on main: 'agc_driver_recorder_tests is run by ctest now; remove it from KNOWN_UNRUN'. The list is empty now; keep it a set for the set operations below.
The Windows runner has no Vulkan driver, so agc_pipeline_cache (boykopovar#1331) fails at device creation: 'AGC graphics: vkCreateInstance: Vulkan result -9'. Skip with 77 like the other agc execution tests, unless ANYPS5_REQUIRE_VULKAN is set, as on the Linux job.
…n-recorder-tests fix(ci): restore main's ctest after boykopovar#1331 and boykopovar#1496
What
Reuse pipeline-key storage under the existing cache lock. Hash the serialized key in blocks and retain exact key comparison. Cache ownership and eviction rules stay the same.
Related: #1202 also reuses key storage through a separate last-pipeline cache. This smaller change applies to all lookups and also replaces the byte-at-a-time hash. It does not replace that PR's draw scheduling work.
Tested
Fedora 44, Release: graphics tests and RX 6600 pipeline tests with Vulkan validation. Checks key growth and shrinkage, changed state, unidentified shaders, cache clearing, and retained pipeline lifetime.
Earlier paired component tests on our combined branch measured 0.34/0.61/1.37 µs before and 0.16/0.26/0.45 µs after for 0/8/32 attributes. These are warm lookup timings, not game FPS. Windows was not tested.
Checklist
main; related perf(agc): pipelined draws on by default #1202 checked and described above.