Device Benchmarking & Testing
Home › Device Benchmarking & Testing › Mobile GPU Benchmarking
Device Benchmarking & Testing

Mobile GPU Benchmarking: 3DMark and GFXBench Methodology Explained

By Jones Consortium Editorial, RF & Connectivity Engineer September 22, 2026 10 min read Updated: Sept 22, 2026

Mobile GPU performance numbers look simple — a single score, an average FPS. Behind that number is a complex interaction between graphics APIs, driver compilers, tile-based rendering, thermal limits, and display composition. If you test without understanding the methodology, you are measuring your test environment, not the GPU. This guide deconstructs how 3DMark and GFXBench actually stress modern Adreno, Mali, Immortalis, and Apple GPUs, and how to run them like a lab, not a leaderboard hunter.

Bottom line: 3DMark Wild Life measures sustained real-world gaming load via Vulkan with modern effects. GFXBench Aztec Ruins isolates peak theoretical throughput via high draw-call, high-poly tessellation paths. Use both — neither tells the full story alone.

1. How Mobile GPUs Actually Render Under Test

Unlike desktop GPUs with immediate-mode rendering and massive memory bandwidth, mobile GPUs are tile-based deferred renderers (TBDR). Qualcomm Adreno, Arm Mali-G/Immortalis, and Apple A-series GPUs split the frame into 16x16 or 32x32 pixel tiles, perform hidden surface removal on-chip, then shade only visible fragments. This saves bandwidth — critical when you share LPDDR5 with the CPU on a unified bus.

A benchmark must defeat these optimizations to be useful. Simple scenes with low overdraw score artificially high because the TBDR eliminates work. That is why credible benchmarks use:

  • High overdraw and particle effects — to force fragment shading after visibility is resolved
  • Complex geometry and tessellation — to pressure the vertex front-end and parameter buffer
  • Compute and post-processing passes — volumetric lighting, bloom, depth of field, and temporal anti-aliasing that cannot be tiled away
  • Offscreen rendering — 1440p or 4K targets that bypass the display scaler and vsync

Both 3DMark and GFXBench do this, but they exploit different bottlenecks. Understanding the API path is essential. On Android, 3DMark Wild Life Extreme uses Vulkan 1.1 exclusively, while GFXBench offers Vulkan, OpenGL ES 3.1, and Metal (iOS). Vulkan exposes explicit memory management and multi-threaded command buffers — drivers matter far more than on OpenGL. Two phones with the same Snapdragon 8 Gen 3 can differ 12% due to driver compiler differences alone.

Mobile GPU Benchmark Pipeline - From Workload to Display Block diagram showing benchmark workload flowing through API, driver compiler, GPU tiles, and thermal governor. WORKLOAD 3DMark / GFXBench Scenes, Shaders, Physics GRAPHICS API Vulkan 1.1 / Metal / GLES Cmd Buffers & Descriptors DRIVER + COMPILER Shader Compilation SPIR-V → ISA GPU CORE TBDR Tiles • ALUs • TMUs On-Chip Param Buffer FRAMEBUFFER Offscreen 1440p / 4K No VSync (Offscreen) THERMAL & POWER GOVERNOR → Monitors junction temp, throttles clocks after 3-7 min • Wild Life Stress Test samples 20 loops Skipping cooldown or testing with case = invalid results • See thermal section below !
Figure 1: Benchmark workload path on mobile TBDR architecture. Offscreen tests bypass the display compositor to isolate GPU throughput. Thermal governor is the largest source of variance.

2. 3DMark Methodology: Wild Life, Wild Life Extreme & Solar Bay

UL Solutions' 3DMark is the industry reference for cross-platform sustained performance. For phones and tablets in 2026, three tests matter:

Mobile Connectivity Standards Comparison
Feature 5G NR Wi-Fi 7 Bluetooth 5.4
Peak Throughput20 Gbps46 Gbps2 Mbps
Latency1–4 ms1–2 ms3–6 ms
RangeSeveral km30–50 m100–400 m
Power DrawHighMediumUltra-low
Primary UseCellular dataLocal networkingPeripherals/IoT

Wild Life (1440p) and Wild Life Extreme (2160p)

Both render an identical real-time demo using Vulkan with physically-based rendering, dynamic lights, post-processing, and particle physics. The scene is designed to mirror a modern AAA mobile game — not a synthetic torture test. Extreme increases internal rendering resolution from 2560×1440 to 3840×2160, raising fragment load ~2.25x. This separates bandwidth-limited designs (Mali with narrow bus) from ALU-strong designs (Adreno 750).

Scoring: Score = Average FPS × Scale Factor. Wild Life multiplies by ~49.5, Extreme by ~24. So a phone averaging 42 FPS in Extreme scores ~1,008. But the number to quote is always FPS — scores obscure throttling behavior.

