Add check if usage is supported for image format
authorMarcin Kańtoch <marcin.kantoch@amd.com>
Mon, 23 Sep 2019 16:41:58 +0000 (18:41 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 1 Oct 2019 09:51:50 +0000 (05:51 -0400)
dEQP-VK.image.swapchain_mutable* tests do not check
if the required usage is supported for image format
and image view format.

Components: Vulkan

Affects:
dEQP-VK.image.swapchain_mutable*

VK-GL-CTS issue: 2015

Change-Id: I6680d9e6ef1b03462afa01349b6f34d82ef40a17

external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp

index c40b219..ac0e814 100644 (file)
@@ -2131,6 +2131,25 @@ tcu::TestStatus testSwapchainMutable(Context& context, CaseDef caseDef)
 
        const VkImageUsageFlags                         imageUsage = getImageUsageForTestCase(caseDef);
 
+       {
+               VkImageFormatProperties properties;
+               VkResult                                result;
+
+               result = vki.getPhysicalDeviceImageFormatProperties(physDevice, caseDef.imageFormat, getImageType(caseDef.imageType), VK_IMAGE_TILING_OPTIMAL, imageUsage, 0, &properties);
+
+               if (result == VK_ERROR_FORMAT_NOT_SUPPORTED)
+               {
+                       TCU_THROW(NotSupportedError, "Image format is not supported for required usage");
+               }
+
+               result = vki.getPhysicalDeviceImageFormatProperties(physDevice, caseDef.viewFormat, getImageType(caseDef.imageType), VK_IMAGE_TILING_OPTIMAL, imageUsage, 0, &properties);
+
+               if (result == VK_ERROR_FORMAT_NOT_SUPPORTED)
+               {
+                       TCU_THROW(NotSupportedError, "Image view format is not supported for required usage");
+               }
+       }
+
        const VkSurfaceCapabilitiesKHR          capabilities = getPhysicalDeviceSurfaceCapabilities(vki,
                                                                                                                                                                                        physDevice,
                                                                                                                                                                                        *surface);
@@ -2140,8 +2159,8 @@ tcu::TestStatus testSwapchainMutable(Context& context, CaseDef caseDef)
 
        // Check support for requested formats by swapchain surface
        const vector<VkSurfaceFormatKHR>        surfaceFormats = getPhysicalDeviceSurfaceFormats(vki,
-                                                                                                                                                                                physDevice,
-                                                                                                                                                                                *surface);
+                                                                                                                                                                        physDevice,
+                                                                                                                                                                        *surface);
 
        const VkSurfaceFormatKHR*                       surfaceFormat = DE_NULL;
        const VkFormat*                                         viewFormat = DE_NULL;