Repository navigation
test(agc): cover the jump, parser stall, rendering wait and compute queue reset packets - #11677
Conversation
…ueue reset packets Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…unchanged Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Pushed da9b869. It applies the check MarcZX10 asked for on #11674: the refused-packet buffer is filled with a sentinel first, and after each refusal the test compares all 64 words 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) |
|
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.
|
|
Windows + NVIDIA result for head This PR's own tests: the libSceAgc packet tests Host: Windows 11 26300, Intel i7-12700K, NVIDIA GeForce RTX 2070 SUPER (vendor 0x10de, device 0x1e84; Vulkan loader 1.4.357 from the NVIDIA driver 621.01), Khronos Validation Layers nightly 1.4.366 (b2b44c0d37) through Same focused run on
The tree also carried the open PRs #11948, #12062, #12132, #12070, #11680, #11679, #11678, #11675, #11674, #11605, #11604, #11600, all merged cleanly, so the run is a joint one. Not run on a PS5. AI-assisted: yes (Claude Code), the runs and the numbers above are from this machine. |
|
@maskym thanks for the Windows NVIDIA run with the validation layer. I've added it to Tested. AI-assisted: yes (Claude Code) |
|
Checked the expected words against |
What
tests/Commands.cppgets atestFlowPacketscase aftertestContextState.sceAgcDcbJumpwrites a four-wordINDIRECT_BUFFERwith the target address in two words and a control word carrying 0x0f200000, the cache policy at bit 28, the chain bit at bit 20 and the dword count.sceAgcAcbJumpalways chains. A mode above 1, a cache policy above 3, a count of 0x100000 and a misaligned target are refused before anything is written.sceAgcDcbStallCommandBufferParserwrites a two-wordPFP_SYNC_ME, andsceAgcDcbWaitUntilSafeForRenderingthe four-word rendering wait with the video out handle and buffer index.sceAgcAcbResetQueuewrites a two-word NOP with flags 0x24 carrying the operation, ignoring the value, and refuses a null command buffer. The size getters report 16, 16 and 8 bytes.It is called by all eight titles run here for
sceAgcAcbResetQueue,sceAgcDcbStallCommandBufferParserandsceAgcDcbWaitUntilSafeForRendering; PPSA01494, PPSA18194, PPSA30839, PPSA31162, PPSA34502, PPSA36591 forsceAgcDcbJump; PPSA18194, PPSA30839, PPSA31162, PPSA34502, PPSA36591 forsceAgcAcbJump(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 with an RTX 2070 SUPER (maskym's run, NVIDIA 621.01, Khronos validation layer, WinLibs GCC 15.2, Release): this PR's tests pass at head
da9b869e8fmerged intomainf759e165d9, in a joint tree with other open PRs, and every otheragcandvideo_outtest gives the same result as onmain.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