缘由
什么是 KMS ?
要了解 KMS,首先要了解 DRM 。
DRM 是 Direct Rendering Manager 的缩写,最初只是用来支持 GPU 的,最初它负责:
- Initialize GPU card, load its firmware, etc.
- Share the GPU command queue between multiple Applications
- Manage the memory (allocation, access)
那时候,Mode-Setting (包括更新画面、配置 display pipeline、screen resolution、color depth、refresh rate等) 是在 Userspace 中实现的,这样做的缺点是:
- Rendering 和 Mode-Setting 会发生竞争;
- 不统一,缺少抽象,不同的硬件平台各自为营;
后来就引入了 Kernel Mode-Setting (KMS),其实就是将 Mode-Setting 的活移回到内核,DRM driver 即负责访问 GPU 也负责访问 Display Engine,且将 KMS 作为 DRM API 的一部分,如下图:
文章插图
目前我们关注最左边的路径就好,不用太关注 GEM、PRIME 等概念 。
图形应用是如何进行显示的?
通常,一个普通的图形应用并不会直接通过 KMS 和内核进行交互,而是先和 display server (例如给予 X11 的 Xorg, 或者基于 Wayland 的 Weston,也称 display compositor) 进行交互:将显示的图像提交给 display server, 再由 display server 负责将多个 client 图形应用的图像合成成一张图像,并将这张图像通过 KMS 的接口提交给内核 。
简而言之,就是 2 个步骤:
step1: 合成
文章插图
step2: 提交给内核
文章插图
何时要用 KMS ?
对于普通的图形应用,一般是不会直接去使用 KMS 的 。
只有一些需要 low level control 的应用需要使用 KMS,例如:
- Display servers;
- Media players,例如 Kodi,它们有自己的 KMS backend,不需要额外的 display server;
- 游戏相关的应用,例如 RetroArch,为了支持更多的平台,它们会做到不依赖 display server;
- VR、XR,它们对性能要求很严格,所以会亲自访问 KMS 以达到最小的延迟;
【对于 Display 框架,我需要了解 KMS api 吗?| Linux 驱动】既然很少直接使用 KMS,为什么还要学习它 ?
- DRM Driver 的驱动开发人员有必要了解 KMS api,这样才能理解 DRM Driver 的设计目的,从而编写出正确的驱动程序;
- 理解原理,可以协助我们定位图形应用不稳定或者性能相关的问题,尤其是嵌入式 linux 领域,显示相关的功能复杂且容易出现异常;
- 如果你想要为开源软件 Wayland 或者 Kodi 做贡献的话,则需要了解 KMS api;
- 如果你的应用对性能和延迟性要求很高的话,也需要了解 KMS api 。
要编写 KMS 程序,首先要了解 KMS 的模型 。
KMS 将硬件模块抽象成下面几个对象类型:
- Planes:图层,例如在 rockchip 平台里对应 SOC 内部 VOP 模块的 win 图层;
- CRTC:显示控制器,例如在 rockchip 平台里对应 SOC 内部的 VOP 模块;
- Encoder:输出转换器,指 RGB、LVDS、DSI、eDP、HDMI、CVBS、VGA 等显示接口;
- Connector:连接器,指 encoder 和 panel 之间交互的接口部分;
- Bridge:桥接设备,一般用于注册 encoder 后面另外再接的转换芯片,如 DSI2HDMI 转换芯片;
- Panel:泛指屏,各种 LCD、HDMI 等显示设备的抽象;
应用通过 KMS api 将这些对象连接成一条 display pipeline,最终将图像显示在屏幕上:
文章插图
KMS 有两套 api: legacy api (已过时) 和 atomic api:
推荐阅读
- 装了.Net 7.0后,工程框架用 net6 的 dotnet watch 出错临时解决方案
- python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例
- 孩子厌学如何解决?
- 作文辅导班有必要吗
- 考研英语怎么学
- 三星堆将改写历史 三星堆对于现在历史研究有和意义
- 如何开好一家水果店?
- 想用facebook facebook商务管理平台使用教程
- 女性过了30岁后应该如何护肤
- 彭小苒|《东宫》对于彭小苒来说,是最不愿意提及的伤疤