4. 龙芯GPU显示控制器:架构、模块与核心概念

在HDMI Gamma曲线调试工程中,显示控制器(Display Controller)是Gamma校正数据最终写入并生效的硬件单元。理解龙芯GPU的显示控制器架构、CRTC与Plane的概念,是正确配置Gamma查找表(LUT)并确保色彩输出符合预期的基础。本节将深入解析龙芯GPU显示子系统的核心模块与数据流。

4.1 龙芯GPU架构概览

龙芯GPU(以7A2000/7A1000桥片集成的GPU为例)采用统一的渲染与显示架构,其显示控制器部分独立于3D渲染引擎,专门负责从帧缓冲区读取像素数据、经过色彩处理管线(含Gamma校正)后输出到HDMI/DVI等显示接口。

架构要点: 龙芯GPU显示控制器采用“Plane → CRTC → Encoder → Connector”的经典DRM(Direct Rendering Manager)软件模型,硬件上对应独立的DMA引擎、色彩处理单元和时序发生器。
龙芯GPU显示子系统架构概览 系统总线(AXI/AHB) 显示控制器(Display Controller) Plane 0(主图层) 帧缓冲 DMA Plane 1(光标/OSD) Alpha 混合 Plane 2(硬件光标) 独立 DMA 混合器 / Alpha Blender CRTC(时序控制器 + Gamma LUT) HDMI Encoder → PHY → 物理连接 Gamma LUT 位于 CRTC 模块内部,在像素数据输出到 Encoder 之前完成非线性校正

4.2 显示控制器(Display Controller)模块

显示控制器是GPU内部负责从系统内存读取帧数据、合成多图层、应用色彩校正并生成显示时序的硬件模块。在龙芯平台上,显示控制器通常集成在桥片内部,通过内部总线与GPU核心和系统内存相连。

子模块 功能描述 与Gamma调试的关系
DMA引擎 从系统内存(帧缓冲)中读取像素数据,支持RGB/YUV格式 Gamma校正作用于DMA读取后的像素流
图层混合器 将多个Plane的像素按Alpha值叠加合成 Gamma校正通常在混合之后、输出之前应用
CRTC 生成行/场同步时序,管理Gamma LUT和色彩矩阵 Gamma LUT寄存器位于CRTC寄存器空间
Encoder 将并行像素数据编码为HDMI/DVI串行差分信号 接收Gamma校正后的数据,不参与色彩处理
PHY 物理层,驱动HDMI电缆上的高速信号 与Gamma无关,但影响信号完整性
调试提示: 在龙芯7A2000平台上,显示控制器的Gamma LUT寄存器组位于CRTC的偏移地址0x8000~0x8FFF范围内,每个通道(R/G/B)支持256个12-bit查找表项。写入Gamma表后,需要触发CRTC的“LUT更新”位(通常为寄存器bit 0)使配置生效。

4.3 CRTC与Plane概念

CRTC(Cathode Ray Tube Controller,阴极射线管控制器)和Plane是DRM显示子系统的两个核心抽象概念,在龙芯GPU硬件中有明确的对应实现。

4.3.1 Plane(图层/平面)

Plane代表一个独立的显示图层,每个Plane拥有自己的帧缓冲地址、像素格式、位置、尺寸和Alpha值。龙芯显示控制器通常支持3个硬件Plane:

  • 主Plane(Primary Plane): 用于显示桌面或视频主画面,支持RGB888/RGB565格式,支持缩放。
  • 光标Plane(Cursor Plane): 专用于硬件鼠标光标,尺寸固定(通常64×64),支持ARGB格式,独立于主Plane更新。
  • 叠加Plane(Overlay Plane): 用于视频叠加或OSD(On-Screen Display),支持YUV格式和Alpha混合。
Plane 图层叠加与混合示意 Plane 0:桌面背景 / 主帧缓冲 Plane 1:视频窗口 / OSD 光标 每个Plane独立配置帧缓冲地址和Alpha值,混合器按Z序叠加后送入CRTC

4.3.2 CRTC(时序控制器)

CRTC是显示控制器的核心时序与色彩管理单元。在龙芯GPU中,CRTC负责:

  1. 时序生成: 产生行同步(HSYNC)、场同步(VSYNC)、数据使能(DE)和像素时钟,驱动HDMI接口的时序协议。
  2. Gamma校正: 内置可编程Gamma查找表(LUT),对每个颜色通道(R/G/B)进行独立的非线性映射。Gamma LUT通常为256×12-bit或256×10-bit。
  3. 色彩空间转换: 支持RGB ↔ YUV转换矩阵,以及色彩饱和度/亮度调整。
  4. 抖动处理(Dithering): 在输出位宽不足时(如10-bit面板接收8-bit数据),通过空间/时间抖动减少色带。
CRTC特性 龙芯7A2000实现 调试注意事项
Gamma LUT深度 每通道256级,12-bit精度 写入12-bit值(0~4095),高4位有效
LUT更新方式 双缓冲:写入Shadow寄存器,触发更新后生效 需在VBlank期间触发更新,避免画面撕裂
支持的时序 最高3840×2160@30Hz(HDMI 1.4) Gamma校正与分辨率无关,但像素时钟影响LUT读取时序
色彩矩阵 3×3可编程矩阵,支持BT.601/BT.709 Gamma校正应在色彩矩阵之后应用
常见误区: 部分开发者误以为Gamma LUT属于Plane级别,实际上龙芯显示控制器的Gamma LUT位于CRTC内部,作用于所有Plane混合后的最终像素流。如果需要为不同Plane应用不同的Gamma曲线(如HDR与SDR混合),需要额外的硬件分段支持或软件预处理。

4.4 CRTC与Plane的协同工作流

在HDMI输出一帧画面的过程中,CRTC与Plane按照以下流水线协同工作:

  1. DMA读取: 每个Plane的DMA引擎根据CRTC发出的行起始信号,从系统内存中读取当前行的像素数据。
  2. 格式转换与缩放: Plane内部将读取的像素转换为统一的RGB格式,并根据配置进行缩放(如视频从720p放大到1080p)。
  3. Alpha混合: 混合器按照Plane的Z序和Alpha值,将多个Plane的像素逐点合成。
  4. 色彩矩阵: 合成后的RGB像素经过3×3色彩矩阵(用于色域映射或亮度调整)。
  5. Gamma校正: 像素数据进入CRTC的Gamma LUT,每个通道根据查找表进行非线性映射。
  6. 抖动与输出: 经过Gamma校正的像素可选地经过抖动处理,然后并行发送给HDMI Encoder。
显示流水线:从帧缓冲到HDMI输出 Plane DMA 格式转换 Alpha混合 色彩矩阵 Gamma LUT HDMI Gamma校正位置: Gamma LUT位于色彩矩阵之后、HDMI输出之前,确保所有Plane混合后的像素经过统一的非线性校正。 调试时需确认Gamma LUT的更新时机与VBlank同步,避免输出画面出现半帧校正半帧未校正的“花屏”现象。

4.5 本章小结

  • 龙芯GPU显示控制器采用Plane → 混合器 → CRTC → Encoder的经典架构,Gamma LUT位于CRTC内部。
  • Plane是独立图层,支持主图层、光标和叠加层,每个Plane有独立的帧缓冲和Alpha属性。
  • CRTC是时序与色彩管理的核心,包含可编程Gamma LUT(每通道256×12-bit),影响最终输出色彩。
  • Gamma校正作用于所有Plane混合后的像素流,调试时需关注LUT更新时机和寄存器映射。