注:文章都是通过阅读 Android && Linux 平台源码、各位前辈总结的资料、加上自己的思考分析总结出来的,其中难免有理不对的地方,欢迎大家批评指正。文章为个人学习、研究、欣赏之用。图文内容、源码整理自互联网,如有侵权,请联系删除(◕‿◕),转载请注明出处( ©Android @Linux @Rockchip版权所有),谢谢(๑乛◡乛๑) 、( ͡° ͜ʖ ͡°)、(ಡωಡ)!!!。
(==文章基于 Kernel-4.4==)&&(==文章基于 Android-8.1==)
【开发板 - Firefly-RK3399 7.85寸1024x768显示屏模组(MIPI接口)】
正是由于前人的分析和总结,帮助我节约了大量的时间和精力,特别感谢!!!
(1)【[RK3288][Android6.0] 调试笔记 — display数据帧的dump)】
(2)【Hardware Composer 2.0】
(一)、DRM/KMS for Android介绍
(1)、Pre-DRM world
Issues:
(2)、DRM world
Objectives:
(3)、Future
(二)、Android drm_hwcomposer介绍
(1)、Android Hardware Composer 2.0
What is Android’s Hardware Composer?
● Determines the most efficient way to composite buffers with the available
hardware
○ Overlay planes
○ GPU composition
○ Blit/2D engine
● Often device specific and written by the display hardware OEM
Hardware Composer 1.x
Key Differences between 1.x and 2.0
Increases API functions from 12 to 43
● Adds support for HDR, color transform matrix, dataspaces, etc.
● Renames prepare() / set() to validate() / present()
● Replaces speculative fences with non-speculative fences
Hardware Composer 1.x Sync Fences
Hardware Composer 2.0 Sync Fences
(2)、Android drm_hwcomposer
HWC1
HWC2
这里使用的就是HWC2。
(三)、Android drm_hwcomposer Code Overview
分析hwcomposer之前,先来分析gralloc。
(四)、gralloc代码分析
(五)、hwcomposer代码分析
(六)、HWC数据帧的dump
(1)、设置property
setprop sys.dump true
抓取的帧会按数字排列,还带分辨率参数。
(2)、adb pull /data/dump/
adb pull /data/dump/
(3)、抓到的bin文件可以用软件7yuv打开查看,格式设定为RGBA8888
最终合成效果图
(七)、参考资料(特别感谢):
(1)【[RK3288][Android6.0] 调试笔记 — display数据帧的dump)】
(2)【Hardware Composer 2.0】