Use the correct SPIR-V capabilities for viewport index in fsr tests
If api version used is < 1.2 then the SPIR-V capability
ShaderViewportIndexLayerEXT must be used, otherwise the SPIR-V
capabilities shaderOutputLayer and shaderOutputViewportIndex must be
used
Components: Vulkan
VK-GL-CTS issue: 4413
Affected tests:
dEQP-VK.fragment_shading_rate.*
Change-Id: I5a5e3b5c7f51eeb9e534c9bc56c7c2ec28184a53
diff --git a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp
index 9f7e9d3..c68ad4b 100644
--- a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp
+++ b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp
@@ -370,6 +370,8 @@
vss << "}\n";
programCollection.glslSources.add("vert") << glu::VertexSource(vss.str());
+ programCollection.glslSources.add("vert_1_2") << glu::VertexSource(vss.str()) << vk::ShaderBuildOptions(programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_5, 0u, true);
+
if (m_data.geometryShader)
{
@@ -1740,7 +1742,11 @@
};
Move<VkShaderModule> fragShader = createShaderModule(vk, device, m_context.getBinaryCollection().get("frag"), 0);
- Move<VkShaderModule> vertShader = createShaderModule(vk, device, m_context.getBinaryCollection().get("vert"), 0);
+ Move<VkShaderModule> vertShader;
+ if (m_context.contextSupports(VK_API_VERSION_1_2))
+ vertShader = createShaderModule(vk, device, m_context.getBinaryCollection().get("vert_1_2"), 0);
+ else
+ vertShader = createShaderModule(vk, device, m_context.getBinaryCollection().get("vert"), 0);
Move<VkShaderModule> geomShader;
if (m_data.geometryShader)
geomShader = createShaderModule(vk, device, m_context.getBinaryCollection().get("geom"), 0);