电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

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

Android帧缓冲区(FrameBuffer)硬件抽象层(HAL)模块Gralloc的实现原理分析_第1页
1/37
Android帧缓冲区(FrameBuffer)硬件抽象层(HAL)模块Gralloc的实现原理分析_第2页
2/37
Android帧缓冲区(FrameBuffer)硬件抽象层(HAL)模块Gralloc的实现原理分析_第3页
3/37
Android 帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc 的实现原理分析分类:Android 2012-07-23 01:251529 人阅读评论(16)收藏举报前面在介绍Android 系统的开机画面时提到,Android 设备的显示屏被抽象为一个帧缓冲区,而Android 系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android 系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作。本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础。在前面Android 系统的开机画面显示过程分析一文中提到,Linux 内核在启动的过程中会创建一个类别和名称分别为“graphics”和 “fb0”的设备,用来描述系统中的第一个帧缓冲区,即第一个显示屏,其中,数字0表示从设备号。注意,系统中至少要存在一个显示屏,因此,名称为“fb0”的设备是肯定会存在的,否则的话,就是出错了。Android 系统和Linux 内核本身的设计都是支持多个显示屏的,不过,在Android 目前的实现中,只支持一个显示屏。在前面Android 系统的开机画面显示过程分析一文中还提到,init进程在启动的过程中,会启动另外一个进程ueventd 来管理系统的设备文件。当ueventd 进程启动起来之后,会通过netlink接口来Linux内核通信,以便可以获得内核中的硬件设备变化通知。而当ueventd 进程发现内核中创建了一个类型和名称分别为 “graphics”和 “fb0”的设备的时候,就会这个设备创建一个/dev/graphics/fb0设备文件。这样,用户空间的应用程序就可以通过设备文件/dev/graphics/fb0来访问内核中的帧缓冲区,即在设备的显示屏中绘制指定的画面。注意,用户空间的应用程序一般是通过内存映射的方式来访问设备文件/dev/graphics/fb0的。Android 系统定义了硬件抽象层模块的编写规范,具体可以参考Android 硬件抽象层(HAL )概要介绍和学习计划一文。本文假设读者已经熟悉Android 系统的硬件抽象层编写规范,因此,我们将按照帧缓冲区的使用情景以及硬件抽象层编写规范来介绍Gralloc模块的实现。用户空间的应用程序在使用帧缓冲区之间,首先要加载Gralloc模块,并且获得一个gralloc设备和一个fb设备。有了gralloc设备之后,用户空间中的应用程序就可以申请分配一块图形缓冲区,并且将这块图形缓冲区映射到应用程序的地址空间来,以便可以向里面写入要绘制的画面的内容。最后,用户空间中的应用程序就通过fb设备来...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

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

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部