显示处理器是什么
将在内存中的图像数据,转化为电信号送到显示设备称为显示控制器,比如早期的LCDC。后面进行了拓展,可以处理一些简单的图像,比如缩放、旋转、合成等,如瑞芯的vop,高通的sde称为显示处理器。合成后送到下一级的接口,这里的接口指的是lvds,mipi等。
优点:简单的图像处理使用显示处理器可以节省gpu功耗。
显示处理器主要能做什么
以下功能均由硬件完成,不需要cpu参与
- 缩放,旋转等操作
- 支持多层,并可以进行合成,支持porter-duff
- 支持多种显存格式(ARGB888, RGB565, 包括GPU输出的tile格式以及fbdc压缩格式)等
- 支持生成时序信号如tcon,送给如lvds或者mipi等接口。
- 支持多种分辨率
为什么要介绍显示处理器的功能?因为DRM驱动就是为了实现这些功能的软件实现。
各家芯片厂商显示处理器实现各有不同,但均有如下两个重要的部件:多个layer、负责图层合成的模块以及输出接口,整个处理流程可以称为display pipelane。
layer:
layer是一个图层,可以理解为里面放了一张图片,如下图。实际放在各个layer的是以某种格式填充在memory里的图像数据。layer需要配置的信息包括但不限于:图像format、width x height、stride、显存地址等;如果支持缩放还需要原图像大小以及要缩放大小等。现在很多芯片都支持多layer,如瑞芯的vop可支持6个layer,高通的高端芯片可以支持8~9个layer。
图像合成模块
主要用于将各个layer送来的图像进行合成为一层送出显示,例如将上面三层合成如下效果。
可以理解为在图像合成模块里有个画布,把每层按照一定次序和规则画上去。
合成如上效果需要配置那些参数呢?
- 每个layer在画布的位置(x, y)
- 每个layer的zorder,也就是哪个layer在上面,哪个layer在下面。
- 最终合成图像的大小
- 按照哪种方式合成(porter-duff)
输出接口
接口负责将合成后的数据翻译为标准协议信号,比如常见的dsi,lvds等,便于外接显示设备进行显示。
以上介绍仅是自己对显示处理器的见解,我不是做芯片设计的,对以上模块的内部设计不了解;软件驱动只需知道什么时候配置什么样的功能即可。
有了这些概念再来看drm显示驱动就会相对容易一些。