0 前言
颜色反转[2]、夜间模式[3]、显示白平衡[4]、色彩校正[5]、模拟颜色空间[6]、强调色[7]、护眼模式[8]、色温调节[9]等显示效果都是通过颜色矩阵实现的,因此本文重点对其进行分析。
注:该特性并非Android-Q才引入的,而是早在android-5.0.2_r1就有了。
验证环境:NanoPC-T4、Pixel4
1 SurfaceFlinger
1.1 更新矩阵
参考资料[2][3][4][5][6][7][8][9]都是通过编码SURFACE_FLINGER_TRANSACTION_COLOR_MATRIX(= 1015)将颜色矩阵下发给SurfaceFlinger的,SurfaceFlinger将其存到mClientColorMatrix:
SurfaceFlinger::onTransact(uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) {
...
switch (code) {
...
case 1