Skip to content

test(agc): register full recorder suite with CTest - #6642

Open
MarcZX10 wants to merge 1 commit into
boykopovar:mainfrom
MarcZX10:codex/register-recorder-full-ctest-1532
Open

MarcZX10 wants to merge 1 commit into
boykopovar:mainfrom
MarcZX10:codex/register-recorder-full-ctest-1532

Conversation

@MarcZX10

@MarcZX10 MarcZX10 commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

What

Register the no-argument agc_driver_recorder regression flow with CTest, including the existing Vulkan-unavailable skip code, a 30-second timeout, and the Windows libc DLL path used by focused entries. This carries forward the CTest registration proposed in #3354.

This registration depends on #5883. That PR updates the pending-write proof expectation; #6155, which stamps test-side guest writes, has merged. Without #5883, the full recorder path stops at an existing assertion before completing. This PR only registers the test and does not change those expectations or production behavior.

Tested

Checklist

@github-actions

github-actions Bot commented Oct 16, 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
PR 5021 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5371 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5426 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5431 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 5925 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6044 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6146 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6169 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6182 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6185 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6186 core/libs/prx/libSceAgcDriver/CMakeLists.txt
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 6209 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6218 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6249 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6280 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6292 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6300 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6412 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6481 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6501 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6615 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6682 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6741 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6743 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6747 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6788 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6808 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6820 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6868 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6905 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6946 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6947 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6948 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6959 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6973 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6977 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6987 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6989 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 6995 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7002 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7048 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7085 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7201 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7223 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7275 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7307 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7310 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7395 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7446 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7457 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7464 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7505 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7508 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7514 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7535 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7604 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7642 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7644 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7647 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7677 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7705 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7800 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7803 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7817 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7833 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7919 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 7948 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8014 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8104 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8139 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8160 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8161 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8180 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8365 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8372 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8445 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8484 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8527 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8542 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8552 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8563 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8564 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8592 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8608 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8658 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8667 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8672 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8678 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8707 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8740 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8858 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8874 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8887 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8939 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 8999 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9007 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9013 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9020 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9070 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9086 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9159 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9176 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9188 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9243 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9248 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9287 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9289 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9305 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9335 core/libs/prx/libSceAgcDriver/CMakeLists.txt
PR 9348 core/libs/prx/libSceAgcDriver/CMakeLists.txt

@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.

I built main 5d9dcc4 with this PR (fb67697) and ran the new agc_driver_recorder entry on an RTX 5080, a Radeon 610M (RADV) and lavapipe. It fails on all three, on every run, at (9) a scan under a pending write was kept (core/libs/prx/libSceAgcDriver/tests/Recorder.cpp:1332). The no-argument binary fails the same way on main without the PR (9 of 9 runs, three per device), so the check that blocked the earlier registration still fails, and once the Linux job runs this entry it will go red. Could that check be fixed first, or the registration wait until it passes? I don't think the issue should close on this change alone.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for running the full entry on three devices. I confirmed the reported assertion is in the existing keyProofTests path, not in the new CTest wiring. Since it fails on main as well, I agree this PR should not register the full recorder executable until that pending-write proof check is understood and passes. My PR description overstates that the current branch contains the fixes needed for the full run; I’ll correct that claim and keep the registration change from being treated as ready to merge while this remains unresolved.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

I found and opened PR #6676 for the pending-writer proof issue behind the keyProofTests failure. It checks the recorder's unsignaled writes before reusing a cached DCC proof, and updates the regression to verify the pending writer is resolved before the proof is refreshed. The regression could not be exercised in my Linux run because guest write-watch is unavailable there; I reported that limitation in #6676. The full-suite registration in this PR should remain deferred until the key-proof run passes on a write-watch-capable system.

@Dextroid17

Copy link
Copy Markdown
Contributor

Recorder.cpp:1332 is the (9) a scan under a pending write was kept check that #5883 rewrites. With #5883 the no-argument run gets past it and stops at second draw observed overwritten input. #6155 stamps the test's direct guest writes, which clears that stop. fma-rc ran the same change (the (9) hunk plus the three MarkWritten calls, rebuilt from a description on main 2559e96, not from the PR heads) and reported 3 of 3 on an RTX 5080, RADV (Raphael) and lavapipe in #1532. The (9) stop comes from the test's expectation, which #5883 updates, so no driver change is needed now that #6676 is closed.

I ran this registration on top of the two PRs on Linux: main 3f171d0 with #5883, #6155 and this PR (fb67697) cherry-picked (all three applied without conflicts), default CMake build (CMAKE_BUILD_TYPE empty), lavapipe (llvmpipe, Mesa 26.2.4, LLVM 23.1.1), clean environment with ANYPS5_REQUIRE_VULKAN=1, ctest -R '^agc_driver_recorder$', 3 runs each:

So this entry goes green once #5883 and #6155 are merged. "Depends on: #5883, #6155" in place of Depends on: none would record that. #5883 still has requested changes open (a code comment and the PR template), so this waits on those too. I did not run Windows or a hardware GPU.

