内核模式设置与帧缓冲?


24

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

我一直在使用uvesafb在tty上获得本机分辨率。我的目的是了解如何在具有KMS的系统上工作。这也将有助于解决诸如此类的问题。.使用KMS滚动是否更快?fbterm和fbida之类的实用程序是否起作用?稳定性更好吗?

Answers:


6

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

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

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

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

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

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

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

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

一些有趣的注意事项:迁移到现在的KMS实际上是在2004年左右开始的。请参阅乔恩·斯米尔(Jon Smirl)关于控制台架构的电子邮件

要回答您更具体的问题:

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

3

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

内核模式设置


4
关于KMS的Wiki文章很容易找到,但是解释很糟糕。KMS如何取代fb并同时启用它?fb已经支持本机分辨率,所以有什么不同?fb实用程序可以与KMS一起使用吗?
user5184 2011年

我不认为framebuffer支持本机分辨率,尤其是在宽屏显示器上。例如,我的LCD显示器的原始分辨率为1680x1050,但是,帧缓冲区只能检测1280x1024分辨率
LiuYan刘研
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.