Repository navigation
test(agc): cover the graphics and compute COPY_DATA packets and the compute EVENT_WRITE - #11682
Conversation
…ompute EVENT_WRITE Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…unchanged Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, the expected packets check out against the PM4 layout. Three things:
The out-of-range field and width checks are good to keep. |
…asured refusals Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@oneandonlydean All three are done in d60b128:
The out-of-range field and width checks stay. Each one also checks, as on #11674, that the sentinel-filled buffer and AI-assisted: yes (Claude Code) |
|
Windows 11 VM (GT 1030, NVIDIA 582.66, WinLibs GCC 15.2.0, Release, Ninja): this head AI-assisted: yes (Claude Code) |
|
Windows result for head Host: Windows 11 26300, Intel i7-12700K, WinLibs GCC 15.2.0 (x86_64-ucrt-posix-seh, r6), Release, The tree also carried the open PRs #11724, #11644, #11639, #11636, #11635, #11630, #11353, #11347, #11221, #10925, #11706, #11693, #11686, all merged cleanly, so the run is a joint one; the tests of this PR are AI-assisted: yes (Claude Code), the runs and the numbers above are from this machine. |
|
@maskym thanks for the Windows run. I've added it to Tested. AI-assisted: yes (Claude Code) |
✅ NVIDIA GPU test: passedPR head
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)Validation IDs already present on main (3 IDs in 108 tests)Skipped (8)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. |
What
tests/Commands.cppgets atestCopyDataAndComputeEventscase aftertestDebugRaiseException.sceAgcDcbCopyDatawrites a six-wordCOPY_DATA: a control word, then the source immediate or address and the destination address, two words each. In the control word the source and destination selects come from bits 1-4 of their arguments; the source cache policy is at bit 13, the item size at 16, write confirm at 20, the destination cache policy at 25, and the source argument's bit 0 is the engine at 30. With a 64-bit item size the immediate keeps its high word.sceAgcAcbCopyDatatakes the selects from bits 0-3 with engine 0. Cache policies, item sizes or write confirms out of range are refused with the whole buffer and cursor left unchanged, and both size getters report 24 bytes. A 64-bit immediate with a 32-bit item size is refused by the library too, but the console's behaviour there is not measured, so the test leaves it unpinned.sceAgcAcbEventWritewrites a two-wordEVENT_WRITE(0x407 for event 7, which adds 0x400, and 0x16 as is); it refuses an event above 0x3f, and its size getter reports 8 bytes. A non-null address is refused only because that form is not implemented, so the test leaves it unpinned.It is called by all eight titles run here for
sceAgcAcbEventWrite; PPSA18194, PPSA21564, PPSA30839, PPSA31162, PPSA34502 and PPSA36591 forsceAgcDcbCopyDataandsceAgcAcbCopyData(call sites found through the import's PLT stub in each title's relinkedeboot.bin), and until now no test called it.Changed:
core/libs/prx/libSceAgc/tests/Commands.cpp. Test only, no change to the library.Tested
Linux (Ubuntu 26.04, GCC 15.2), Release:
cmake --build build --target agc_command_testsandctest -R '^agc_commands$' --repeat until-fail:3pass on this branch, which is currentmainplus the test.tools/check_conventions.py --base upstream/mainpasses.Windows 11 (maskym's run, i7-12700K, WinLibs GCC 15.2, Release, Ninja):
agc_commandspasses at headd60b128671merged intomainf759e165d9, in a joint tree with other open PRs.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)🤖 Generated with Claude Code