Skip to content

Sampled-cache default fixture passes while creating multisampled storage images without enabling the feature #7569

Closed

Description

@Amoenus

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 ignores ANYPS5_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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions