内核模式设置与帧缓冲区?

use*_*184 27 kernel terminal framebuffer kms

使用 KMS,图形驱动程序被移动到内核中。由于帧缓冲区已经在内核中,我不希望这会影响帧缓冲区操作。然而,我读到 KMS 取代了 fb,增加了 fb,需要 fb,并且需要删除 fb 支持。有没有搞错?我正在寻找的答案是对 KMS 和帧缓冲区之间关系的解释。

我一直在使用 uvesafb 在 tty 上获得原始分辨率。我在这里的目的是了解这将如何在带有 KMS 的系统上工作。它也有助于涵盖诸如..使用 KMS 滚动速度更快吗?fbterm 和 fbida 等实用程序的工作方式相同吗?稳定性更好吗?

kep*_*tin 8

首先,基本上有两种经典的帧缓冲驱动程序:

  • 通用硬件和固件驱动程序(例如 vga、vesafb/uvesafb、efifb)
  • 特定于硬件的驱动程序(例如 rivafb、atyfb)

经典的帧缓冲驱动程序都有基本的模式设置支持,但它们几乎没有公开对硬件加速的支持。

使用经典的 X 设计,这不是真正的问题:为了获得 2D 加速,X 服务器以 root 身份运行,并且可以直接访问硬件。它基本上完全绕过了帧缓冲驱动程序。对于 3d(以及较新卡上的 2d 支持),它还将使用内核 DRM 驱动程序来调节访问和管理视频内存。

在这个设置中,有两个地方进行了模式设置:在内核帧缓冲驱动程序中,以及在用户空间 X 服务器中。这种代码重复(以及驱动程序之间偶尔的冲突,例如在 VT 开关上)并不理想。

此外,内核中有两个单独的驱动程序用于同一硬件:帧缓冲驱动程序和 DRM 驱动程序。在某些情况下(例如 pre-kms intelfb),您可以加载一个或另一个,但不能同时加载两者。

KMS 是这些问题的解决方案。它:

  • 将内核硬件特定的帧缓冲驱动程序和 drm 驱动程序合并为一个驱动程序。
  • 为 X 服务器提供用于控制模式设置的接口,因此 X 服务器不必直接访问硬件。(确实,有了 KMS,X 服务器不再需要 root 权限。)

一些有趣的注意事项: 迁移到现在的 KMS 实际上是在 2004 年左右开始的;请参阅Jon Smirl 在控制台重新架构上的电子邮件

要回答您更具体的问题:

  • 速度通常不会比未加速的通用驱动程序之一(例如 VGA、vesafb)差,但 KMS 帧缓冲区文本控制台是为方便和紧急使用而不是速度而设计的,并且控制台在某些驱动程序上没有完全加速。例如,在英特尔卡上缠绕的长线非常糟糕。
  • 设计为使用旧帧缓冲区接口的应用程序仍可在 KMS 帧缓冲区上运行。


小智 3

KMS 在内核空间而不是用户空间设置显示分辨率和深度。所以是的,它取代了它。它在帧缓冲区中启用本机分辨率。

内核模式设置

  • 关于 KMS 的 Wiki 文章很容易找到,但解释却很糟糕。KMS如何取代fb并同时启用它?fb 已经支持原生分辨率了,那么有什么不同呢?Facebook 实用程序可以与 KMS 配合使用吗? (5认同)