3.9. sample_gpu_3d 使用说明
X53D GPU 支持以下标准 API:
EGL
OpenGLES
Vulkan
OpenCL
其中, EGL 作为中间层 API,提供了与底层硬件的交互支持。因此,针对以下三种 API 提供了相应的示例代码:
OpenGLES 示例
Vulkan 示例
OpenCL 示例
请根据具体需求选择对应的 API 示例进行参考和使用。
3.9.1. OpenGL ES
3.9.1.1. sample_bezier
功能概述
功能描述:sample_bezier 使用 3D GPU 画一条贝塞尔曲线,并将图片保存到文件中
软件架构说明

代码位置及目录结构
代码位置
app/samples/platform_samples/sample_gpu_3d/gles/sample_bezier目录结构
sample_bezier/
├── common
│ ├── bmp.c
│ ├── bmp.h
│ ├── vdk_common.c
│ └── vdk_common.h
└── sample_bezier
├── bezier.c
└── Makefile
API 流程说明
整体流程

vdk_init
vdk_init(对应整体流程中的黄色背景部分)属于 libVDK.so 中的函数,对 EGL 接口的封装,完成在没有桌面系统时,基于 DRM+GBM 实现 EGL 上下文的初始化

编译部署
编译
进入 sample_bezier 目录,执行
make编译输出成果物是 sample_bezier 源码目录下的
bezier详细程序编译方式请查阅 编译方法 章节
程序部署
把目录
sample_bezier上传到开发板/userdata目录下进入
sample_bezier运行chmod +x bezier命令给程序赋予可执行权限
运行
程序运行方法
加载驱动:
modprobe panel-jc-050hd134
modprobe galcore
modprobe vio_n2d
modprobe lontium_lt8618
modprobe vs-x5-syscon-bridge
modprobe vs_drm
通过 HDMI 接口接入显示器并执行程序:./bezier
程序参数选项说明
无
运行效果
执行命令:
./bezier
运行日志:
无
效果说明:
当前目录下,会生成如下 bmp 格式的图像文件: bezier.bmp,文件中 红色线条是一条贝塞尔曲线

3.9.2. OpenCL
3.9.2.1. sample_matrix_multiply
功能概述
功能描述:sample_matrix_multiply 完成分别利用 3D GPU 和 CPU 进行相同的矩阵运行,并打印两者的耗时
软件架构说明

代码位置及目录结构
代码位置
app/samples/platform_samples/sample_gpu_3d/cl/sample_matrix_multiply目录结构
└── sample_matrix_multiply
├── Makefile
└── matrix_multiply.c
API 流程说明
整体流程

matirc_mult_opencl
函数 matirc_mult_opencl 使用 GPU 完成 矩阵乘法运算,流程如下(对应整体流程中的黄色背景部分)

编译部署
编译
进入 sample_matrix_multiply 目录,执行
make编译输出成果物是 sample_matrix_multiply 源码目录下的
matrix_multiply详细程序编译方式请查阅 编译方法 章节
程序部署
把目录
sample_matrix_multiply上传到开发板/userdata目录下进入
sample_matrix_multiply运行chmod +x matrix_multiply命令给程序赋予可执行权限
运行
程序运行方法
执行可执行程序:./matrix_multiply
程序参数选项说明
无
运行效果
执行命令:
./matrix_multiply
运行日志:
./matrix_multiply
CPU execution time: 19.133549 seconds
OpenCL execution time: 0.792543 seconds
Matrices are identical!
效果说明 执行相同的矩阵乘法运算:
CPU 耗时: 19.133549 seconds
GPU 耗时: 0.792543 seconds
总耗时中可以看出在做矩阵乘法运算时, GPU 比 CPU 有更高得性能