隐式子通道依赖和障碍
implicit subpass dependency and barriers
我必须将颜色附件复制到缓冲区中。在渲染过程结束和复制操作之间是否需要图像内存屏障,以确保传输的可见性?
渲染通道有一个带有单个附件的子通道。 VkAttachmentDescription.finalLayout
不同于 VkAttachmentReference.layout
,因此确实存在 dstSubpass = VK_SUBPASS_EXTERNAL
的隐式子通道依赖关系。
我的困惑来自对这种隐式外部依赖的描述:它有一个 dstAccessMask = 0
和 dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
。由于传输阶段发生在管道伪阶段结束之前,是否意味着我需要指定一个屏障?或者隐式依赖只影响渲染过程中的操作,所以我还是需要一个障碍?作为附带问题,0
作为源或目标访问掩码的含义是什么?
无论有无障碍,验证层都不会报告任何问题,输出符合预期,但我不确定它是否正确。
是的,您需要在 Vulkan 中 _______ 和 _______ 之间建立依赖关系。
隐式依赖仅出于形式原因存在于规范中。没有它,您将不知道布局转换何时发生,例如与信号量。但实际上隐式依赖是空操作。它的 dst
一半没有涵盖任何内容。
访问掩码中0
的含义是"no access"。例如。 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
stage 不读也不写任何东西,所以伴随它的访问标志应该是 0
.
我必须将颜色附件复制到缓冲区中。在渲染过程结束和复制操作之间是否需要图像内存屏障,以确保传输的可见性?
渲染通道有一个带有单个附件的子通道。 VkAttachmentDescription.finalLayout
不同于 VkAttachmentReference.layout
,因此确实存在 dstSubpass = VK_SUBPASS_EXTERNAL
的隐式子通道依赖关系。
我的困惑来自对这种隐式外部依赖的描述:它有一个 dstAccessMask = 0
和 dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
。由于传输阶段发生在管道伪阶段结束之前,是否意味着我需要指定一个屏障?或者隐式依赖只影响渲染过程中的操作,所以我还是需要一个障碍?作为附带问题,0
作为源或目标访问掩码的含义是什么?
无论有无障碍,验证层都不会报告任何问题,输出符合预期,但我不确定它是否正确。
是的,您需要在 Vulkan 中 _______ 和 _______ 之间建立依赖关系。
隐式依赖仅出于形式原因存在于规范中。没有它,您将不知道布局转换何时发生,例如与信号量。但实际上隐式依赖是空操作。它的 dst
一半没有涵盖任何内容。
访问掩码中0
的含义是"no access"。例如。 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
stage 不读也不写任何东西,所以伴随它的访问标志应该是 0
.