6.3.8. 色彩调整¶
6.3.8.1. 概述¶
显示引擎支持色彩调整,覆盖 UI 图层和 Video 图层。
通过调整亮度,对比度,饱和度,色调等属性,可以使同一张图片呈现不同的显示效果, 能让质量不同的 LCD 外设拥有相近的显示效果。
对于色彩调整的相关参数,支持 device tree 配置,在应用启动时即时生效;也支持 ioctl 动态调整,方便调试。
UI 图层和 Video 图层使用同一份色彩调整参数。
6.3.8.2. 配置¶
6.3.8.2.1. ioctl¶
// include/uapi/Video/artinchip_fb.h
/*
 * struct aicfb_disp_prop - aicfb display property
 *
 * @bright: bright in percent, range [0, 100], 50 means no effect
 * @contrast: contrast in percent, range [0, 100], 50 means no effect
 * @saturation: saturation in percent, range [0, 100], 50 means no effect
 * @hue: hue in percent, range [0, 100], 50 means no effect
 */
struct aicfb_disp_prop {
    unsigned int bright;
    unsigned int contrast;
    unsigned int saturation;
    unsigned int hue;
};
/** set display property */
#define AICFB_SET_DISP_PROP _IOW(IOC_TYPE_FB, 0x60, struct aicfb_disp_prop)
/** get display property */
#define AICFB_GET_DISP_PROP _IOR(IOC_TYPE_FB, 0x61, struct aicfb_disp_prop)
6.3.8.2.2. device tree¶
&fb0 {
    disp-bright = <45>;
    disp-contrast = <50>;
    disp-saturation = <60>;
    disp-hue = <50>;
    port {
        fb0_out: endpoint {
            remote-endpoint = <&de0_in>;
        };
    };
};
- disp-bright - 显示亮度,[0, 100], 缺省等于 50,50 表示不调节亮度。 
- disp-contrast - 显示对比度,[0, 100], 缺省等于 50,50 表示不调节对比度。 
- disp-saturation - 显示饱和度,[0, 100], 缺省等于 50,50 表示不调节饱和度。 
- disp-hue - 显示色调,[0, 100], 缺省等于 50,50 表示不调节色调。 
6.3.8.3. Video 图层调色¶
Video 图层的色彩调整较为简单,通过下放 ioctl AICFB_SET_DISP_PROP 和 AICFB_GET_DISP_PROP 即可调整
Video 图层的显示效果。
如果希望只使能 Video 图层调色,禁用 UI 图层调色,不需要配置 device tree,应用程序向底层下放 ioctl 即可。在 device tree 中配置色彩调整参数后,显示驱动会同时使能 UI 和 Video 图层的色彩调整功能。
6.3.8.4. UI 图层调色¶
UI 图层的色彩调整功能需要配置 device tree。如果 device tree 中没有配置相关属性,或者相关属性都设置为 50。显示驱动默认禁用 UI 图层调色功能。
&fb0 {
    disp-bright = <45>;
    disp-contrast = <50>;
    disp-saturation = <60>;
    disp-hue = <50>;
};