一. 参考
-
Android应用程序UI硬件加速渲染技术简要介绍和学习计划
https://blog.csdn.net/luoshengyang/article/details/45601143 -
计算机那些事(8)——图形图像渲染原理
http://chuquan.me/2018/08/26/graphics-rending-principle-gpu/ -
扒一扒安卓渲染原理
https://gameinstitute.qq.com/community/detail/133403 -
深入理解Flutter的图形图像绘制原理——图形库skia剖析
https://segmentfault.com/a/1190000038827450 -
Android Chromium WebView学习启动篇
https://blog.csdn.net/Luoshengyang/article/details/46569161 -
Chromium硬件加速渲染机制基础知识简要介绍和学习计划
https://blog.csdn.net/Luoshengyang/article/details/48820095
二. Android图形渲染机制
参考:
Android Systrace 基础知识 - MainThread 和 RenderThread 解读
https://www.androidperformance.com/2019/11/06/Android-Systrace-MainThread-And-RenderThread/#%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95
-
Android的应用程序, 将ui的绘制进一个缓冲区,然后提交给SurfaceFlinger进行合成显示到屏幕.
-
Android的应用程序在开启硬件加速(即使用GPU绘制的时候)中的
___ ui主线程(UI Thread), 负责处理进程Message, 处理Input事件, 处理Animation逻辑, 处理traversal(Measure, Layout, Draw), 更新DisplayList(一系列绘制操作的记录), 同步数据到RenderThread,但是不涉及SurfaceFlinger打交道.
___渲染线程(RenderThread), 负责从SurfaceFlinger获取一个Graphical Buffer, 然后调用 OpenGL 进行图形绘制, 然后将Buffer 入队列到SurfaceFlinger 进行合成显示到屏幕. -
Android App在渲染UI一帧的过程中,经历以下三个阶段:
1). 在UI线程中构建一个Display List,这个Display List包含了每一个View的绘制命令。
2). 将前面构建的Display List同步给Render Thread。
3). Render Thread对同步得到的Display List进行渲染,也就是使用GPU执行Display List的绘制命令。