Skip to content

vkCreateRayTracingPipelinesKHR 37x slower with validation despite check_shaders=false #10955

@mklefrancois

Description

@mklefrancois

Environment:

  • OS: Windows 11
  • GPU and driver version: NVIDIA RTX 3500 Ada Generation Laptop GPU, (580.368)
  • SDK: 1.4.328
  • Options enabled: Standard

The Issue

Calling vkCreateRayTracingPipelinesKHR with validation on is very slow compared to having it off.

  • VVL on : 5543.015 ms
  • VVL off: 148.288 ms

This is happening even with the following options

    validation.check_shaders         = VK_FALSE;
    validation.check_shaders_caching = VK_FALSE;
Image

Expected behavior

If the above options aren't preventing validation of the pipeline creation, a new option should be added to skip shader validation during pipeline creation. Alternatively, there might be a performance issue in this part of the validation layer, as the overhead appears to scale exponentially with shader complexity.

Notes

The application uses pipeline caches, but whether we use them or not has very little effect when validation is on. The VVL's overhead takes over the driver compilation.

Please note that the shader sent to pipeline creation is an über-shader that handles the glTF PBR shading model and all its extensions. Small shaders seem fine, but as this shader grows larger, validation becomes problematic.

This can be tested using the following link: https://github.com/nvpro-samples/vk_gltf_renderer.
vk_gltf_renderer --vvl [0|1] can be used to activate or disable the Vulkan validation layers. In debug mode, VVL is on by default and off in release mode.

This is the SPIRV file
gltf_pathtrace.slang.zip

Metadata

Metadata

Assignees

Labels

RTRay Tracing

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions