Repository navigation
Anger Foot (PPSA29043) #7379
Replies: 1 comment
|
Follow-up on the frame rate after the intro, from a second run with a temporary counter I added (not part of any PR) at the point where a draw would get a draw recipe. In the slow part, about 650,000 draws went through that point. Why they did not get a recipe: 613,272 (94%) have a read-only guest buffer binding whose address differs from the cached template's (the template hit has to move the binding, So the title issues each draw with its own constant buffer address (a per-draw ring allocation, as far as I can tell), and those draws take the 14 us template-hit path instead of the 6 us recipe-hit path in the I am not opening a PR for this because I have no change I can show to help. AI-assisted: yes. Written with AI assistance and reviewed by me. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Existing thread
Title
Anger Foot (PPSA29043)
Content version tested
01.000.000
AnyPS5 commit
main at f1af6c5, no pull requests applied
System tested
Windows 11, WinLibs GCC 15.2.0, RTX 5090 (NVIDIA 617.42), AMD Ryzen 9 9950X3D
Furthest point
In game
What is shown
The game converts and runs. It shows the intro at about 60 fps, then the main menu, a cutscene and the first playable part, where the player walks around. No fatal error, exception or NotImplemented line appears in the log. Frame rate, as seen on screen: about 6.8 fps in the menu, 4.4 fps in the first cutscene, 3 to 9 fps while walking in game. The log's own count agrees: 594 presents in a 10 s window at the start (about 59 fps), then 274 in one window, 24, 61, 67 and 69 in the next four, and 84 to 89 in the steady part that follows. I did not check audio or controller behaviour. The run lasted about 3 minutes.
Current blocker
The frame rate after the intro. The measured profile (APS5_PROFILE_DRAW=1) shows where the time goes in the steady slow part: about 88 presents per 10 s, GPU busy 29 ms per frame and idle gaps of 81 ms per frame, so the GPU is waiting for the emulator side. In those windows the title sends about 440,000 DRAW_INDEX_2 packets per 10 s, roughly 5,000 draws per frame, and the draw path costs 14 us per draw on average (13 us for the 440,000 template hits; 1,400 builds at 337 us each, so it is not shader compilation). The 10 s total of about 6.3 s splits across vertex 1.0 s, prepare 1.0 s, lookup 1.7 s and record 1.6 s, with pipeline 0.3 s. For comparison the intro window had 2,136 DRAW_INDEX_2 packets per 10 s at 594 presents. Most draws continue an existing render pass (432,603 of 444,658) and only 612 of them hit a draw recipe. I do not know whether that last point is the cause; I have not changed anything or run a controlled comparison.
How it was run
The dump has a decrypted folder holding ELF copies of eboot.bin and the modules (libc.prx, libSceNpCppWebApi.prx, Media/Modules/Il2CppUserAssemblies.prx and PS5Util.prx, Media/Plugins/PSN.prx), so no unwrap step was needed. Relinked with --windows --windows-diagnostics --trace-imports --registry --sce-module-path decrypted --module-dir Media/Modules --module-dir Media/Plugins decrypted/eboot.bin app.exe. app0 holds the dump's sce_sys as a junction, a copy of eboot.bin, and the Media folders as junctions and hard links. The dump has PlayGo metadata, so no PlayGo setting was used. ANYPS5_GPU=5090,
VK_LOADER_DRIVERS_DISABLE=*dzn*, APS5_LOG_TIMESTAMPS=1, APS5_PROFILE_DRAW=1. Unity (IL2CPP) title.AI-assisted: yes. Written with AI assistance and reviewed by me.
All reactions