1. 背景
1.1. XClient / XServer
X Windows窗口系统提供GUI环境的基本框架:在显示设备上绘制和移动窗口,并与鼠标和键盘进行交互。
XWindows 基于Client / Server网络模型。如下是X Windows架构图。
这样做的缺点是:
- XClient - XServer - Compositor三者的交互耗时,效率较低。
- XServer不得不做一些重复无意义的工作
1.2. Wayland
Wayland颠覆了 XServer / XClient的概念,以Compositor/Client结构取而代之。
它的架构图如下:
Wayland效率较高的原因是,去除了XWindows中不必要的设计,充分利用了现代Linux内核图形技术的显示机制,如DRM子系统的KMS、GEM和DRM等。
传统的X Window应用,以Wayland Client的形式,跑在Wayland Compositor上,在相当长一段时间内继续得到支持。
2. 显示卡访问与管理
2.1. fbdev
fbdev在Linux中早已存在,它管理显卡的framebuffer。它的缺点是:
- 不能处理视频卡GPU的3D加速需求
- Video Card负责设置、管理Video RAM中的命令序列,还需要管理Video RAM的Buffer、Free Space。 用户空间的程序可以直接管理这些资源,但程序之间没有协同访问的支持。当多个程序同时控制Video Card时,就会崩溃。
2.2. DRM
DRM的首要目的,是处理多个程序对Video Card资源的协同使用。
DRM独占VideoCard的访问权限。使用GPU的程序将请求发送给DRM,由DRM仲裁以避免冲突。
- DRM负责初始化命令队列、Video RAM以及其他相关硬件资源。
- 涵盖帧缓存区的管理、模式设置、内存共享对象、内存同步等,这些以前由用户空间的程序处理。
- 负责GPUs切换。
网友评论