请关注公众号:Android元宇宙 阅读《图形图像》专栏最新文章!
序言
出于工作需要,也源于个人兴趣,终于下决心花时间整理一下自己针对Android图形显示子系统的一些零散知识。其实对于是否把这一系列文章发布出来,个人也曾几经犹豫,原因是这些文章的内容并非个人研究成果或实践经验的总结,而仅仅只是学习过程中的 零散笔记 罢了。文章中的错误观点或谬论对读者可能产生的错误引导是我不想看到的。
当然,既然文章已经写出,我想就要发挥出它的价值,即便是错误的观点我觉得在大家的批判、指正、讨论中也会引发读者更多的思考,让你我还有广大读者共同进步。
个人虽然从事Android开发也比较长时间了,但对于Android图形显示系统的知识一直比较溃泛,写作这些文章时也是很多地方一知半解,很多内容也难以讲清楚来龙去脉,甚至强加了个人“自以为是”的观点。网络上其实已经有很多优秀的文章的来解析Android图形显示系统的架构。Android每年一个大版本的更新,图形显示系统的code在一定范围内也几经调整与修改,虽基本原理不变,但处理逻辑却也发生了很大的变化。个人也是想基于最新版本Android整理一些自己在这个领域的知识脉络,并把一些零散的笔记记录于此。
学习的过程是漫长的,该系列的笔记也不会一蹴而就或在短时间内一次完成,所以在学习过程中,我会不断的把新的笔记、新的收获更新上来。该系列笔记会在动态中不断更新。
基于此,我建议大家在阅读这些文章时,请带着审慎与批判的态度去阅读,阅读中请保持独立思考,因为这只是几篇学习笔记,错误会隐藏于文章各个角落。
作者水平有限,文章难免错误,也请大家不吝赐教。
图形显示系列
Android 12(S) 图像显示系统 - 开篇
Android 12(S) 图像显示系统 - 基本概念(一)
Android 12(S) 图像显示系统 - 示例应用(二)
Android 12(S) 图像显示系统 - 应用建立和SurfaceFlinger的沟通桥梁(三)
Android 12(S) 图像显示系统 - SurfaceFlinger的启动和消息队列处理机制(四)
Android 12(S) 图像显示系统 - createSurface的流程(五)
Android 12(S) 图像显示系统 - BufferQueue/BLASTBufferQueue之初识(六)
Android 12(S) 图像显示系统 - 初识ANativeWindow/Surface/SurfaceControl(七)
Android 12(S) 图像显示系统 - BufferQueue的工作流程(八)
Android 12(S) 图像显示系统 - BufferQueue的工作流程(九)
Android 12(S) 图像显示系统 - BufferQueue的工作流程(十)
Android 12(S) 图像显示系统 - BufferQueue的工作流程(十一)
Android 12(S) 图像显示系统 - Surface 一点补充知识(十二)
Android 12(S) 图像显示系统 - 简单聊聊 SurfaceView 与BufferQueue的关联(十三)
Android 12(S) 图像显示系统 - 解读Gralloc架构及GraphicBuffer创建/传递/释放(十四)
Android 12(S) 图像显示系统 - 简述Allocator/Mapper HAL服务的获取过程(十五)
截至到今天(2022-03-27),差不多第一阶段的学习目标已经完成,重点是在一些儿流程的梳理,明白图形显示系统中某些机制的运作过程。当然,在学习和输出的过程中,也遇到很多迷惑不解的知识点,当然也有很多可能理解错误的地方。之后的学习中,会再回过头来审视、纠正这些内容。学习是个不断迭代的过程,后期的学习会是对前期学习内容的补充、纠正、加深的一个过程。
计划后续的学习还会再继续梳理Android图形显示系统其它的流程,重点会理清SurfaceFlinger的一些工作机制,包括合成流程、HWC、VSync信号等等,同时,也会根据实际工作中遇到的问题,补充一些细节的知识。
不过还有一个重要的任务:重学C++ 在分析源码过程中,发现很多C++语言的新特性自己都不是很熟悉了,这对自己阅读源码和开发还有有很大影响的,所以要花些时间补课。
Android 12(S) 图像显示系统 - SurfaceFlinger之VSync-上篇(十六)
Android 12(S) 图像显示系统 - SurfaceFlinger 之 VSync - 中篇(十七)
Android 12(S) 图像显示系统 - SurfaceFlinger之VSync-下篇(十八)
Android 12(S) VSync信号刨析-札记 --> 混乱的记录
图层合成零碎知识
Android 12(S) 图像显示系统 - SurfaceFlinger GPU合成/CLIENT合成方式 - 随笔1
Android 12(S) 图像显示系统 - GraphicBuffer同步机制 - Fence
Android 12(S) 图像显示系统 - HWC HAL 初始化与调用流程
Android 12(S) 图像显示系统 - drm_hwcomposer 简析(上)
Android 12(S) 图像显示系统 - drm_hwcomposer 简析(下)
Android 12(S) 图像显示系统 - drm hwc 的知识点分析/记录 -- 杂乱记录😀
Android 12(S) 图像显示系统 - 多屏同显 - 原理及架构设计
Android 12(S) 图像显示系统 - 多屏异显 - 原理及架构设计
Android 12(S) 图像显示系统 - 多屏同显/异显的HWC处理逻辑解读
Android 12(S) 图像显示系统 - 多屏同显/异显的demo演示
基础知识系列
Android Native -- Message/Handler/Looper机制(原理篇)
Android Native -- Message/Handler/Looper机制(应用篇)
Android 图像显示系统 - 基础知识之 BitTube
Android 图像显示系统 - 导出图层数据的方法介绍(dump GraphicBuffer raw data)
其它参考文章
在 Android 上进行高刷新率渲染
Android 12(S) 图像显示系统 - 杂谈 - source crop & display frame
最后给大家送上一份好心情