以 BO 生命周期为主线,从"怎么用"深入到"为什么这样设计",
系统化解构 Linux 内核图形子系统的核心内存管理机制。
专栏主线:以 Buffer Object (BO) 的完整生命周期为线索 —— 从创建、放置、共享、同步到虚拟地址映射 —— 贯穿 GEM、TTM、DMA-BUF、DMA-Fence、GPU Scheduler、GPUVM、SVM 全栈。
适配硬件:覆盖 Intel 核显、AMD Radeon 全系列、NVIDIA (nouveau)、ARM Mali、高通 Adreno、瑞芯微/全志/NXP 等 SoC,以及 virtio-gpu 虚拟设备。
flowchart TD
BO(["Buffer Object
生命周期主线"])
subgraph 概述["① 概述"]
DEV["设备模型
drm_device / drm_file"]
EVO["DRM 演进"]
LIBDRM["libdrm 用户态库"]
end
subgraph 分配["②③ 创建与放置"]
GEM["GEM
对象管理"]
TTM["TTM
显存管理"]
MM["drm_mm / drm_buddy
空间分配器"]
EVICT["Eviction
换出策略"]
end
subgraph 共享["④ 共享"]
DMABUF["DMA-BUF"]
PRIME["PRIME"]
end
subgraph 同步["⑥ 同步"]
FENCE["DMA-Fence"]
RESV["dma_resv
隐式同步"]
SYNCF["sync_file
显式同步"]
end
subgraph 调度["⑦ 调度"]
SCHED["GPU Scheduler
drm_sched"]
JOB["drm_sched_job
作业提交"]
end
subgraph 映射["⑧⑨ 地址映射"]
GPUVM["GPUVM"]
SVM["SVM / HMM"]
end
BO --> 概述
BO --> 分配
BO --> 共享
BO --> 同步
BO --> 调度
BO --> 映射
DEV --> GEM
GEM --> TTM
TTM --> MM
TTM --> EVICT
GEM --> DMABUF
DMABUF --> PRIME
TTM --> FENCE
FENCE --> RESV
FENCE --> SYNCF
SCHED --> JOB
JOB --> FENCE
GEM --> GPUVM
GPUVM --> SVM
click DEV "drm-device-model.html" "阅读:DRM 设备模型速览"
click EVO "drm-evolution-analysis.html" "阅读:DRM 子系统的演进分析"
click LIBDRM "libdrm-analysis.html" "阅读:libdrm 用户态库剖析"
click BO "bo-lifecycle-mainline.html" "阅读:专栏主线 — BO 生命周期"
classDef core fill:#1a73e8,stroke:#1557b0,color:#fff,font-weight:bold;
classDef link fill:#eff6ff,stroke:#1a73e8,color:#1557b0;
classDef plain fill:#f8fafc,stroke:#cbd5e1,color:#334155;
class BO core;
class DEV,EVO,LIBDRM link;
class GEM,TTM,MM,EVICT,DMABUF,PRIME,FENCE,RESV,SYNCF,SCHED,JOB,GPUVM,SVM plain;