mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-29 12:15:39 +00:00
APS5_FRAME_CAPTURE=<dir> makes the AGC driver record a few frames of a title: the shader registrations and ABI resolutions, video output and EOP flip reservations it made since it started, a snapshot of every readable guest allocation (the title image included) taken at a frame boundary once the driver is idle, and for the next frames each submission, flip and suspend point with the thread that made it, its serial progress and the guest pages the write tracker saw the CPU write before it. At the end it stores the presented display buffers as reference images. APS5_FRAME_CAPTURE_AT_FLIP, _TRIGGER and _FRAMES pick the frames. agc_frame_replay maps the captured memory at its addresses and replays the calls of each captured thread on a thread of its own, in captured order, through the current build of the driver with no title running. It paces GPU work to the in-flight depth the title had, releases GPU waits that the title's CPU threads released without calling the driver (AgcDriverAwaitedWaits), and reports frame times, released waits and how closely the replayed display buffers match the references. Tests: agc_frame_capture (file format) and agc_driver_frame_replay (two captured frames of CPU writes and DMA copies replayed and compared). Docs: BUILD.md, ENVIRONMENT.md and the libSceAgcDriver debt file. Co-Authored-By: Claude Opus 5.5 <[email protected]>