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