GPU 性能测试
背景
在当今数字化时代,图形处理能力已成为衡量开发板性能的关键指标之一, QuecPi Alpha 单板电脑,凭借其内置的高通 Adreno 642L/643 GPU,在图形处理领域展现出了令人瞩目的实力,想象一下,在智慧交通场景中,QuecPi Alpha 单板电脑能够凭借其强大的 GPU 性能,快速且精准地识别并标注车辆、车牌以及行人等目标物体,为交通管理提供实时且准确的数据支持。又或者在智能安全领域,面对复杂多变的监控画面,它能借助 GPU 卓越的运算能力,迅速完成图像识别与分析,及时发现潜在风险。这一切高效且精准的图形处理背后,正是 QuecPi Alpha GPU 性能的生动体现。它不仅能轻松应对日常的多媒体处理任务,更在对图形运算要求极高的复杂应用场景中,表现得游刃有余。以下通过 glmark2 基准测试工具,用于评估 QuecPi Alpha 的图形渲染性能。
glmark2 是一款开源的 OpenGL ES 和 EGL 基准测试工具,主要用于评估设备的图形渲染性能。它通过运行一系列标准化测试场景(如纹理填充、光照计算、像素处理等),量化 GPU 的帧率(FPS)、延迟(FrameTime)和稳定性,适用于嵌入式设备、手机、开发板等平台的图形性能分析和调优。
测试环境
glmark2 默认已集成到系统镜像并安装。进入设备终端可直接测试性能。
- 准备显示器,并连接显示器到 QuecPi Alpha 上。
运行命令
- 在设备终端运行以下命令以确保结果显示在连接的显示器上:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
- 运行 glmark2 命令以测试图形渲染性能:
glmark2-es2-wayland
测试结果
QUALCOMM build : a4d6ce04e1, I363e8f8d61
Build Config : G ESX_C_COMPILER_OPT 4.4.0 AArch64
Driver Path : /usr/lib/libGLESv2_adreno.so
Driver Version : 0808.0
Process Name : glmark2-es2-wayland
GBM_INFO::msmgbm_mapper(262)::gbm mapper instantiated
gbm_create_device(224): Info: backend name is: msm_drm
PFP: 0x016dc112, ME: 0x00000000
I/Adreno-UNKNOWN (1382,1382): <ReadGpuID:1042>: Reading chip ID through GSL
Pre-rotation disabled !!!
EGL updater thread started
=======================================================
glmark2 2021.12
=======================================================
OpenGL Information
GL_VENDOR: Qualcomm
GL_RENDERER: Adreno (TM) 643
GL_VERSION: OpenGL ES 3.2
=======================================================
[build] use-vbo=false: FPS: 516 FrameTime: 1.938 ms
[build] use-vbo=true: FPS: 679 FrameTime: 1.473 ms
[texture] texture-filter=nearest: FPS: 748 FrameTime: 1.337 ms
[texture] texture-filter=linear: FPS: 722 FrameTime: 1.385 ms
[texture] texture-filter=mipmap: FPS: 231 FrameTime: 4.329 ms
[shading] shading=gouraud: FPS: 220 FrameTime: 4.545 ms
[shading] shading=blinn-phong-inf: FPS: 679 FrameTime: 1.473 ms
[shading] shading=phong: FPS: 221 FrameTime: 4.525 ms
[shading] shading=cel: FPS: 688 FrameTime: 1.453 ms
[bump] bump-render=high-poly: FPS: 693 FrameTime: 1.443 ms
[bump] bump-render=normals:[ 606.705365][ T943] smcinvoke: process_accept_req: Setting pid:943, server id : 23 state to defunct
[ 606.714752][ T944] smcinvoke: process_accept_req: Setting pid:944, server id : 23 state to defunct
[ 606.724315][ T945] smcinvoke: process_accept_req: Setting pid:945, server id : 23 state to defunct
[ 606.734878][ T946] smcinvoke: process_accept_req: Setting pid:946, server id : 23 state to defunct
[ 606.751381][ T943] smcinvoke: process_tzcb_req: server is defunct, state= 1 tzhandle = -2147483625
[ 606.760794][ T943] smcinvoke: process_tzcb_req: server invalid, res: -90
FPS: 714 FrameTime: 1.401 ms
[bump] bump-render=height: FPS: 674 FrameTime: 1.484 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 373 FrameTime: 2.681 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 251 FrameTime: 3.984 ms
[pulsar] light=false:quads=5:texture=false: FPS: 213 FrameTime: 4.695 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 559 FrameTime: 1.789 ms
[desktop] effect=shadow:windows=4: FPS: 466 FrameTime: 2.146 ms
Error: Requested MapBuffer VBO update method but GL_OES_mapbuffer is not supported!
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 238 FrameTime: 4.202 ms
Error: Requested MapBuffer VBO update method but GL_OES_mapbuffer is not supported!
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[ideas] speed=duration: FPS: 578 FrameTime: 1.730 ms
[jellyfish] <default>: FPS: 642 FrameTime: 1.558 ms
[terrain] <default>: FPS: 74 FrameTime: 13.514 ms
[shadow] <default>: FPS: 527 FrameTime: 1.898 ms
[refract] <default>: FPS: 418 FrameTime: 2.392 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 679 FrameTime: 1.473 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 686 FrameTime: 1.458 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 230 FrameTime: 4.348 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 680 FrameTime: 1.471 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 693 FrameTime: 1.443 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 691 FrameTime: 1.447 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 240 FrameTime: 4.167 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 685 FrameTime: 1.460 ms
=======================================================
glmark2 Score: 506
=======================================================
EGL updater thread exited
性能分析
glmark2 基准测试报告显示的 QuecPi Alpha 的 OpenGL ES 图形性能,最终得分为 506,总体表现不错。主要性能表现如下:
VBO(顶点缓冲对象)优化
- use-vbo=false → 516 FPS
- use-vbo=true → 679 FPS(提升 31.6%)
结论:启用 VBO 能显著提升渲染效率,减少 CPU-GPU 数据传输开销。
纹理过滤模式
- nearest(最近邻)→ 748 FPS(最快)
- linear(线性)→ 722 FPS(轻微性能损失)
- mipmap(多级渐远)→ 231 FPS(性能下降 69%)
结论:mipmap 因额外计算开销导致帧率大幅下降,适合高质量纹理但代价高。
着色模型(Shading)
- blinn-phong-inf(优化版布林-冯模型)→ 679 FPS
- cel(卡通渲染)→ 688 FPS
- phong/gouraud(传统光照模型)→ 220 FPS(性能极低)
结论:现代着色器(如 blinn-phong-inf)比传统模型(如 phong)更高效。