5.13. 三维图形处理 - 3D GPU
5.13.1. 模块描述
3D GPU 是
5.13.1.1. 框架描述
3D GPU 框架
注意: X5 BSP 默认

下面
硬件
层: GPU Core 是 具体 的 GPU 硬件,完成 3D 图像处理 加速,渲染 的 输出 结果 可以 存储 到 DDR 中 内核
驱动 层: X5 中 GPU 的 驱动 没有 接入 DRM,而是 通过 字符 设备 驱动 的 ioctl接口向上 提供 接口 用户
驱动 层:通过 封装 ioctl接口,实现 GPU 接口层 和 驱动 层 的 交互 Framework 层 : 包含 4 个
层次 GPU 接口
层(绿色 背景 部分)包括 四种 标准 API: EGL、 OpenGL ES、 Vulkan 和 OpenCL,详细 说明 将 在 后续 内容 中 提供 服务器
协议 层:常见 的 显示 服务器 协议 有 Wayland 和 X11 ,其中 Wayland 是 X11 的 替代,其中 常见 Wayland 协议 的 具体 实现 有: Mutter 和 KWin 桌面环境: GnomeShell 和 KDE 都
是 现代化 的 桌面环境,基于 Wayland 协议 负责 用户 交互 界面 GnomeShell 基于 Mutter( Wayland 协议
的 具体 实现) KDE 基于 KWin( Wayland 协议
的 具体 实现)
图形
工具包: GTK 和 Qt 是 两种 不同 的 GUI 工具包,它们 为 开发者 提供 图形 控件 和 界面 构建 工具
应用层:应用层
的 实现 有 两种 情况: 情况 1 :有
桌面环境 的 情况,应用层 可以 基于 各种 图像 库 开发 复杂 的 游戏 和 UI 界面 情况 2 :没有
桌面环境 的 情况(图中 黄色 背景: sample_gpu_3d),应用层 直接 调用 GPU 接口,通过 DRM 和 GBM 实现 GPU 渲染 图像 的 显示
5.13.1.2. 常用功能描述
| 功能 | 描述 | 常见 |
|---|---|---|
| 顶点 |
处理 |
将 |
| 光栅 |
将 |
将 3D 几何图形 |
| 片元 |
计算 |
实现 |
| 纹理 |
将 |
添加 |
| 渲染 |
从 |
高效 |
| 阴影 |
使用 |
实现 |
| 帧 |
管理 |
实现 |
| 几何 |
处理 |
实现 |
| 计算 |
提供 |
实现 |
| 光线 |
通过 |
实现 |
5.13.1.3. 应用场景
| 应用 |
详细 |
|---|---|
| 游戏 |
渲染 |
| 影视 |
离线 |
| 虚拟现实 |
高帧 |
| 工业 |
实时 |
| 科学计算 |
加速 |
| 人工智能 |
提供 |
| 建筑 |
实现 |
| 医疗 |
生成 |
| 云 |
在 |
5.13.1.4. 基础规格
峰值
5.13.2. 参考示例
3D GPU 接口
示例 代码 可以 参考 sample_gpu_3d 章节
5.13.3. API 参考
X5 3D GPU 支持
| API | 主要用途 | 依赖 |
主要 |
API 官方 |
支持 |
|---|---|---|---|---|---|
| EGL | 管理 |
提供 |
图形 |
EGL | EGL 1.5 |
| OpenGL ES | 嵌入式 |
依赖 EGL | 游戏、 UI 渲染 | OpenGL ES | OpenGL ES 3.1 / 3.0 / 2.0 / 1.1 |
| Vulkan | 高性能 |
可 |
游戏、 UI 渲染 | Vulkan | Vulkan |
| OpenCL | 通用 |
- | 图像处理、机器 |
OpenCL | OpenCL 1.1 / 1.2 / 3.0 |
5.13.3.1. 头文件说明
在
| 标准 | 头文件 |
文件夹 |
|---|---|---|
| EGL | EGL | 包含 EGL 所有 |
| GBM | - | 包含 GBM 的 |
| OpenGL ES | GLES GLES2 GLES3 | 包含 OpenGL ES2.x 相关 包含 OpenGL ES3.x 相关 |
| Vulkan | vulkan | 包含 vulkan 的 |
| OpenCL | CL | 包含 OpenCL C 风格 包含 OpenCL CPP 风格 |
5.13.3.2. 动态库说明
在
| 标准 | 动态 |
动态 |
|---|---|---|
| EGL | libEGL.so | EGL 动态 |
| GBM | libgbm.so | GBM 动态 |
| OpenGL ES | libGLESv2.so libGLESv1.so | OpenGL ES2.x 和 OpenGL ES3.x 动态 |
| Vulkan | libvulkan.so | Vulkan ICD Loader 动态 |
| OpenCL | libOpenCL.so | OpenCL 动态 |