注:文章都是通过阅读 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】