LCD系统
标准的设备显示驱动是FrameBuffer
FrameBuffer内核层
FrameBuffer驱动涉及文件:
include/linux/fb.h头文件
drivers/video/fbmem.c是FrameBuffer驱动的核心实现文件
fb_info 核心数据结构
硬件抽象层
Gralloc模块是显示部分的硬件抽象层
1.头文件:hardware/libhardware/include/hardware/gralloc.h
2.硬件帧缓冲区:
Gralloc模块由gralloc_module_t,alloc_device_t和framebuffer_device_t 结构体描述,Gralloc模块是由UI库文件framework/native/include/ui/FramebufferNativeWindow.cpp调用
类FramebufferNativeWindow继承了android_native_buffer_t,是上层的接口,表示一个本地窗口
3.显示缓冲区的分配:
framework/native/libs/ui/GraphicBufferAllocator.cpp调用Gralloc模块和gralloc_module_t显示缓冲区的分配
4.显示缓冲映射:
framework/native/libs/ui/GraphicBufferMapper.cpp调用Gralloc模块显示缓冲的映射,并注册显示缓冲内容,使用完后可以注销显示的缓冲内容
5.SurfaceFlinger库调用Gralloc
暂未了解
Gralloc模块驱动程序
Android Gralloc动态库抽象的任务是消除不同设备之间的差别,Module层隐藏缓冲区操作细节,动态链接库gralloc.xxx.so封装底层细节
Gralloc模块的实现hardware/libhardware/modules/gralloc/
gralloc.cpp:实现gralloc_module_t和alloc_device_t
mapper.cpp:实现工具函数
framebuffer.cpp实现alloc_device_t