帧缓冲设备内部原理

这是关于帧缓冲设备内部原理的一些文档的初始版本。

作者


帧缓冲设备 API 使用的结构体

以下结构体在帧缓冲设备中起作用。它们定义在 <linux/fb.h> 中。

  1. 内核外部(用户空间)

  • struct fb_fix_screeninfo

    关于帧缓冲设备和特定视频模式的设备无关的不可更改信息。可以使用 FBIOGET_FSCREENINFO ioctl 获取。

  • struct fb_var_screeninfo

    关于帧缓冲设备和特定视频模式的设备无关的可更改信息。可以使用 FBIOGET_VSCREENINFO ioctl 获取,并使用 FBIOPUT_VSCREENINFO ioctl 更新。如果只想平移屏幕,可以使用 FBIOPAN_DISPLAY ioctl。

  • struct fb_cmap

    设备无关的颜色映射信息。可以使用 FBIOGETCMAP 和 FBIOPUTCMAP ioctl 获取和设置颜色映射。

  1. 内核内部

  • struct fb_info

    关于特定帧缓冲设备实例(槽号、板地址等)的通用信息、API 和底层信息。

  • struct par

    设备相关信息,唯一地定义了特定硬件的视频模式。

帧缓冲设备 API 使用的视觉效果

单色 (FB_VISUAL_MONO01 和 FB_VISUAL_MONO10)

每个像素要么是黑色,要么是白色。

伪彩色 (FB_VISUAL_PSEUDOCOLOR 和 FB_VISUAL_STATIC_PSEUDOCOLOR)

整个像素值通过一个可编程的查找表,该表为每个可能的像素值都有一种颜色(包括红色、绿色和蓝色强度),然后显示该颜色。

真彩色 (FB_VISUAL_TRUECOLOR)

像素值被分解为红色、绿色和蓝色字段。

直接彩色 (FB_VISUAL_DIRECTCOLOR)

像素值被分解为红色、绿色和蓝色字段,每个字段都在单独的红色、绿色和蓝色查找表中查找。

灰度显示器

灰度和静态灰度是伪彩色和静态伪彩色的特殊变体,其中红色、绿色和蓝色分量始终彼此相等。