• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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