Repository navigation
test(agc): keep waiting for the neighbour copy case's result - #6385
oneandonlydean merged 2 commits into
Conversation
The NeighbourCopied case returned Missed as soon as the surface image was live with nothing pending, although its result had not reached guest memory yet. It now waits until the result is pending or stored, as HoldPending does, and only a stored result is a miss. Fixes boykopovar#6383 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
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.
|
Current-main Windows refresh (2026-10-16 UTC)Independent confirmation of @LeandroLP23's AMD result, with both our physical GPUs. Base Failures out of 20 fresh processes per cell, 320 total:
Every constrained failure is Windows 11 Enterprise 10.0.26200, Ryzen 9 9950X3D, WinLibs GCC15.2.0r7, Release/bundled dependencies/SPIRV-Tools ON. RTX5080 ( I also rebased our unchanged two-line #6359 patch onto main5d as Proposed landing order: #6385 first, then #6359. The two source hunks are independent; this order gives the full fixture its corrected neighbour wait before our final identity-gate validation. #6359 declares this validation prerequisite. #6735 is recorded separately; no fix or causal attribution for that intermittent assertion is claimed here. No production, title or FPS claim. AI-assisted: Codex. Historical main0e4 comparison, preserved with its original pinsIndependent Windows NVIDIA/AMD validation of For a matched comparison, I applied your unchanged fixture patch to the same control I had just tested: main Windows 11 Enterprise 26200, Ryzen 9 9950X3D, WinLibs GCC 15.2.0 r7, Release/bundled dependencies. GPUs: RTX 5080 (Windows driver
Every control failure was All patched runs reached the final success message. Four existing write-watch cases still print AI-assisted: Codex. |
|
This also fixes the Linux failure I reported in #5671. That one fails with a different message, in the case that runs right after Linux (Ubuntu 24.04, GCC 13.3, Release, RTX 4070 Ti, NVIDIA 595.99),
A local diagnostic I didn't keep printed each case's name. On Not checked: Windows. I also haven't looked at what exactly carries over between the two cases. AI-assisted: yes |
|
One test-specific question: this |
|
@MarcZX100 I ran the GPU fixture on lavapipe (llvmpipe, LLVM 23.1.1) to check your Setup:
An env switch picks the break condition. The "load" runs had 16 busy-loop processes on the CPU. What this shows:
So I'd take your suggestion, and of the two I'd use AI-assisted: yes |
|
Another AMD run, on an iGPU and on current Setup: Windows 11 Home 26300, AMD Radeon 860M (RDNA 3.5,
This matches @Amoenus's single-CPU result on the Radeon iGPU. On this machine Not tested: Linux, NVIDIA. AI-assisted: yes (Claude Code) |
Amoenus
left a comment
There was a problem hiding this comment.
Validated unchanged head 0aba57d merged onto main5d with both RTX5080 and Radeon integrated graphics. Your patch alone passes80/80 fresh processes across both GPUs and single-CPU/unrestricted profiles; matching main fails19/20 NVIDIA and20/20 AMD constrained runs at the pending-result wait. The #6359 combination also passes80/80, plus20/20 after its rebase. Source review agrees with continuing to wait rather than returning Missed before either result state is reached.
Exact pins, hardware, conditional omissions and the separate #6735 assertion are in the updated existing report. Selected-target Windows coverage; no new full-suite, title or Linux claim. AI-assisted: Codex.
|
Thanks for the additional AMD runs. The 20/20 pinned failure on current main and 20/20 pass with this change directly answer my scheduling question; the combined #6359 runs also show the fixes compose. I have no further question on the |
The NeighbourCopied wait accepted any pending result once the surface image was live, so a pending result of the source surface could end it. It now waits for a pending result overlapping the surface's range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@MarcZX100 @Dextroid17 Thanks, the concern is right: the global Windows 11 Pro 26200, NVIDIA GeForce RTX 4080 (driver 617.42), WinLibs GCC 15.2.0 r7, Release,
The exact new head, merged onto the same base: 0/50 unpinned, 0/50 pinned; Thanks as well to @Amoenus for the review and to @LeandroLP23 for the Radeon 860M runs. AI-assisted: yes (runs and change done with Claude Code). |
|
Rerun of the new head AI-assisted: yes (Claude Code) |
|
Linux data point on NVIDIA. Ubuntu 24.04.4 (kernel 6.8.0-147), NVIDIA RTX 4000 SFF Ada Generation, driver 595.99.02 (open kernel module), Intel i9-14900, GCC 13.3.0, Release, bundled dependencies, SPIRV-Tools ON. Base
|
|
Thanks @oneandonlydean for the merge, and to everyone who ran it on hardware I don't have: @Amoenus (RTX 5080 and Radeon, plus the review), @LeandroLP23 (Radeon 860M), @milescoviello, @SleglJan and @marco-scheffler (Linux), and @Dextroid17 (lavapipe). Thanks as well to @MarcZX100 for spotting the global |
What
Fixes #6383. In
Run(), theKind::NeighbourCopiedwait returnedOutcome::Missedthe first time the surface image was live whileStorageTexture::AnyPending()was false. It did not check whether the result had reached guest memory. The wait now keeps polling until the surface image is live with results pending, and returnsMissedonly when the result is already stored, asHoldPendingdoes. The timeout message names both conditions. Test-only change, one file.The hypothesis written in #6383 (results already flushed when the image was first seen) was wrong. A local diagnostic (not kept) printed the state at each miss over 30 runs on unchanged main: in 3,215 of 3,218 misses the result was neither pending nor stored, and the first word of the surface still held
Untouchedin 2,899 of them. Only 3 misses had the result stored. Misses occurred in every run, and 4 of 30 runs reached 256.Tested
Windows 11 Pro 26200, NVIDIA GeForce RTX 4080 (driver 617.42), AMD Ryzen 7 5800X, WinLibs GCC 15.2.0 r7, Ninja, Release, bundled dependencies,
BUILD_TESTING=ON.ANYPS5_NO_SHADER_CACHE=1, fresh process per run.2bc3a760f) onto main:agc_driver_store_over_untrackedpasses 100/100, maximum 0.63 s. TheNeighbourCopiedcase runs to completion in every run; the four cases that printnot run, the surface is not write-watchedare unchanged.f633042df: 40 runs, nonever held pending; 2/40 fail at Windows: StoreOverUntracked fails at "the first result was not stored" #6347'sthe first result was not stored, which test(agc): wait for the actual image in repeated untracked stores #6359 addresses.ctest -R "agc_|storage|guest_memory|write_watch" -j 8: 599/600.agc_driver_preparation_scope_settlefailed once under parallel load and passes 11/11 alone; this change does not touch it.python tools/check_conventions.py --base upstream/main: passes.No AMD or Linux run.
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