附件上的Vulkan Framebuffer冲突图像使用情况



当我尝试通过vkCreateFramebuffer创建framebuffer时,我在调试报告回调中会出现有关VkFramebufferCreateInfo附件中冲突的错误。它说我的图像视图在他们的图像使用情况下有冲突,而我不希望此错误,因为通常,其中一个必须是颜色附件,另一个必须是深度模板附件。

确切的错误消息是:

framebuffer附件(0)与image的image_usage标志发生冲突(vk_image_usage_depth_stence_tencil_attachment_bit)。

我什至已经看过其他示例,它们完全相同。

我的源代码(Rust):
https://github.com/hossein-noroozpour/vulkust/blob/master/src/src/vulkan/swapchain.rs#l218

框架中图像的用法由RenderPass定义。这意味着,如果附件0用作RenderPass中的深度/模板,则需要使用VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT

创建图像

这意味着您需要仔细检查您传递给RenderPass创建的子通道描述,并确保您没有意外使用附件0作为深度。

好吧,我可以解释错误的工作方式。如有疑问,请挖掘层源代码:
https://github.com/khronosgroup/vulkan-loaderandvalidationlayers/tree/master/layers

它将在vkCreateFramebuffer()上发出。

它将检查提供的渲染通行证及其子通过与图像视图。

如果至少使用一次VkImageView作为输入附件,则希望使用VkImageView创建CC_7的VkImage

类似于VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT的颜色附件,以及带有VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT的DS附件。

检查您是否符合这些要求。
图层错误也是一回事。如果您正在运行最新的错误并确认错误,则报告属于这里:
https://github.com/khronosgroup/vulkan-loaderandvalidationlayers/issues

更新(查看源代码后):
我看不到您设置depth_reference.attachment的位置。您将其固定在0上,因此这可能意味着您将颜色附件分配给了子通道。

最新更新