Repository navigation
test(agc): match ANYPS5_GPU ignoring case in two more fixtures - #10050
Merged
oneandonlydean merged 2 commits intoOct 24, 2026
Merged
Conversation
12 tasks done
|
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.
|
…n device Seven AGC fixtures create their own Vulkan instance and take the first enumerated device or choose one by device type, without reading ANYPS5_GPU: PresentationPass, DepthPlaneGuestLayers, DepthStorage, DepthSurfaceLastWriter, OversizedDescriptorSets, PartiallyResidentSnapshot and SparseBufferHoles. With a name that matches no device they still pass on whichever GPU came first, so a run meant for one GPU can report results from another. They now pick their device through one shared helper with the driver's rule: among Vulkan 1.1 devices, the first whose name contains ANYPS5_GPU ignoring case, otherwise the first of the highest-ranked device type. A name that matches nothing throws with the device names, which these fixtures report as a skip, or as a failure under ANYPS5_REQUIRE_VULKAN. A CPU test covers the selection and the error message. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PooledBufferRange and NativeMultisampleDepth match ANYPS5_GPU against device names with std::strstr and std::string::find, which are case-sensitive, while the driver and docs/dev/ENVIRONMENT.md match it ignoring case. A request the driver accepts, such as ANYPS5_GPU=nvidia for an NVIDIA GPU, matches no device in them: PooledBufferRange keeps the first device and then refuses it with "selected device does not match ANYPS5_GPU", NativeMultisampleDepth finds no device. Both report a skip, or fail under ANYPS5_REQUIRE_VULKAN. They now pick their device through SelectFixturePhysicalDevice, with the driver's rule. That also changes two choices on machines with more than one device: without ANYPS5_GPU, PooledBufferRange ranks devices by type and needs Vulkan 1.1 instead of taking the first discrete one or the first device, and with a request NativeMultisampleDepth takes the first match instead of the best-ranked one, as the driver does. The selection CPU test covers the second case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SandstromPL
force-pushed
the
test/agc-pooled-buffer-gpu-case
branch
from
October 23, 2026 19:49
8990ce5 to
9d4909b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
ANYPS5_GPUis a case-insensitive substring of the device name: that is how the driver matches it (VulkanDevice.cpp), and howdocs/dev/ENVIRONMENT.mdanddocs/user/USAGE.mddescribe it. Two fixtures that open their own Vulkan device match it case-sensitively instead:PooledBufferRangeusesstd::strstr, from test(agc): honor GPU selection in pooled buffer checks #7104. With a request it matches nothing, it keeps the first device and then refuses it:selected device does not match ANYPS5_GPU.NativeMultisampleDepthusesstd::string::find. With a request it matches nothing, it finds no device:no Vulkan 1.1 device.So a request the driver accepts, such as
ANYPS5_GPU=nvidiaon an NVIDIA GPU, makes both report a skip, and ctest still prints100% tests passed. UnderANYPS5_REQUIRE_VULKANthey fail instead.Both now pick their device with #9253's
SelectFixturePhysicalDevice, which follows the driver's rule. This depends on #9253, which adds that helper; until #9253 merges, its commit shows here too.On machines with more than one device, this also changes two choices:
ANYPS5_GPU,PooledBufferRangenow ranks devices by type (discrete, integrated, virtual, then the rest) and needs Vulkan 1.1. Before, it took the first discrete device, or else the first device.NativeMultisampleDepthnow takes the first matching device instead of the best-ranked match. This is what the driver does, and since fix(agc): retire an unwritten native multisample depth surface on guest access #6727 the fixture also uses the driver's own device, so the two now pick the same GPU.As in #9253, the helper does not skip a device that lacks a graphics and compute queue, as the driver does. Neither fixture checked queues before.
The other four fixtures that select their own device (
Recorder,PerformanceOverlay,SampledCacheBudget,BdaDevice) already match ignoring case, so this PR leaves them as they are.Tested
Linux (Ubuntu 24.04, GCC 13.3), NVIDIA GeForce RTX 3050 Ti Laptop GPU (driver 580.178.04). The
mainruns are onmain0db47b2. The PR runs are on the samemainwith #9253 and this PR merged (a clean merge). All runs useANYPS5_REQUIRE_VULKAN=1andANYPS5_NO_SHADER_CACHE=1.The 14 tests are:
agc_driver_pooled_buffer_range;NativeMultisampleDepthtests (agc_driver_native_multisample_depth,agc_driver_native_depth_clears,agc_driver_native_depth_clear_refusals,agc_driver_native_depth_retirement);ANYPS5_GPUmainNVIDIAnvidia,geforce rtxagc_driver_pooled_buffer_range(selected device does not match ANYPS5_GPU) and the fourNativeMultisampleDepthtests (no Vulkan 1.1 device); withoutANYPS5_REQUIRE_VULKANthe same 5 are skippedno such device 1d3d154fmainno Vulkan 1.1 device whose name contains ANYPS5_GPU="no such device 1d3d154f"; devices: NVIDIA GeForce RTX 3050 Ti Laptop GPUVK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation(ctest -V), the 14 pass onmainand with this PR. The layer loads in both logs.VUID-VkDeviceCreateInfo-pNext-pNextlines, all in the fourNativeMultisampleDepthtests and already onmain.agc_driver_fixture_device_selectionpasses, with the new case.This machine has one GPU, so the choices between several devices are covered only by the CPU test.
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