https://github.com/openharmony/drivers_peripheral/blob/master/display/README_zh.md
源码路径,这里是对rk3588的display层适配
device/soc/rockchip/rk3588/hardware/display
├── include
└── src
├── display_device (代码量最大的部分,包括图像同步、管理等)
├── display_gfx (看起来是一些格式转换的接口)
└── display_gralloc (显存管理,分配内存然后告知drm驱动)
display_device中的内容,hdi就是把drm的东西抽象了一下:
├── display_composer_vdi_impl.cpp (显示属性、配置、设置的接口)
├── drm_connector.cpp (亮度调节、屏幕能力获取、热插拔处理,只支持了MIPI DSI HDMI VGA)
├── drm_crtc.cpp (将RGB数据组合传输给显示设备)
├── drm_device.cpp (/dev/dri/card0 打开)
├── drm_display.cpp (依旧是获取一些显示的属性)
├── drm_encoder.cpp (只有一个获取crtc的接口)
├── drm_plane.cpp (获取plane属性)
├── drm_vsync_worker.cpp (vsync软件和硬件方式的初始化)
├── hdi_composer.cpp (composition相关)
├── hdi_device_interface.cpp (drmdevice init)
├── hdi_display.cpp
├── hdi_drm_composition.cpp
├── hdi_drm_layer.cpp
├── hdi_gfx_composition.cpp
├── hdi_layer.cpp
├── hdi_netlink_monitor.cpp
├── hdi_session.cpp
plane对应显示处理器中的layer;
crtc对应显示处理器中的图层合成以及时序的生成的模块;
QA:
1、为什么只有一些简单的接口,渲染在哪里做的?
答:目前看起来应该是render_service调用的opengl进行的渲染,而drm这边的适配只有一些简单的属性和vsync的适配而已。