更新时间:2024-02-22 15:01
Framebuffer是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备。
Framebuffer在内存缓冲区中标准上包含了屏幕上每个像素的色彩值组成。色彩值通常存储成1-bit(黑白色彩),4-bit调色版,8-bit调色版,16-bit高色彩,24-bit真色彩格式。一个额外的alpha通道有时用来保存像素透明度信息。
帧缓冲设备提供了显卡的抽象描述。他同时代表了显卡上的显存,应用程序通过定义好的接口可以访问显卡,而不需要知道底层的任何操作。该设备使用特殊的设备节点,通常位于/dev目录,如/dev/fb*
(Page flipping)
因为framebuffer经常用来设计处理不止一个分辨率,所以他们经常包含更多的内存,用来在低分辩率显示单独的帧。既然这个内存在大小上足够大,于是就发明一个方法来允许新的帧写入视频内存,并且不干扰正在显示的内容。 这个概念工作原理是告诉framebuffer用一块特殊的内存来显示当前帧。当内存中的显示出来后,一个单独完整的部分内存用来添装下一帧。一旦第二帧填充完成,framebuffer被命令找到第二个buffer替代。此时主buffer变成了第二buffer.第二buffer也就变成了主buffer. 这个操作通常在垂直回归期(vertical blanking interval)完成,来防止屏幕tearing(旧帧显示一半,新帧显示一半)。