【问题标题】:Vulkan swapchain format UNORM to SRGB using VK_KHR_swapchain_mutable_format?使用 VK_KHR_swapchain_mutable_format 的 Vulkan 交换链格式 UNORM 到 SRGB?
【发布时间】:2021-06-01 01:26:20
【问题描述】:

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

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 

VkImageFormatListCreateInfoVK_VERSION_1_2提供

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

正如我在 https://vulkan.gpuinfo.org/listextensions.phpVK_KHR_swapchain_mutable_format 上看到的,只有 60% 的 Vulkan GPU 支持...所以最好写“手动转换”?

【问题讨论】:

  • 设备是否只支持UNORM?你不能要求 SRGB 代替吗?
  • 询问 SRGB 是否符合 Vulkan 规范,Vulkan 返回 UNORM 或 SRGB 或其他格式的交换链图像格式,如果我询问 SRGB,一切都会正常工作,但验证层不满意

标签: vulkan


【解决方案1】:

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 中被提升为核心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2016-04-01
    相关资源
    最近更新 更多