linux framebuffer驱动程序是一个视频卡驱动程序吗?

时间:2016-08-11 10:23:55

标签: linux driver framebuffer

我几乎没有关于这些硬件如何工作的背景知识,但现在我需要学习如何为Android设备编写Linux帧缓冲驱动程序。

我对Linux图形堆栈感到困惑。根据我的理解,在桌面计算机上,合成窗口管理器与DRM进行交互,GPU's然后将数据发送到特定的视频卡驱动程序。另一方面,某些控制器通过DMApage 29内存中检索数据并将其发送到监视器,如答案here所示。 另外,通过nVidia this本书的图表,我发现帧缓冲驱动程序位于实际图形设备之上,因此它必须与特定的视频卡驱动程序进行交互,例如{{{} 1}}司机。

但是当我谷歌为嵌入式设备编写帧缓冲驱动程序时,结果显示,好像驱动程序直接负责与LCD联系,所以看起来它甚至低于显卡驱动程序。

帧缓冲驱动程序实际上是一个视频卡驱动程序吗?

1 个答案:

答案 0 :(得分:3)

帧缓冲驱动程序为

提供了一个接口
  1. 模式设置
  2. 内存访问视频缓冲区
  3. 基本的2D加速操作(例如用于滚动)
  4. 要提供此接口,帧缓冲驱动程序通常直接与硬件通信。

    例如,vesafb帧缓冲驱动程序将使用VESA标准接口与视频硬件通信。但是,这个标准是有限的,所以没有真正的硬件加速进行和绘图很慢。 另一个例子是intelfb帧缓冲驱动程序。它使用专有接口与一些英特尔硬件进行通信,从而暴露更多的加速设备,因此速度更快。

    如今,KMS驱动程序用于大多数硬件。它们都暴露帧缓冲并且还访问其他GPU功能,例如OpenGL,通过DRM。

    你的困惑似乎来自这样一个事实:帧缓冲驱动程序和X11 GPU驱动程序实际上是竞争!这就是为什么,如果你有一个KMS系统,图形和文本控制台之间的切换是即时的,但是,对于非KMS系统,它很慢,因为fb驱动程序和X11驱动程序都需要重新初始化视频控制台交换机上的硬件。

    在由Martin Fiedler揭秘的全面谈话Linux图形中查找更多信息: http://keyj.emphy.de/files/linuxgraphics_en.pdf