Disclosure: #6155 is mine, and it is stacked on #5883.

AI-assisted: yes

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for testing the exact compositions and separating the two failures. I updated the PR to depend on #5883 and #6155, recorded your 3/3 lavapipe pass with both dependencies, and kept the limitation explicit: this registration alone does not make the main branch's recorder path green. I'll keep it waiting until both dependencies merge and the composed test remains green.

@jotitadev jotitadev 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.

The composed run on a hardware GPU, with the PR heads themselves, and how long the entry takes against its 30 s timeout.

Machine: NVIDIA GeForce RTX 3070, driver 595.99.02, Vulkan 1.4.329, plus lavapipe (Mesa 26.0.3, LLVM 21.1.8) on the same machine. Ubuntu 26.04 (kernel 7.0.0-38), i7-8700, GCC 15.2, Release, BUILD_TESTING=ON.

GPUs tested: NVIDIA GeForce RTX 3070 (595.99.02), lavapipe (Mesa 26.0.3, LLVM 21.1.8), Ubuntu 26.04

Composition: main 0615cd2b8 + #5883 (1b3f2e098) + #6155 (4aeb8ef49) + this PR (fb67697b7), merged in that order, no conflicts. main did not build at the time (#6784), so I used 0615cd2b8.

ctest -R "^agc_driver_recorder$" -j1, 3 runs per device:

RTX 3070 lavapipe
this PR alone fails, (9) a scan under a pending write was kept same
this PR + #5883 + #6155 passes 3/3: 1.11 s, 0.71 s, 0.69 s passes 3/3: 1.26 s, 0.93 s, 0.92 s

So the full no-argument flow passes on NVIDIA as well, using the actual PR heads (fma-rc's 3/3 in #1532 was rebuilt from a description). The longest run took about 1.3 s, well under the 30 s TIMEOUT this registers.

Not checked: Windows, AMD, the run without #6155 on this machine.

Written with AI assistance (Claude Code). I ran the builds and tests above on my machine.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for running the registered recorder suite on the PR heads themselves and reporting the runtime against its 30-second timeout. This gives useful hardware coverage for the new CTest registration.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

The current PR body now has the required What, Tested, and Checklist sections populated and accurately records the dependency and validation status. The earlier conventions failure is from the 00:54 run; later runs at 03:41 and 11:58 passed conventions. No metadata edit is needed here.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for testing the exact PR head across the three devices. The PR description already records #5883 and #6155 as required dependencies; #6155 is merged, while #5883 is still open. I agree the registration is not ready to merge until #5883 lands and the composed run passes. The independent composed run on #5883 + #6155 + this PR passed 3/3 on RTX 3070 and lavapipe; I am treating that as dependency-stack evidence, not as a pass for this PR alone.

@fma-rc

fma-rc commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

For the RADV side of the dependency stack: this PR (fb67697) on top of #5883 (1b3f2e0), both rebased onto main 1e2d9b3, passed agc_driver_recorder 3 of 3 on a Radeon 680M (RADV REMBRANDT, Mesa 26.2.4), with only the RADV driver enabled.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for adding the RADV result. That is useful composed-stack coverage for the registered agc_driver_recorder entry. #5883 is still open, so the dependency remains; I will keep the PR pending until the dependency is merged and the composed run remains green on the resulting base.

@MarcZX10

Copy link
Copy Markdown
Contributor Author

Thanks for the composed-head retest. The result confirms the full recorder registration passes 3/3 on RTX 3070 and lavapipe when #5883 and #6155 are included, and stays well under the 30 s timeout. #5883 is still open and the current main baseline fails the same check, so I’ll keep #5883 listed as a dependency and leave this PR pending until that fix lands; this is not a standalone-main pass.

@adriadam10 adriadam10 self-assigned this Oct 19, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 19, 2026
Register the no-argument recorder executable path so CTest covers the main recorder regression flow in addition to the focused subsets. Preserve the Vulkan-unavailable skip code, cap the test at 30 seconds, and add the Windows libc DLL path used by sibling recorder tests.

This carries forward the test registration proposed in boykopovar#3354, which was closed by the intake pause. Its author left a handoff, and the current main branch has since incorporated the fixes that made the full recorder run pass.

Co-authored-by: blawesom <blaplane@gmail.com>
@MarcZX10
MarcZX10 force-pushed the codex/register-recorder-full-ctest-1532 branch from fb67697 to 4c1de7e Compare October 19, 2026 15:19
@MarcZX10

Copy link
Copy Markdown
Contributor Author

Rebased onto current main (43a2abaf77), preserving the latest Windows PATH list and adding agc_driver_recorder to it. The branch still depends on #5883; #6155 has merged. Current diff-check and conventions pass. I updated the PR body to distinguish earlier composed-tree GPU results from this current head, which has not been built or run.

@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 19, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 21, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* build needs rebase Conflicts with main, rebase needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants