Skip to content

pipeline_cache sample fails with "SPIRV File Too Small" exception #1446

@dkorkmazturk

Description

@dkorkmazturk

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.
  2. 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.
  3. This results in an empty std::vector being passed to SPIRVReflection::reflect_shader_resources() in the ShaderModule constructor.
  4. 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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingframeworkThis is relevant to the framework

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions