Linux 图形栈

徐小东

2023-01-03

概览

内核空间

用户空间

Linux 图形栈

Linux 图形栈

DRI 与 DRM

DRI1 https://dri.freedesktop.org/ 即 Direct Rendering Infrastructure,在 X11 下以安全、高效的方式直接访问图形硬件的框架。DRI 实现分散在 X 服务器及其相关的客户端库、Mesa 和 DRM 内核子系统中。

DRM2 https://dri.freedesktop.org/wiki/DRM/ 即 Direct Rendering Manager,Linux 内核中负责显卡 GPU 的接口子系统。DRM 暴露 API,用户空间程序可以使用它向 GPU 发送命令和数据,并执行一些操作,比如配置显示器的模式设置。用户空间程序可以使用 DRM API 命令 GPU 进行 3D 硬件加速渲染和视频解码,以及 GPGPU 计算。

KMS

KMS 即 kernel mode-setting,激活计算机显示控制器的显示模式(屏幕分辨率、颜色深度和刷新率)。

libdrm

DRM 的用户空间库,便于用户空间程序与 DRM 子系统交互。

Mesa

也叫 Mesa3D3 https://mesa3d.org/,OpenGL、Vulkan 和其他图形 API 规范的开源软件实现。Mesa 将这些规范转换为特定于供应商的图形硬件驱动程序。除了游戏等 3D 应用程序,现代化显示服务器使用 OpenGL/EGL。因此,所有图形通常都经过 Mesa。

显示服务器驱动(X11)

主要分为两部分: