GPU 基础矩阵精规组织教程:从基础作用到实战应用
GPU (图形处理器)不是只有渲染的功能,它是高并发计算对系统与应用程序有极大优势的运算单元。本文将细自所有使用GPU的基础组件,相关概念和实际应用为主线,适合对GPU功能和工作原理需要精准理解的开发者。
一,GPU的三大核心功能
1. 图形渲染 (Rendering)
- 2D/3D 图形组成和显示:通过 OpenGL / Vulkan / DirectX API 渲染场景
- 实例:Qt QML 中的动画组件、Unity3D 游戏场景
2. 硬件加速 (Hardware Acceleration)
- 对编解码 / 图像转换 / AI 进行加速
- 实例:GStreamer 调用 VPU 或 GPU 来加速视频解码
3. 通用计算 (GPGPU)
- 利用 GPU 进行非图形计算(通过 CUDA/OpenCL)
- 实例:图像识别、视觉编码等 AI/数据分析场景
二,GPU 工作流程
【 1 】设备初始化
- Kernel 通过 DRM/KMS 初始化 GPU 进入可用状态
- Weston/Xorg 初始化 EGL context 和 GPU driver
【 2 】 场景创建
- App 调用 OpenGL 生成平面、模型、光线、材质
- Qt/QML 动画使用 SceneGraph
【 3 】接入硬件加速
- EGL 连接到 Vivante GPU Driver (NXP i.MX 系列)
- OpenGL shader 处理 fragment / vertex
【 4 】绘制结果
- GPU 计算后输出到 framebuffer (drm plane或 /dev/fb0)
三,一些实际示例
实例1:Qt QML 图形软件加速
- Qt Quick 使用 OpenGL ES2 实现 QML 动画渲染
- Weston/EGLFS 启动后,切换 GPU加速
- 通过
strace
可看到 libEGL/libGAL 加载
实例2:GStreamer + imxvpu
- 指定编解码器为 imxvpudec ,视频分析用 GPU
- 视频播放比 software 版本 CPU 使用降低 80%
实例3:G2D 绘制旋转结果
- DRM 输入 framebuffer + G2D 旋转,输出 buffer 展示
- 不依赖 Xorg/Wayland,适合用户系统 UI
四,与 Xorg/Wayland 的关系
模块 | 作用 | GPU 是否必须 |
---|---|---|
Xorg | 给 X11 应用提供窗口管理 | 是 |
Weston | Wayland 合成器,提供框架 | 是 |
fbdev/drm | 最小化显示驱动 | 否 |
G2D/OpenGL | 加速图形绘制/渲染 | 是 |
无需Xorg/Wayland情况:直接用 /dev/fb0 或 DRM 配合 G2D 进行操作
五,如何在Yocto中开启GPU功能
1. 加入图形相关包
DISTRO_FEATURES:append = " opengl x11 wayland vulkan kmsdrm"
MACHINE_EXTRA_RRECOMMENDS += " packagegroup-graphics"
2. 使用Xorg/Weston
IMAGE_INSTALL:append = " weston xwayland xserver-xorg mesa"
3. Qt5/Qt6 + OpenGL
IMAGE_INSTALL:append = " qtbase qtquickcontrols qtwayland qtdeclarative"
六,总结和建议
- GPU 不是只有渲染,还是加速和 AI 计算核心
- 如果想要 保持软件简洁,可以不使用 Xorg
- 如果想要 Qt GUI + 加速,优先 Weston + GPU 驱动
- 如果是应用图像操作,优先 G2D
- 如果是用于 AI 运算,考虑 OpenCL / NPU
无论你是开发 UI、播放视频、运行 AI 计算,GPU 都是必不可少的技术基知。