连续调用两次DirectX 12 Dispatch(),GPU会串行还是并行执行?
连续两次Dispatch调用的GPU执行顺序问题
示例代码:
m_computeCommandList->Dispatch(111, 1, 1); m_computeCommandList->Dispatch(555, 1, 1);
在同一个计算命令列表(computeCommandList)中连续调用这两个Dispatch的话,GPU会严格按照提交顺序执行,第二个Dispatch一定会在第一个完全执行完毕后才开始,二者不会并行执行。
原因很直接:命令列表本质是线性的任务指令序列,GPU会按照列表里指令的先后顺序依次执行。只有当你使用多个独立的命令队列、或者通过特定异步并发机制(比如无序访问视图的无锁并发访问配合特殊设置)时,才可能出现任务并行的情况。但这里是同一个命令列表的连续调用,没有任何打破顺序的操作,所以执行顺序是完全有保障的。
内容的提问来源于stack exchange,提问作者porente
相关产品推荐
相关产品推荐

