hwcomposer模块的接口

来源:互联网 发布:淘宝类目详细划分 编辑:程序博客网 时间:2024/05/16 15:14


 转自 http://blog.sina.com.cn/s/blog_7213e0310102wmc0.html

hwc API接口是google定义好的,具体可以参见hardware/libhardware/include/hardware/hwcomposer.h.

里面的主要接口说明如下:

hwc_composer_device_1:: prepare

SF把要显示的layers放在** displays参数里,主要是有几层,每层的格式,以及layersFences fd。如果当前芯片平台显示硬件模块可以支持layer的格式,它把相应的layer设成HWC_OVERLAY,如果显示硬件不支持其中的某个layer的格式,就把相应的layer设成HWC_FRAMEBUFFER

 

hwc_composer_device_1:: set

SF告诉hwc,把里面所有layers输出到显示屏上,overlaylayerhwc来处理,framebufferlayerSFgpu的合成来完成。这个函数相当于过去framebuffer接口里的pan display

 

hwc_composer_device_1::eventControl

使能/禁止vsync

 

hwc_composer_device_1::blank/setPowerMode

老的hwc(1.3以前)blank控制display on/off,最新的hwc里用setPowerMode实现的功能差不多,但setPowerMode的参数更丰富,不像blank0/1

 

hwc_procs_t:: vsync

这个也算是最重要的接口函数之一。Android4.1里加入了对vsync的支持,这是对Android显示流畅度最大的提高措施之一。每一帧显示完毕hwc都会调用这个接口告诉SF一帧显示完成了。这个函数一般由内核里显示驱动中断出发,经过sys, proc, ioctl, uevent 或其他文件系统接口来通知hwc,再由hwc回调到SF里。

 

hwc_procs_t::hotplug

只有支持外接热插拔显示硬件的平台才考虑这个接口。比如hdmi。如果是一个出了显示屏不带其它接口的硬件,则不必考虑它。

 

Hwc 1.4接口里还加入了getDisplayConfigs/setActiveConfig等接口,貌似这是参考EGL接口实现的。如果hwc版本是1.4,这些函数在hwc里必须实现。

0 0