首先要明白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
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 基础 HAL层介于android内核和上层应用之间的抽象层接口。作用将硬件抽象化,屏蔽特定平台的硬件接口细节,使平...
- 上一篇我们分析了androidHAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t...
- 硬件厂商处于保护核心代码,会将核心实现以so库的形式出现在HAL层,当需要时HAL会自动调用相关的共享库。 共享库...