Repository navigation
Description
Current proposed fix
#7573 head fd872264e addresses this by enabling the supported feature normally and leaving unsupported typed storage-MSAA placeholders unavailable, preserving their shader type and existing refusal behavior. In our frozen main91ddd-based composition, the preceding default case reproduced six validation errors per process on both actual GPUs; the corrected composition passed21 NVIDIA +21 AMD GPU executions and6 CPU executions with zero validation errors/warnings. Source pins, matrix and limits are in the updated review. No title-unblock or standalone-head claim; no duplicate fix/PR was opened. The original reproduction below remains useful until the correction lands.
Reproduction
On unchanged main a62c724c3873b1dee9c6ee5af7a420e924bd9d25, build the full runtime and agc_driver_sampled_cache_budget_tests, enable VK_LAYER_KHRONOS_validation, then run:
ANYPS5_GPU=NVIDIA ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1
ctest --test-dir <build> -V --timeout 30 -R '^agc_driver_sampled_cache_budget$'
The behavioral assertions pass, but the actual validation layer reports six errors in this one execution:
Validation Error: [ VUID-VkImageCreateInfo-usage-00968 ]
vkCreateImage(): pCreateInfo->usage includes VK_IMAGE_USAGE_STORAGE_BIT and pCreateInfo->samples is VK_SAMPLE_COUNT_4_BIT, but shaderStorageImageMultisample feature was not enabled.
This is not a validation-layer discovery failure: the log records the SDK validation DLL being inserted. It is also not introduced by our pending GPU-selector correction: the unchanged-main run reproduces the same six errors on NVIDIA. The default mode on our selector-only branch also passes its assertions while reporting six errors per execution, 3/3 on actual NVIDIA and 3/3 on actual AMD.
Public-source finding
In Device, shaderStorageImageMultisample is enabled only when resourceImages is true. main() passes resources, which is false for the default mode. The default mode's releasedTests() constructs PlaceholderImages; PlaceholderImages.cpp selects shapes using physical format/sample support and then creates their images on the logical device. Physical support does not imply that the feature was enabled on that logical device.
The memory and three resource-cache modes in our focused matrix do not emit this VUID. The new device-selection-only regression does not emit it either. This report concerns the default fixture; no game failure or production-driver regression is claimed.
Environment and scope
- Windows 11 Enterprise 26200; WinLibs GCC 15.2.0 r7, Release; Vulkan SDK validation layer 1.4.363.0.
- NVIDIA GeForce RTX 5080 (
10de:2c02), driver 610.62: unchanged main and selector-only branch. - AMD Radeon(TM) Graphics (
1002:13c0), driver 32.0.21036.18: selector-only branch, with the fixture's own physical-device identity recorded. Main's legacy fixture ignoresANYPS5_GPU, so no unchanged-main AMD attribution is made. - Linux/lavapipe behavioral checks pass; its validation layer is not installed, so no Linux validation-layer claim is made.
A separate fixture correction should enable the supported feature for the default path before creating its multisampled storage placeholders, with explicit handling on devices that cannot support them. That correction is not included in the GPU-selector work. Searches for the exact VUID and the sampled-fixture feature gap found no matching report; #7487 mentions the same VUID in a different tessellation fixture, and #6492 added the released-texture regression exercised here.
AI-assisted investigation: yes (Codex).
Activity