Allowing spirv1.4 shaders compilation
authorMohd Faisal <mohd.faisal@arm.com>
Wed, 26 Aug 2020 10:51:25 +0000 (11:51 +0100)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Tue, 19 Oct 2021 16:09:34 +0000 (12:09 -0400)
Components: Vulkan

VK-GL-CTS Issue: 2560

Affects: dEQP-VK.spirv_assembly.instruction.spirv1p4.*

Change-Id: Icbfe3ad623da98968eee401d08df5ed6b3b2db1e
(cherry picked from commit c96d524d079fdada26b3548effd1539174415be6)

external/vulkancts/modules/vulkan/amber/vktAmberTestCase.cpp

index 299752b..e17d3fd 100644 (file)
@@ -209,37 +209,40 @@ void AmberTestCase::initPrograms(vk::SourceCollections& programCollection) const
                }
                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");