等待使用Vulkan信号量的vkCmdCopyBuffer

时间:2018-01-20 23:54:46

标签: c++ c vulkan

我有两个命令缓冲区cb1,cb2,我正在使用信号量来确保执行cb2等待cb1的执行。两个命令缓冲区都以批处理方式提交到同一队列。

cb1中只有一个vkCmdCopyBuffer命令。

信号量是否足以保证cb2仅在vkCmdCopyBuffer完成内存传输后运行,或者我应该在vkCmdCopyBuffer之后的cb1中添加一个barrier命令?

1 个答案:

答案 0 :(得分:4)

您通常不需要在单个队列中使用信号量,它们主要用于跨队列进行同步。实际上,如果您在相同的批处理(同一[sendmail] smtp_server=smtp.gmail.com smtp_port=587 error_logfile=error.log debug_logfile=debug.log auth_username=mypersonalemail@gmail.com auth_password=mypersonalpassword )中提交两个命令缓冲区,则不能使用信号量,因为信号量在批处理中的任何命令缓冲之前等待启动,并在批处理中的所有命令缓冲区完成后发出信号。

对于队列中的执行和内存依赖,通常需要管道屏障或SetEvent / WaitEvent对。