-
Notifications
You must be signed in to change notification settings - Fork 458
Description
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;
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