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:
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.
- 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.
- This results in an empty
std::vector being passed to SPIRVReflection::reflect_shader_resources() in the ShaderModule constructor.
- 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
The
pipeline_cachesample fails with the following error messages.I believe there's a type confusion issue in the shader module creation flow:
ResourceReplay::create_shader_module()creates aShaderSourceobject from GLSL source code read from a string stream. Since the source originates from a string stream, filename in theShaderSourceobject is not set.ShaderModuleconstructor incorrectly assumes thisShaderSourceobject contains SPIR-V binary and it attempts to read it from the filename it gets from the givenShaderSourceobject, which is empty.std::vectorbeing passed toSPIRVReflection::reflect_shader_resources()in theShaderModuleconstructor.Reproduction steps:
OS: Arch Linux
Drivers: NVIDIA 580.105.08
Built
Vulkan-Samplesfrom8e966ebfad343112286ed705eca6be4472dd85df