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

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

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

我一直在使用 uvesafb 在 tty 上获取本机分辨率。我在这里的目的是了解它如何在具有 KMS 的系统上运行。它还有助于涵盖诸如以下内容:使用 KMS 滚动速度更快吗? fbterm 和 fbida 等实用程序的工作方式相同吗?稳定性更好吗?

答案1

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

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

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

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

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

此外,内核中有两个针对同一硬件的独立驱动程序:帧缓冲区驱动程序和 DRM 驱动程序。如果您使用特定于硬件的帧缓冲区驱动程序(例如 intelfb),则可以加载帧缓冲区驱动程序或 DRM 驱动程序,但不能同时加载两者。

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

  • 将内核硬件特定的帧缓冲区驱动程序和 drm 驱动程序合并为单个驱动程序。
  • 为 X 服务器、Wayland 合成器或其他应用程序提供用于控制模式设置的接口,因此用户空间应用程序不必直接访问硬件。 (事实上​​,有了 KMS,X 服务器不再需要 root 权限。)

一些有趣的说明:向现在的 KMS 的迁移实际上是在 2004 年左右开始的;看Jon Smirl 关于控制台重新架构的电子邮件

要回答您更具体的问题:

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

答案2

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

内核模式设置

相关内容