Graphics & Engine•Study date: July 29, 2026•Printable brief ↗Vulkan Benchmark

Published by Sean Carr

Frame Budget at 120 FPS: What We Cut and What It Bought

Engineering a real-time Vulkan presentation pipeline to hit 8.33 ms at 4K native without resolution scaling.

Executive Brief

At a Glance

Honest GPU Compute

2.51 ms

GPU staging (0.252 ms) + physics (1.698 ms) + cloth (0.555 ms); 30.1% of the 8.33 ms 120 fps ceiling.

GPU Pass Timings

1.90 ms

Hardware timestamp queries: shadow pass 0.49 ms, main scene pass 1.41 ms.

Descriptor Headroom

3,691 / 8,192

3,691 mesh primitives drawn per frame against the 8,192 descriptor-set allocation cap.

Cloth Optimization

111x-342x

Cloth LUT lookup (1.6 µs/garment) replaces live PBD solve (548 µs/garment), saving 21.7 ms across 40 NPCs.

Empirical Findings TableScroll table →
Telemetry MetricMeasured ValueContext & Observability
Honest GPU Compute2.51 msGPU staging (0.252 ms) + physics (1.698 ms) + cloth (0.555 ms); 30.1% of the 8.33 ms 120 fps ceiling.
GPU Pass Timings1.90 msHardware timestamp queries: shadow pass 0.49 ms, main scene pass 1.41 ms.
Descriptor Headroom3,691 / 8,1923,691 mesh primitives drawn per frame against the 8,192 descriptor-set allocation cap.
Cloth Optimization111x-342xCloth LUT lookup (1.6 µs/garment) replaces live PBD solve (548 µs/garment), saving 21.7 ms across 40 NPCs.

Executive Summary & Core Finding

Most modern game pipelines rely on temporal upscalers and dynamic resolution scaling to mask render budget deficits. In Atlas Engine, our standing mandate targets 120 fps (8.33 ms frame budget) at 3840x2160 native with zero upscaling. Here is the telemetry on how we profiled our compute and draw queues to hold 2.51 ms of honest GPU/staging work.

Method

1

Hardware testbed: AMD Ryzen 7 9800X3D (8 cores / 16 logical threads), NVIDIA GeForce RTX 5080, native 3840x2160 @ 160 Hz display.

2

Engine execution under strict house rules: native 4K output, precise floating point math, zero dynamic upsampling (no DLSS/FSR), and FIFO vsync presentation.

3

Differentiated offscreen capture telemetry artifacts (~14.1 ms GPU to host readback for PPM capture) from live windowed swapchain execution (direct vkQueuePresentKHR).

4

Priced each subsystem against the 8.33 ms (120 fps) budget ceiling, gating draw calls, descriptor sets, and simulation steps.

Empirical Telemetry

What We Measured

Per-frame compute and presentation breakdown at 3840x2160 native

Honest GPU Compute

2.51 ms

GPU staging (0.252 ms) + physics (1.698 ms) + cloth (0.555 ms); 30.1% of the 8.33 ms 120 fps ceiling.

GPU Pass Timings

1.90 ms

Hardware timestamp queries: shadow pass 0.49 ms, main scene pass 1.41 ms.

Descriptor Headroom

3,691 / 8,192

3,691 mesh primitives drawn per frame against the 8,192 descriptor-set allocation cap.

Cloth Optimization

111x-342x

Cloth LUT lookup (1.6 µs/garment) replaces live PBD solve (548 µs/garment), saving 21.7 ms across 40 NPCs.

Experimental Notes & Observability Details

  • Whole-scene GPU render_ms is 0.35 to 0.78 ms inclusive of the 256² Tessendorf/JONSWAP FFT ocean cascade.
  • Headless capture telemetry initially reported 16.6 ms total due to a 14.1 ms GPU to host readback artifact; windowed gameplay bypasses readback entirely.
  • Simulation runs at a fixed 30 Hz timestep (33.3 ms tick), consuming ~7.5% of tick time for physics and staging.
Interpretation & Working Hypotheses

What We Think It Suggests

  • Targeting 120 FPS (8.33 ms) natively enforces architectural discipline across GPU compute queues that 60 FPS targets often obscure.
  • Precomputed lookup tables for complex physical simulations like garment physics offer dramatic throughput gains over per-frame iterative solvers.
Methodology Boundaries

Limits

  • Single hardware platform: Benchmarked on an AMD Ryzen 7 9800X3D and NVIDIA RTX 5080; results will vary across lower-tier hardware and mobile GPUs.
  • Static mesh asset set: Evaluated on specific island scene geometry and NPC crowd counts; dynamic scene streaming may introduce additional frame pacing variance.

Detailed Analysis & Field Observations

In modern 3D game development, dynamic resolution scaling, temporal antialiasing (TAA), and proprietary neural upscalers have become universal crutches. Rendering pipelines that struggle to maintain 60 fps at native 1440p routinely upscale from 50% internal render targets. At MeshTen, our standing mandate for Atlas Engine inverted this premise: all performance gates are measured strictly against 120 fps (an 8.33 ms frame budget) at native 3840x2160 (4K) with zero upscaling.

The 120 fps / 8.33 ms target is deliberately an aggressive stretch goal. Measuring against a lenient 60 fps (16.67 ms) ceiling allows architectural inefficiency to hide unnoticed. Measuring against 8.33 ms forces architectural discipline on every subsystem: memory bandwidth, descriptor pool management, and simulation overhead.

During our July 2026 performance profiling runs on an AMD Ryzen 7 9800X3D and NVIDIA RTX 5080, instrumented Vulkan hardware timestamp queries revealed an honest per-frame GPU compute cost of ~2.51 ms. This comprised 0.252 ms of render staging, 1.698 ms of physics simulation, and 0.555 ms of cloth solving, leaving 5.82 ms of frame headroom (69.9% unused capacity) before hitting the 120 fps deadline.

Pass-by-pass GPU profiling confirmed that the primary raster passes were completed in 1.90 ms: 0.49 ms for directional shadow map generation and 1.41 ms for the main deferred scene pass. The entire 256² Tessendorf ocean FFT displacement and normal spectrum executed in 0.35 to 0.78 ms.

The primary optimization that unlocked the 120 fps ceiling was replacing live position-based dynamics (PBD) garment solves with precomputed cloth lookup tables (LUTs). Live PBD solving cost 548 µs per character garment, which scaled to 21.9 ms across a 40-NPC crowd, instantly busting the frame budget. By caching rest-state strain tensors into a high-dimensional deformation LUT, garment evaluation dropped to 1.6 µs per character, yielding a 342x speedup on that subsystem.