目录

Tile base


0.前言

移动端的gpu架构和桌面版本是完全不同的,最关键的原因是在移动端的带宽不够,也就是每次读写framebuffer都是在主存上进行的,主存的速度又太慢,导致这个操作又慢又费电,至少桌面端是不用考虑费电的问题的。基于此移动端都是用了tile-based架构

1.主要区别

上一篇文章我们分析了nvdia显卡的渲染的详细过程,这个我们只需要说区别就好了,桌面版都是 vs-ps直接进行的,但是tile-based把这个阶段分开了,在一帧中包含数百次drawcall,注意这里是一帧的所有drawcall,先全部进行vs,然后在按照tile的顺序ps,桌面是一个drawcall的vs然后ps,桌面版也是用tile的模式来ps的,只不过桌面的ps都是一次drawcall,但是移动端是顺序vs然后按照tile打包ps

2.为什么会快

举个例子,比如我们有两次drawcall,每个drawcall包含一个三角形,这两个三角形都覆盖全部屏幕了。

上面的设计是为了解决主要的带宽的问题,同时会产生很多其他的优化

  1. 在桌面版,每个三角都要进行ps,但是在tile-base中就可以提前进行z-test,有可能会使ps只进行一次就够了(gpu会对此优化,想办法剔除隐藏的面)
  2. 颜色混合就快多了,不需要跟framebuffer有关系,都是在tile上进行的

还有个问题就是vs-ps不是在一帧中进行的,这一帧的ps是使用上一帧的vs