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