● 优秀的差劲技术
对于常规的光栅化过程来说,TBR/TBDR会带来诸多的问题。包括深度检查耗损、频繁的Z读取、Tiles划分带来的纹理重复读取、多边形数量上升之后的scene buffer溢出等等。
尽管TBDR不再像传统的TBR那样需要通过CPU来进行Z值检查,但是TBDR过程需要对画面内所有的像素进行一次“额外”的load过程,这个过程本身无论从哪个角度来讲都是与节约显存带宽背道而驰的,尤其是在复杂度极高但Z-Occlusion(Z闭塞)并不严重的场景中更是如此。另外,尽管对画面的矩形划分越细密,GPU对像素进行Z判断的效率和准确率越高,但TBDR过程对画面的矩形切割非常机械,这种划分经常会导致很多多边形和纹理被Tiles所切割,这些多边形和纹理都必须经过2次甚至4次读取才能保持自身形态的“完整”,这无疑加重了几何和纹理处理过程的负担。如果场景的多边形数量较多,这种切割还会导致scene buffer被快速的消耗殆尽,scene buffer的溢出会直接导致Z判断延迟的急剧增大,这对整个处理过程的影响是巨大的。
通俗的说,TBDR需要在屏幕上画很多很多的小格子,然后把格子里的所有像素都拿出来做某种检查,没通过检查的“坏”像素就会被丢掉。尽管丢掉这些没通过检查的像素可以让后面的工作量减小,但这个检查本身对渲染没有任何意义,所以没有被丢掉的像素就相当于走了一遍无用的过场。与此同时,划分小格子的过程会切坏很多多边形和纹理,想要让这些多边形和纹理能够从“误伤”中幸存下来,你切了它们多少刀就要重新读取它们多少次。如果多边形本身就很多,被误伤的概率就更大,这会使得系统的某种缓存被快速消耗干净,缓存没了,系统干什么都不可能快得起来。
在这些环环相扣的问题的综合影响之下,拥有极高理论性能的SGX Series5系列在实际表现中却并不亮眼,我们上一篇探索与发现节目的测试环节实际上已经将问题表现出来了——尽管SGX543MP2拥有吞吐shader更加高效的USSE单元,4倍于Geforce ULP的理论性能以及双倍的显存带宽,但实际表现却远远未能达到这一数值,如果SGX543MP以单芯片的形式登场,最终的性能甚至可能会负于竞争对手。在大多数常规场合中,SGX Series5系列的理论性能都要除以一个2左右甚至是3的“景深系数”才能得到最终的真实性能,换句话说,正常情况下的SGX Series5系列只能表现出理论性能一半左右的实际性能。拥有如此强悍的理论性能以及更大的显存带宽的“能够节约显存带宽”的构架最终却只能有这样的表现,我想包括Imagination自己在内的大多数人此时此刻都不知道该用怎样的表情去面对了。