Tile base
移动端的gpu架构和桌面版本是完全不同的,最关键的原因是在移动端的带宽不够,也就是每次读写framebuffer都是在主存上进行的,主存的速度又太慢,导致这个操作又慢又费电,至少桌面端是不用考虑费电的问题的。基于此移动端都是用了tile-based架构
上一篇文章我们分析了nvdia显卡的渲染的详细过程,这个我们只需要说区别就好了,桌面版都是 vs-ps直接进行的,但是tile-based把这个阶段分开了,在一帧中包含数百次drawcall,注意这里是一帧的所有drawcall,先全部进行vs,然后在按照tile的顺序ps,桌面是一个drawcall的vs然后ps,桌面版也是用tile的模式来ps的,只不过桌面的ps都是一次drawcall,但是移动端是顺序vs然后按照tile打包ps
举个例子,比如我们有两次drawcall,每个drawcall包含一个三角形,这两个三角形都覆盖全部屏幕了。
上面的设计是为了解决主要的带宽的问题,同时会产生很多其他的优化
还有个问题就是vs-ps不是在一帧中进行的,这一帧的ps是使用上一帧的vs