Repository navigation
fix(agc): snapshot host shader prologues before frame replay - #12871
oneandonlydean merged 4 commits into
Conversation
|
Private title follow-up on integration Strict cold replay with This qualifies a two-frame rendering reproducer on that complete private integration, not a standalone-title or save-state result for this public PR. The underwater scene remains extremely dark; no lighting or native FPS improvement is established. Cold replay timings include compilation/pacing and are not game FPS. Captures, images and game binaries remain private. Numeric comparison, source pin and replay command/harness only, SHA-256 |
|
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.
|
✅ NVIDIA GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (5, not counted against this PR)Validated but not compared (3, not in the main baseline's validation pass)Validation IDs already present on main (4 IDs in 433 tests)Skipped (40)ReproduceAutomated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
|
Additional title-level capture/replay diagnostic for this unchanged The earlier native capture had no host-memory ranges, two unreadable prologue shader headers, and strict replay exited 2 on a missing host code read before image comparison. The new capture has six host-range chunks and all 2,652 recorded complete
The pinned original #12567 composition is still required for this diagnostic pipeline; this report does not claim this PR alone solves every native capture blocker. Windows/macOS were not run. Numeric/source-pin and synthetic paired-test evidence, SHA256 |
|
Title-level control for this unchanged head Both arms: same seeded save and caches,
An earlier capture on the stack without this PR, #12568 or #12696 failed the same way ( 🤖 Generated with Claude Code |
# Conflicts: # core/libs/prx/libSceAgcDriver/CMakeLists.txt
✅ NVIDIA GPU test: passedPR head
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (3, not counted against this PR)Validated but not compared (3, not in the main baseline's validation pass)Validation IDs already present on main (5 IDs in 484 tests)Skipped (45)ReproduceAutomated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
|
Fresh title-level capture/replay case on Linux RX6650XT / RADV Mesa26.2.6 / kernel7.2.11, using current main PPSA19244, The Oregon Trail02.000.001, still presents black output on both arms. Both native runs close normally (0,184.0/183.7s), original inputs/save seed/SDK/generated ELF hashes stay intact, kernel settings restore, no native PIDs remain. One frame captured at100s; both captures contain21 draw and9 dispatch packets and two all-zero3840x2160 display references. No capture warnings.
Actual instance/device Khronos1.4.363 layers loaded in both replays; no replay VUIDs. Both native logs have the same existing vertex/index usage VUIDs (20 messages each, covered by #6913); no additional native VUID identifiers on the change. Replay used This supplies a short reproducer for the black frame, not a graphics or game-performance fix. Native control used a cold cache; change used an independent warm-cache clone, so timing is not a loading/FPS comparison. Sanitized machine-readable evidence, SHA256 AI-assisted: yes. |
What
Shader registration and ABI calls made before a frame-capture trigger are saved in the replay prologue. Their host-resident headers and code can lie outside registered guest allocations, so the initial snapshot omits them and strict replay cannot read the shaders.
Collect the host pages referenced by those calls while waiting and snapshot the still-readable pages at the capture boundary, before writing the prologue. Reuse the existing shader-page traversal, preserve read-only permissions, skip already-covered pages, and retain in-frame shader deltas.
Three regressions cover separate host code, host-resident header/code, and read-only header/code registered before the trigger. Existing shader controls retain their entry point. Read-only merge previews compose cleanly with the fetched heads of #11435, #11436, #12567 and #12568; their additional controls are retained. This is independent of the unwatched-memory fallback offered on #12568 and does not supply that fallback. Existing stale/freed historical shader-registration limitations remain documented under Frame replay debt.
Tested
Linux Release, GCC 16.2.1, AMD Radeon RX 6650 XT (RADV NAVI23), Mesa 26.2.4, kernel 7.2.9-arch1-1. Exact head
ca858917b0cb25d494e692d2835b8d21f71f9009, based directly on main5454cd2e455994d992aca39335ce60507eeda1eb.863bda70fe062decbefbd8a1b89efc6dc5ce9321, unchanged recorder implementationThe main and change focused gates used the same machine/GPU,
ANYPS5_REQUIRE_VULKAN=1,ANYPS5_NO_SHADER_CACHE=1,VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, and Mesa shader cache disabled. Both confirm the actual RX 6650 XT and validation-layer insertion; zero skips, missing-layer messages or VUIDs. The library stayed byte-identical through each gate. These gates include CPU serialization checks as well as hardware tests; this is not a claim that every group creates a GPU device.Conventions and whitespace pass. A read-only merge preview against upstream
157b02c4f1803e9d2cd757677b9a805961203fc4is clean. No new Windows execution, title replay fidelity, lighting or FPS improvement is claimed. The private title capture is separate and does not establish replay fidelity.Source proof, negative/positive controls, builds, device-access traces and paired focused logs/JUnit, SHA-256
4a207cef8510163045dd48338a6742fc49184141d5aa803e762622fed638ce17(download verified). No game memory, assets or binaries.GitHub Windows CI passed for head
ca858917b0cmerged into main. Its configure and host-only linking workflow steps succeeded; the full library build, CTest execution and test-skip checks were skipped. This is limited CI coverage, not Windows runtime or physical-GPU qualification.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)