在 Windows 上分析 GPU 性能, Adreno、Mali、Xclipse 与 D3D12 一并看清。

在一台 Windows 工作站上,Ycode 直接读取所连接 Android 真机中 Adreno、Mali 与 Xclipse GPU 的硬件计数器,同步记录帧率与整机功耗;对于 D3D12,则在主机上回放捕获的帧,逐个 draw 测量真实 GPU 耗时。Metal、Vulkan 与 RenderDoc 捕获及 AI 分析,仍在同一工作区中。

  • Adreno、Mali、Xclipse 硬件计数器
  • 默认 1 kHz 采样,同步帧率与功耗
  • Windows 上逐 draw 的 D3D12 GPU 计时
代码、真机、构建与 GPU 分析,在原生工作区中协同。

从容迭代,步步有据。

  1. 连接真机,选定目标

    连接受支持的 Android 真机,打开 Instruments 并选择要分析的应用;Xclipse 计数器需要该应用的可调试构建。

  2. 挑选计数器

    Ycode 列出当前 GPU 实际发布的计数器,按稳定 ID 选择要记录的项目,默认以 1 kHz 采样。

  3. 记录并对照阅读

    启动会话后,在同一时间线上查看计数器、渲染阶段、帧率与功耗;在 Windows 上,对 D3D12 捕获执行 Profile Frame,即可获得逐 draw 的 GPU 耗时。

计数器,直接来自设备。

打开 Instruments,选择 Android 真机与应用,Ycode 会枚举该 GPU 实际发布的硬件计数器:Qualcomm Adreno 经由 KGSL 内核接口,Arm Mali 经由 kinstr_prfcnt(即 HWCPipe 路径),Samsung Xclipse 则来自 Vulkan 驱动中的 Perfetto 计数器数据源。Adreno 与 Mali 无需 root;Xclipse 需要可调试的目标应用,Ycode 会在装好遥测层后重新启动它。

  • 按设备枚举计数器,按稳定 ID 选择
  • 默认 1 kHz 采样,可按会话调整
  • CPU、内存与帧率仪表与计数器轨道并列
移动设备控制
Ycode Instruments 面板:Android 真机、目标应用、已选 45 项 Adreno GPU 计数器,以及 CPU、内存与帧率仪表
Ycode Instruments 面板:Android 真机、目标应用、已选 45 项 Adreno GPU 计数器,以及 CPU、内存与帧率仪表

读轨道时,设备信息就在手边。

每个会话都会把 GPU 型号、核心数、片上内存、频率与 Vulkan 驱动版本显示在计数器轨道旁,Mali-G720 的记录就按 Mali-G720 来读。Mali 计数器可沿用 Arm Streamline 的图表目录,也可使用原生 Perfetto 目录;Adreno、Mali 与 Xclipse 都会给出渲染阶段区间,并与计数器共用同一设备时钟。

  • GPU 型号、核心数、频率与驱动版本随数据同屏
  • Mali:Streamline 风格图表目录或原生 Perfetto 计数器
  • 渲染阶段区间与计数器共用同一设备时钟
工作原理
Ycode 中的 Mali-G720 GPU 计数器轨道,旁边是设备的核心数、频率与 Vulkan 驱动版本
Ycode 中的 Mali-G720 GPU 计数器轨道,旁边是设备的核心数、频率与 Vulkan 驱动版本

在 Windows 主机上剖析 D3D12 帧。

打开 D3D12 应用的 RenderDoc 捕获,点击 Profile Frame。Ycode 在本机 GPU 上回放该帧,从 Direct3D12 与 DxgKrnl 的 ETW 计时事件中读取每个 draw、dispatch、copy 与 clear 的真实 GPU 起止时间,这正是 PIX 计时捕获所解码的同一类数据。工作按队列排布,重叠部分逐行展开,每个事件都能回到捕获中的 EID。在 NVIDIA GPU 上,还可通过 Nsight Perf SDK 加入计数器与连续的占用率曲线。

  • 逐个 draw、dispatch、copy、clear 的 TOP/EOP GPU 计时
  • 按队列分组的时间线,重叠展开并可回到 EID
  • NVIDIA 计数器与占用率曲线(Nsight Perf SDK 需单独安装)
Windows 调试 iOS
Ycode 中的 D3D12 GPU 管线事件:图形队列上逐 draw 的 TOP/EOP 计时,以及 compute 与 copy 工作行
Ycode 中的 D3D12 GPU 管线事件:图形队列上逐 draw 的 TOP/EOP 计时,以及 compute 与 copy 工作行

真实项目,实操见真章。

Ycode 图形调试演示
Ycode 图形调试演示

融汇多样技术,贯通开发全程。

在同一 Windows 工作区中,同时调试 iOS、Android 与 Windows 应用。

LSP 高亮与智能补全

从应用代码到脚本、着色器,Ycode 为以下语言提供 LSP 高亮与补全,让日常编写更顺手。

  • Rust
  • C#
  • Java
  • Kotlin
  • Python
  • MetalSL
  • Unreal Shader
  • Unity ShaderLab

此处列出编辑器的语言服务。各语言的构建、运行和调试能力,请以具体项目工具链及目标平台为准。

Windows 既是开发主机,也是调试目标;iOS 与 Android 是连接的目标设备。Ycode 支持三端同时调试,具体配置与可用功能取决于项目、工具链和目标系统版本。下载入口仅列出当前已发布的安装程序。

上手之前,先解疑惑。

使用方式、准备工作与功能范围,在这里说明。

可以在 Windows 上用 Ycode 读取 Adreno、Mali 与 Xclipse 的 GPU 计数器吗?

可以。把 Android 真机连接到 Windows 主机后,Instruments 面板会枚举该 GPU 发布的硬件计数器,默认以 1 kHz 记录。Adreno 走 KGSL 内核接口,Mali 走 kinstr_prfcnt / HWCPipe 接口,两者都不需要 root;Xclipse 计数器来自 Samsung Vulkan 驱动的 Perfetto 数据源,需要可调试的目标应用,Ycode 会在装好遥测层后重启它。已在 Adreno 830、Mali-G720 MC12 与 Xclipse 940 上验证,不同型号发布的计数器列表各不相同。iOS 真机的 Metal GPU 计数器也在同一面板中读取。

Ycode 是用 PIX 捕获 D3D12 帧吗?

不是。Ycode 打开 D3D12 应用的 RenderDoc 捕获,自行对回放的帧进行剖析:逐 draw 的 GPU 计时来自主机上的 Direct3D12 与 DxgKrnl ETW 事件,也就是 PIX 计时捕获所解码的同一类数据;NVIDIA 计数器来自 Nsight Perf SDK。整个过程不需要 PIX。目前剖析需要管理员权限、带 Ycode 时间线扩展的 RenderDoc 构建,NVIDIA 指标还需要受支持的驱动;SDK 运行库需单独安装。

还需要安装 Snapdragon Profiler 或 Arm Streamline 吗?

不需要。Ycode 的设备端 agent 直接读取厂商接口:Adreno 的 KGSL、Mali 的 kinstr_prfcnt / HWCPipe,以及 Xclipse 的 Perfetto 计数器数据源。Mali 可选择 Streamline 风格的图表目录,让图表与 Arm 官方模板一致,也可使用原生 Perfetto 计数器列表。同一会话还会记录 SurfaceFlinger 帧率、电池侧整机功耗、逐帧能耗与温度,并与计数器共用设备时钟。

让下一次创作,从这里开始。

注册并登录 Mix Studio 账号,即可下载安装程序。可用功能、设备数量和构建节点额度以所选套餐为准。

加入 Discord