Android surface显示系统源码分析
Android系统庞大且复杂,本专栏致力于分析surface子系统架构
时光如刀
春去冬来,潮起潮落,人生几何;
夏落秋起,风去风来,岁月无痕
展开
-
android surfaceflinger(1)-启动初始化1
从本篇文章起,将对Android display系统框架进行分析,分析Android display必然涉及到surfaceflinger,故先分析一下,surfaceflinger的启动初始化流程。若文中有什么分析不对的,希望大家多多指出分享。谢谢!1、surfaceflinger启动触发 surfaceflinger是Android系统的一个重要后台本地服务,它是有init进程去启动的。1.1原创 2017-09-12 23:27:26 · 2455 阅读 · 0 评论 -
android surfaceflinger(2)-HWComposer初始化
上一篇文章介绍了init进程去启动surfaceflinger的过程;本文将继承上篇文章继续往下分析,上文分析到SurfaceFlinger::init();本文将主要分析init()里面的HWComposer初始化。 时序图如下: 1、HWComposer创建void SurfaceFlinger::init() { // Initialize the H/W composer ob原创 2017-09-21 17:03:28 · 3278 阅读 · 1 评论 -
Android surfaceflinger(3)-DisplayDevice封装
上一篇文章介绍了HWComposer的创建及初始化,本文将根据上述创建的HWComposer封装出DisplayDevice对象进行分析。1、引言 在此之前已经分析了HWComposer,接下来继续分析SurfaceFlinger::init的后续操作void SurfaceFlinger::init() { //详见http://blog.csdn.net/marshal_zsx/art原创 2017-10-11 20:19:17 · 3848 阅读 · 1 评论 -
Android surfaceflinger (4) -Vsync产生上报流程
1、垂直同步信号VSync(即V-Sync垂直同步)的具体含义和用途文章不细说,看下图的VSync的位置大致也就知道它的用途(简单理解成是硬件定时中断貌似也可以,周期性的硬件中断,频率为60Hz,周期为0.0167s,也就是16ms)。 本文主要关注以下几个问题: \ (1)VSync是如何产生的? \ (2)VSync是如何分发到应用进程的? 2、流程框图3、VSync产生VSync事件原创 2017-10-25 21:12:16 · 2114 阅读 · 0 评论 -
Activity创建到与SurfaceComposerClient建立通信流程
1. 概述 应用程序是通过activity来展现,那么activity是如何完成绘制并显示呢?其实应用程序的显示是和surface有关,那么activity与surface有是什么关系呢?接下来几篇文章将以这个为出发点分析,应用程序是如何一步步通过activity、surface呈现出用户界面的。2. activity的创建 应用启动时zygote会fork一个子进程作为APP...原创 2018-01-04 11:51:01 · 869 阅读 · 0 评论 -
SurfaceComposerClient与SurfaceFlinger建立通信流程
前面我们已经分析了activity从创建到调用本地方法去创建SurfaceComposerClient的过程。在本文中,我们将详细分析SurfaceComposerClient创建时是如何绑定SurfaceFlinger。1、申请SurfaceComposerClient入口[-> android_view_SurfaceSession.cpp]static jlong na...原创 2018-04-02 19:53:49 · 3885 阅读 · 0 评论 -
应用获取画布surface流程
前面我们已经分析了activity通过SurfaceComposerClient在surfaceflinger服务中创建了一个Client。在本文中,我们将详细分析应用获取画布Surface流程。在分析Surface创建流程时,会涉及显示缓冲区队列相关知识,本文只是简单一笔带过,将在后面做具体分析。1、申请创建Surface1.1 viewrootImpl.java在应用启动时...原创 2018-04-07 22:38:24 · 2001 阅读 · 1 评论 -
surfaceflinger之buffer生产者与消费者模型简介
应用获取画布surface流程分析了申请Surface时,在SurfaceFlinger中会创建对应的layer。而在创建layer时,就会去创建生产者消费者模型。本文着重阐述生产者消费者的创建及使用。1、模型创建入口1.1 layer创建第一次由强智能指针(sp)引用时,会执行onFirstRef方法void Layer::onFirstRef() { // Cre...原创 2018-04-21 16:20:54 · 1791 阅读 · 0 评论 -
surfaceflinger之buffer生产过程
上一篇分析了surfaceflinger的生产-消费者模型,本文着重阐述生产者对buffer生产过程。这个过程需要弄清一下几个问题: 1、生产者是谁? 2、生产者如何从BufferQueue获取空闲buffer? 3、绘制完成后的buffer如何压入BufferQueue中,以便消费者获取?1、生产者应用获取画布surface流程已经详细地分析了APP如何通过re...原创 2018-04-28 15:37:08 · 1154 阅读 · 0 评论