Repository navigation
test(agc): honor GPU selection in recorder fixtures - #6225
Conversation
|
Independent Linux selection-helper coverage at exact head I compiled this head's unchanged All four devices are visible together, without pinning an ICD:
5/5 fresh-process runs pass, including the PR's complete CPU fixture and the real-enumeration checks. The RADV result is checked by vendor ID, rather than trusting the CPU-model-like name this Mesa build reports. Negative control in a separate scratch copy: remove name filtering and restore rank-only selection. The extracted CPU fixture exits 1 with Scope: request strings are passed directly to the helper. No full recorder fixture, environment-variable-to-recorder integration, logical-device/queue creation, GPU command execution, or title result is claimed. HAL's ordinary full configure remains blocked by SDL XRandR development support, so these are standalone helper results rather than |
|
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.
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.
|
jotitadev
left a comment
There was a problem hiding this comment.
Linux run of the recorder executable itself, which the description lists as not covered (the Linux data so far is a standalone harness).
Machine: NVIDIA GeForce RTX 3070, driver 595.99.02, Vulkan 1.4.329, plus llvmpipe (LLVM 21.1.8). Ubuntu 26.04 (kernel 7.0.0-38), i7-8700. GCC 15.2, Release, BUILD_TESTING=ON. Head 82b4a665f merged onto main 44df21632, no conflicts.
GPUs tested: NVIDIA GeForce RTX 3070 (595.99.02), llvmpipe (Mesa, LLVM 21.1.8), Linux
| Test | ANYPS5_GPU |
Result | Vulkan device: lines |
|---|---|---|---|
agc_tiled_resolve |
llvmpipe |
3/3 pass | llvmpipe |
agc_tiled_resolve |
NVIDIA GeForce RTX 3070 |
3/3 pass | NVIDIA |
agc_pending_key_stores |
NVIDIA GeForce RTX 3070 |
3/3 pass | NVIDIA |
agc_tiled_resolve |
nomatch-xyz |
skipped: no Vulkan 1.1 device matching ANYPS5_GPU="nomatch-xyz" |
none |
agc_pending_key_stores |
llvmpipe |
fails 23/23: a range wider than the pending fill was known, or waited for |
llvmpipe |
main selects NVIDIA in every one of these cases.
The selection works. The new failure is in agc_pending_key_stores, which this PR makes reachable here: llvmpipe selected while the NVIDIA ICD is also installed. With VK_DRIVER_FILES set to the lavapipe ICD only, the same build passes 10/10, and the logs of the two cases are identical up to the assertion. /dev/udmabuf access makes no difference: 13 of the failing runs had it accessible, 10 denied through an LD_PRELOAD shim. It is the assertion of #6500, where the numbers on unchanged main are.
Written with AI assistance (Claude Code). I ran the tests above on my machine.
|
Thanks for testing the recorder itself on Linux and for separating device selection from the assertion failure. The lavapipe |
|
Additional current-integration validation: 5c23b59fe adds this exact head 82b4a66 to #6973's initializer/array/layout composition on main f6a2091. Before this selection fix, the recorder's Windows 11 Enterprise 26200, NVIDIA 610.62/32.0.16.1062 and AMD 32.0.21036.18; Ubuntu 24.04 WSL2, Mesa 25.2.8 llvmpipe LLVM 20.1.2. Vulkan required, project shader cache disabled, serial 30 s CTests. This is validation of the adapted composition, not a fresh test of the unchanged old-base PR head or a title run. The corrected coverage scope is recorded in #6973. AI-assisted: Codex; author responsible. |
What
Closes #6219. Honor the existing
ANYPS5_GPUselector in the recorder's private test device, using case-insensitive name-substring matching as introduced for the production device in #876.Keep default adapter ranking for unset/empty requests and reject an unmatched explicit request. Extract selection over device properties so a CPU test covers ranking, case/substring matching, missing names, Vulkan-version eligibility and enumeration-order ties.
Checked the selection code in43 open PRs touching the recorder, including #6222; none implements this filtering. #4847 concerns production-device eligibility. Depends on none.
Tested
Head
82b4a665fa5b6449af6a396259dfbe4ef96bd46f, base maind92a8dad390af1807cc91622b924252141816a5a; Windows11 Enterprise26200, WinLibs GCC15.2.0 Release, bundled dependencies, SPIRV-Tools enabled.agc_tiled_resolveruns requesting AMD selected NVIDIA; the numeric test passes but the physical-device assertion fails. Unset/empty controls select NVIDIA.ANYPS5_REQUIRE_VULKAN=1.Three existing internal cases print “not tested” under compared imports:
agc_storage_kept_unit_settle,agc_unit_shadowandagc_draw_inputs_in_place. Their other cases pass; those guarded paths are excluded from the coverage claim.Our validation scope: Windows fixtures. We did not run Linux, the complete repository CTest suite or a title replay for this independent head. Full upstream CI requires maintainer dispatch.
Independent Linux helper coverage
simonbbby reports five fresh-process passes at the exact PR head on Ubuntu24.04/GCC13.3: the unchanged CPU fixture and selector helper, plus real enumeration of two RTX3090 adapters, RADV1002:13c0 and llvmpipe. Mixed-case requests select the intended vendor/CPU device; rank-only negative control fails. This is external standalone-helper evidence: it does not exercise the recorder executable, environment-variable integration, logical devices/queues, GPU commands or a title. Their full configure is blocked by SDL XRandR development support.
Independent Linux recorder coverage
jotitadev tested the actual recorder executable, head
82b4a665fmerged onto main44df21632: Ubuntu 26.04, GCC 15.2, NVIDIA RTX 3070 driver 595.99.02 and llvmpipe LLVM 21.1.8. Tiled resolve passes 3/3 on each requested device, an unmatched selector skips, and pending-key stores pass 3/3 on NVIDIA. With llvmpipe selected while both ICDs are installed, pending-key stores fail 23/23; restricting enumeration to lavapipe passes 10/10. The selector works and exposed a separate pending-store fixture defect tracked in #6500. MarcZX100 subsequently identified the partial block initialization; #6560, merged as4eb91eacd, zeroes the entire block. The Linux results above were collected on44df21632, before that correction; no fresh Linux rerun on the corrected main or claim that every recorder group passes on Linux. External reports, not rerun here.Checklist
main; no other open PR implements the same functions