一: 概述
在Linux中,2D绘制流程是操作系统、图形库、显示协议、驱动程序等多个组件协调工作的结果。整体流程如下步骤所示:
1. 客户端请求:客户端程序(如GTK、Qt应用程序)通过X11协议与Xorg-Server通信(或通过Wayland协议与Wayland合成器通信)、请求绘制2D图形,比如绘制点、线、矩形、文本等。
2. 图形协议层,X11 或 Wayland:客户端的绘制请求最终通过显示服务器协议传递给显示服务器。
(1)X11 显示服务器,应用程序通过 Xlib 或 XCB 将绘制请求编码为 X11 协议,发送到 xorg-server。Xorg-server 解析协议后、将绘制请求转发给 图形驱动程序(硬件驱动)或者使用软件实现的绘制逻辑。
(2)Wayland 显示服务器,在Wayland 下,应用程序直接与 Wayland Compositor 通信。应用程序负责绘制自己的缓冲区(通常通过 EGL/OpenGL ES 或 Vulkan),然后将缓冲区提交给 compositor(合成器)。2D 图形库会通过DRM 或 Mesa 将绘制请求传递给GPU驱动。
3. 用户态图形堆栈: Mesa 3D 图形库