Reference guide for FrameSight reports and metrics.
A Runner is a dedicated Windows GPU machine operated by Exploding Frame. Each runner replays your RenderDoc captures and extracts per-draw performance counters. You do not install or manage runners. They are part of the FrameSight infrastructure and are always available to your benchmarks.
When you create a benchmark you select which runner(s) to target. Each selected runner becomes one column in the benchmark matrix, so you can compare the same capture across multiple GPU configurations side by side.
The public fleet page shows every runner with its current status (online, offline, or maintenance) and hardware specs (GPU model, VRAM, driver version). Check this page if a job is stuck in queued. The target runner is likely offline or in maintenance.
Need a specific GPU configuration that is not in the fleet? Contact us and we will look into adding it.
A capture is a RenderDoc .rdc file recorded with RenderDoc. It contains a complete recording of one frame of GPU work — every draw call, every state change, every buffer binding. FrameSight replays the capture on the runner's GPU to extract timing, resource usage, and pipeline counters.
.exe, fill working directory + command-line arguments as you would normally, then click Launch. Your game starts with a small overlay in the corner..rdc file (typically 50 MB to 2 GB depending on resources). Drop it into a FrameSight benchmark scene.Capture what matters. Pick the frame where your game is heaviest: highest draw count, peak VRAM, heavy shader work. A capture of a menu or a loading screen generates a report but the numbers won't reflect your real performance ceiling.
Resolution matters. Capture at the resolution you ship at (or higher). Pixel work scales quadratically with resolution; a 1080p capture of a 4K target under-counts pixel-pipeline pressure.
Avoid in-engine debug menus on screen. Imgui / debug overlays add extra draw calls + state changes to the captured frame and can mask real bottlenecks. Hide them before pressing F12.
One frame is enough. FrameSight extracts per-event GPU counters; a single representative frame holds everything the analysis needs. You don't need to capture a sequence.
A scene is a logical group of captures of the same in-game moment. Use one scene per gameplay scenario: boss fight, menu, world map, cinematic. The matrix view then compares captures of that scene across hardware configs and software versions, so a perf regression is one click away.
Tip: a benchmark can hold multiple scenes. When you upload a new capture into an existing scene, the old one is kept as a previous version — useful for tracking perf evolution between game builds. The header letter (A, B, C, …) on each cell maps to the upload order.
The Frame Stats section shows aggregate counts for the captured frame.
DrawIndexed / Draw calls. High counts point to CPU overhead or missing instancing.FrameSight evaluates your frame against a fixed 30 fps budget (33.33 ms). The bottleneck donut in the report shows your current corrected GPU time as a percentage of that budget, with target markers at 60 fps (50 % of the 30 fps budget) and 120 fps (25 %).
The headroom indicator below the chart is the slack you have before missing 30 fps on that hardware. Negative headroom = you're already over budget on this GPU. Positive but small = sensitive to any drift in worst- case frames (particles, foliage, weather).
The corrected total is your raw GPU time minus the per- event RenderDoc replay overhead (which doesn't exist in a real run). See the "raw / overhead removed" line under the Frame GPU time card in any report.
Hardware performance counters are read directly from the GPU via RenderDoc's counter API (D3D12 / Vulkan backend). Availability depends on GPU vendor and driver version.
The Throughput Analysis section identifies which pipeline stage is the primary bottleneck for the captured frame. FrameSight computes a utilisation score (0 to 1) for each stage:
The stage with the highest utilisation score is reported as the bottleneck. A balanced workload shows similar scores across stages. An extreme outlier is an optimisation target.
The Pass Treemap visualises GPU time by render pass as a proportional area chart. Each block represents one render pass. Its area is proportional to the GPU time that pass consumed.
Cells are coloured by call kind (draw / instanced / indirect / dispatch) so the visual mix reads at a glance: a sea of indirect cells looks different from a mostly-draw scene without needing to check the legend.
Click a tile to drill into the pass and see its individual draw calls, shader programs, and resource bindings.
The header above the treemap carries a Colour by toggle. Switching to Density recolours every cell by its draw-call density (calls per millisecond). A pale large cell is time-heavy but call-efficient. A small dark cell packs many calls into little time and usually means CPU-side submission overhead. Switch back to Kind to return to the default colouring.
Shows how GPU memory is distributed across resource types. The pie chart at the top of the section gives the high-level shape; the resources treemap below it lets you drill into individual allocations sized by megabyte.
The Memory efficiency card under the Efficiency section breaks down where every memory access landed in the cache hierarchy. The pie chart has three slices.
Practical rule: a green-heavy pie with low DRAM bandwidth means the working set fits in cache and the workload is well laid out. A peach-heavy pie with high DRAM bandwidth points at large textures, missing mips, or scattered access patterns; tackle those before optimising shaders.
Per-texture statistics for every texture sampled during the frame.
BC7_UNORM, R8G8B8A8_SRGB). Block-compressed formats (BC1 to BC7, ASTC) cut bandwidth dramatically against uncompressed formats.Overdraw and fill-rate analysis.
The top-N most expensive draw calls ranked by GPU time. For each:
Indirect draws (shown as Execute events) are GPU-driven: the draw arguments live in a buffer. FrameSight resolves the buffer at capture time to show real counts.
The Grade at the top of the report (A / B / C / D / F) summarises how clean the captured frame is across every analysed dimension. The grade is the visible signal. A 0 to 100 numeric score backs it for the curious, surfaced in the Grade card's tooltip and at the very bottom of the report.
The grade is derived from the warnings list. Each warning carries a severity (info / medium / high / critical); the grade letter falls out of the worst severities present. A frame with no warnings grades A; a frame with several criticals grades F.
A high grade is not a free pass. It means “no analysed signal is alarming”, not “this frame is fast”. Always cross-read with the Total GPU time, the bottleneck stage, and the pass treemap before drawing performance conclusions.