}
else if (shader.format == amber::kShaderFormatGlsl)
{
+ vk::SpirvVersion target = m_asm_options.targetVersion;
+ bool allowSpirv14 = (target == vk::SpirvVersion::SPIRV_VERSION_1_4);
+
switch (shader.type)
{
case amber::kShaderTypeCompute:
programCollection.glslSources.add(shader.shader_name)
<< glu::ComputeSource(shader.shader_source)
- << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_0, 0u);
+ << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, target, 0u, allowSpirv14);
break;
case amber::kShaderTypeGeometry:
programCollection.glslSources.add(shader.shader_name)
<< glu::GeometrySource(shader.shader_source)
- << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_0, 0u);
+ << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, target, 0u, allowSpirv14);
break;
case amber::kShaderTypeFragment:
programCollection.glslSources.add(shader.shader_name)
<< glu::FragmentSource(shader.shader_source)
- << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_0, 0u);
+ << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, target, 0u, allowSpirv14);
break;
case amber::kShaderTypeVertex:
programCollection.glslSources.add(shader.shader_name)
<< glu::VertexSource(shader.shader_source)
- << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_0, 0u);
+ << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, target, 0u, allowSpirv14);
break;
case amber::kShaderTypeTessellationControl:
programCollection.glslSources.add(shader.shader_name)
<< glu::TessellationControlSource(shader.shader_source)
- << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_0, 0u);
+ << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, target, 0u, allowSpirv14);
break;
case amber::kShaderTypeTessellationEvaluation:
programCollection.glslSources.add(shader.shader_name)
<< glu::TessellationEvaluationSource(shader.shader_source)
- << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_0, 0u);
+ << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, target, 0u, allowSpirv14);
break;
case amber::kShaderTypeMulti:
DE_ASSERT(false && "Multi shaders not supported");