
A reproducible CapFrameX workflow for measuring average FPS, 1% lows and frametimes on Windows handhelds without turning one lucky run into a preset.
Category
Performance
Difficulty
Intermediate
Reading time
10 min
Published
September 2, 2026
HandheldAtlas guide
A frame-rate counter can tell you what is happening at one moment. It cannot prove that a handheld preset is stable, repeatable or meaningfully better than another configuration.
CapFrameX records individual frame times through Intel PresentMon and turns those captures into comparable performance metrics. Used carefully, it can document average FPS, low-percentile performance and frame pacing for a specific game, handheld, power mode and graphics configuration.
This guide defines a practical Windows handheld workflow for HandheldAtlas contributors. It applies to devices such as ROG Ally, ROG Ally X, ROG Xbox Ally, Lenovo Legion Go and MSI Claw. It does not invent missing data: if a sensor or version cannot be verified, leave it blank.
CapFrameX is based on Intel PresentMon. Its optional overlay is rendered through RivaTuner Statistics Server, or RTSS. The capture itself and the overlay are related but separate: an overlay screenshot is useful context, while the saved CapFrameX record is the stronger performance artifact.
Use the download link published by the CapFrameX project or its official GitHub releases. Avoid repackaged installers from unrelated download sites.
The current project requirements include 64-bit Windows components, .NET and Microsoft Visual C++ runtime packages. Follow the requirements shown by the release you actually install rather than copying an old setup guide.
If CapFrameX behaves incorrectly after an update, the project recommends using the latest release, resetting damaged configuration files and checking for conflicting PresentMon-based monitoring processes.
Before opening the benchmark, write down the variables that determine the result.
Do not publish “ROG Ally at 15W” when the actual test was performed on an Ally X, a different APU or a vendor profile whose real power limit is unknown. The exact device and power configuration are part of the benchmark.
A built-in benchmark is usually the easiest route to reproduce because the camera path and workload are controlled by the game. It is not automatically representative of every gameplay area, so describe it honestly as a built-in benchmark.
Open-world traffic, weather, NPC behaviour and online matches introduce variation. If those elements cannot be controlled, state that limitation instead of pretending the run is perfectly deterministic.
Connect or disconnect the charger according to the intended test and do not change power source between runs.
Apply the final TDP, fan, VRAM, display and graphics settings. Restart the game when a setting requires it. Let shader compilation and initial asset loading finish before recording.
Run the scene once as a warm-up. A warm-up reduces the chance that first-load shader work, launcher activity or cold asset caching dominates the measured run.
Close downloads, update tools, browsers and monitoring utilities that are not part of the test. CapFrameX warns that overlapping PresentMon-based FPS or frametime monitoring from tools such as HWiNFO or AIDA64 can conflict with its capture service. Sensor monitoring can remain useful, but avoid running two competing frametime capture paths.
Open the Capture section and confirm that CapFrameX detects the correct game process. If several candidate processes appear, select the game process rather than the launcher.
Set a capture hotkey that does not overlap with the game, handheld command center or overlay controls. Choose a fixed capture duration when the route has a predictable length, or use the same manual start and stop points for every run.
Keep the capture configuration unchanged across the comparison.
The optional RTSS overlay can show FPS, frame time, temperatures, clocks, power and other available sensors. CapFrameX states that its overlay uses RTSS and that sensor availability depends on the hardware and monitoring library. A missing handheld sensor must remain missing; do not substitute an unrelated package-power value and label it total system power.
For a normal comparison, capture at least three valid runs of the same route. A 60- to 120-second gameplay route is a practical starting point, but a longer route may be necessary for streaming-heavy or open-world games. Consistency matters more than chasing a universal duration.
Discard a run only for a documented reason, such as an incoming update, accidental menu pause, route mistake or unrelated background interruption. Do not discard a slow run merely because it makes the preset look worse.
To test the effect of a setting, keep everything else fixed.
Changing resolution, TDP, graphics preset and frame generation together can show that one complete profile is faster, but it cannot prove which change produced the difference.
Average FPS summarizes the complete capture. It is useful, but it can hide short stalls and uneven delivery.
Frametime is the interval between frames, measured in milliseconds. CapFrameX explains that FPS is derived from these measured intervals: FPS equals 1000 divided by frametime. A flat frametime graph indicates more consistent delivery; spikes represent individual long frames.
CapFrameX calls the FPS value below which one percent of rendered frames fall P1. It is more stable than a single minimum frame and is useful for hardware comparisons.
“1% low” does not have one universal calculation across every tool. CapFrameX offers both 1% low average and 1% low integral methods. The project describes the integral method as time-based and the average method as the average of the lowest one percent of values.
Always record which CapFrameX metric you used. Do not mix P1, 1% low average and 1% low integral under one unlabeled field.
HandheldAtlas accepts a measured 1% low only when the source or capture identifies the calculation. If only P1 is available, label it as P1 rather than silently renaming it.
Inspect the graph, not only the summary cards. Repeated spikes at the same place may reveal traversal or shader problems. One isolated spike can be an external interruption.
CapFrameX also provides threshold analysis showing time spent below chosen performance levels. This can reveal a bad section that an average obscures.
CapFrameX can aggregate run history from raw frame times rather than merely averaging summary values. Aggregation is useful when the run set is valid and consistent. It does not rescue mismatched routes or settings.
If performance falls across consecutive runs while temperature rises, report the warm-state behaviour instead of selecting the first, coolest result.
The CapFrameX project specifically encourages reviewers to use its built-in screenshot function because it adds the tool name and logo. That helps future readers identify where the graph came from.
An OSD screenshot alone may confirm settings and instantaneous output, but it does not prove an average FPS or 1% low. Use it as supporting evidence, not as a replacement for the capture.
One run can be affected by temperature, background work or random game behaviour. Repeat the same route and report the representative result.
The number visible in an overlay at one moment is not the average of a recorded test.
P1, 1% low average and 1% low integral are different metrics. Name the exact one used.
A comparison is meaningless when the workload changes with the configuration.
The first run after launch and a heat-soaked third run may not represent the same operating condition.
Generated frames can increase displayed FPS while the base rendered frame rate and input response remain different. Record the technology and mode explicitly.
Two tools using PresentMon-based frametime monitoring can conflict. Keep one authoritative capture path.
Never infer TDP, 1% low, temperature, driver version or battery life from a nearby test. Blank is more honest than a polished fiction.
A useful handheld benchmark is not the highest number you can produce. It is a result another owner can reproduce.
Lock the hardware, power mode, resolution and complete graphics configuration. Warm the game, capture the same route at least three times, inspect frametimes and name the exact low metric. Preserve the original evidence and document every limitation.
That turns “it runs great” into a preset the community can test, verify and maintain.
CapFrameX official website https://www.capframex.com/
CapFrameX GitHub repository, releases, requirements and troubleshooting https://github.com/CXWorld/CapFrameX
CapFrameX: Explanation of different performance metrics https://www.capframex.com/blog/post/Explanation%20of%20different%20performance%20metrics
CapFrameX: The challenge of displaying performance metrics as FPS https://www.capframex.com/blog/post/The%20challenge%20of%20displaying%20performance%20metrics%20as%20FPS
CapFrameX: Configure the RTSS game overlay https://www.capframex.com/blog/post/How%20to%20configure%20the%20CapFrameX%20game%20overlay
CapFrameX support and capture troubleshooting https://www.capframex.com/support
Intel PresentMon https://game.intel.com/us/intel-presentmon/
Continue exploring