Add storageBuffer16BitAccess to mandatory features
authorSpencer Fricke <s.fricke@samsung.com>
Tue, 21 Apr 2020 15:57:59 +0000 (08:57 -0700)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 9 Jun 2020 12:38:46 +0000 (08:38 -0400)
If VK_KHR_16bit_storage is supported there needs to be support
for storageBuffer16BitAccess

https://gitlab.khronos.org/vulkan/vulkan/merge_requests/3709
This CL updates the test to align with the MR.

Components: Vulkan

Affects: dEQP-VK.info.device_mandatory_features

VK-GL-CTS issue: 2323

Change-Id: Ife41e6d69d1149fe01f4dcb570bf80c82d8f8dd3

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

index 460feee..8f571e4 100644 (file)
@@ -16,6 +16,16 @@ bool checkMandatoryFeatures(const vkt::Context& context)
        coreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
        void** nextPtr = &coreFeatures.pNext;
 
+       vk::VkPhysicalDevice16BitStorageFeaturesKHR physicalDevice16BitStorageFeaturesKHR;
+       deMemset(&physicalDevice16BitStorageFeaturesKHR, 0, sizeof(physicalDevice16BitStorageFeaturesKHR));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
+       {
+               physicalDevice16BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice16BitStorageFeaturesKHR>();
+               *nextPtr = &physicalDevice16BitStorageFeaturesKHR;
+               nextPtr  = &physicalDevice16BitStorageFeaturesKHR.pNext;
+       }
+
        vk::VkPhysicalDevice8BitStorageFeaturesKHR physicalDevice8BitStorageFeaturesKHR;
        deMemset(&physicalDevice8BitStorageFeaturesKHR, 0, sizeof(physicalDevice8BitStorageFeaturesKHR));
 
@@ -989,6 +999,15 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
+       {
+               if ( physicalDevice16BitStorageFeaturesKHR.storageBuffer16BitAccess == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) )
        {
                if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) )
index bed79e6..6da550c 100644 (file)
@@ -75,6 +75,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 )
+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 )
 VkPhysicalDeviceLineRasterizationFeaturesEXT                           FEATURES ( rectangularLines bresenhamLines smoothLines stippledRectangularLines stippledBresenhamLines stippledSmoothLines )    REQUIREMENTS ( VK_EXT_line_rasterization )