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

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

如何解决尝试为 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 举报,一经查实,本站将立刻删除。