我几乎没有关于这些硬件如何工作的背景知识,但现在我需要学习如何为Android设备编写Linux帧缓冲驱动程序。
我对Linux图形堆栈感到困惑。根据我的理解,在桌面计算机上,合成窗口管理器与DRM
进行交互,GPU's
然后将数据发送到特定的视频卡驱动程序。另一方面,某些控制器通过DMA
从page 29
内存中检索数据并将其发送到监视器,如答案here所示。
另外,通过nVidia
this本书的图表,我发现帧缓冲驱动程序位于实际图形设备之上,因此它必须与特定的视频卡驱动程序进行交互,例如{{{} 1}}司机。
但是当我谷歌为嵌入式设备编写帧缓冲驱动程序时,结果显示,好像驱动程序直接负责与LCD
联系,所以看起来它甚至低于显卡驱动程序。
帧缓冲驱动程序实际上是一个视频卡驱动程序吗?
答案 0 :(得分:3)
帧缓冲驱动程序为
提供了一个接口要提供此接口,帧缓冲驱动程序通常直接与硬件通信。
例如,vesafb
帧缓冲驱动程序将使用VESA标准接口与视频硬件通信。但是,这个标准是有限的,所以没有真正的硬件加速进行和绘图很慢。
另一个例子是intelfb
帧缓冲驱动程序。它使用专有接口与一些英特尔硬件进行通信,从而暴露更多的加速设备,因此速度更快。
如今,KMS驱动程序用于大多数硬件。它们都暴露帧缓冲并且还访问其他GPU功能,例如OpenGL,通过DRM。
你的困惑似乎来自这样一个事实:帧缓冲驱动程序和X11 GPU驱动程序实际上是竞争!这就是为什么,如果你有一个KMS系统,图形和文本控制台之间的切换是即时的,但是,对于非KMS系统,它很慢,因为fb驱动程序和X11驱动程序都需要重新初始化视频控制台交换机上的硬件。
在由Martin Fiedler揭秘的全面谈话Linux图形中查找更多信息: http://keyj.emphy.de/files/linuxgraphics_en.pdf