微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 VK_KHR_swapchain_mutable_format 将 Vulkan 交换链格式 UNORM 转换为 SRGB?

如何解决使用 VK_KHR_swapchain_mutable_format 将 Vulkan 交换链格式 UNORM 转换为 SRGB?

创建格式错误的交换链图像显然会导致以下结果:

vkCreateImageView() format VK_FORMAT_B8G8R8A8_UnorM differs from VkImage 
0x40000000004[] format VK_FORMAT_B8G8R8A8_SRGB.  Formats MUST be IDENTICAL unless 
VK_IMAGE_CREATE_MUTABLE_FORMAT BIT was set on image creation.

VK_KHR_swapchain_mutable_format 需要 Vulkan 1.0

结果如下:

The Vulkan spec states: If flags contains VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR 
then the pNext chain must include a VkImageFormatListCreateInfo structure with a viewFormatCount 
greater than zero and pViewFormats must have an element equal to imageFormat 

VkImageFormatListCreateInfo 由 VK_VERSION_1_2 提供

问题 - Vulkan 1.0 扩展如何需要 1.2 结构? (也许我错过了一些idk)

正如我在 https://vulkan.gpuinfo.org/listextensions.php VK_KHR_swapchain_mutable_format 上看到的那样,只有 60% 的 Vulkan GPU 支持...那么更好地编写“手动转换”?

解决方法

VkImageFormatListCreateInfo 由 VK_VERSION_1_2 提供

您已链接到 Vulkan 1.2 规范。所以当然它引用了本身。有问题的扩展是 1.2 的核心部分,VkImageFormatListCreateInfo 也是如此。

实际的 extension 引用了另一个扩展名:

需要 VK_KHR_image_format_list

它定义了交换链格式扩展使用的 VkImageFormatListCreateInfoKHR 结构。这个结构当然等同于核心 1.2 结构 VkImageFormatListCreateInfo,因为“image_format_list”在 Vulkan 1.2 中被提升为核心。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。