我这里需要两个不同的队列提交吗?

Do I need two different queue submissions here?

我有一个命令缓冲区 1 和命令缓冲区 2。两者都完成了记录,现在我想提交它们,最好以一种有效的方式(一个 vkQueueSubmit 调用。

第二个命令缓冲区需要等到第一个命令缓冲区完成。我认为我可以通过一次提交来做到这一点:

/* I THINK THE FOLLOWING IS WRONG */
VkSubmitInfo info;
info.pCommandBuffers = /* Pointer to the first command buffer */;
info.commandBufferCount = 2;
info.pSignalSemaphores = /* The first pointer value points to the semaphore 
that the first command buffer will signal when completed */
info.pWaitSemaphores = /* The second pointer value points to the same semaphore as above */

所以我很确定上面的理解是错误的,这是否意味着在这种情况下只有第二个命令缓冲区依赖于第一个命令缓冲区才能有两个不同的队列提交?我的意思是两个不同的 VkSubmitInfo?

二进制信号量用于内部队列通信。虽然您可以使用时间线信号量进行队列内通信,但对于这样的事情,最好退后一步,问问自己到底发生了什么。

因为 CB2 需要等待 CB1 完成是不正确的。发生的事情是某些操作 within CB1 的结果需要在某些操作 within CB2 可以开始之前完成。这最好用 VkEvent 来完成。 CB1的操作可以设置CB2对应操作等待的事件

不需要将这些操作分成不同的批次,更不用说不同的队列提交了。