1.每个应用都对应surfaceflinger端一个surface,每个应用都会申请一块用于存储渲染数据的内存块,这个内存是通过gralloc分配的,但是gralloc给应用分配的只是普通内存,只有给surfaceflinger才分配了真正的对应显示屏的内存。
2.应用先将自己的渲染结果放在自己的那块普通内存上,然后surfaceflinger负责将这些内存块按照z坐标进行裁剪合成,最后写入到gralloc分配的那块显示内存上去。
3.不管是应用还是surfaceflinger将显示结果渲染到对应的内存块中都是采用OpenGL的通用接口。
4.用openGL渲染时需要给他指定一个ANativeWindown。应用往复跟surfaceflinger通信就是主要得到一块用于显示的内存区域,进而构造一个ANativeWidown,于是乎就可以调用OpenGL的借口绘制,不用关心底层的细节。
5.每个应用都对应一个ShareClient,每个ShareClient对应31个SharedBufferStack