Add check if usage is supported for image format
[platform/upstream/VK-GL-CTS.git] / 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;