Repository navigation
fix(agc): enforce MSAA guards for ordinary image cache hits - #7650
Conversation
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
|
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.
|
|
AMD on Windows: the new The failure is the fixture's own precondition, not a wrong result: on this GPU and driver the test doesn't reach the fast image proof it means to check. The other tests in this area pass 3 of 3: AI-assisted |
|
Windows data on an Intel UHD 770 and an AMD RX 9070 XT. The new Windows 11 Pro 26300, WinLibs GCC 15.2.0 r7, Release, every execution test built,
Why the fast proof isn't taken on Windows:
An existing pattern would keep the guard covered on Windows. Full CTest with this PR and the 14 other open AGC PRs I tested in the same batch merged together: the only failure beyond AI-assisted: yes (Claude Code) |
36b0596 to
ad1bf47
Compare
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
|
Thanks @LeandroLP23 and @savvaniss for the Windows reports and diagnosis. Pushed the fixture correction in ad1bf47 and rebased the branch onto main The fixture now checks Validation on Linux / RTX 3070:
I do not have a Windows test host, so the Linux comparison-mode check is not Windows validation. Could you rerun AI-assisted: yes (Codex). |
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
|
Rebase handoff — rebased onto current Verified on Linux (CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release, To pick it up: Head is |
|
Rerun on Windows as asked: One thing to watch in the rebase. ad1bf47 still conflicts with current
AI-assisted: yes (Claude Code) |
Apply the reviewed fast sampled lookup guard, exclude image-table ranges from eager rejection, and import the standalone regression from PR boykopovar#7650. Preserve native MSAA table behavior and record the separate table reuse gap.
Check described image ranges before either resource reuse proof, preserving the combined color and resident-depth guard for existing callers. Add standalone draw and compute regressions for sampled and storage images, disjoint targets, guarded fresh builds, and target retirement.
Apply the color-target guard before the precollected texture shortcut can reuse an ordinary sampled image. Distinguish cached and fresh access failures in the regression and unregister tracked memory before unmapping it.
Mark described image-table ranges explicitly and apply the eager color-target guard only to ordinary image bindings. Cover native multisample table validation and record the separate table registration gap.
Require the fast image proof only for write-watched image memory while retaining every guard check for compared imports.
ad1bf47 to
56d183d
Compare
|
Rebased onto main Resolved the image-table conflict by retaining upstream's shared Validation on Arch Linux, kernel 7.2.11-zen1-1-zen, NVIDIA RTX 3070, driver 615.78.08:
Windows was not tested locally. A Windows rerun of the updated head is still needed; the Linux compared-import run does not substitute for that validation. AI-assisted: yes (Codex). |
|
Windows rerun of 56d183d, merged into
The AI-assisted: yes (Claude Code) |
What
An ordinary sampled or storage image can remain cached after a multisampled color target is registered over the same guest memory. The resource reuse proof accepts unchanged memory stamps without checking the new owner. A fresh sampled build can also bypass the guard through its precollected texture shortcut. Check the color-target guard before either shortcut accepts an ordinary image. [1] [2]
Keep image-table entries outside this eager guard: they can contain valid native MSAA views, and invalid entries need per-element fault handling. The existing combined color/depth guard retains its behavior. The standalone regression covers draw and compute sampled/storage bindings, disjoint and overlapping targets, retirement, and a native MSAA table entry. The separate reused-table registration gap is recorded in technical debt. [3] [4] [5] [6]
No title unblock or speed improvement is claimed. This branch does not depend on the GT7 integration branch or PR #6636.
Overlap: #7154 adds depth-plane flushing adjacent to both checks; it does not implement the color-target guard. Either integration must retain the guard before the fast sampled lookup and retain the depth flushes. The debt paragraph also overlaps #6215, #6571 and the #6973/#6987/#6989/#6995/#7002 MSAA layout series; those changes do not add these ordinary-cache checks. Some comparisons are unavailable because those PRs already conflict with main; shared-code review found no equivalent fix. #7642 adds an opt-in device image-table path and does not replace this guard. #6946/#6947 add earlier reuse returns, which must remain after this ordinary-image guard when combined.
Tested
Arch Linux, kernel 7.2.11-zen1-1-zen, NVIDIA GeForce RTX 3070, driver 615.78.08. RelWithDebInfo, BUILD_TESTING=ON, bundled dependencies, ANYPS5_ENABLE_SPIRV_TOOLS=OFF, ANYPS5_REQUIRE_VULKAN=1. Based on main 48d61f5.
These are resource construction/validation regressions, not a title runtime or performance benchmark. Windows and other GPU vendors were not tested locally. The existing fresh storage guard is checked for consistency; it is not newly implemented here.
git diff --checkandpython3 tools/check_conventions.py --base origin/mainpass.python3 tools/pr_overlap.py --branch fix/agc-cached-image-msaa-guard --jobs 1completed with the overlap limitations above.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)