Android图像系统与绘制流程
文章平均质量分 89
LeeDuo.
这个作者很懒,什么都没留下…
展开
-
Android图像系统与渲染流程目录
Base Android Source Version:android-14.0.0_r2原创 2024-05-29 15:21:48 · 178 阅读 · 0 评论 -
SurfaceView与TextureView的绘制渲染
1.SurfaceView的初始化SurfaceView的初始化流程发生在首次绘制前。1.1 SurfaceControl的创建SurfaceView在初始化过程中会创建三个SurfaceControl节点:容器节点、绘制节点、背景节点。首先会在ViewRootImpl的SurfaceControl节点下创建SurfaceView的容器节点,然后在SurfaceView的容器节点下创建SurfaceView的绘制节点和SurfaceView的背景节点。1.2 Surface的初始化SurfaceV原创 2024-05-29 11:27:20 · 975 阅读 · 0 评论 -
Android硬件渲染流程
Android硬件渲染分成两个部分:渲染指令列表的构建和渲染指令列表的渲染,分别对应着ThreadedRenderer的updateRootDisplayList方法和syncAndDrawFrame方法。即绘制过程和渲染过程是分开的。绘制过程发生在UI线程,渲染过程发生在Render线程。原创 2024-05-26 18:36:16 · 1021 阅读 · 0 评论 -
Android硬件渲染环境初始化
硬件渲染的开启发生在ViewRootImpl中。开启硬件渲染会进行两步操作:第一步是ThreadedRenderer的创建,第二步是ThreadedRenderer与Surface的绑定。原创 2024-05-24 23:29:30 · 1043 阅读 · 0 评论 -
Android软件渲染流程
生产消费模型中的图像缓存Surface中管理的图像缓存Surface暴露给Canvas的图像缓存提交给消费者处理的图像缓存Canvas是对Surface提供的图像缓存的抽象封装。Surface对Canvas初始化的过程,就是Surface从生产消费模型中为Canvas分配一块图像缓存的过程。一个Surface同一时间只能提供一个图像缓存。原创 2024-05-22 14:53:07 · 971 阅读 · 0 评论 -
Android图像缓存与Surface初始化
在Android系统中,绘制渲染与渲染管理是分开的,分别由Surface和SurfaceControl负责。Surface是SurfaceFlinger管理的一块缓存,Surface的创建依赖SurfaceControl。SurfaceControl用于管理Surface的绘制层级与获取。Surface和SurfaceControl声明在ViewRootImpl的全局成员变量中,在创建ViewRootImpl时会一起创建Surface和SurfaceControl。原创 2024-05-21 21:39:28 · 1146 阅读 · 0 评论 -
Android图像生产消费模型
之后生产者开始绘制。在生产消费模型中,生产者与消费者在接收到VSync信号时开始生产和消费,但由于生产速率与消费速率不同,因此当下一次VSync信号到来时,生产与消费过程不一定都能完成,这时会通过Fence机制来保障生产消费过程的同步。在Android 12之后,生产消费模型由BLASTBufferQueue进行管理,并且将生产消费模型从SurfaceFlinger服务端移动了客户端。1)减轻了SurfaceFlinger的压力,SurfaceFlinger不再需要管理每个Layer中的生产消费模型。原创 2024-05-20 15:37:27 · 1021 阅读 · 0 评论 -
VSync信号系统与SurfaceFlinger
VSync信号分为两种:硬件VSync信号HW-VSync和软件VSync信号SW-VSync。SW-VSync信号由SW-VSync模型产生。HW-VSync信号负责对SW-VSync模型进行校准。系统中分发的VSync信号是SW-VSync信号。SW-VSync信号的分发采用单次申请回调制,一次申请对应一次回调,不申请则没有回调。原创 2024-05-19 21:38:21 · 750 阅读 · 2 评论 -
Android图像系统与Choreographer
一个基础的图像显示系统由CPU、GPU、屏幕三部分组成。CPU负责计算帧数据,GPU负责渲染图形数据,屏幕负责图像的显示。在屏幕显示图像时,会按照从上向下逐行扫描的方式扫描每一帧图像的像素。由于CPU与GPU处理数据的时间不可控,因此会导致屏幕刷新率与渲染帧率不一致。具体表现为在扫描第一帧图像扫描的过程中出现第二帧图像,引起屏幕中画面的撕裂。原创 2024-05-17 21:28:48 · 719 阅读 · 0 评论