Android GUI系统学习1:Gralloc
Gralloc模块是从Android Eclair(android 2.1)开始加入的一个HAL模块,Gralloc的含义为是Graphics Alloc(图形分配)。他对上为libui提供服务,为其分配显存,刷新显示等。对下对framebuffer进行管理。 gralloc代码通常位于hardware/libhardware/modules/gralloc目录下。包含以下几个文件: Android.mk framebuffer.cpp gralloc.cpp gralloc_priv.h gr.h mapper.cpp 另外,与其相关的头文件位于hardware/libhardware/include/hardware,涉及fb.h和gralloc.h。 下面从gralloc的调用开始学习gralloc的代码。代码基于android4.4。 gralloc的调用是从FramebufferNativeWindow.cpp的构造函数开始的。FramebufferNativeWindow实现FrameBuffer的管理,它主要被SurfaceFlinger使用,也可以被OpenGL Native程序使用。在本质上,它在Framebuffer之上实现了一个ANativeWindow,目前它只管理两个buffers:front and back buffer。 如下所示