首先要明白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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 基础 HAL层介于android内核和上层应用之间的抽象层接口。作用将硬件抽象化,屏蔽特定平台的硬件接口细节,使平...
- 上一篇我们分析了androidHAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t...
- 硬件厂商处于保护核心代码,会将核心实现以so库的形式出现在HAL层,当需要时HAL会自动调用相关的共享库。 共享库...