Fix 64-bit atomics mandatory feature checks
authorRicardo Garcia <rgarcia@igalia.com>
Tue, 22 Jun 2021 09:16:34 +0000 (11:16 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 29 Jun 2021 07:15:15 +0000 (07:15 +0000)
Require shaderBufferInt64Atomics from VkPhysicalDeviceVulkan12Features
if the same feature from VkPhysicalDeviceShaderAtomicInt64FeaturesKHR is
supported.

Require shaderInt64 if any of the 64-bit integer atomic features is
supported.

Affected tests:
dEQP-VK.info.device_mandatory_features

VK-GL-CTS issue: 2976
Components: Vulkan

Change-Id: I95b2e90aec2d8d04bdbbfcdf60989c78a952a9da

external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl
external/vulkancts/scripts/src/mandatory_features.txt

index 3f4f320..cd9b101 100644 (file)
@@ -1206,6 +1206,15 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+       {
+               if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
        {
                if ( physicalDevice16BitStorageFeaturesKHR.storageBuffer16BitAccess == VK_FALSE )
@@ -1323,6 +1332,51 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
+       {
+               if ( coreFeatures.features.shaderInt64 == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderInt64 not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) )
        {
                if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE )
index 5787d15..deecb2d 100644 (file)
@@ -78,6 +78,7 @@ VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT                     FEATURES ( vertexAttributeIn
 VkPhysicalDeviceFragmentDensityMapFeaturesEXT                          FEATURES ( fragmentDensityMap )                                                                 REQUIREMENTS ( VK_EXT_fragment_density_map )
 VkPhysicalDeviceShaderClockFeaturesKHR                                         FEATURES ( shaderSubgroupClock )                                                                REQUIREMENTS ( VK_KHR_shader_clock )
 VkPhysicalDeviceShaderAtomicInt64FeaturesKHR                           FEATURES ( shaderBufferInt64Atomics )                                                   REQUIREMENTS ( VK_KHR_shader_atomic_int64 )
+VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderBufferInt64Atomics )                                                   REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
 VkPhysicalDevice16BitStorageFeaturesKHR                                        FEATURES ( storageBuffer16BitAccess )                                                   REQUIREMENTS ( VK_KHR_16bit_storage )
 VkPhysicalDeviceShaderFloat16Int8Features                                      FEATURES ( shaderFloat16 shaderInt8 )                                                   REQUIREMENTS ( VK_KHR_shader_float16_int8 )
 VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT                     FEATURES ( fragmentShaderSampleInterlock fragmentShaderPixelInterlock fragmentShaderShadingRateInterlock )                                              REQUIREMENTS ( VK_EXT_fragment_shader_interlock )
@@ -91,6 +92,11 @@ VkPhysicalDeviceVulkan12Features                                                     FEATURES ( shaderOutputViewportIndex )
 VkPhysicalDeviceVulkan12Features                                                       FEATURES ( shaderOutputLayer )                                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" VK_EXT_shader_viewport_index_layer )
 VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR           FEATURES ( shaderTerminateInvocation )                                                  REQUIREMENTS ( VK_KHR_shader_terminate_invocation )
 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT                      FEATURES ( shaderImageInt64Atomics )                                                    REQUIREMENTS ( VK_EXT_shader_image_atomic_int64 )
+VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( VK_EXT_shader_image_atomic_int64 )
+VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderBufferInt64Atomics )
+VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceVulkan12Features.shaderBufferInt64Atomics )
+VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceShaderAtomicInt64FeaturesKHR.shaderSharedInt64Atomics )
+VkPhysicalDeviceFeatures                                                                       FEATURES ( shaderInt64 )                                                                                REQUIREMENTS ( physicalDeviceVulkan12Features.shaderSharedInt64Atomics )
 VkPhysicalDevice4444FormatsFeaturesEXT                                         FEATURES ( formatA4R4G4B4 )                                                                             REQUIREMENTS ( VK_EXT_4444_formats )
 VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR       FEATURES ( shaderZeroInitializeWorkgroupMemory )                                REQUIREMENTS ( VK_KHR_zero_initialize_workgroup_memory )
 VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR       FEATURES ( workgroupMemoryExplicitLayout workgroupMemoryExplicitLayoutScalarBlockLayout workgroupMemoryExplicitLayout8BitAccess workgroupMemoryExplicitLayout16BitAccess )                  REQUIREMENTS ( VK_KHR_workgroup_memory_explicit_layout )