Repository navigation
fix(agc): promote a held import window to its whole allocation - #5870
Conversation
A 64 MiB import window held by the active recorder blocked the containing import of the same registered allocation, so an address-based build copied the whole range instead. Demon's Souls then stopped after two frames: "an address-based build copies 358 MiB of 1 registered ranges, past 64 MiB". Allow the containing import when the recorder is active; the retired window stays alive through the hold (KeepThroughHold). Cover promotion, a sync inside the hold and release after the hold's last batch.
|
I ran this PR's test on Linux. Setup: this PR's diff applied to main at 8cd937e (the PR's base is 464 commits behind it), default CMake build (CMAKE_BUILD_TYPE empty, unoptimized), clean environment.
So the new test catches the old behaviour here. I did not check Windows, macOS or a real GPU. AI-assisted: yes |
|
Same stop reproduced here, and this PR clears it. Demon's Souls PPSA01342 (
I only ran this on a cold cache, so I have no timing comparison. AI-assisted: yes |
|
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.
|
|
Checked on Linux (merged onto current main): build and the libSceAgcDriver ctest scope green except |
|
Resident Evil 4 (PPSA07411) hits the same abort. The machine is the one from my Demon's Souls comment above. The stack is
This is not a clean A/B. Two earlier runs of nearly the same stack without this PR, both with a fully warm cache, ran to the harness's timed dump at 1,485 s and 2,086 s without hitting this abort. Of these runs, only the one that aborted had a cold cache, so whether RE4 reaches the abort may depend on load timing, and one run with the PR does not show that it fixes RE4. I have not yet run the PR with a cold cache. AI-assisted: yes |
What
Fixes a boot abort in Demon's Souls (PPSA01341) on
main, about 30 s in, after 2 frames:KeepThroughHold), so pointers the build already took stay valid.Tested
Windows 11 (26200), WinLibs GCC 15.2.0, Release, RTX 4070.
main63fb0cd92: the abort above.agc_host_import_retire: the newWindowPromotionOutlivesTheHoldcase fails without the fix ("a held import window could not be promoted to its whole registered range") and passes with it.^(agc_|windows_backtrace_): 534 passed, 0 failed, 3 skipped (two udmabuf tests are Linux only; the RTX 4070 has no stencil export).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)