我们首先采用一种binning运算法则来最小化软件lock,不过这种运算法则同样受益于加载平衡和存储宽带。
这一运算法则可以为任何核心分配后端tile单元,但不会试图加载平衡。理论上讲,这将会导致严重加载失衡,尽管核心可自由开始处理下一个RTset单元或者切换到前端处理。Bin失衡对于游戏工作量并不是问题。下图描述的是后端bin处理时间在《机器战争》以16帧速运行下的追踪(trace)。
存储带宽非常重要,因为存储子系统通常都是昂贵或者低廉GPU中造价最贵、耗能最高的部分。存储宽带经常都会是一种资源限制,如果管理欠妥的话,可能会导致性能瓶颈。我们的性能研究将会测试不受存储带宽限制的运算速度,。
上图描述的是即时模式和binned渲染下,三款游戏每帧的全部带宽进行了对比。在即时模式下,我们假定为perfect hierarchical depth culling、一个128KB纹理缓存、1MB depth,颜色缓存代表一个理想化的执行。此外,我们再假设single-sampling为2倍颜色、4倍depth压缩,以及每个像素的4-samples假定为4倍颜色、8倍depth压缩。
上图描述的是binning模式以及即时模式下每帧图像带宽对比:binning模式虽然需要bin reads & writes,但是却消除了很多depth/color接入,而hierarchical depth tests是无法检测到这些接入的。这使得binning模式下并不需要过多的带宽。
即时模式下所有测试frame需要更多的带宽:其在《F.E.A.R》游戏需要的带宽是binning模式的2.4—7倍,《机器战争》为1.5—2.6倍,《Half Life 2 episode 2》为1.6—1.8倍。很明显,当即时模式下带宽最高时,binning模式便得到了最大的提升。即便是depth culling和frame buffer压缩,1MB缓存容量对于缓解大部分像素透支是完全不足的。高分辨率往往更能彰显binning渲染模式的优点。