Repository navigation
test(agc): read the sample order tests' depth through a sampled copy - #9056
Conversation
|
Independent AMD run of this PR together with #9057, under the validation layer. Setup: Windows 11 Pro 26200, AMD Radeon 680M (RDNA 2 iGPU; no
Validation errors:
So on this device the two PRs fix two of the three tests, and AI-assisted: yes |
|
Read against
|
|
Thanks @DavidSamir and @EagleBearerYS. Both are in the Tested section now. @DavidSamir, good to see the 680M fails the same two tests on AI-assisted: yes (Claude Code) |
|
Windows result on NVIDIA. Windows 11 Pro 26300, GeForce RTX 3080, driver 616.92 (32.0.16.1692), Ryzen 7 5800X3D, WinLibs GCC 15.2.0 r7, Release,
AI-assisted: yes |
|
Thanks @gdols, that makes three devices where AI-assisted: yes (Claude Code) |
|
Correction to my comment above: ctest's summary counts skipped tests as passed. The full run on Under the validation layer, same machine. Vulkan SDK 1.4.363.0;
Each message names its VUID twice, in the header and in the spec link, so counting the lines that contain each VUID gives 18 and 6, the counts in the description. If those were counted that way, the devices agree. AI-assisted: yes |
|
Thanks for the correction, @gdols. The Tested section now says 1838 passed, 17 skipped and 3 failed. AI-assisted: yes (Claude Code) |
Follow-up after #9057 merged — 24 October 2026Plain main I then merged @milescoviello's unchanged #9056 head
CPU sample-order planning passes 3/3. Total 15 passes (12 GPU/3 CPU), one GPU skip, three GPU failures. The Exact pins, outcomes and full synthetic logs. Windows11 Enterprise26200, WinLibsGCC15.2r7/UCRT Release, SPIRV-Tools; NVIDIA610.62 and AMD32.0.21036.18. Actual adapters and loaded Khronos1.4.363 verified, required Vulkan, app shader cache/journal disabled, serial verbose CTest; driver caches/implicit layers unchanged. No timeouts; maximum1.982s across these baseline/patch checks. Stopped runner attempts and their completed outcomes are retained; skips are not counted as passes. No full-suite, title, performance or console claim. The test-only change follows Vulkan's sampled-image usage requirement. AI-assisted validation/reporting: yes (Codex); author responsible. Earlier confirmations at their original pinsCurrent-main confirmation — 2026-10-22 maintenanceLiteral, unmodified main
Windows 11 Enterprise 26200 / WinLibs GCC 15.2 r7 UCRT Release, SPIRV-Tools ON; NVIDIA 610.62 and AMD 32.0.21036.18. Required Vulkan, disabled application shader cache/pipeline journal, Khronos 1.4.363 actually loaded and actual adapters verified in verbose serial CTest. Zero validation warnings. Driver caches and existing implicit layers were left as found. Message headers are counted once, separately from repeated specification links. This confirms the main-side failures persist; it does not validate the proposed #9056/#9057 fixes. Our own PR refreshes retain these controls rather than folding in either foreign fix. Earlier repeated results remain at their original pins below. Earlier current-main reproduction at its recorded pinIndependent main-only Windows confirmation while refreshing our MSAA PR stack. No fix result is claimed here. Unmodified main
Counted validation-message headers, not both header and spec-link occurrences: NVIDIA has 24 The existing readback, sampled-MSAA-target and retirement controls each pass once per GPU with the same required-device/layer setup and no validation errors. These failures are retained as main failures when comparing our refresh; this is not a reason to fold your correction into our production PRs or open a duplicate. Raw logs retained. No title/performance result. AI-assisted: yes (Codex); author responsible. |
|
Thanks @Amoenus, that adds an RTX 5080 and a gfx1036 to the devices where AI-assisted: yes (Claude Code) |
|
RTX 4090 (Ada) on Windows, head NVIDIA GeForce RTX 4090, driver 617.42, Windows 11 Pro 26200, WinLibs GCC 15.2.0 r7, Release,
On AI-assisted: yes (Claude Code) |
|
Thanks @MaxLikesCode. The RTX 4090 run matches the others: AI-assisted: yes (Claude Code) |
|
Independent Windows run on the same GPU family as #9313 (data only). Environment: Windows 11, NVIDIA GeForce RTX 3070 (driver 617.42) + Intel UHD Graphics 630 (driver 31.0.101.2140), WinLibs GCC 15.2, Release, RTX 3070 (
Intel UHD 630 ( Net: this fixes the NVIDIA read on the 3070 exactly as on the 3080/4090 — #9313's report should close with it. The UHD 630 failures are a separate device-capability gap worth their own tracking if not already covered. AI-assisted: yes (Devin). |
|
Thanks @akkadbakkad89. The RTX 3070 result matches the 3080 and 4090, and it is the device in #9313, so this PR now says Fixes #9313. I added both GPUs to the Tested section. The UHD 630 failures are separate, as you say: they fail the same way on AI-assisted: yes (Claude Code) |
The sample order tests read a reordered depth surface by binding the surface's own view as a sampled image. A multisampled depth surface that is sampled through a shadow image is created without VK_IMAGE_USAGE_SAMPLED_BIT, so that descriptor is invalid (VUID-VkWriteDescriptorSet-descriptorType-00337). The tests now copy the depth plane into an image of their own with sampled usage, as the reorder pass itself does, and read that copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0fd624d to
53949c0
Compare
|
@MarcZX10 refreshed as you asked: rebased onto On that head, Linux (Ubuntu 26.04.1, GCC 15.2, Release, RTX 4070 Ti, NVIDIA 615.71.09), the four
#9057 is rebased onto the same AI-assisted: yes (Claude Code) |
|
RDNA 3.5 data point under AMD's Windows driver, for #9313 and #9507. Radeon 860M (
On The differences are in the second channel only, by one or two steps of the stored value, on pixels at x = 33 and 34 next to the checkerboard's middle. So it looks like interpolation at the custom locations differing slightly between the exact path and the reference on this device. The device also logs AI-assisted: yes (Claude Code) |
|
@LeandroLP23 thanks, that's the first RDNA 3.5 run, and with AMD's shader cache emptied each time. It matches what this PR is for: AI-assisted: yes (Claude Code) |
|
Windows follow-up after #9057 merged: your unchanged |
|
@Amoenus thank you for running it again after #9057 landed, on both GPUs and under the layer. That's the result this PR is for: the two depth groups pass on NVIDIA and AMD and the AI-assisted: yes (Claude Code) |
Dismissing a stale review: the requested changes were addressed after it (new head and/or updated description with the asked-for runs) and the merge queue blocks on it. Please request changes again if anything is still open.
|
Tested on an AMD Radeon RX 6600 XT (Navi 23, 0x73ff), AMD driver 32.0.21045.16010, Windows 11 Pro 26300, WinLibs GCC 15.2.0 r7, Release, merged onto AI-assisted: yes |
|
Tested on Linux with NVIDIA and two RADV devices, with the validation layer: the NVIDIA A800 80GB PCIe, NVIDIA 610.57.04, RHEL 10.2 (Ubuntu 26.04 container, GCC 15),
With the PR, The device reports its largest 2-sample location grid as 2x4 pixels. No other test changes. AMD Radeon RX 9070 XT (RADV GFX1201) and AMD Ryzen 7 9700X integrated graphics (RADV RAPHAEL_MENDOCINO, gfx1036), Mesa 26.0.8, Fedora 44 Linux 7.2.7 (Ubuntu 26.04 container)
Same on both GPUs: all three pass on both sides (39 swap round trips, 6 shader remap checks and 3 scene checks for the default case), and the PR removes every |
|
@brummilab @TechLevelZero thank you, both runs are now in the Tested section. The A800 skip of AI-assisted: yes (Claude Code) |
The sample order depth pass bound its descriptor set before the render pass's first pipeline, then bound each pipeline in the draw. On AMD's Windows driver (Radeon RX 6700 XT, 26.10.1) the pixel shader of that draw then read its image descriptor from address 0x200000000: Radeon GPU Detective puts the page fault on the s_load_dwordx8 of the set's first image in the sample order pixel shader, and the device is lost, so agc_driver_sample_order_grid_reference fails on vkQueueSubmit (-4) before anything is read back. The set is now bound after each pipeline. With that, agc_driver_sample_order_grid_reference reaches its depth checks; with boykopovar#9056's test change as well, it and the other two sample order tests pass 10 of 10 runs on that device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The sample order depth pass bound its descriptor set before the render pass's first pipeline, then bound each pipeline in the draw. On AMD's Windows driver (Radeon RX 6700 XT, 26.10.1) the pixel shader of that draw then read its image descriptor from address 0x200000000: Radeon GPU Detective puts the page fault on the s_load_dwordx8 of the set's first image in the sample order pixel shader, and the device is lost, so agc_driver_sample_order_grid_reference fails on vkQueueSubmit (-4) before anything is read back. The set is now bound after each pipeline. With that, agc_driver_sample_order_grid_reference reaches its depth checks; with boykopovar#9056's test change as well, it and the other two sample order tests pass 10 of 10 runs on that device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
Three of the sample order tests #6683 added fail on
mainon an RTX 4070 Ti with the 595.99.02 Linux driver:agc_driver_sample_order,agc_driver_sample_order_grid_referenceandagc_driver_sample_order_recipe_depth_locations. They read back depth other than what was drawn:2x scene with the standard locations: the slopes did not leave depth both at and below the clear valuethe composite of uniform renders: the slopes did not leave depth both at and below the clear valuepixel (0,0)'s locations in every pixel: the clear between the recorded draw and its replay left depth other than the clear valueThe reads are the cause, not the reorder. The tests read a depth surface by binding
DepthSurfaceOrderTarget(...).view, the surface's own view, as a sampled image. A multisampled depth surface sampled through a shadow image (#7318) is created withoutVK_IMAGE_USAGE_SAMPLED_BIT. So that descriptor is invalid: the Khronos layer reportsVUID-VkWriteDescriptorSet-descriptorType-0033718 times over these tests. What such a read returns is up to the driver, and this one returns other depth.The reorder pass itself doesn't do this:
SampleOrder.cppcopies the depth plane into an image of its own with sampled usage and samples the copy. The tests now do the same through a newReadDepth:Imageof the same format and sample count, withDepthUsage, inGENERAL(no layout change on the surface);ReadTarget.Both reads go through it: the scene read in
RenderCheckerboardand the recipe test'sread. Only the test changes.Tested
maind2e42c3 as53949c0775(commit unchanged,git range-diff). On the RTX 4070 Ti (615.71.09, Ubuntu 26.04.1, GCC 15.2, Release), 3 runs each:mainfailssample_order,_grid_referenceand_recipe_depth_locations; this head passes all 4sample_ordertests, alone and with fix(agc): give a depth stencil copy's layout barrier both aspects #9057 (7333de6aee).main8499ea5, with no conflicts, as head0fd624d93b(git range-diffshows the commit unchanged). The 4sample_ordertests pass 3 of 3 on the RTX 4070 Ti (615.71.09, Ubuntu 26.04.1), and conventions are clean. The runs below are from earlier heads with the same change. A fullctest -j 4ofmainda54c65 on the same machine passes 1832 of 1835 tests, and the three failures are the ones this PR fixes.Ubuntu 24.04, GCC 13.3, NVIDIA RTX 4070 Ti, driver 595.99.02, on
main275e896.The 4 tests matching
sample_order: onmain,agc_driver_sample_order_planningpasses and the three above fail, every run (2 of 2 on b6fe513, and again under the layer on 275e896). With this change all 4 pass, 3 of 3.Under lavapipe (llvmpipe, LLVM 20.1.2) they pass with and without the change; the grid reference and recipe tests skip there, as on
main.Khronos validation layer 1.4.363 over the same 4:
main: 1 of 4 passes, withVUID-VkWriteDescriptorSet-descriptorType-00337×18 andVUID-VkImageMemoryBarrier-image-03320×6.00337is gone, and nothing is new. The remaining03320×6 is a driver barrier on a D32S8 copy image, which fix(agc): give a depth stencil copy's layout barrier both aspects #9057 fixes separately.AMD, Windows: @DavidSamir ran it together with fix(agc): give a depth stencil copy's layout barrier both aspects #9057 on a Radeon 680M (driver 32.0.21030.2001, Windows 11) under the 1.4.363 layer, on
main27fabb6.agc_driver_sample_orderandagc_driver_sample_order_recipe_depth_locationsfail onmainthere too, and pass with both PRs.03320and00337are gone.agc_driver_sample_order_grid_referencestill fails on that device, withVK_ERROR_DEVICE_LOSTand oneVUID-VkSubmitInfo-pSignalSemaphores-03242. That is a separate problem, not narrowed down yet.NVIDIA, Windows: @gdols ran it on an RTX 3080 (driver 616.92, Windows 11) on
main2f161d4. Onmainthe full suite has 1838 passed, 17 skipped and 3 failed: these tests, with the same messages. With this PR and fix(agc): give a depth stencil copy's layout barrier both aspects #9057,agc_driver_sample_order,_recipe_depth_locationsand_planningpass 3 of 3, and_grid_referenceskips (that device doesn't keep depth drawn at custom sample locations).mainalone, Windows: @Amoenus rangrid_referenceandrecipe_depth_locationson an RTX 5080 (610.62) and an AMD gfx1036 under the 1.4.363 layer, 3 times each. Both fail on both GPUs, with00337messages on both (gfx1036 loses the device ingrid_reference, as on the 680M). These runs are without this PR.NVIDIA, Windows: @MaxLikesCode ran it on an RTX 4090 (driver 617.42, Windows 11), merged onto
main2c4b116, 3 runs without and 3 with the 1.4.363 layer:main:sample_order,_grid_referenceand_recipe_depth_locationsfail 6 of 6, with00337×18 and03320×6 per layer run.sample_order,_recipe_depth_locationsand_planningpass 6 of 6, and_grid_referenceskips (as on the 3080). Only the 603320remain; with fix(agc): give a depth stencil copy's layout barrier both aspects #9057 too, no VUID is left. No run lost the device.@EagleBearerYS (fix(agc): keep the guest's sample order where pixel (0,0)'s locations stand in for a 2x2 grid #6683's author) reviewed it and ran it with fix(agc): give a depth stencil copy's layout barrier both aspects #9057 on GitHub's runners. Under lavapipe,
agc_driver_sample_order,_planning,agc_driver_pixel_sample_iterationandagc_driver_sample_location_grid_fallbackpass 3 runs in a row. On Windows without a GPU, they skip or pass.NVIDIA and Intel, Windows: @akkadbakkad89 ran it on an RTX 3070 (driver 617.42) and an Intel UHD Graphics 630 in the same machine, on
main1698d1e.mainfails the three tests with the messages above. With this PR,sample_order,_recipe_depth_locationsand_planningpass, and_grid_referenceskips, as on the 3080.sample_orderand_recipe_depth_locationsfail the same way onmainand with this PR, for other reasons: a stencil read on the depth-pass case, and a device with only 1x1 sample location grids. This PR doesn't change those.NVIDIA, Windows: @SnekPolylepis ran it on an RTX 4080 (driver 617.42, Windows 11, WinLibs GCC 15.2.0), merged onto
main8c26eac.mainfailssample_order,_grid_referenceand_recipe_depth_locations. With this PR,sample_order,_recipe_depth_locationsand_planningpass, and_grid_referenceskips, as on the 3070 and 3080.Older layer, lavapipe: @xXPBSXx ran all 483 built
agc_driver_*_testsunder the Ubuntu 24.04 layer package (1.3.275) onmain950388b.mainreports00337only fromagc_driver_sample_order; with this change that test passes with no00337, and only fix(agc): give a depth stencil copy's layout barrier both aspects #9057's03320remains. One run.AMD, Windows: @JJenkx ran it on a Radeon RX 6700 XT (driver 26.10.1, Windows 11), merged onto
maina6dcea9 together with fix(shader): index tessellation attributes at a constant address with constants #8884 (tessellation only), 10 runs each.sample_orderand_recipe_depth_locationsfail 10 of 10 onmainand pass 10 of 10 with this PR._grid_referencefails 10 of 10 on both, with the device lost on submit before anything is read back (GPU fault,read invalid at 0x200000000), as on the 680M and gfx1036.NVIDIA, Windows: @lost9409 ran it on an RTX 5070 Ti (driver 610.88, Windows 11), on
maina6dcea9 with test(agc): align the array window test's texels at run time #8310's alignment fix. Onmain,sample_order,_grid_referenceand_recipe_depth_locationsfail, in the full suite and run alone. With this PR'sSampleOrder.cpp,sample_order,_recipe_depth_locationsand_planningpass, and_grid_referenceskips, as on the 3080, 3070 and 4090.NVIDIA and AMD, Windows: @wachi35676 ran it with #9057 on an RTX 5070 Ti (driver 617.42) and an AMD Radeon iGPU
1002:13c0(gfx1036, driver 32.0.21042.62), Windows 11, onmaina6dcea9, 3 runs each.sample_orderand_recipe_depth_locationsfail 3 of 3 onmainon both and pass 3 of 3 with the two PRs. On the iGPU,mainreads garbage depth through the invalid00337descriptor rather than zeros, which this PR also fixes._grid_referenceskips on the 5070 Ti. On the iGPU it still loses the device, but withAPS5_NO_GPL=1it passes 3 of 3, so that loss is in AMD's graphics pipeline library path, not here (AGC: agc_driver_sample_order_grid_reference loses the device on AMD's Windows driver with graphics pipeline libraries, passes with APS5_NO_GPL=1 #9507).AMD, Windows: @LeandroLP23 ran it on a Radeon 860M (RDNA 3.5,
1002:1114, driver 32.0.13058.8001, Windows 11, WinLibs GCC 15.2.0) merged ontomaine7f46f5, 3 runs per case with the AMD shader cache emptied:sample_orderand_recipe_depth_locationsfail onmainand pass with this PR (also with fix(agc): give a depth stencil copy's layout barrier both aspects #9057 and fix(agc): bind the sample order depth set after its pipeline #9503)._grid_reference's depth checks all pass with it; it still fails on 42 color samples of the exact path, off by one or two steps in one channel, the same color difference @SoRadGaming saw on RDNA 4, which is outside this PR.NVIDIA and AMD, Windows: @Amoenus ran it after #9057 merged, this head merged onto
maina23f8fc, on an RTX 5080 (610.62) and a Radeon gfx1036 (32.0.21036.18) under the Khronos layer:sample_orderand_recipe_depth_locationspass 3 of 3 on both,_planning3 of 3, and00337is gone._grid_referenceskips its custom-depth comparison on NVIDIA and still loses the device on AMD, as it does onmainin their earlier runs (AGC: agc_driver_sample_order_grid_reference loses the device on AMD's Windows driver with graphics pipeline libraries, passes with APS5_NO_GPL=1 #9507, which fix(agc): bind the sample order depth set after its pipeline #9503 addresses).Newer NVIDIA driver: the same RTX 4070 Ti on NVIDIA 615.71.09 (Ubuntu 26.04.1, kernel 7.0, GCC 15.2). In a full
ctestofmain38d3c08, the same three tests fail with the same three messages; nothing else in AGC fails. With this PR, all 4 sample order tests pass 3 of 3.lavapipe on the current host (Mesa 26.0.8-1ubuntu0.3, LLVM 21.1.8, Ubuntu 26.04.1), this PR merged onto
maina6dcea9: the 4sample_ordertests pass 3 of 3, and so do they on the RTX 4070 Ti (615.71.09) in the same build.AMD, Windows: @brummilab ran it on a Radeon RX 6600 XT (Navi 23, driver 32.0.21045.16010, Windows 11, WinLibs GCC 15.2.0), merged onto
main60465af, 3 runs:sample_orderand_recipe_depth_locationsfail onmainand pass with this PR._grid_referencestill fails with this PR alone (read invalid at 0x200000000, Vulkan result -4) and passes together with fix(agc): bind the sample order depth set after its pipeline #9503.NVIDIA and AMD, Linux, under the validation layer: @TechLevelZero ran it merged onto
main6cd36e6. On an NVIDIA A800 (610.57.04), across the 246 teststools/select_tests.pyselects,mainfails the three tests and reports 18VUID-VkWriteDescriptorSet-descriptorType-00337. With this PR,sample_orderand_recipe_depth_locationspass,_grid_referenceskips (77) because the A800 does not keep depth drawn at custom sample locations, and00337drops to 0. On a Radeon RX 9070 XT and a gfx1036 iGPU (RADV, Mesa 26.0.8), the three pass on both sides and the PR removes every00337(6, 14 and 12 onmain).Not tested: Intel on Linux.
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)mainearlier, this PR after fix(agc): give a depth stencil copy's layout barrier both aspects #9057); lavapipe (llvmpipe), WSL2 Ubuntu 24.04, layer 1.3.275 (@xXPBSXx; no Mesa version given); GitHub runners (lavapipe; Windows without a GPU) (@EagleBearerYS); AMD Radeon RX 9070 XT (RDNA 4), Adrenalin 26.8.1, Windows 11 (@SoRadGaming); AMD Radeon 860M (RDNA 3.5), driver 32.0.13058.8001, Windows 11 (@LeandroLP23)🤖 Generated with Claude Code