5.13. 三维图形处理 - 3D GPU

5.13.1. 模块描述

3D GPU 是现代图形计算领域核心组件,它不仅支持高效的 3D 渲染,还广泛应用科学计算、人工智能、数据可视化领域。其硬件加速能力并行架构各类复杂任务提供强大支持。

5.13.1.1. 框架描述

3D GPU 框架如下描述 :
注意: X5 BSP 默认没有移植桌面系统,可以基于 DRM 和 GBM 实现 GPU 渲染效果展示(如图中 Framework 层黄色部分)。

gpu_3d_descript_framework

下面各个进行单独描述:(从下向上顺序)

  1. 硬件层: GPU Core 是具体的 GPU 硬件,完成 3D 图像处理加速,渲染输出结果可以存储到 DDR 中

  2. 内核驱动层: X5 中 GPU 的驱动没有接入 DRM,而是通过字符设备驱动ioctl 接口向上提供接口

  3. 用户驱动层:通过封装 ioctl 接口,实现 GPU 接口驱动交互

  4. 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 工具包,它们开发者提供图形控件界面构建工具

  5. 应用层:应用层实现两种情况:

    • 情况 1 :有桌面环境情况,应用层可以基于各种图像开发复杂游戏和 UI 界面

    • 情况 2 :没有桌面环境情况(图中黄色背景: sample_gpu_3d),应用层直接调用 GPU 接口,通过 DRM 和 GBM 实现 GPU 渲染图像显示

5.13.1.2. 常用功能描述

功能 描述 常见用途
顶点处理( Vertex Processing) 处理三维模型顶点坐标,包括坐标变换(如 3D 模型、视图投影变换)以及法线、纹理坐标相关计算。 三维模型投影屏幕二维平面;应用动画(骨骼动画、顶点形变等)。
光栅化( Rasterization) 三角形几何转换像素(或片元)。 将 3D 几何图形渲染到 2D 显示器;实现边缘检测抗锯齿技术。
片元处理( Fragment Processing) 计算每个像素颜色其他属性(如深度、透明度)。 实现复杂材质效果(如金属、玻璃);计算灯光、阴影、反射效果。
纹理映射( Texture Mapping) 二维纹理图片贴合到 3D 模型表面。 添加表面细节,如木纹、皮肤、墙面;使用法线贴图实现精细凹凸效果。
渲染管线( Rendering Pipeline) 几何数据最终图像流程处理,包括顶点着色、几何着色、光栅化、片元着色阶段。 高效完成实时渲染任务,如游戏实时画面。
阴影计算( Shading) 使用着色器程序计算光线物体交互视觉效果。 实现光影变化(如漫反射、高光反射);实现环境光遮蔽、全局光照高级渲染效果。
缓冲处理( Framebuffer Operations) 管理渲染目标中间数据(颜色缓冲、深度缓冲等)。 实现后期处理效果(如模糊、色调映射);保存渲染结果用于多重采样离屏渲染。
几何处理( Geometry Processing) 处理几何元(如三角形、点、线)以生成复杂形状。 实现动态网格变形、粒子系统效果;应用几何着色器添加细节。
计算着色器( Compute Shader) 提供通用计算能力,突破传统图形渲染管线限制。 实现物理模拟(如流体、布料);进行大规模并行计算任务(如 AI 推理、光线追踪加速)。
光线追踪( Ray Tracing) 通过模拟光线场景物体交互生成逼真画面。 实现真实反射、折射、阴影全局光照;应用高质量渲染实时渲染。

5.13.1.3. 应用场景

应用场景 详细说明
游戏开发 渲染复杂游戏场景,实现实时阴影、动态光源效果,适用开放世界、高帧竞技游戏及 VR 游戏。
影视动画 离线渲染高质量图像,支持高级光照技术(如全局光照),用于动画电影特效制作。
虚拟现实增强现实 高帧渲染减少延迟,用于 VR 游戏、 AR 导航以及医疗培训。
工业设计建模 实时渲染复杂模型,用于汽车设计、建筑可视化产品仿真。
科学计算数据可视化 加速科学模拟与 3D 数据渲染,应用气候模拟、医学成像基因研究。
人工智能深度学习 提供并行计算能力,加速模型训练推理,应用图像识别、 NLP 和自动驾驶技术。
建筑工程 实现高保真可视化实时漫游,用于建筑设计评审智慧城市规划。
医疗仿真 生成实时 3D 可视化,支持手术模拟疾病建模。
游戏远程渲染 远程 GPU 上进行渲染,并结果流式传输客户端,适用于云游戏远程计算服务。

5.13.1.4. 基础规格

峰值算力32GFLOPS

5.13.2. 参考示例

5.13.3. API 参考

X5 3D GPU 支持四种标准 API: EGL、 OpenGL ES、 Vulkan 和 OpenCL,具体描述如下:

API 主要用途 依赖关系 主要应用场景 API 官方链接 支持版本
EGL 管理上下文窗口表面 提供给 OpenGL ES 和 Vulkan 使用 图形上下文管理 EGL EGL 1.5
OpenGL ES 嵌入式图形渲染 依赖 EGL 游戏、 UI 渲染 OpenGL ES OpenGL ES 3.1 / 3.0 / 2.0 / 1.1
Vulkan 高性能图形计算渲染 依赖 EGL 游戏、 UI 渲染 Vulkan Vulkan
OpenCL 通用并行计算 - 图像处理、机器学习、科学计算 OpenCL OpenCL 1.1 / 1.2 / 3.0

5.13.3.1. 头文件说明

编写 OpenGL ES, Vulkan 或 OpenCL 应用程序过程使用相关标准协议头文件,这些头文件所在文件夹简述如下所示:

标准 头文件所在文件夹 文件夹简述
EGL EGL 包含 EGL 所有版本头文件
GBM - 包含 GBM 的头文件
OpenGL ES GLES GLES2 GLES3 包含 OpenGL ES2.x 相关头文件,且包含 OpenGL ES 拓展相关头文件
包含 OpenGL ES3.x 相关头文件
Vulkan vulkan 包含 vulkan 的头文件
OpenCL CL 包含 OpenCL C 风格头文件
包含 OpenCL CPP 风格头文件

5.13.3.2. 动态说明

编写 OpenGL ES, Vulkan 或 OpenCL 应用程序过程使用相关标准动态库,相关动态名称如下所示:

标准 动态名称 动态简述
EGL libEGL.so EGL 动态
GBM libgbm.so GBM 动态
OpenGL ES libGLESv2.so libGLESv1.so OpenGL ES2.x 和 OpenGL ES3.x 动态库 OpenGL ES1.x 动态
Vulkan libvulkan.so Vulkan ICD Loader 动态
OpenCL libOpenCL.so OpenCL 动态