我已经阅读了很多关于多线程渲染的内容。人们一直在提出各种奇怪而奇妙的方案来通过线程向 GPU 提交工作,以加快他们的帧速率并渲染更多的东西,但我对整个事情有一点概念上的问题,我以为我会在这里由大师运行它,看看您的想法。
据我所知,GPU 上的基本并发单位是 Warp。也就是说,它在像素级别下降,而不是在几何提交级别更高。因此,鉴于 GPU 上的并发单位是 warp,驱动程序必须使用互斥锁非常紧密地锁定,以防止多个线程搞砸彼此的提交。如果是这种情况,我看不出对 D3D 或 OpenGL 多线程原语进行编码的好处在哪里。
毫无疑问,在多线程场景中使用 GPU 的最有效方法是在更高的抽象级别上,在提交之前,您要收集成批的工作要做吗?我的意思是,与其随机交错来自多个线程的命令,我会认为单个块接受来自多个线程的工作,但在其中有一点智能,以确保在提交给渲染器之前对事物进行排序以获得更好的性能,将是如果您想使用多个线程,则会获得更大的收益。
那么,实际 API 中的 D3D/OpenGL 多线程渲染支持在哪里?
帮助我解决我的困惑!