了解图像视图参数兼容性要求

Undestanding the image view parameter compatibility requirements

我在理解 VkImageViewCreateInfo 文档和 VkImageViewCreateInfo::viewType 中的 图像和图像视图参数兼容性要求 table 时遇到了一些问题。图像 VkImageViewCreateInfo 属性接缝足够灵活以创建,例如,二维图像的单个一维或一维阵列图像视图。我尝试从启用了验证层的 2D 图像创建 1D 图像视图,但没有收到任何警告(如果这是有效用法,我不知道将使用哪个 row/column)。

是否假设图像中的VkImageCreateInfo::imageType + VkImageCreateInfo::arrayLayers与视图中的VkImageViewCreateInfo::viewType之间存在一对一映射,即这个VkImageViewType 类型是否可以处理立方体贴图的特殊情况,否则 viewType 是否可以从图像类型中推断出来?如果不是,二维图像的一维视图如何工作?

您无法创建 2D 图像的 1D 视图,只有 table 中列出的组合才有效。

您正在查看的页面最近似乎没有重新生成,或者不包含 VK_KHR_maintenance1 扩展所做的修改。

暂时忽略该扩展和立方体贴图,imageType+arrayLayers 和 viewType 之间存在 1:1 对应关系并不完全正确。具有多层的 2D 图像可用于 2D 或 2D_ARRAY 视图类型,而只有一层的 2D 图像仍可用于 2D_ARRAY 视图类型。视图类型对应于 SPIR-V 资源类型,并且主要决定了需要多少坐标来标识视图中的位置。

然后就是立方体贴图的复杂性,如您所见。

使用 VK_KHR_maintenance1,您可以创建 3D 图像中切片子集的 2D 和 2D_ARRAY 视图。该扩展程序向 table 添加了两个新行来描述这种情况。