Skip to content

feat(libSceAgcDriver): implement diagnostic fallbacks - #9086

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
xdCloudy:feat/agcdriver-evidenced-impls
Oct 22, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
xdCloudy:feat/agcdriver-evidenced-impls

Conversation

@xdCloudy

@xdCloudy xdCloudy commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

What

Implement two diagnostic exports using behavior observed in the retail PS5 libSceAgcDriver.sprx:

  • sceAgcDriverGetCoredumpAddress returns the shared coredump-area pointer, which is null when no area is allocated. AnyPS5 currently disables coredump mode and allocates no such area, so the export returns null.
  • sceAgcDriverSetTargetRingForDiag returns 0x8A6D0001 (DRIVER_FEATURE_UNAVAILABLE), matching the retail export's observed response.

A focused test covers both responses. The technical-debt entry records that coredump-area support and the retail diagnostic log are not implemented. No scanner, progress, UI, history, or percentage behavior changes are included.

Evidence: disassembly of the retail PS5 libSceAgcDriver.sprx; the coredump-mode and allocation state in AnyPS5.

Tested

  • Built the focused agc_driver_unsupported_diagnostics_tests target and ran ctest -R agc_driver_unsupported_diagnostics successfully.
  • python tools/check_conventions.py --base upstream/main passed.
  • The latest overlap-bot report lists fix(libs): values measured on a PS5 (firmware 13.40) from inside retail games #7965 as a real debt-file line conflict in docs/dev/debt/libSceAgcDriver.md (main lines 11–12). A pairwise git merge-tree check confirms the conflict. The bot reports no same-export overlap. I manually checked the shared CMake warnings; they do not register or change agc_driver_unsupported_diagnostics_tests.
  • git diff --check passed.
  • Full project build and upstream CI have not been run. The full local build remains limited by the SDL2 submodule/XRandR dependency.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none (fix(libs): values measured on a PS5 (firmware 13.40) from inside retail games #7965 has merged; its measurement notes are now in current main)
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Progress report (a6fc8a4 → 36a7a09)

📈 System libraries: 43.26% (+0.01%, +2 implemented functions)

✅ 2 implemented
Library Name
libSceAgcDriver sceAgcDriverGetCoredumpAddress
libSceAgcDriver sceAgcDriverSetTargetRingForDiag
⚪ 2 behaviourally empty (constant return or throw)
Library Name
libSceAgcDriver sceAgcDriverGetCoredumpAddress
libSceAgcDriver sceAgcDriverSetTargetRingForDiag

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

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.

Pull request Shared files not compared
PR 1368 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 1395 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 2434 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 4448 docs/dev/debt/libSceAgcDriver.md
PR 4449 docs/dev/debt/libSceAgcDriver.md
PR 5021 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5058 docs/dev/debt/libSceAgcDriver.md
PR 5371 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5431 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5925 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6044 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6169 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6186 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6187 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6188 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6192 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6194 docs/dev/debt/libSceAgcDriver.md
PR 6209 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6223 docs/dev/debt/libSceAgcDriver.md
PR 6273 docs/dev/debt/libSceAgcDriver.md
PR 6280 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6292 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6300 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6412 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6481 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6501 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6548 docs/dev/debt/libSceAgcDriver.md
PR 6549 docs/dev/debt/libSceAgcDriver.md
PR 6612 docs/dev/debt/libSceAgcDriver.md
PR 6615 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6639 docs/dev/debt/libSceAgcDriver.md
PR 6642 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6741 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6788 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6801 docs/dev/debt/libSceAgcDriver.md
PR 6804 docs/dev/debt/libSceAgcDriver.md
PR 6808 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6867 docs/dev/debt/libSceAgcDriver.md
PR 6868 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6959 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 6977 docs/dev/debt/libSceAgcDriver.md
PR 7201 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7256 docs/dev/debt/libSceAgcDriver.md
PR 7275 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7457 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7604 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 7642 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 7705 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7803 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8246 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8281 docs/dev/debt/libSceAgcDriver.md
PR 8365 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8395 docs/dev/debt/libSceAgcDriver.md
PR 8424 docs/dev/debt/libSceAgcDriver.md
PR 8484 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8527 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8542 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8552 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8592 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8672 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 8999 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 9020 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 9077 docs/dev/debt/libSceAgcDriver.md
PR 9186 docs/dev/debt/libSceAgcDriver.md
PR 9335 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 9387 docs/dev/debt/libSceAgcDriver.md
PR 9431 docs/dev/debt/libSceAgcDriver.md
PR 9432 docs/dev/debt/libSceAgcDriver.md
PR 9450 docs/dev/debt/libSceAgcDriver.md
PR 9592 docs/dev/debt/libSceAgcDriver.md
PR 9672 docs/dev/debt/libSceAgcDriver.md
PR 9673 docs/dev/debt/libSceAgcDriver.md
PR 9674 docs/dev/debt/libSceAgcDriver.md
PR 9675 docs/dev/debt/libSceAgcDriver.md
PR 9676 docs/dev/debt/libSceAgcDriver.md
PR 9700 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 9721 docs/dev/debt/libSceAgcDriver.md
PR 9748 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 9891 docs/dev/debt/libSceAgcDriver.md
PR 9892 core/libs/prx/libSceAgcDriver/CMakeLists.txt
docs/dev/debt/libSceAgcDriver.md
PR 9893 docs/dev/debt/libSceAgcDriver.md
PR 9895 docs/dev/debt/libSceAgcDriver.md

@xdCloudy

Copy link
Copy Markdown
Contributor Author

Manual review of the overlap report:

  • fix(libs): values measured on a PS5 (firmware 13.40) from inside retail games #7965's shared debt-file hunk documents sceAgcDriverSubmitAcb and other submission/packet behavior. This PR documents the separate sceAgcDriverGetCoredumpAddress and sceAgcDriverSetTargetRingForDiag responses and removes those two names from the unresolved-stub list. The overlap is adjacent edits in the same debt list; the exports and implementation regions are distinct.
  • The CMake warnings are shared-file warnings for other test/build sections. I reviewed their patches; none registers agc_driver_unsupported_diagnostics_tests or duplicates this test name.
  • The other debt-file warnings come from branches with base conflicts. I reviewed their reported hunks; they concern separate AGC behavior entries, not these two diagnostic exports.

The bot could not complete those comparisons because of the base conflicts, so this is a manual review. GitHub currently reports this PR mergeable. No unrelated PRs were changed.

@fma-rc fma-rc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked against the PS5 12.70 libSceAgcDriver module: sceAgcDriverGetCoredumpAddress returns the driver's coredump area pointer, which stays null until that area is allocated, and sceAgcDriverSetTargetRingForDiag logs and returns 0x8A6D0001. Both match what this PR does. Built on Linux together with main and your other open PRs; agc_driver_unsupported_diagnostics passes.

@xdCloudy

Copy link
Copy Markdown
Contributor Author

Relevant: the conflict with #7965 in docs/dev/debt/libSceAgcDriver.md (lines 11–12) is confirmed. I’ve updated this PR’s Depends on entry and asked #7965’s author to confirm the landing order; the report shows no same-export overlap. The other entries are skipped comparisons, so I’ll continue reviewing those shared files manually.

@xdCloudy

Copy link
Copy Markdown
Contributor Author

Follow-up to my note above: the remaining skipped comparisons have now been reviewed. The CMake warnings do not add a competing registration for �gc_driver_unsupported_diagnostics_tests; the related edits are in other build/test sections. The debt-file warnings describe other AGC routines, while this PR's entries concern only sceAgcDriverGetCoredumpAddress and sceAgcDriverSetTargetRingForDiag. My earlier review summary is at #9086 (comment). #7965 remains the one confirmed adjacent debt-list conflict, and I have requested landing-order confirmation there.

@xdCloudy
xdCloudy force-pushed the feat/agcdriver-evidenced-impls branch 2 times, most recently from 540123b to fa58d52 Compare October 22, 2026 06:17
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 22, 2026
@xdCloudy
xdCloudy force-pushed the feat/agcdriver-evidenced-impls branch 4 times, most recently from b0ed47b to abce3c5 Compare October 22, 2026 18:39
@xdCloudy
xdCloudy force-pushed the feat/agcdriver-evidenced-impls branch from abce3c5 to 36a7a09 Compare October 22, 2026 18:42
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 22, 2026
@oneandonlydean oneandonlydean self-assigned this Oct 22, 2026
@xdCloudy

Copy link
Copy Markdown
Contributor Author

I refreshed the live overlap/NID audit against main at d6e7ab4. It found no duplicate export or library/NID collisions for this PR. I manually checked the newer relevant shared-file changes: #9748 adds separate packed-color test targets; #9592 documents ResourceCache eviction; and #9721 updates the one-sample MSAA behavior note. They do not duplicate this PR’s unsupported-diagnostics test or its diagnostic fallback entries. The remaining older CMake/debt-file comparisons are still inconclusive because those PR branches conflict with main; I’m not presenting those as clean comparisons.

@oneandonlydean
oneandonlydean merged commit 775b507 into boykopovar:main Oct 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants