Vulkan 中的 _KHR 图像布局有何不同?

What is the difference with the _KHR image layouts in Vulkan?

在指定图像布局时,有相同图像布局的可选变体,上面带有 _KHR 后缀,例如:

VkImageLayout::VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
VkImageLayout::VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR
VkImageLayout::VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMA
VkImageLayout::VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR

为什么有两种不同的类型和其他类型?

从技术上讲,KHR-suffixed 枚举常量和相同的非 KHR-suffixed 枚举常量之间没有区别。也就是说,他们的是相等的

这仅取决于何时将常量(以及函数和结构)引入核心 Vulkan 版本规范。那是当 KHR 后缀被删除并且(在这种情况下)只是 KHR-suffixed 常量的别名。

这些特定常量首先在 Vulkan 扩展 VK_KHR_separate_depth_stencil_layouts 中引入,并在 Vulkan 1.2 中成为 核心

无论您是使用 KHR-suffixed 常量还是核心常量,主要是为了在您的代码中(对您代码的读者)传达您是否 use/enable 扩展 VK_KHR_separate_depth_stencil_layouts或者您是否至少使用 Vulkan 1.2。