应该尽可能避免检查隔离状态,以查看队列提交是否已经完成。我认为这样做是很常见的做法:检查队列提交的每个帧栅栏,然后释放命令缓冲区,以及任何资源(要么被销毁,要么被回收)。假设您想检查在某个框架上提交的所有提交文件是否已经完成,比如n,或者n+1帧之前。你可以一次检查所有的栅栏是否有多个提交。除了你不能,vkGetFenceStatus只把一个栅栏作为一个论点(或者有办法检查多个栅栏吗?)
创建一个具有等待信号量等待多个先前提交的虚拟提交,然后检查该虚拟提交的围栏状态的想法是一个好主意吗?
发布于 2022-06-07 09:14:56
昂贵的不是状态检查,而是阻塞和等待完成,所以您会拖住CPU并耗尽管道。
您可以通过对队列进行足够深的流水线处理来解决这个问题,因此您只能在已经完成的信号量/栅栏上“等待”。这通常需要N缓冲资源,这样您就有足够的资源来避免“太快”等待的需要。如果您正确地这样做,我希望这里测试栅栏的CPU成本可以忽略不计。
https://stackoverflow.com/questions/72527578
复制相似问题