IGT GPU Tools (IGT) 是一个专门用于开发和测试 DRM (Direct Rendering Manager) 驱动的低级工具和测试集合。它面向内核接口,既是驱动开发者的验证工具,也是理解 Linux 图形/计算驱动栈的重要入口。
什么是 IGT GPU Tools
核心定位
低级测试工具
直接测试 GPU 驱动的内核接口,定位比 OpenGL/Vulkan 层更低。
驱动开发辅助
帮助开发者验证驱动功能,确认补丁是否符合预期。
问题定位利器
用最小测试程序快速定位和重现驱动问题。
与其他测试工具的区别
| 工具 | 测试层级 | 抽象程度 | 与 IGT 的区别 |
|---|---|---|---|
| xtest | X11 协议 | 高 | IGT 直接测试内核,更底层 |
| rendercheck | 渲染正确性 | 中 | IGT 覆盖更广泛的驱动功能 |
| piglit | OpenGL / Vulkan | 高 | IGT 构建简单,易于调试 |
| oglconform | OpenGL 合规 | 高 | IGT 能精确定位内核问题 |
低级别测试直达内核,构建简单、依赖少,易于追踪到具体的内核变更,同时包含丰富的调试工具。
IGT 的主要用途
驱动功能验证
- 设备初始化和认证
- 内存管理 (GEM)
- 显示输出 (KMS)
- 命令提交和执行
- 电源管理
回归测试
- 验证新功能是否正常
- 确保没有破坏现有功能
- 在 CI 系统中自动运行
性能基准测试
- 命令提交延迟
- 内存操作性能
- 显示帧率
- 功耗表现
问题定位和调试
- 快速重现问题
- 验证修复是否有效
- 提供最小可复现用例
硬件验证
- 显示输出合规性测试
- HDMI/DisplayPort 协议验证
- EDID 处理测试
DRM 子系统简介
IGT 测试的核心对象是 Linux 内核的 DRM 子系统。DRM (Direct Rendering Manager) 是 Linux 内核中负责 GPU 管理的子系统。
DRM 子系统
├── Core DRM # 核心功能(设备管理、认证等)
├── KMS # Kernel Mode Setting(显示管理)
├── GEM # Graphics Execution Manager(内存管理)
└── 厂商驱动 # i915, amdgpu, nouveau 等
DRM 核心功能
设备管理
设备节点 /dev/dri/card*、设备打开关闭、Master/Auth 权限管理。
KMS
显示模式设置、显示器配置、帧缓冲管理、页面翻转。
GEM
GPU 内存对象管理、缓冲区分配和映射、对象生命周期管理。
命令提交
GPU 命令缓冲区、执行队列管理、同步机制。
IGT 包含什么
测试套件 tests/
1000+ 个测试用例,覆盖 DRM 的各个方面,支持多个 GPU 厂商。
测试库 lib/
测试框架核心、DRM/KMS 操作封装、厂商特定功能库和工具函数。
命令行工具 tools/
GPU 监控、寄存器读写、显示调试、性能分析工具。
性能基准 benchmarks/
内存操作性能、命令执行性能、显示性能评估。
测试运行器 runner/
批量运行测试、结果收集和报告、CI 集成支持。
支持的 GPU 厂商
IGT 支持多个 GPU 厂商,既覆盖最成熟的 Intel 路径,也覆盖 AMD、NVIDIA 开源驱动、移动 GPU 与虚拟 GPU。
Intel GPU 最完整
驱动:i915, Xe
特性:测试最多,工具最丰富
AMD GPU 良好
驱动:amdgpu
目录:tests/amdgpu/, lib/amdgpu/
NVIDIA 开源驱动 基础
驱动:nouveau
目录:tests/nouveau/
Qualcomm Adreno 良好
驱动:msm
目录:tests/msm/
ARM Mali 基础
驱动:panfrost, panthor
目录:tests/panfrost/, tests/panthor/
Broadcom VideoCore 基础
驱动:v3d, vc4
目录:tests/v3d/, tests/vc4/
虚拟 GPU 测试/虚拟化
驱动:vkms, vmwgfx, virtio-gpu
用途:虚拟化和测试
适合谁使用 IGT
GPU 驱动开发者
开发新功能、修复 bug、提交代码前运行回归测试。
系统集成工程师
验证 GPU 驱动在特定系统上的工作状态,执行硬件验证测试。
QA 测试工程师
执行自动化测试、生成测试报告、跟踪测试覆盖率。
Linux 发行版维护者
验证驱动兼容性,执行回归测试,进行问题分类和上报。
学习者和研究人员
学习 GPU 驱动工作原理,研究 DRM 子系统,开发原型和实验。
项目统计
IGT 持续活跃开发,按季度发布,托管在 freedesktop.org,被 Intel、AMD 等厂商用于驱动开发和验证流程。
为什么学习 IGT
对驱动开发者
- GPU 驱动开发的标准工具
- 学习业界最佳测试实践
- 上游内核开发的测试标准
对学习者
- 通过测试代码理解 DRM 工作原理
- 动手实验各种 GPU 功能
- 丰富的示例代码可供参考
对测试工程师
- 专业 GPU 测试工具集
- 支持 CI/CD 集成
- 可以添加自定义测试
下一步
现在你已经了解了 IGT 是什么,接下来继续阅读:02 - IGT 项目结构详解,了解 IGT 的代码组织。
# 安装 IGT 工具(Ubuntu 示例)
sudo apt install intel-gpu-tools
# 运行基础测试
sudo igt_run tests/drm_test