Repository navigation
fix(agc): publish native multisample depth next to a storage image whose pending units lie past its planes - #16364
Conversation
…ose pending units lie past its planes
|
Correction (rerun): my first run rebuilt only the main test target, but the test pattern also matched Windows check of head Setup: Windows 11 Enterprise 22621, WinLibs GCC 15.2 UCRT, Release, Radeon RX 6700 XT, AMD driver 26.10.1. Run through the Windows test queue with
AI-assisted: yes. |
✅ NVIDIA GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (4, not counted against this PR)Validation IDs already present on main (9 IDs in 594 tests)Skipped (52)ReproduceAutomated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
What
A native multisample depth publication (#13021) refuses when storage results are pending over its planes:
native multisample depth publication over pending storage image writes is not implemented.The check asks
StorageTexture::AnyPendingOverlaps, which looks at whole images. So an image that only starts inside a plane refuses the publication even when every unit it still has pending lies past the plane. Nothing pending is then under the planes, and the publication would not overwrite any of it.That case is common, because the depth import already stores the pending units over its planes (
FlushPendingworks per unit). The image is left pending only past them.This change:
StorageTexture::AnyPendingUnitsOverlap. It answers the same question per tracked unit: an image being flushed still counts whole, and a pending image counts only through its units marked pending that overlap the range;The publication debt entry now says "pending storage-image units over a plane".
Tested
Linux 7.2.11, AMD Radeon RX 9070 XT, RADV (Mesa 26.2.6), Release with tests.
agc_driver_native_depth_pending_units(--pending-units), at 2, 4 and 8 samples:kStandard64KB) starts in the last unit of the stencil plane and runs 1.1 MiB past it. Its results are pending (a clear to 0x5a5a5a5a).main5299939 with only the test added (the new query unused): it fails withAGC graphics: native multisample depth publication over pending storage image writes is not implemented.VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation,ANYPS5_NO_SHADER_CACHE=1,ANYPS5_REQUIRE_VULKAN=1,ctest -V -R "native_depth|native_multisample|depth_storage|depth_surface|agc_storage_|multisample_guest|repeat_storage_guard|cached_image|storage_flush_ordering|storage_one_slice|storage_read_during|storage_write_back|msaa_address_on_plane", 55 tests):VUID-line or "was not found but was requested". Both have the same 20WARNING-VkImageSubresourceRange-layerCount-compatibilitylines.tools/check_conventions.py --base origin/main: passes.native multisample depth plane without HTILE does not hold one depth value in [0, 1]: fix(agc): import a native multisample D32S8 target over uneven planes once its first draw wrote every sample #16363 (overwrite proof), fix(agc): leave a single-sample view over a published native multisample depth owner to guest memory #16365 (single-sample view) and fix(agc): publish a reused native multisample depth target with the guest's undecided bytes, then retire its owner #15941 (or a change that starts a new owner under pending storage results). Its effect shows only together with the others, so the runs are in fix(agc): import a native multisample D32S8 target over uneven planes once its first draw wrote every sample #16363. In short, onmain5299939 + fix(agc): store storage results pending under a multisampled color target before it takes the memory #13963 (7d54822) + fix(agc): release a published native multisample depth owner whose plane a written storage view covers #15707 (a8c5df4), the run without the changes stopped at 484 s on that message, and none of the four runs with them stopped on it (their stops, all later and separate: 452 s and 468 s, or the local VRAM guard at 482 s and 496 s). The import's flush leaves exactly this case: in Mirage the storage image over the planes runs past them.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)