命令队列和命令列表

每个GPU都至少维护着一个命令队列(command queue,本质上时区环形缓冲,即ring buffer)。借助Direct3D API,CPU可利用命令列表(command list)将命令提交到这个队列中去。当一系列命令被提交至命令队列之时,它们并不会被GPU立即执行,理解这一点至关重要。由于GPU可能正在处理先前插入命令队列内的命令,因此,后来新到的命令会一直在这个队列中等待执行。
假如命令队列中变得空空如也,那么没有任务可执行的GPU只能空闲下来;相反的,如果命令队列被填满,那么CPU必将随着GPU的工作步伐在某些时刻保持空闲【Crawfis12】。这两种情况都是我们不希望碰到的。对于像游戏这样的高性能应用程序来说,它们的目标是充分利用硬件资源,保持CPU和GPU同时忙碌。
在DIrect3D 12中,命令队列被抽象为ID3D12commandQueue接口来表示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容