Repository navigation
fix(shader): support long Windows cache file paths - #7462
AlexanderCalli wants to merge 1 commit into
Conversation
|
Thanks. Windows CI fails |
|
Thanks for picking up #7452. I independently validated
I pushed the test-only reproduction and the two-call-site correction on top of your exact work, preserving attribution. Focused comparison: four files, including the regression/registration; no replacement of your shared helper. You can take the correction/regression here, or it can follow your PR. Validation of focused head Ordinary title validation is now complete: integration AI-assisted: yes, Codex. |
|
Confirmed the cross-drive diagnosis in #7462 (comment): with a C: temporary directory and a Z: working-directory alias, unchanged Focused fixture correction This is separate from the mapped-cache follow-up above and can be taken directly into this PR. WinLibs GCC15.2.0 r7, optimized static Windows executable. AI-assisted: yes. |
|
Amoenus's report checks out: on 3df970a |
|
Besides the four sites above, these still take the plain path on 3df970a:
A caution for the directory listings (:1435, :1601 with its |
|
Thanks @LuisBiceps, that matches what I see on 3df970a. Adding to the earlier ask:
A test for item 2 would be cheap: housekeeping with a |
|
@AlexanderCalli @oneandonlydean Confirmed the
The focused commit is available to take into this PR alongside the already-requested follow-ups. This establishes redundant reloads, not a measured game speedup. Cppcheck and clang-tidy completed; clang-tidy has no selected diagnostics, while Cppcheck reports45 diagnostics outside the added ranges in the existing recorder fixture. No clean-analysis claim. The running Sonic composition does not yet include this reader correction. AI-assisted: yes. |
|
Windows data:
Full CTest ( AI-assisted: yes (Claude Code) |
What
Fix Windows shader and pipeline cache file I/O under long host paths. The shared atomic writer could fail for a 235-character destination once its temporary suffix crossed MAX_PATH; longer ordinary paths also failed on reads. Passing an already-extended path through the previous
std::filesystem::absolutecall was mishandled by the supported MinGW toolchain.Resolve ordinary Windows paths with GetFullPathNameW, then use the extended namespace consistently for directory creation, the temporary stream, atomic replacement and reads. Preserve already-extended/device paths and map UNC paths to the extended UNC form. Keep the existing FILE_RENAME_INFO replacement and delete-sharing flags.
Contract: Microsoft long-path documentation and FILE_RENAME_INFO. This does not depend on a host executable's longPathAware manifest. No shader semantics or cache format changes.
Fixes #7452.
Tested
Windows x86-64, supported WinLibs GCC 15.2.0 r7, Release relinker-only build.
shader_cache_file_read_tests; its existing allocation-failure/read cases and new Windows filesystem cases pass. Three consecutive cold-process CTest runs pass in 0.50 seconds total; a final run also passes.cannot write cache path, after passing the original five read cases..., missing-file reads, replacement while an old reader retains the original bytes, and absence of leftover temporary files.tools/check_conventions.py --base origin/mainandgit diff --checkpass.tools/pr_overlap.py --branch fix/windows-cache-long-paths --repo boykopovar/AnyPS5reports no overlap with open pull requests.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)