TRACE("(VkPhysicalDevice physicalDevice = 0x%X, VkFormat format = %d, VkImageType type = %d, VkImageTiling tiling = %d, VkImageUsageFlags usage = %d, VkImageCreateFlags flags = %d, VkImageFormatProperties* pImageFormatProperties = 0x%X)",
physicalDevice, (int)format, (int)type, (int)tiling, usage, flags, pImageFormatProperties);
+ VkFormatProperties properties;
+ vk::Cast(physicalDevice)->getFormatProperties(format, &properties);
+
+ switch (tiling)
+ {
+ case VK_IMAGE_TILING_LINEAR:
+ if (properties.linearTilingFeatures == 0) return VK_ERROR_FORMAT_NOT_SUPPORTED;
+ break;
+
+ case VK_IMAGE_TILING_OPTIMAL:
+ if (properties.optimalTilingFeatures == 0) return VK_ERROR_FORMAT_NOT_SUPPORTED;
+ break;
+
+ default:
+ UNIMPLEMENTED();
+ }
+
vk::Cast(physicalDevice)->getImageFormatProperties(format, type, tiling, usage, flags, pImageFormatProperties);
return VK_SUCCESS;