一:概述
这篇文章简要概述了在Linux系统上生成图形的过程。
二:图形硬件概览
1. 帧缓冲区
所有的显卡都会生成一个“帧缓冲区”,它是一个块显存,里面存放着RGBA像素数据,并且显卡知道这块区域是“扫描输出缓冲区”,即用于显示的缓冲区。
对于模拟信号输出来说,显卡的输出电路会周期性读取帧缓冲的每个像素,并在合适的时间产生合适的输出电压。对于HDMI等数字输出来说,显卡只是将数据转存到输出设备上(进行一些小的转换),并让显示设备映射数据并产生适当电压以驱动物理输出。
非常简单的显卡仅仅支持“帧缓冲区”和相关的输出电路,并且让操作系统将RGBA像素值写入帧缓冲区。操作系统提供了2D图形或3D图形库,并在CPU上运行这些图形库并生成RGBA像素值,然后写入到帧缓冲区中。
复杂的显卡(现代显卡)为操作系统提供了各种方法来生成RGB像素值,将生成RGBA像素值的工作从CPU转到GPU中,并将RGBA像素值写入到帧缓冲区。
当然,现代显卡提供了多种输出选择(如HDMI,DP,多显示器)。显卡也支持不同的分辨率(即改变帧缓冲区大小以及器内容映射到屏幕上像素的方式)。一些显