KhronosGroup / KhronosGroup/Vulkan-Samples

pipeline_cache sample fails with "SPIRV File Too Small" exception

Open
#1,446 1 comment 0 reactions 1 assignee Claimed by @SaschaWillems View on GitHub
bug framework
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.