尝试为 3D 图像创建 2D 阵列图像视图时出现 Vulkan 验证错误

问题描述

我需要为 VK_IMAGE_VIEW_TYPE_2D_ARRAY 类型的图像创建一个 VK_IMAGE_TYPE_3D 图像视图,以便我可以在渲染过程中渲染到图像的每个切片(在几何着色器中选择层/切片).

从 Vulkan 规范中的这个 link 来看,该表似乎暗示(表的最后一个条目)如果我使用 VK_IMAGE_TYPE_3DarrayLayers = 1包括 { {1}},我应该能够使用 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT 创建一个具有多个图层(VK_IMAGE_VIEW_TYPE_2D_ARRAY 并且在我的例子中,图层数量是 3D 图像范围的深度)的图像视图).

设置所有这些参数后,我收到以下验证错误

layerCount >= 1

我不明白为什么它说 Validation layer (2;4096): Validation Error: [ VUID-VkImageViewCreateInfo-subresourceRange-01719 ] Object 0: handle = 0x410000000041,type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x1510053d | vkCreateImageView: pCreateInfo->subresourceRange.baseArrayLayer + .layerCount (= 0 + 32 = 32) is greater than the arrayLayers of the image when it was created (i.e. greater than 1). The Vulkan spec states: If subresourceRange.layerCount is not VK_REMAINING_ARRAY_LAYERS,subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created (https://vulkan.lunarg.com/doc/view/1.2.154.0/linux/1.2-extensions/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01719) Validation layer (2;4096): Validation Error: [ VUID-VkImageViewCreateInfo-subResourceRange-01021 ] Object 0: handle = 0x410000000041,type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x835d4826 | vkCreateImageView(): pCreateInfo->viewType VK_IMAGE_VIEW_TYPE_2D_ARRAY is not compatible with image type VK_IMAGE_TYPE_3D. The Vulkan spec states: subresourceRange and viewType must be compatible with the image,as described in the compatibility table (https://vulkan.lunarg.com/doc/view/1.2.154.0/linux/1.2-extensions/vkspec.html#VUID-VkImageViewCreateInfo-subResourceRange-01021) 与图像类型 VK_IMAGE_VIEW_TYPE_2D_ARRAY 不兼容,因为我为图像提供了 VK_IMAGE_TYPE_3D 标志......加上规格表说我可以这样做...

我不知道也许我在规范中误解了一些东西。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)