File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+
2+ ---
3+ title: "Mobile | 集成HWCPipe(libGPUCounter)来监测性能"
4+ date: 2025-11-30T06:58:39Z
5+ draft: false
6+ categories: [ "UE"]
7+ isCJKLanguage: true
8+ slug: "9f36f844"
9+ toc: true
10+ mermaid: false
11+ fancybox: false
12+ blueprint: false
13+ # latex support
14+ # katex: true
15+ # markup: mmark
16+ # mmarktoc: false
17+ # UEVersion: 5.3.2
18+ ---
19+
20+
21+ 最近在抓移动端的数据的时候还是经常感觉到一些痛点,尤其是虚幻在移动端分析性能的工具比较欠缺,主要还是要依靠厂商提供的工具和SDK。
22+ 项目组有钱的话可以考虑接入UWA或者Perfdog,节约很多事情,没钱就得自立更生了..
23+
24+ 不过UWA和Perfdog也有一些问题就是数据必须得传到他们自己的网站看,没法在游戏内实时看。有的时候在游戏内想调cvar来看性能指标的变化就不太方便了,只能录下来再对比。
25+
26+ Arm Streamline(对应mali芯片)倒是提供了比较方便的实时分析工具,只要用Arm Streamline启动应用,会绘制实时数据的采集图片(带宽需要结束trace以后才能分析数据),Snapdragon Profiler 有个realtime模式也可以做到这个。
27+
28+
29+ # 游戏内集成内录工具
30+
31+ 如果想要做一些性能统计或者脚本化抓取的功能,最好还是有一个游戏内录工具比较好。
32+ 比如战斗开始前录制,战斗结束后停止录制,用厂商的工具就比较难做到了,只能先录制一整段,后期再手动截取一段数据。
33+
34+ ## Mali: libGPUCounter
35+ 考察了一下现有的工具发现Arm的GPUCounters数据是开源的,再饭
36+ [ ARM-software/libGPUCounters: A utility library for application developers to sample Arm Immortalis GPU or Arm Mali GPU performance counters.] ( https://github.com/ARM-software/libGPUCounters )
37+
38+ Vulkan的官方示例Vulkan-Samples里有样板代码展现了怎么接这个库,直接Copy就行。 注意虚幻** 曾经** 接过HWCPipe这个库,但是很古老已经没人维护了(2019年左右接的),试了下最新的芯片直接不认识了。只能自己在项目插件里再另起一套了。
39+
40+ 另外Copy Vulkan示例代码的时候顺便发现他们带宽统计的代码是错的,顺手提了个bug..
41+
42+ [ HWCPipeStatsProvider provides misleading performance data · Issue #1427 · KhronosGroup/Vulkan-Samples] ( https://github.com/KhronosGroup/Vulkan-Samples/issues/1427 )
43+
44+
45+ 注意每次采集都是采集瞬间的GPU数据,所以为了得到准确的数据,想了下最好是后台拉一个FRunnableThread定时采集一下GPUCounters的数据,这样就没有帧的概念了,可以定时采集每帧不同pass平均后的数据。
46+
47+
48+ ## 高通: Freedreno
49+
50+ 高通的GPUCounters是不开源的,只能用它家自己的工具采集。但是有人去逆向他们的驱动形成了Mesa Freedreno驱动,在freedreno支持的GPU里基本从源码里翻到每个寄存器的定义。
51+
52+ 下面这里有大神给了一个示例代码如何采集Adreno的Counters,有兴趣的朋友可以翻一下这个人的博客,还有一些额外的信息。
53+ [ Adreno Perf Counter Queries] ( https://gist.github.com/antiagainst/fa15bad3d024f6520786863aa4ec05ab )
You can’t perform that action at this time.
0 commit comments