Repository navigation
fix(agc): retire fully unmapped multisample targets - #4474
Conversation
a3079e6 to
62d2d75
Compare
62d2d75 to
012379f
Compare
|
Windows run and the full suite, which the description lists as not run. Setup: Windows 11 (26200), WinLibs GCC 15.2.0 r7, Release, CI configure flags, an RTX 4070 Laptop GPU and an Intel Raptor Lake-S iGPU. The head 012379f merged into
Written with AI assistance. |
012379f to
7b5b433
Compare
7b5b433 to
026c198
Compare
|
Needs a rebase: #4199 is merged and this now conflicts with it in |
026c198 to
f7fd756
Compare
|
The rebase is now pushed as The independent full Linux Release build passes. Nine selected checks pass on Radeon RX 6650 XT; multisample guest access and copied-direct ordering also pass on lavapipe, without skips. Removing only the unmap-observer installation makes the regression fail on both drivers; restoring it makes both pass. The PR description includes the broader suite results and their limitations. Ready for the full build you offered once the conflicts were resolved. Thank you. |
|
The published rebase has completed full fork build results: PR build. Windows passes: 705 passed, 386 skipped, 0 failed of 1,091. Linux builds successfully: 1,026 passed, 46 skipped, 1 failed of 1,073; the multisample regression passes. Windows multisample guest access and copied-direct ordering are among the skipped cases, so no Windows runtime validation is claimed for them. The single Linux failure is A fresh full PR build against current main is queued. No unrelated math changes were added to this PR. Skipped cases remain unvalidated. |
|
The published head
The earlier Linux failure on base |
|
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.
|
What
After a multisampled color target is freed, its guest-read guard and cached host image survive. A texture reusing that allocation is rejected as a read of live multisampled data. Notify the graphics registry after successful allocation removal or unmap, retire targets fully covered by the released range, and skip their cached images in later draws and metadata updates.
Protection changes and failed unmaps retain the guard. Retired Vulkan images remain allocated until device teardown so outstanding commands retain valid resources. Partial unmap/reuse and reads of live multisampled data remain unsupported. No new guest system exports.
Rebased onto upstream main
b478fbbb1con October 13. A subsequent merge-tree check against upstream61b8742b6b4is clean, including its newer multisample mutex initialization. The allocation callback follows the newer successfulapplyPatchmutation. Retirement preserves the upstream fragment-block guard sizing and checks target activity before the newer color-fill notification. The regression retains the upstream 2x/4x/8x guard-boundary cases alongside allocation removal, unmap, address reuse, protection and failed-unmap checks.Tested
The full fork workflow passes with published head
f7fd7569famerged into current main0214069e33c. Linux: 1,031 passed, 46 skipped, zero failed of 1,077; its multisample regression passes. Windows: 708 passed, 387 skipped, zero failed of 1,095. Windows multisample guest access and copied-direct ordering are skipped, so their Windows runtime behavior remains unvalidated. These are the repository-defined full workflow and test selections; skipped cases are untested. Upstream-maintainer CI remains pending.Independent full Linux Release build of
f7fd7569fa, BUILD_TESTING=ON, bundled pinned dependencies, default SPIRV-Tools option OFF, also passes. Nine selected checks pass on Radeon RX 6650 XT without skips: patched_libraries, guest_memory_pool_stats, agc_copied_direct_ordering, agc_host_import_unmap, agc_parked_import_unmap, agc_multisample_guest_access, agc_driver_graphics, guest_memory and guest_module_info. Multisample guest access and copied-direct ordering also pass on Mesa lavapipe without skips. Conventions pass. Removing only the unmap-observer installation makes the multisample regression fail on both Radeon and lavapipe at the stale texture-read guard after allocation reuse; exact restoration and rebuilding make both pass.The earlier complete local lavapipe suite on this standalone head had 1,007 passed, 44 skipped and six failures of 1,057 with a 30-second timeout and parallelism 4, running as root. The five timeout cases pass individually at the upstream 120-second timeout with GALLIUM_OVERRIDE_CPU_CAPS=avx; the named-shared-memory permission case passes as normal user jjenkx. These follow-up results are not a single full-green local run. The first fork CI attempt on older main
091c136ba6failed only guest_math, also failing on untouched main. Current upstream fixes that acosf NaN-bit issue, and the new full workflow above passes without adding unrelated math code to this PR.Crazy Chicken Shooter Bundle (PPSA03117) motivated this fix. Earlier combined integration runs reached gameplay near 60 FPS and closed normally; they include other fixes and are not standalone validation of this rebased PR. No title run or game performance improvement is claimed for the current rebase.
Checklist
main; no other open PR implements the same functions