From 8764b9c35336aa1b960062369036d692ca534c6f Mon Sep 17 00:00:00 2001 From: Ricardo Garcia Date: Mon, 7 Jun 2021 10:23:16 +0200 Subject: [PATCH] Check shader image atomic mandatory features Make sure implementations expose shaderImage*Atomics if sparseImage*Atomics is supported. Affected tests: dEQP-VK.info.device_mandatory_features Components: Vulkan VK-GL-CTS issue: 2957 Change-Id: I7d07f807d5afddf9979f862d455029d23fa6c904 --- .../framework/vulkan/vkMandatoryFeatures.inl | 37 ++++++++++++++++++++++ .../vulkancts/scripts/src/mandatory_features.txt | 3 ++ 2 files changed, 40 insertions(+) diff --git a/external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl b/external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl index 5a35da8..3f4f320 100644 --- a/external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl +++ b/external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl @@ -306,6 +306,16 @@ bool checkMandatoryFeatures(const vkt::Context& context) nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.pNext; } + vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT physicalDeviceShaderAtomicFloatFeaturesEXT; + deMemset(&physicalDeviceShaderAtomicFloatFeaturesEXT, 0, sizeof(physicalDeviceShaderAtomicFloatFeaturesEXT)); + + if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) ) + { + physicalDeviceShaderAtomicFloatFeaturesEXT.sType = getStructureType(); + *nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT; + nextPtr = &physicalDeviceShaderAtomicFloatFeaturesEXT.pNext; + } + vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR physicalDeviceShaderAtomicInt64FeaturesKHR; deMemset(&physicalDeviceShaderAtomicInt64FeaturesKHR, 0, sizeof(physicalDeviceShaderAtomicInt64FeaturesKHR)); @@ -1709,6 +1719,33 @@ bool checkMandatoryFeatures(const vkt::Context& context) } } + if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) && physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) + { + if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE ) + { + log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage; + result = false; + } + } + + if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) + { + if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics == VK_FALSE ) + { + log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32Atomics not supported" << tcu::TestLog::EndMessage; + result = false; + } + } + + if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_atomic_float")) && physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) + { + if ( physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd == VK_FALSE ) + { + log << tcu::TestLog::Message << "Mandatory feature shaderImageFloat32AtomicAdd not supported" << tcu::TestLog::EndMessage; + result = false; + } + } + return result; } diff --git a/external/vulkancts/scripts/src/mandatory_features.txt b/external/vulkancts/scripts/src/mandatory_features.txt index 9bd7889..5787d15 100644 --- a/external/vulkancts/scripts/src/mandatory_features.txt +++ b/external/vulkancts/scripts/src/mandatory_features.txt @@ -135,3 +135,6 @@ VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT FEATURES ( ycbcr2plane444Form VkPhysicalDeviceExtendedDynamicState2FeaturesEXT FEATURES ( extendedDynamicState2 ) REQUIREMENTS ( VK_EXT_extended_dynamic_state2 ) VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE FEATURES ( mutableDescriptorType ) REQUIREMENTS ( VK_VALVE_mutable_descriptor_type ) VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT FEATURES ( globalPriorityQuery ) REQUIREMENTS ( VK_EXT_global_priority_query ) +VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT FEATURES ( shaderImageInt64Atomics ) REQUIREMENTS ( VK_EXT_shader_image_atomic_int64 physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ) +VkPhysicalDeviceShaderAtomicFloatFeaturesEXT FEATURES ( shaderImageFloat32Atomics ) REQUIREMENTS ( VK_EXT_shader_atomic_float physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ) +VkPhysicalDeviceShaderAtomicFloatFeaturesEXT FEATURES ( shaderImageFloat32AtomicAdd ) REQUIREMENTS ( VK_EXT_shader_atomic_float physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ) -- 2.7.4