内核和参考

内容

考虑几个问题:

  • 在使用modetest时,-a参数代表atomic,这个是什么?
  • 在学习 DRM应用程序进阶Property-何小龙 的模块时, 提到的Atomic原子操作是什么?
  • 前边DRM和GEM学习时,未涉及到显示模块的几要素(framebuffer,plane,crtc,encoder,connector),这个又是怎么用的?
  • kms中的property又是啥?提到的helper又是什么?
  • kms中的各个层在驱动是如何表示的?

学习KMS只要要先明白这几个问题, 需要先熟悉下 何小龙 翻译的: Atomic mode setting design overview,
这个是学习后边章节的基础部分,需要先了解了 修改原因, 设计框架, 才会知道 为什么要这样做;

参考

什么是Atomic

在学习 DRM应用程序进阶Property-何小龙 时, 我们可以看到,现在使用的都是 Atomic 原子操作接口 来对DPU的 显示模块5要素(framebuffer,plane,crtc,encoder,connector)进行初始化和配置的。

为什么叫“Atomic Commit”?

本次commit操作,要么成功,要么保持原来的状态不变。 即如果中途操作失败了,那些已经生效的配置需要恢复成之前的状态,就像没发生过commit操作似的,这就是Atomic的含义。

Atomic的优点

减少上层应用接口的维护工作量。当开发者有新的功能需要添加时,无需增加新的函数名和IOCTL,只需在底层驱动中新增一个property,然后在自己的应用程序中获取/操作该property的值即可。 增强了参数设置的灵活性。一次IOCTL可以同时设置多个property,减少了user space与kernel space切换的次数,同时最大限度的满足了不同硬件对于参数设置的要求,提高了软件效率。 维护属性的原子操作配置。一次操作 要么成功, 要么失败。 符合 wayload每一帧都是完美的(every frame is perfect)口号。

Atomic的历史 (重点)

Atomic mode setting design overview, part 12 翻译版本