标签: Linux
因为Linux是工作在保护模式下,所以用户态进程是无法象Dos那样使用显卡BIOS里提供的中断调用来实现直接写屏,故Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。 在继续下面的之前,先说明几个背景知识:
-
FrameBuffer主要是根据VESA标准的实现的,所以只能实现最简单的功能。
-
由于涉及内核的问题,FrameBuffer是不允许在系统起来后修改显示模式等一系列操作。(好象很多人都想要这样干,这是不被允许的,当然如果你自己与驱动的话,是可以实现的)
-
对FrameBuffer的操作,会直接影响到本机的所有控制台的输出,包括XWIN的图形界面。
好,现在可以让我们开始实现直接写屏:
-
打开一个FrameBuffer设备
-
通过mmap调用把显卡的物理内存空间映射到用户空间
-
直接写内存。