功能描述
影子寄存器 (Shadow Register)
- Preload register:软件可以操作的寄存器。
- Shadow register:软件看不到,硬件操作的寄存器
除了 CRC 校验、CCM 和 Gamma 矫正、QoS、Timing 相关寄存器和 DE 配置更新寄存器之外, 其他的寄存器都有 shadow register。
UI 图层
UI 图层有四个矩形窗口,每个窗口可以单独控制开关,四个窗口可以通过设置各自以 UI 图层左上角为原点的坐标,控制显示在 UI 图层的不同位置。四个窗口设置 Buffer 的颜色格式必须一致。矩形窗口对应的 Buffer 可以是对原始图像裁剪的一块区域,通过软件计算出相应矩形区域的 addr,并且四个矩形窗口不可重叠,需要进行有效性检查。
Video 图层
- 当输入格式为 YUV420、YUV422 格式时必须开启 scaler。
- 当输入格式 为 RGB 格式时不支持 scaler。
- 输入 Buffer 可以用软件裁剪矩形区域。
- 对于 RGB 格式 addr 水平和垂直方向 都是 1 像素对齐。
- 对于 YUV420、YUV422 需要保证 Y 和 U、V 的对应关系。
- YUV420 格式裁剪的水平偏移需 2 像素对齐,垂直偏移也需 2 像素对齐。
- YUV422 格式裁剪的水平偏移需要 2 像素对齐,垂直方向 1 像素对齐。
Video 图层 CSC0 YUV 转 RGB 的格式转换公式如下:
R=Coef0*Y+Coef1*U+Coef2*V+Coef3
G=Coef4*Y+Coef5*U+Coef6*V+Coef7
B=Coef8*Y+Coef9*U+Coef10*V+Coef11
Scaler0 有两个独立的 channel,两个 channel 独立处理。Y 分量由 channel0 处理,U 和 V 分量由 channel1 处理。YUV420/ YUV422 经过 scaler0 模块后,都统一输出 YUV444,然后再经过 CSC0 转换成 RGB 格式,作为最终的 Video 图层显示。
Blending
UI 图层在 Video 图层顶部,UI 图层和 Video 图层在重叠区域进行 Alpha 叠加和 Color Key 操作,Color Key 操作优先于 Alpha 叠加。在 UI 图层和 Video 图层都没有覆盖到的区域显示背景色。
UI Alpha 有三种模式:
- Pixels Alpha 模式:ui_alpha = pixel_alpha
当 pixel alpha 不存在时,ui_alpha = 255。
- 全局 Alpha 模式:ui_alpha = G_ALPHA
G_ALPHA 为设置的全局 alpha 值,取值范围为 0~255。
- 混合 Alpha 模式:ui_alpha = pixels alpha * G_ALPHA/255
UI 图层和 Video 图层透明度混合计算:
r_out=(r_ui*alpha_ui+r_video*(255-alpha_ui))/255
g_out=(g_ui*alpha_ui+g_video*(255-alpha_ui))/255
b_out=(b_ui*alpha_ui+b_video*(255-alpha_ui))/255
色彩矩阵(CCM)
色彩矩阵 (Color Correction Matrix,CCM) 由一个 3x3 的增益矩阵及 3x1 的偏移矩阵组成。CCM 矩阵如下公式所示。
-
其中 Nbit 是 R,G,B 输入输出,位宽为 8
-
Cij:12 bits 有符号数,其中 8 bits 小数
-
Offset:9 bits 有符号整数
Gamma 矫正
Gamma 矫正 R、G、 B 三个通道分别独立进行矫正,通过查表的方式进行矫正,输入数据的位宽为 8 bits,LUT 的长度为为 64,硬件通过线性插值得到两个节点之间的输入值对应的 gamma 矫正结果
限制条件
-
支持屏幕最小 size 为 64x64
-
模块时钟最高可到 150 MHz
-
Pixel clk 要小于 DE 模块时钟
-
当开启 Dither 功能时,屏幕宽度最大到 1366,单位为 pixel
-
UI 图层不支持 scaler,仅 Video 图层 YUV 格式支持 scaler
-
UI 图层矩形窗支持的最小 size:2x2,单位为 pixel
-
Video 图层 YUV 格式支持的最小输入/输出 size:8x8,单位为 pixel
-
Video 图层 YUV 格式支持的最大输入宽度:1280,单位为 pixel
-
Video 图层 RGB 格式支持的最小 size:2x2,单位为 pixel
-
UI 图层和 Video 图层的所有格式的 stride 都要求 8 bytes 对齐