更好地解释我的问题的链接:Vulkan教程(子通道依赖项),Vulkan规范(7.4.2.信号量等待,第二个注释)
在 Vulkan 教程(Link)中显示,为了同步预子通道布局转换,以便它将等待呈现引擎完成呈现图像,您可以使用 VkSubpassDependency,如下所示:
VkSubpassDependency dependency{};
dependency.srcSubpass = VK_SUBPASS_EXTERNAL;
dependency.dstSubpass = 0;
dependency.srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependency.srcAccessMask = 0;
dependency.dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependency.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
但我不明白为什么显示的 src 依赖项会让您等待演示引擎完成图像的演示。我还想在这里解释一下 dst 依赖项的使用。
一般来说,我不知道如何找出哪些GPU命令对应于哪些VkPipelineStageFlagBits
上面的链接详细解释了该场景
采集完成后,采集图像会发出信号量。因此,包含想要使用图像的操作的批处理需要有一个
pWaitSemaphores
元素来等待该特定信号量。当它这样做时,它会指定目标管道阶段。
该阶段是外部子通道依赖项中的源阶段掩码以及目标阶段掩码应设置的内容。