Min*_*ang 5 linux framebuffer driver
我对这些硬件的实际工作原理了解甚少,但是现在我需要学习如何为Android设备编写Linux帧缓冲驱动程序。
我对Linux图形堆栈感到困惑。据我了解,在台式计算机上,合成窗口管理器与交互DRM,然后将数据发送到特定的视频卡驱动程序。在另一方面也有一些类型的控制器从检索数据GPU's通过内存DMA并将其发送到显示器,如答案建议在这里。此外,通过在图page 29的这本书,我想通了帧缓冲驱动器是在实际的图形设备的顶部,所以它必须要与特定的视频卡驱动程序进行交互,例如,一个nVidia司机。
但是,当我用谷歌为嵌入式设备编写帧缓冲区驱动程序时,结果表明,该驱动程序似乎直接负责与进行联系LCD,因此它看起来甚至在视频卡驱动程序之下。
那么帧缓冲驱动程序实际上是视频卡驱动程序吗?
帧缓冲驱动程序为
为了提供此接口,帧缓冲驱动程序通常直接与硬件对话。
例如,vesafb帧缓冲驱动程序将使用VESA标准接口与视频硬件对话。但是,此标准是有限的,因此并没有进行太多的硬件加速,绘图速度很慢。另一个示例是intelfb帧缓冲驱动程序。它使用专有接口与某些英特尔硬件进行通信,该接口公开了更多的加速功能,因此速度更快。
如今,大多数硬件都使用KMS驱动程序代替。它们不仅公开帧缓冲区,而且还通过DRM访问其他GPU功能,例如OpenGL。
您的困惑似乎是由以下事实引起的:帧缓冲驱动程序和X11 GPU驱动程序实际上在竞争!这就是为什么如果您使用的是KMS系统,则图形和文本控制台之间的切换是即时的,但是,对于非KMS系统,这是缓慢的,因为fb驱动程序和X11驱动程序都需要重新初始化视频。控制台开关上的硬件。
在Martin Fiedler揭秘的Linux图形全面讨论中找到更多信息:http : //keyj.emphy.de/files/linuxgraphics_en.pdf