HAL

首先要明白Android的各个子系统通常不会直接使用内核驱动,而是有HAL间接引用底层架构
所以说它要有向上层提供接口和调用底层驱动的功能
HAL 是硬件抽象接口
在内核系统中,Framebuffer(帧缓冲区)是图形硬件的抽象描述。在显示系统中,HAL提供了Gralloc和Composer模块,什么意思呢,就是说在HAL层,我们需要和Framebuffer打交道,那么调用内核就是Framebuffer的事了。那么Gralloc就是在HAL层用来操作帧缓冲区的。
HAL给所有的硬件设备定义了一个顶层的数据结构 hw_module_t 这个数据结构(里的数据结构)有个方法是open,
HAL规定所有的硬件第一个包含hw_module_t类型变量(所谓继承)也就是每个硬件包含了open方法
那么在上层加载Gralloc模块时,使用open方法打开fb0,gpu0,这个俩个设备,fb0是主荧屏,gpu0负责图形缓冲区的分配和释放
那么打开fb0就是把buffer中的数据post上去,设置缓冲区交换时间,设置刷新区域等
那么打开gpu0就是分配和释放缓冲区
那么HAL有是如何与OpenGL ES关联的呢
上篇文章我们知道OpenGLES就是把3D数据加工显示到荧屏上,那么它产生的数据就必须经过HAL中的Gralloc模块输出到FrameBuffer上。

你可能感兴趣的:(HAL)