对于资源转换,您需要知道资源的“之前”和“之后” VkImageLayout
(例如,在VkImageMemoryBarrier
传递到 中vkCmdPipelineBarrier
)。Vulkan 不保证命令缓冲区的任何执行顺序,除非在 API 文档中明确说明(来自此答案)。但是,vkCmdPipelineBarrier
确实明确表示它在调用之前和之后的命令缓冲区中的命令之间创建了依赖关系。因此,当图像在单个命令缓冲区中转换时,可以随时“了解”图像的布局。
但是,vkQueueSumbit
不强制命令缓冲区的执行顺序。如果有两个命令缓冲区,每个都vkCmdPipelineBarrier
调用将相同的图像转换到不同的布局,这两个操作之间是否存在依赖关系,或者在这种情况下需要显式同步?