Repository navigation
perf(agc): keep unchanged guest layers of a depth plane copy - #2490
Merged
oneandonlydean merged 1 commit intoOct 13, 2026
Merged
oneandonlydean merged 1 commit into
oneandonlydean merged 1 commit into
Conversation
10 tasks done
This was referenced Oct 9, 2026
Merged
Merged
9 tasks done
Contributor
|
Additional platform validation on standalone PR head Windows: passed — Windows 11, supported WinLibs GCC 15.2.0 UCRT/POSIX/SEH r7; CMake 4.3.1 / Ninja. Release / Tests: Reproduce after building the test targets: Vulkan: native AMD RX 6900 XT, driver 32.0.21045.5002. Integration limitation: a local merge against main |
9 tasks done
9 tasks done
oneandonlydean
added a commit
to oneandonlydean/AnyPS5
that referenced
this pull request
Oct 11, 2026
…kopovar#290 and two new topics The tree is astro-main/stack-425b c21155b: upstream main a11c8f7, boykopovar#425's new head 6d59983 in place of the hand-resolved merge of its older head, boykopovar#454, boykopovar#2490 and boykopovar#2491, draw-key admission, the depth test plane rule and the import window compare as before, then boykopovar#290 (host import windows, budget from physical memory), the highest index of an in-place index buffer kept for indirect draws, and the depth surface that takes the storage image written over it while it was retired.
10 tasks done
oneandonlydean
force-pushed
the
up639/depth-plane-guest-layers-on-425
branch
from
October 11, 2026 18:32
5f0e730 to
4a4cebc
Compare
This was referenced Oct 11, 2026
oneandonlydean
force-pushed
the
up639/depth-plane-guest-layers-on-425
branch
from
October 11, 2026 23:32
4a4cebc to
35af446
Compare
snowzhangy
pushed a commit
to snowzhangy/AnyPS5
that referenced
this pull request
Oct 12, 2026
…opies only for changed layers and slices) into integ/head Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged
9 tasks done
9 tasks done
oneandonlydean
force-pushed
the
up639/depth-plane-guest-layers-on-425
branch
from
October 12, 2026 19:29
35af446 to
8d7ef97
Compare
Sampling a depth surface as a 2D array, a cube or its integer bits copies its planes into a per-use image. Each use read every slice no depth surface holds from guest memory and detiled it again, even when nothing had written it since: in one level of a heavier title that was about 165,000 layer reads, about 650 GiB, in a five-minute run. A slice read from guest memory now stays in the copy's staging buffer with the write generation it was read at. The next use reads and detiles it again only when its address, size or tiling changed, the write tracker reports a write since, or recorded GPU work writes the range; a slice a depth surface held in between is read again. Without write watching every use reads, as before.
9 tasks done
oneandonlydean
force-pushed
the
up639/depth-plane-guest-layers-on-425
branch
from
October 13, 2026 00:25
8d7ef97 to
af71604
Compare
10 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
What
Follow-up to #425, as asked in its review.
DepthPlaneCopy(sampling a depth surface as a 2D array, a cube or its integer bits) keeps each slice it read from guest memory in its staging buffer, together with the write generation it was read at. The next use reads and detiles that slice again only when:UnchangedSince);Recorder::SnapshotWriteOverlaps); orWithout write watching, every use reads, as before.
#425 is merged, so this head is rebased onto
main1c5e628 and holds only its own commit. It applied without conflicts and the change is the same.Why
Every use read and detiled every slice no depth surface holds, even when nothing had written it.
The rule is the one a cached sampled snapshot already uses for a hit (
cachedTexture: collect, thenUnchangedSince), plus the pending-write check, so it is no looser than the existing texture path.Tested
Linux (CachyOS, GCC 16.2.1, Release with CI's configure flags and
ANYPS5_ENABLE_SPIRV_TOOLS=ON, full build andlibs), RTX 4090, NVIDIA 610.57.04.ctest -R "agc|shader"(--parallel 4,ANYPS5_REQUIRE_VULKAN=1): 462/462 on this head (af716047), 461/461 onmain1c5e628.tools/check_conventions.py --base origin/mainandtools/check_test_registration.pypass.The seven
agc_driver_depth*tests underVK_LAYER_KHRONOS_validation: pass, no validation message.New
agc_driver_depth_plane_guest_layers. A 2-layer D32 array: layer 0 is a depth surface, layer 1 is in watched guest memory. Checks:MarkWritten) each make the next use read it again.It passes with the change (5 of 5 runs). On
main1c5e628 with only the test added it fails:sampling the depth planes again read the guest layer no depth surface holds although nothing wrote it.A 3D title we test with stops on
mainbefore its title scene without feat(libSceAgcDriver): storage image access to depth surfaces #4500, so it was measured onmain1c5e628 + feat(libSceAgcDriver): storage image access to depth surfaces #4500, with this and perf(agc): skip the depth plane copy when no slice changed #2491 together: frames per second in the title scene and in the menu after it.main1c5e628 + feat(libSceAgcDriver): storage image access to depth surfaces #4500Without the two changes the title scene runs at 0.6 to 0.9 fps from its first frame on (74 frames in 90 s); with them the run goes on into the first level. One run each; caches warm for the second row. In the second row feat(libSceAgcDriver): storage image access to depth surfaces #4500's store-back also bumps the write serial (see perf(agc): skip the depth plane copy when no slice changed #2491).
Not run on this head: the 2D title we test with (it ran on #2491's head, which contains this commit). Not tested on Windows or on AMD.
Checklist
main(1c5e628, the merge of feat(agc): depth planes sampled as 2D arrays, cubes and integer views #425); no other open PR changesDepthPlaneCopy(feat(agc): retain and refresh sampled depth array storage #1368 samples depth arrays with its own storage, separately)NotImplemented_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)