Analyze GPU performance from Windows. Adreno, Mali, Xclipse and D3D12.

From one Windows workstation, Ycode reads hardware counters from Adreno, Mali and Xclipse GPUs on connected Android devices, records FPS and device power beside them, and profiles D3D12 frames on the host with real per-draw GPU timing. Metal, Vulkan and RenderDoc captures and AI analysis stay in the same workspace.

  • Adreno, Mali and Xclipse hardware counters
  • 1 kHz sampling with FPS and power
  • Per-draw D3D12 GPU timing on Windows
A native workspace for code, devices, builds and GPU analysis.

A shorter path to your next iteration.

  1. Connect and pick a target

    Attach a supported Android device, open Instruments and select the app to profile. Xclipse counters need a debuggable build of that app.

  2. Choose the counters

    Ycode lists the counters the connected GPU actually publishes. Select them by stable ID; sampling runs at 1 kHz by default.

  3. Record and read

    Start the session and read counters, render stages, FPS and power on one timeline. On Windows, profile a D3D12 capture for per-draw GPU timing.

Counters read from the device itself.

Open Instruments, pick the Android device and the app, and Ycode enumerates the hardware counters that GPU publishes: Qualcomm Adreno through the KGSL kernel interface, Arm Mali through kinstr_prfcnt (the HWCPipe path) and Samsung Xclipse through the Perfetto counter producer in the Vulkan driver. Adreno and Mali need no root. Xclipse needs a debuggable target app, which Ycode restarts with its telemetry layer in place.

  • Counter lists enumerated per device and selected by stable ID
  • 1 kHz default sampling, adjustable per session
  • CPU, memory and FPS gauges beside the counter tracks
Control mobile devices
Ycode Instruments panel with an Android device, a target app, 45 selected Adreno GPU counters and CPU, memory and FPS gauges
Ycode Instruments panel with an Android device, a target app, 45 selected Adreno GPU counters and CPU, memory and FPS gauges

Read the tracks with the device facts in view.

Each session shows the GPU product, core count, on-chip memory, clock and Vulkan driver version beside the counter tracks, so a Mali-G720 trace is read as a Mali-G720 trace. Mali counters can follow the Arm Streamline chart catalog or the native Perfetto catalog, and Adreno, Mali and Xclipse all report render-stage intervals on the same device clock as the counters.

  • GPU product, cores, clock and driver version next to the data
  • Mali: Streamline-style chart catalog or native Perfetto counters
  • Render-stage intervals and counters on one device clock
How it works
Mali-G720 GPU counter tracks in Ycode next to the device core count, clock and Vulkan driver version
Mali-G720 GPU counter tracks in Ycode next to the device core count, clock and Vulkan driver version

Profile D3D12 frames on the Windows host.

Open a RenderDoc capture of a D3D12 application and press Profile Frame. Ycode replays the frame on the local GPU and reads the real GPU start and end time of every draw, dispatch, copy and clear from the Direct3D12 and DxgKrnl ETW timing events, the same data PIX-style timing captures decode. Work is laid out per queue with overlaps expanded, and every event links back to its capture EID. On NVIDIA GPUs, Nsight Perf SDK counters and continuous occupancy curves join the timeline.

  • TOP/EOP GPU timing for each draw, dispatch, copy and clear
  • Queue-grouped timeline with overlaps expanded and EID links
  • NVIDIA counters and occupancy via Nsight Perf SDK, installed separately
Debug iOS on Windows
D3D12 GPU pipe events in Ycode with per-draw TOP/EOP timing on the graphics queue and compute and copy work rows
D3D12 GPU pipe events in Ycode with per-draw TOP/EOP timing on the graphics queue and compute and copy work rows

Real projects. Recorded workflows.

Graphics debugging in Ycode
Graphics debugging in Ycode

Different targets. A familiar workspace.

Debug iOS, Android and Windows apps simultaneously from one Windows workspace.

LSP highlighting & completion

Write application code, scripts and shaders in one editor, with language-server-backed highlighting and completion for these additional languages.

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

Language support describes editing features. Build, run and debugging support depend on the project's toolchain and target.

Windows is both the desktop host and a debugging target; iOS and Android are connected device targets. Ycode supports simultaneous debugging across all three. Setup and available features depend on the project, toolchain and target version. Download buttons list only published installers.

A few things to know.

Practical answers before you get started.

Can Ycode read Adreno, Mali and Xclipse GPU counters from Windows?

Yes. With an Android device connected to the Windows host, the Instruments panel enumerates the hardware counters the GPU publishes and records them at 1 kHz by default. Adreno is read through the KGSL kernel interface and Mali through kinstr_prfcnt / HWCPipe, neither needing root. Xclipse counters come from the Samsung Vulkan driver through Perfetto and need a debuggable target app, which Ycode restarts with its telemetry layer installed. Tested on an Adreno 830, a Mali-G720 MC12 and an Xclipse 940; each GPU publishes its own counter list. iOS devices report Metal GPU counters through the same panel.

Does Ycode capture D3D12 frames with PIX?

No. Ycode opens RenderDoc captures of D3D12 applications and profiles the replayed frame itself: per-draw GPU timing comes from the Direct3D12 and DxgKrnl ETW events on the host, the same data PIX timing captures decode, and NVIDIA counters come from the Nsight Perf SDK. PIX is not required. Profiling currently needs administrator rights, a RenderDoc build with the Ycode timeline extension and, for NVIDIA metrics, a supported driver; the SDK runtime is installed separately.

Do I still need Snapdragon Profiler or Arm Streamline?

No. The Ycode device agent reads the vendor interfaces directly: KGSL for Adreno, kinstr_prfcnt / HWCPipe for Mali and the Perfetto counter producer for Xclipse. For Mali you can choose a Streamline-style chart catalog so charts match the Arm stock templates, or the native Perfetto counter list. The same session also records SurfaceFlinger FPS, battery-side device power, energy per frame and thermal readings on the device clock shared with the counters.

Bring your tools into one workspace.

Create a Mix Studio account or sign in to download Ycode. Compare plans for feature access and device or build-node limits.

Join Discord