IGT GPU Tools (IGT) 是一个专门用于开发和测试 DRM (Direct Rendering Manager) 驱动的低级工具和测试集合。它面向内核接口,既是驱动开发者的验证工具,也是理解 Linux 图形/计算驱动栈的重要入口。

什么是 IGT GPU Tools

核心定位

01

低级测试工具

直接测试 GPU 驱动的内核接口,定位比 OpenGL/Vulkan 层更低。

02

驱动开发辅助

帮助开发者验证驱动功能,确认补丁是否符合预期。

03

问题定位利器

用最小测试程序快速定位和重现驱动问题。

与其他测试工具的区别

工具 测试层级 抽象程度 与 IGT 的区别
xtest X11 协议 IGT 直接测试内核,更底层
rendercheck 渲染正确性 IGT 覆盖更广泛的驱动功能
piglit OpenGL / Vulkan IGT 构建简单,易于调试
oglconform OpenGL 合规 IGT 能精确定位内核问题
IGT 的独特价值

低级别测试直达内核,构建简单、依赖少,易于追踪到具体的内核变更,同时包含丰富的调试工具。

IGT 的主要用途

1

驱动功能验证

  • 设备初始化和认证
  • 内存管理 (GEM)
  • 显示输出 (KMS)
  • 命令提交和执行
  • 电源管理
2

回归测试

  • 验证新功能是否正常
  • 确保没有破坏现有功能
  • 在 CI 系统中自动运行
3

性能基准测试

  • 命令提交延迟
  • 内存操作性能
  • 显示帧率
  • 功耗表现
4

问题定位和调试

  • 快速重现问题
  • 验证修复是否有效
  • 提供最小可复现用例
5

硬件验证

  • 显示输出合规性测试
  • 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 核心功能

D

设备管理

设备节点 /dev/dri/card*、设备打开关闭、Master/Auth 权限管理。

K

KMS

显示模式设置、显示器配置、帧缓冲管理、页面翻转。

G

GEM

GPU 内存对象管理、缓冲区分配和映射、对象生命周期管理。

Q

命令提交

GPU 命令缓冲区、执行队列管理、同步机制。

IGT 包含什么

T

测试套件 tests/

1000+ 个测试用例,覆盖 DRM 的各个方面,支持多个 GPU 厂商。

L

测试库 lib/

测试框架核心、DRM/KMS 操作封装、厂商特定功能库和工具函数。

C

命令行工具 tools/

GPU 监控、寄存器读写、显示调试、性能分析工具。

B

性能基准 benchmarks/

内存操作性能、命令执行性能、显示性能评估。

R

测试运行器 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

D

GPU 驱动开发者

开发新功能、修复 bug、提交代码前运行回归测试。

S

系统集成工程师

验证 GPU 驱动在特定系统上的工作状态,执行硬件验证测试。

Q

QA 测试工程师

执行自动化测试、生成测试报告、跟踪测试覆盖率。

L

Linux 发行版维护者

验证驱动兼容性,执行回归测试,进行问题分类和上报。

R

学习者和研究人员

学习 GPU 驱动工作原理,研究 DRM 子系统,开发原型和实验。

项目统计

1000+
测试用例
数十万
行 C 代码
150+
库文件
60+
命令行工具
项目活跃度

IGT 持续活跃开发,按季度发布,托管在 freedesktop.org,被 Intel、AMD 等厂商用于驱动开发和验证流程。

为什么学习 IGT

D

对驱动开发者

  • GPU 驱动开发的标准工具
  • 学习业界最佳测试实践
  • 上游内核开发的测试标准
L

对学习者

  • 通过测试代码理解 DRM 工作原理
  • 动手实验各种 GPU 功能
  • 丰富的示例代码可供参考
T

对测试工程师

  • 专业 GPU 测试工具集
  • 支持 CI/CD 集成
  • 可以添加自定义测试

下一步

现在你已经了解了 IGT 是什么,接下来继续阅读:02 - IGT 项目结构详解,了解 IGT 的代码组织。

# 安装 IGT 工具(Ubuntu 示例)
sudo apt install intel-gpu-tools

# 运行基础测试
sudo igt_run tests/drm_test