Android的BoardConfig.mk有什么用?
Android的BoardConfig.mk中的MESONHWC CONFIG有什么用?
Android的hwc是什么意思?
Android的BoardConfig.mk中的hwc是什么意思?
BoardConfig.mk的作用
板配置,主要是针对底层的配置文件。在Android系统中,板配置主要在build/target/board和build/core等目录中,名字一般为boardconfig.mk。
它里面主要写了product使用的硬件所支持和不支持的功能性内容。BroadConfig.mk设置了每个设备的自己的一些变量值,来区别编译时的行为。
BoardConfig.mk中的几个参数
相关参数在Android源码的目录,例如:
AndroidP_AOSP\androidP\device\amlogic\braun\BoardConfig.mk
#MESONHWC CONFIG
USE_HWC2 := true
HWC_DISPLAY_NUM := 1
--- HWC_PRIMARY_FRAMEBUFFER_WIDTH := 1920
--- HWC_PRIMARY_FRAMEBUFFER_HEIGHT := 1080
--- #HWC_EXTEND_FRAMEBUFFER_WIDTH := 1920
--- #HWC_EXTEND_FRAMEBUFFER_HEIGHT := 1080
+++ HWC_PRIMARY_FRAMEBUFFER_WIDTH := 1280
+++ HWC_PRIMARY_FRAMEBUFFER_HEIGHT := 720
+++ #HWC_EXTEND_FRAMEBUFFER_WIDTH := 1280
+++ #HWC_EXTEND_FRAMEBUFFER_HEIGHT := 720
HWC_PRIMARY_CONNECTOR_TYPE := "hdmi"
#HWC_EXTEND_CONNECTOR_TYPE := "panel"
#HWC_ENABLE_HEADLESS_MODE := true
参考:
http://www.vaststargames.com/read.php?tid=57
HWC_PRIMARY_CONNECTOR_TYPE := “hdmi” 是什么意思?参考下面文章的注释,可以猜想是,设置主显示器的显示接口,这里设置HDMI接口为主显
HWC_EXTEND_CONNECTOR_TYPE := “panel”,设置副显示器的显示接口
主副显示器设置:
可以在产品配置目录下的system.prop里(如 device/rockchip/rk3288/rk3288_mid/system.prop)添加如下两个属性:
sys.hwc.device.primary = HDMI-A //设置显示接口做为主显,这里设置HDMI接口为主显
sys.hwc.device.extend = LVDS //设置显示接口做为副显,这里设置LVDS接口为副显
Android显示系统的原理
FrameBuffer
SurfaceFlinger
HardwareComposer
硬件组合抽象层(HWComposer、Hardware Composer HAL),作为 HAL 硬件抽象层,其实现是基于特定设备的,通常由屏幕硬件设备制造商 (OEM) 完成。主要用于确定合成缓冲区的最有效方式,SurfaceFlinger 在收集可见层的所有缓冲区后,便会询问 HWC 应如何进行合成。如果 HWC 将层合成类型标记为客户端合成(Client合成),则 SurfaceFlinger 会合成这些层,然后 SurfaceFlinger 会将输出缓冲区传递给 HWC。如果标记为Device合成,则由专门的硬件合成器进行合HWComposer,所以硬件合成的能力就取决于硬件的实现。两种合成方式:
- Client合成
Client合成方式是相对与硬件合成来说的,其合成方式是,将各个Layer的内容用GPU渲染到暂存缓冲区中,最后将暂存缓冲区传送到显示硬件。这个暂存缓冲区,我们称为FBTarget,每个Display设备有各自的FBTarget。Client合成,之前称为GLES合成,我们也可以称之为GPU合成。Client合成,采用RenderEngine进行合成。 - Device合成
就是用专门的硬件合成器进行合成HWComposer,所以硬件合成的能力就取决于硬件的实现。其合成方式是将各个Layer的数据全部传给显示硬件,并告知它从不同的缓冲区读取屏幕不同部分的数据。HWComposer是Devicehec的抽象。
所以,整个显示系统的数据流如下图所示,此图来源于Androd 官网:
GPU合成后数据,作为一个特殊的Layer,传给显示硬件。