“ 亏功一篑,未成丘山。凿井九阶,不次水泽。行百里者半九十,小狐汔济濡其尾。故曰时乎,时不再来。终终始始,是谓君子。”
01
前言
Android Graphics显示系统系列文章从简单的示例入手,着眼于理论与实践,帮助开发人员快速构建安卓图像显示的基本概念和理论认知。
Android每年一个大版本的更新,图像显示系统的源码在架构和写作方式上也几经调整与修改,逻辑细节虽发生了很大的变化,但核心原理不变,本系列试图让大家理解这些“核心原理”,以不变应万变,帮助大家轻松胜任各个版本的开发及调试工作。
作为一个业余爱好者,学习的过程是漫长的,写作的过程更痛苦,该系列的笔记也不会一蹴而就或在短时间内一次完成,所以在学习过程中,我会不断的把新的笔记、新的收获更新上来。该系列笔记会在动态中不断更新,有兴趣的可以关注公众号获得持续更新!
文章难免错误,请带着审慎与批判的态度去阅读,阅读中请保持独立思考。
02
主题简介
该系列文章聚焦Graphics知识,从简单的Demo入手,分析图形显示基本框架和运作流程。涉及内容众多,比如SurfaceFlinger的运行机制,VSYNC信号的产生与分发,BufferQueue的工作原理,Mapper&Allocator,Fence同步机制,HWC基础框架,多屏显示,各种实用工具 ....
比如 生产者消费者模型
比如 BufferQueue的工作机制
比如 图形显示合成的基本流程
比如 多屏显示
03
文章系列
系列文章持续更新,更多内容可以订阅 “Android Graphics” 专栏,目前已发表的文章如下:
基础篇
Android Graphics 显示系统 - 基本组件(一)
Android Graphics 显示系统 - 基本组件(二)
Android Graphics 显示系统 - 基本组件(三)
Android Graphics 显示系统 - Surface绘图示例(四)
Android Graphics 显示系统 - Surface绘图示例(五)
Android Graphics 显示系统 - 建立SurfaceFlinger通信的流程(六)
Android Graphics 显示系统 - SurfaceFlinger的启动与初始化(七)
Android Graphics 显示系统 - SurfaceFlinger MessageQueue机制(八)
Android Graphics 显示系统 - 创建Surface流程(九)
Android Graphics 显示系统 - 初识BufferQueue(十)
Android Graphics 显示系统 - ANativeWindow/Surface/SurfaceControl(十一)
Android Graphics 显示系统 - BufferQueue的工作流程(十二)
Android Graphics 显示系统 - BufferQueue的工作流程(十三)
Android Graphics 显示系统 - BufferQueue的工作流程(十四)
Android Graphics 显示系统 - BufferQueue的工作流程(十五)
Android Graphics 显示系统 - Surface补充知识(十六)
Android Graphics 显示系统 - SurfaceView与BufferQueue关系(十七)
Android Graphics 显示系统 - Gralloc架构及GraphicBuffer创建/传递/释放(十八)
Android Graphics 显示系统 - 简述Allocator/Mapper服务的获取流程(十九)
Android Graphics 显示系统 - GraphicBuffer同步机制-Fence(二十)
Android Graphics 显示系统 - SurfaceFlinger的GPU合成(廿一)
Android Graphics 显示系统 - 导出图层数据(dump graphic raw data)(廿二)
Android Graphics 显示系统 - 基础知识之 BitTube(廿三)
Android Graphics 显示系统 - SurfaceFlinger之VSync-1(廿四)
Android Graphics 显示系统 - SurfaceFlinger之VSync-2(廿五)
Android Graphics 显示系统 - SurfaceFlinger之VSync-3(廿六)
Android Graphics 显示系统 - HWC HAL的初始化(廿七)
Android Graphics 显示系统 - 聊聊屏幕刷新机制(廿八)
Android Graphics 显示系统 - HWC 探秘 - 1(廿九)
Android Graphics 显示系统 - HWC 探秘 - 2(三十)
Android Graphics 显示系统 - HWC 探秘 - 3(三一)
Android Graphics 显示系统 - 解读Source Crop和Display Frame(三二)
Android Graphics 显示系统 - Android 14(U)编译、运行Surface绘图示例
Android Graphics 显示系统 - Android Jank detection with FrameTimeline
Android Graphics 显示系统 - 计算FPS的原理与探秘Present Fence
Android Graphics 显示系统 - 导出指定图层Layer数据与图层合成探秘
未完待续...
多屏篇
Android Graphics 多屏同显/异显 - C++示例程序(标准版)
Android Graphics 多屏同显/异显 - C++示例程序(升级版)
Android Graphics 多屏同显/异显 - Demo源码分析(1)
Android Graphics 多屏同显/异显 - Demo源码分析(2)
Android Graphics 多屏同显/异显 - Demo源码分析(3)
Android Graphics 多屏同显/异显 - mirrorSurface图层镜像
Android Graphics 多屏同显/异显 - 多屏时用于GPU合成的GraphicBuffer数量
Android Graphics 显示系统 - Android 14(U)编译/运行多屏同显/异显示例
未完待续...
工具篇
Android Graphics 显示系统 - 如何模拟多(物理)显示屏?
Android Graphics 显示系统 - adb shell service命令与SurfaceFlinger调试
Android Graphics 显示系统 - BufferQueue的状态监测
Android Graphics 显示系统 - 监测、计算FPS的工具及设计分析
Android Graphics 显示系统 - 通过dumpsys SurfaceFlinger --latency计算FPS
Android Graphics 显示系统 - 使用WinScope跟踪窗口转换
未完待续...