Mali GPU:Abstract Machine, Part 2 - Tile-based Rendering 笔记 2019-11-24

Traditional Approach

传统桌面GPU架构,通常叫做immediate mode architecture。
依次地,在每个draw call,每个primitive都执行fragment shaders。
每个primitive都完全render完后再做下一个,algorithm近似于:

foreach(primitive)
    foreach(fragment)
        render fragment

由于stream中的任何一个triangle可以覆盖屏幕的任何地方,所以renderer维护的data可能很大。通常至少也是有全屏大小的color buffer, depth buffer, 也许还有stencil buffer.
现在设备典型值是32 bits-per-pixel(bpp)color, 和32bpp packed depth/stencil。所以,1080p display的工作集就是16MB,4K2K TV就是64MB。这个大小决定他们必须存在DRAM以外。

Mali GPU:Abstract Machine, Part 2 - Tile-based Rendering 笔记 2019-11-24_第1张图片
IMR dataFlow

每个blending,depth testing,和stencil testing操作都需要当前framgent的pixel coordinate与working set fetch。所有的fragments shaded通常会touch this working set,所以memory的bandwidth load 会很高,如果有multiple read-modify-write operations per fragment,仅能适当缓解。

Mali Approach

Mali GPU使用的方法叫做tile-based rendering,目的是,render期间最小化内存存取量。
前面说过Mali有两个rendering algorithm for each render target,
在geometry stage,Mali gpu将屏幕分为16x16 pixel tiles,然后为每个tile中present的rendering primitives都建立一个list。当进行GPU fragment shading step时,每个shader一次处理一个16x16 pixel tile,彻底render完再开始下一个,tile-based architectures the algorithm :

foreach(tile)
    foreach(primitive in tile)
        foreach(fragment in primitive in tile)
            redner fragment

16x16 tile 知识整个屏幕的小部分small fraction,所以可以把整个tiel的working set(color, depth, stencil)保存在fast RAM中,这个RAM与GPU shader core 是tightly coupled的

Mali GPU:Abstract Machine, Part 2 - Tile-based Rendering 笔记 2019-11-24_第2张图片
tile-based renderer data flow

未完

你可能感兴趣的:(Mali GPU:Abstract Machine, Part 2 - Tile-based Rendering 笔记 2019-11-24)