KhronosGroup / KhronosGroup/Vulkan-Samples
pipeline_cache sample fails with "SPIRV File Too Small" exception
- Dominant language
- C++
- Stars
- 5.4k
- Forks
- 835
- Avg merge
- 2h 16m
- Merged PRs (30d)
- 1
Description
The `pipeline_cache` sample fails with the following error messages.
```
[error] Error Message: SPIRV file too small.
[error] Failed when running application Pipeline Management
```
I believe there's a type confusion issue in the shader module creation flow:
1. `ResourceReplay::create_shader_module()` creates a `ShaderSource` object from GLSL source code read from a string stream. Since the source originates from a string stream, filename in the `ShaderSource` object is not set.
3. The `ShaderModule` constructor incorrectly assumes this `ShaderSource` object contains SPIR-V binary and it attempts to read it from the filename it gets from the given `ShaderSource` object, which is empty.
5. This results in an empty `std::vector` being passed to `SPIRVReflection::reflect_shader_resources()` in the `ShaderModule` constructor.
6. The reflection function fails with "SPIRV file too small" exception deeper down in the call stack when given an empty vector.
### Reproduction steps:
```
./vulkan_samples sample pipeline_cache
```
OS: Arch Linux
Drivers: NVIDIA 580.105.08
Built `Vulkan-Samples` from `8e966ebfad343112286ed705eca6be4472dd85df`
Contributor guide
Assessment
This issue has not been assessed yet.