Repository navigation
fix(agc): support long Windows pipeline journal paths - #7933
oneandonlydean merged 8 commits into
Conversation
|
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.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Thanks, the journal part looks right: resolving the directory once covers the lock, the size checks, the appends and the tail recovery. Two things before it can go in.
|
|
Rebase handoff — rebased onto current Verified on Linux (CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release, To pick it up: Head is |
689c5cf to
80024c4
Compare
What
An ordinary long Windows cache path can be written by #7462 but still fail at mapped entry/pack reads and journal locking/appends.
Resolve the journal directory once through
NativeCachePath_nid_no_patch, then derive both journal and lock paths from it. Directory creation, existence/size checks, indexing, appends and complete-record/torn-tail recovery share that native path. Add the host-file-I/O helper to the shader-cache reviewed names.As requested in review, also normalize the two mapped opens in
MapFileandCachePack. Take Amoenus's regression and correction, preserving original authorship. The regression verifies exact published bytes, actual mapped SPIR-V, persistence/load round trips, and a long-path cache-pack load.Rebased on main
1edbe4b5e03b4f655021da3a74b87d2dc511476fand retained both main's barycentric reviewed names andNativeCachePath_nid_no_patch. The branch includes #7462's exact shared-helper change and the previously offered cross-drive fixture correction, also preserving authorship. The mapped-test command dispatch was moved below the codec modes so it merges independently of #7945. Prerequisite commits can be dropped after #7462 absorbs them and merges.The journal fixture covers short/ordinary-long/already-extended paths, Unicode, indexing, replay, deduplication, truncation and an externally appended complete record followed by torn bytes. It stops its writer and removes known journal files before cleaning the short temporary root. The external-record case exposes concurrent compute callbacks, so their shared result capture is protected by a mutex while retaining two replay workers. Remaining
PipelineCache::readHeader/failed-read existence-check limits are recorded in the library debt file; the entry is placed to avoid a documentation-only insertion conflict with #7307. Prefixed directory-traversal safety is handled separately by #7945. This PR remains a partial follow-up for #7452.Tested
Updated validation on 2026-10-20: final tested source
80024c48fd0d8b19bd7be8d66d16056c61cee5fc, baseline main1edbe4b5e03b4f655021da3a74b87d2dc511476f, and mapped-regression test-only control56778c97d25262e7f7973baeba3f44fa0e65d5db. Published PR head80024c48fd0d8b19bd7be8d66d16056c61cee5fchas identical code and test sources to the tested head.a long-path cache entry was not persisted and mapped, after confirming that the written bytes matchEncodeEntry. With the correction, mapped entry and pack round trips pass 3/3.agc_shader_disk_cache,shader_cache_file_read,agc_pipeline_journal, and real Vulkanagc_driver_pipeline_journal(12 passes per OS per revision).shader_cache_file_read3/3 with C: TEMP/TMP and the build/working directory on D:. Final totals: Windows 27 passes, Linux 18 passes; no skips/timeouts, each test below 30 s.VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation,ANYPS5_NO_SHADER_CACHE=1,ANYPS5_REQUIRE_VULKAN=1. Loader logs confirm the layer is inserted on both devices and both revisions; no missing-layer warning, VUIDs or validation errors/warnings. Portable validation binaries: Khronos main build, sourceaea761f4d54b86682be4099c428dba27b6609940, manifest API 1.4.365.3d54c5b2b2a90485e48d5890021c9380f65ab325is clean, as are direct merges with fix(shader): avoid unsafe Windows cache directory traversal #7945 and feat(agc): add opt-in bounded submission progress #7307. fix(shader): support long Windows cache file paths #7462 is the declared prerequisite; offered mapped patches were folded in at the maintainer's request.Selected tests only. No full CTest suite, title execution, SMB end-to-end test or performance measurement. New Windows roots stay below MAX_PATH; known filenames cross it. Directory-enumeration safety is outside this PR.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)