The Stress Test — The Only Score That Matters for Phones

3DMark Wild Life Stress Test loops the workload 20 times (~20 minutes) and reports:

  • Best Loop Score / Worst Loop Score
  • Stability % = (Lowest / Highest) × 100
  • Temperature curve if thermals are exposed via API

A device with 85%+ stability maintains clocks; below 65% indicates aggressive thermal throttling that will affect 15-minute gaming sessions. Flagship Android phones typically land 70-82% with a 7-11°C skin temperature delta. iPhone 15 Pro oscillates less due to tighter voltage/frequency curves and vapor chamber on Pro Max.

Solar Bay (Ray Tracing)

Solar Bay adds hardware-accelerated ray tracing via Vulkan RT. It tests BVH traversal and ray-triangle intersection — not rasterization. Adreno 750, Immortalis-G925, and Apple A17 Pro+ support it; older Mali-G710 does not and falls back to software. Do not compare RT scores to raster scores.

Lab Procedure: Controlled 3DMark Run

Run offscreen, airplane mode, 50% brightness, 22±2°C ambient. Cool device to <30°C skin temp, kill background apps, and wait 2 minutes post-boot for dexopt to settle.

# Android - log thermal and frequency during loop
adb shell dumpsys thermalservice
adb shell cat /sys/class/thermal/thermal_zone*/temp

# Launch Wild Life Extreme Stress Test via ADB (automation)
adb shell am start -n com.futuremark.dmandroid.application/.MainActivity
# Or via 3DMark CLI if licensed: 
3dmark-cli --test="Wild Life Extreme Stress Test" --loops=20 --offscreen

# iOS - use Instruments + thermal log
xcrun xctrace record --template 'System Trace' --device UDID

3. GFXBench Methodology: Aztec Ruins, Manhattan & Onscreen vs Offscreen

Kishonti's GFXBench (now part of UL) takes the opposite philosophy: ultra-high geometric complexity and low-level API stress. Its relevance is peak throughput and feature-tier separation, not gaming feel.

Aztec Ruins — High Tier (1440p) and Normal Tier (1080p)

Aztec Ruins High uses 3.5M triangles per frame, hardware tessellation, volumetric light shafts, and HDR with 16x anisotropic filtering. Normal Tier disables tessellation. The workload is draw-call heavy (~800-1000 per frame) and pushes vertex fetch and tessellation hull/domain shaders — a known weak point for previous-gen Mali. If a GPU leads in Wild Life but collapses in Aztec High, its geometry front-end is the bottleneck.

Manhattan 3.1 / Manhattan 3.1.1 Offscreen

An older OpenGL ES 3.1 / Vulkan longevity test still used for regression tracking. Useful to compare a 2023 SoC to a 2026 SoC on the same API baseline. Lower triangle count, lighter shaders — tests driver maturity more than hardware.

Onscreen vs Offscreen — Do Not Mix Them

Offscreen renders to a fixed 1080p/1440p framebuffer regardless of device resolution — pure GPU throughput, comparable across devices. Onscreen renders to native resolution with vsync and compositor overhead — measures display pipeline and system integration. A 1080p phone will always beat a 1440p phone onscreen even if slower offscreen. Always report offscreen for architecture analysis. GFXBench reports both FPS and frames (jank analysis) — look at frame time variance, not just average.

For related low-level subsystem interactions, our analysis of iOS 19 kernel memory management shows how unified memory pressure from GPU allocations triggers Jetsam kills — a common cause of GFXBench crashes misattributed to thermals.

4. Head-to-Head: When to Use Which Suite

Attribute 3DMark Wild Life Extreme GFXBench Aztec Ruins High
Primary Focus Sustained gaming realism, composite shaders + compute Peak geometry & tessellation throughput
API Path Vulkan 1.1 only (Android), Metal (iOS) Vulkan / OpenGL ES 3.1 / Metal — selectable
Resolution 2160p offscreen (3840×2160) 1440p offscreen (2560×1440) High Tier
Test Duration ~2 min per loop, 20 loops for stability (20 min) Single pass ~45s, no built-in stress loop; manual looping required
Metric Score, avg FPS, stability % Average FPS, frame time variance, per-API FPS
Sensitivity Fragment shading, bandwidth, thermal governor Vertex/tessellation, driver overhead, API efficiency
Cross-Platform Excellent — same Vulkan workload on Android, iOS, Windows Good, but OpenGL path diverges on iOS (Metal translation)
Best For Buying decisions, sustained gaming prediction Architecture deep-dives, driver regressions

In practice, we run both sequentially: GFXBench Vulkan High Offscreen for peak ceiling, then 3DMark Wild Life Extreme Stress Test for sustained floor. The gap between peak and sustained tells you how honest the cooling is. The Snapdragon 8 Gen 3 for Galaxy demonstrates this — 38% higher peak than sustained in a 21°C lab, narrowing to 22% with an active cooler. That delta is thermal headroom, not silicon.

