Fix dEQP-VK.image.mutable.*srgb* validation errors
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Tue, 28 Sep 2021 12:32:25 +0000 (14:32 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Thu, 30 Sep 2021 07:31:54 +0000 (07:31 +0000)
The tests were not checking that the image format was
supported before creating the image.

Components: Vulkan
VK-GL-CTS issue: 3143

Affected tests:

   dEQP-VK.image.mutable.*

Change-Id: Ia42ccc815456ac09c4ffd44c63a0c65db8a9f1ec
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp

index 6593c74..917165e 100644 (file)
@@ -1056,6 +1056,18 @@ void UploadDownloadExecutor::run(Context& context, VkBuffer buffer)
        const VkImageUsageFlags         imageUsage      = getImageUsageForTestCase(m_caseDef);
        const VkImageCreateFlags        imageFlags      = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | (m_haveMaintenance2 ? VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR : 0);
 
+       VkImageFormatProperties properties;
+       if ((context.getInstanceInterface().getPhysicalDeviceImageFormatProperties(context.getPhysicalDevice(),
+                                                                                                                                                          m_caseDef.imageFormat,
+                                                                                                                                                          getImageType(m_caseDef.imageType),
+                                                                                                                                                          VK_IMAGE_TILING_OPTIMAL,
+                                                                                                                                                          imageUsage,
+                                                                                                                                                          imageFlags,
+                                                                                                                                                          &properties) == VK_ERROR_FORMAT_NOT_SUPPORTED))
+       {
+               TCU_THROW(NotSupportedError, "Format not supported");
+       }
+
        m_imageHolder                                                   = makeImage(m_vk, m_device, imageFlags, getImageType(m_caseDef.imageType), m_caseDef.imageFormat, m_caseDef.viewFormat,
                                                                                                                m_caseDef.isFormatListTest, m_caseDef.size, 1u, m_caseDef.numLayers, imageUsage);
        m_image                                                                 = *m_imageHolder;