CPU 和 GPU 之间的关系是 client-server 关系,线程是 CPU 的概念,GPU 有并行但没有线程概念。现代引擎考虑 low-overhead,要从平衡 CPU 和 GPU 的并行效率来考虑,和线程这个 CPU 侧的概念有相关性但没有必然的固定关系。
比如说,CPU 可以从一个线程顺序发给 GPU 几个 render-pass 的指令。这几个 render-pass 在 GPU 侧可能是并行处理的。但 CPU 没有必要开多个线程去处理这些指令,因为指令的 encoding 可能比指令的执行短的多。
反过来,理论上来说,如果 encoding 花的时间太多,或者为 encoding 准备数据需要大量 CPU 算法,那就要支持多线程 encoding。
所以,这个问题本身是有问题的。因为如果你考虑多线程,那么严格来说就只是 render-pass command encoding,而不是 render。如果你说 render,那就已经和线程概念不相关了。
从实际来说,目前的趋势是大量的处理移到 GPU 侧完成,所以 encoding 花的时间应该在降低。从这个趋势来说,多线程 encoding 可能并不是广泛的需求。