Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析

 

1. 加载Gralloc模块

2. 打开Gralloc模块中的gralloc设备和fb设备

    其中,gralloc设备负责分配图形缓冲区,Gralloc模块负责注册图形缓冲区,而fb设备负责渲染图形缓冲区。

 

 

gralloc的所有(包括调用surfaceflinger的其他客户端)缓冲区由surfaceflinger分配管理, 在gralloc_alloc的时候它们被映射到surfaceflinger所在的进程(system server)。

gralloc_alloc:分配缓冲区, 并映射到调用进程(如surfaceflinger)。 缓冲区分为来自fb设备的系统帧缓冲区和来自内存的缓冲区(ashmem). surfaceflinger的主显存在fd设备打开的时候map的, 是系统帧缓冲区。其它图形缓冲区在gralloc_alloc时生成。 或者从系统帧缓冲区分配(GRALLOC_USAGE_HW_FB), 或者从内存的缓冲区分配(0)。 如果从系统帧缓冲区只能分配一个, 那么会从内存的缓冲区分配。

gralloc_register_buffer: 将buffer映射到客户端。 通过检查pid知道是alloc的进程还是客户端进程。

gralloc_lok: 将buffer的地址返回给客户端, 这里的地址在register或者alloc的时候就已经生成了。

 

 

 

 

 

 

 

 

http://www.2cto.com/kf/201207/142765.html

你可能感兴趣的:(Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析)