1From ed3794c975d284a5453ae33ae59dd1541a9eb804 Mon Sep 17 00:00:00 2001 2From: Rob Clark <robdclark@chromium.org> 3Date: Sat, 27 Jan 2024 10:57:28 -0800 4Subject: [PATCH] Use subgroups helper in derivate tests 5 6For the tests that need subgroup ops, use the existing subgroups helper, 7rather than open-coding the same checks. 8--- 9 .../vktShaderRenderDerivateTests.cpp | 23 ++++--------------- 10 1 file changed, 5 insertions(+), 18 deletions(-) 11 12diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp 13index a8bb5a3ba7..3253505958 100644 14--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp 15+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp 16@@ -31,6 +31,7 @@ 17 18 #include "vktShaderRenderDerivateTests.hpp" 19 #include "vktShaderRender.hpp" 20+#include "subgroups/vktSubgroupsTestsUtils.hpp" 21 #include "vkImageUtil.hpp" 22 #include "vkQueryUtil.hpp" 23 24@@ -707,28 +708,14 @@ tcu::TestStatus TriangleDerivateCaseInstance::iterate (void) 25 { 26 const std::string errorPrefix = m_definitions.inNonUniformControlFlow ? "Derivatives in dynamic control flow" : 27 "Manual derivatives with subgroup operations"; 28- if (!m_context.contextSupports(vk::ApiVersion(0, 1, 1, 0))) 29- throw tcu::NotSupportedError(errorPrefix + " require Vulkan 1.1"); 30- 31- vk::VkPhysicalDeviceSubgroupProperties subgroupProperties; 32- deMemset(&subgroupProperties, 0, sizeof(subgroupProperties)); 33- subgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES; 34- 35- vk::VkPhysicalDeviceProperties2 properties2; 36- deMemset(&properties2, 0, sizeof(properties2)); 37- properties2.sType = vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; 38- properties2.pNext = &subgroupProperties; 39- 40- m_context.getInstanceInterface().getPhysicalDeviceProperties2(m_context.getPhysicalDevice(), &properties2); 41+ if (!subgroups::areQuadOperationsSupportedForStages(m_context, VK_SHADER_STAGE_FRAGMENT_BIT)) 42+ throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT"); 43 44- if (subgroupProperties.subgroupSize < 4) 45+ if (subgroups::getSubgroupSize(m_context) < 4) 46 throw tcu::NotSupportedError(errorPrefix + " require subgroupSize >= 4"); 47 48- if ((subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_BALLOT_BIT) == 0) 49+ if (!subgroups::isSubgroupFeatureSupportedForDevice(m_context, VK_SUBGROUP_FEATURE_BALLOT_BIT)) 50 throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_BALLOT_BIT"); 51- 52- if (isSubgroupFunc(m_definitions.func) && (subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_QUAD_BIT) == 0) 53- throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT"); 54 } 55 56 setup(); 57