nviada结论,1GHZ的CPU满载情况下能处理25K batch/s
针对2GHZ CPU设备,如果目标帧率30,假设20%CPU用于传递batch,那么每帧能处理的batch数量为25000 * 2 / 30 * 0.2 = 333
Oppo A5在项目中是中配机,2018年7月上市的千元机,高通骁龙1.8GHZ
结合项目中batch数量的实际情况,那么预计batch的消耗将占到CPU的20%量级
https://www.nvidia.de/docs/IO/8230/BatchBatchBatch.pdf
文章总结:
1:绘制一百万个物体每个物体十个三角形和绘制十个物体每个物体一百万个三角形,显然后者效率更高,不是因为在GPU上切换状态不够快,
不是因为在GPU上组织建立三角形很占用资源,不是因为在内核中传输数据很慢,而是因为batch数量导致CPU瓶颈。
2:不同的GPU,相同的CPU,triangles/batch较小时,每秒绘制triangles接近,因为GPU的速度远高于CPU,当triangles/batch增大时,GPU导致效率的区别。batch中triangles数量不影响CPU效率,
会影响GPU效率。
3:对CPU来说,CPU耗费的周期与batch数的提交数量是呈现线性关系的。
4:Batch指得就是一次draw call调用。GPU的速度要远远的高于CPU,绘制的瓶颈往往是CPU没有提交足够大的batch。CPU耗费了大量的时间在驱动和3D Runtime上面,而这些耗费和Batch的尺寸并没有直接关系,
为了绘制更多的三角形,想尽所有的办法整合batch,绘制更多的物体。
https://zhuanlan.zhihu.com/p/366779113
http://imgtec.eetrend.com/blog/2022/100558021.html
drawcall, batch,setpass