Power measurement completes the picture. A high FPS with high watts is inefficient — battery life will suffer. Sample battery_current and gpu_busy counters during offscreen runs. Effective analysis pairs FPS/watt, not just FPS.

5. Thermal Throttling and Test Validity

Mobile GPUs share a thermal envelope with CPU, NPU, and modem. A 5G download, GNSS lock, or biometric authentication during a test can inject power spikes that throttle the GPU mid-loop. That is why RF isolation matters — our separate guides on DNS over HTTPS privacy overhead and biometric sensor power draw detail background tasks that pollute benchmarks if not disabled.

Methodology for valid thermal data:

  1. Soak: 30 minutes at 22°C ambient, screen off, case removed
  2. Baseline: Record skin temp (IR thermometer, mid-frame), battery temp, and starting battery SoC (70-80%)
  3. Run: Airplane mode + Wi-Fi off, no charging, fixed 50% brightness (OLED vs LCD brightness curves differ)
  4. Repeat: Three full stress runs with 15-minute cool-down to idle temp between runs; report median, not best

Ignore any single-loop 3DMark score posted without stability %. A 9% throttling device with a high first loop can look faster than a 3% throttling device with lower peak — until minute 8 of Genshin Impact.

6. Interpreting Results Like an Engineer

Do not report scores alone. Report this tuple for each device: Offscreen avg FPS (peak), Stability %, FPS/W, and display-native onscreen FPS. Example interpretation for two 2026 flagships (illustrative lab data):

# Example spec capture for reproducibility
{
  "device": "Reference Phone A (Adreno 830)",
  "build": "A14.008 / Vulkan 1.3.280",
  "wildlife_extreme_offscreen": { "avg_fps": 42.1, "stability": "78%", "watts_avg": 7.2 },
  "aztec_high_vulkan_offscreen": { "avg_fps": 58.4, "frame_var_ms": 2.1 },
  "notes": "Vapor chamber, 22°C ambient, 3-run median"
}

Cross-check anomalies: if GFXBench OpenGL beats Vulkan by >15% on the same device, the Vulkan driver has a pipeline barrier issue — common on early firmware. If iOS Metal trails Android Vulkan on identical architecture, suspect Metal translation overhead, not hardware. And if results vary with haptics active, check linear vibration motor power transients — LRA activation during tests adds 0.8-1.5W spikes that alias as GPU jitter.

7. Best Practices Checklist

  • Always use offscreen for device-to-device GPU comparisons; use onscreen only for display pipeline articles.
  • Update GPU drivers (Android) and OS to latest stable — driver changelogs often fix 5-10% Vulkan gaps.
  • Log thermals and battery current; publish conditions alongside scores.
  • Prefer median of three runs over best-of-three; discard runs with background ANRs or thermal warnings.
  • Pair raster (Wild Life) with RT (Solar Bay) — do not conflate them in charts.

A disciplined methodology turns a vanity leaderboard into an engineering signal. That signal tells you whether a phone will sustain 60 FPS in a 30-minute session, not just for 60 seconds on a cold start.

Frequently Asked Questions

Why does my 3DMark score drop after the first loop?

That is thermal throttling by design. Mobile SoCs boost to maximum frequency for 60-90 seconds, then the power governor reduces clocks as junction temperature exceeds ~42-45°C skin / ~95°C junction. The Stress Test quantifies this — a 15-25% drop is normal. A 35%+ drop suggests insufficient cooling or high ambient temperature. Cool the device and retest at 22°C to verify.

Should I trust onscreen or offscreen GFXBench results?

Use offscreen to compare GPU power across devices — it renders at a fixed 1440p and bypasses vsync. Use onscreen only to evaluate the full display pipeline (resolution, refresh rate, compositor). Never rank GPUs by onscreen FPS when devices have different native resolutions.

Why does GFXBench Vulkan score differ from OpenGL on the same phone?

Different driver paths and shader compiler backends. Vulkan gives the app explicit control over synchronization and memory barriers; a poorly optimized Vulkan path can stall where OpenGL's driver implicitly hides latency. A large gap (>15%) usually indicates immature Vulkan drivers — update firmware and retest. Apple devices show Metal vs Vulkan gaps for the same reason.

Can I benchmark while charging or with a case on?

No. Charging adds 5-12W of heat and triggers battery thermal limits that aggressively cap GPU clocks. Cases trap heat and raise skin temperature 4-7°C, reducing stability by 10-20 percentage points. For valid results, test at 70-80% charge, unplugged, case off, at 22±2°C ambient.

References & Standards: 3GPP specifications · GSMA Intelligence