OS: Android 7.1
Board: Firefly-RK3399
Kernel: v4.4.55
以前产品使用的显示缓存是fb,即framebuffer;
引进drm之后,显示缓存使用的是drm fb了。
在display HAL层默认使用的是drm,可以从Android.mk中得出结论。
hardware/rockchip/hwcomposer/Android.mk:
BOARD_USES_DRM_HWCOMPOSER=true
ifeq ($(strip $(BOARD_USES_DRM_HWCOMPOSER)),true)
LOCAL_SHARED_LIBRARIES := \
libcutils \
libdrm \
......
LOCAL_SRC_FILES := \
autolock.cpp \
drmresources.cpp \
......
else
......
endif
其中用到了libdrm库,位于external/libdrm下面。
drm设备的添加:
rockchip_drm_platform_probe ->
component_master_add_with_match ->
try_to_bring_up_master -> //当所有component被bind之后,会调用master ops->bind,这块见前面drm内容介绍文章
rockchip_drm_bind ->
drm_dev_alloc -> //后续对drm的操作都包含在rockchip_drm_driver中,也包含了要注册设备节点对应的file_operations
drm_dev_register
添加完成之后在/sys/class/