LCD DRM驱动框架分析一

本文深入分析了RK3566/RK3568平台的LCDDRM驱动框架,介绍了DRM的基本概念、核心组件的功能及交互流程,并探讨了libdrm、KMS和GEM三个关键模块。

本文是基于rk3566 / rk3568平台 从概念和框架上对LCD DRM驱动框架进行分析。

一、DRM(Direct Rendering Manager)简介

DRM 是 Linux 目前主流的图形显示框架,相比 FB 架构,DRM 更能适应当前日益更新的显示硬件。比如 FB 原生不支持多层合成,不支持 VSYNC,不支持 DMA-BUF,不支持异步更新,不支持 fence 机制等等,而这些功能 DRM 原生都支持。同时 DRM 可以统一管理 GPU 和 Display 驱动,使得软件架构更为统一,方便管理和维护。

DRM 全称是 Direct Rendering Manager,进行显示输出管理、buffer 分配、帧缓冲。对应 userspace 库 为 libdrm,,libdrm 库提供了一系列友好的控制封装,使用户可以方便的进行显示的控制和 buffer 申请。DRM 的设备节点为 "/dev/dri/cardX", X 为 0-15 的数值,默认使用的是/dev/dri/card0。

1、DRM显示通路介绍

04c1d9e9b86d468689789bddcfc17cb5.png

各部分说明:

1)DRM Framebuffer

是一块内存区域,可以理解为一块画布,驱动和应用层都能访问它。绘制前需要将它格式化,设定绘制的色彩模式(例如RGB24,YUV 等)和画布的大小(分辨率),不负责显存的分配释放。

2)CRTC

阴极摄像管上下文(显示控制器),也可以理解为扫描仪(对显示buffer进行扫描,并产生时序信号(RGB timing)的硬件模块)。CRTC对内连接 Framebuffer 地址,对外连接 Encoder,会扫描 Framebuffer 上的内容,叠加上 Planes 的内容,最后传给Encoder。在 rockchip 平台是 SOC 内部 VOP(部分文档也称为 LCDC)模块的抽象。如图:

0452b6c900ab4c5095cae5e0cbdd67ba.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值