Intel has introduced version 2.0.0 of its frame data monitoring and analysis tool, PresentMon. PresentMon can show you frame rates, track key performance metrics such as the GPU and CPU, and display frame durations and latency for different graphics APIs for both desktops and UWP applications.
Notably, Intel PresentMon 2.0.0 brings in a bunch of new features, fixes, and optimizations. The most important feature is the ability to calculate averages only from data points that are not zero. This helps denote metrics where zero means "no data" rather than a zero value. Another important feature that PresentMon 2.0.0 brings is the addition of histogram plots, making the visual representation of data and other important metrics better.
Here are the full release notes:
New Features
- The majority of metrics are changed to use the time that the CPU started working on a frame as the reference point instead of the present() call, with values that are more aligned to measuring the quality of graphics applications (e.g., latency and duration of interaction and displayed frames). See README-ConsoleApplication.md for more details.
- Processes with unknown name are now reported as instead of .
- Capture application CSV now reports NA (Not Available) in columns for unavailable metrics instead of 0.
- Overlay / Capture application now hides any metrics that are not available on the system.
- Added explicit 1%, 5%, and 10% percentile statistics (to the existing 99%, 95%, and 90%). Previously, selecting 99%ile for metrics where a lower value is better (such as frame time) would automatically convert to the 1%ile statistic. Now, no context-dependent conversion is done and whatever statistic the user selects is displayed.
- Added a non-zero average statistic which only averages non-zero data points. This is useful for metrics where zero denotes "no data" rather than a zero value (such as the click-to-photon latency metric).
- Added histogram plots.
- Client APIs:
- New Dynamic query composition API: clients now specify which metrics/stats they are using, and only the necessary data processing is performed. This replaces the previous behavior where all metric combinations were calculated on each polling call, regardless of whether they were necessary.
- New Introspection API: clients can now enumerate metrics at runtime to populate UIs with options, names, and descriptions. Also enables clients to be forward-compatible with newer service builds exposing new metrics.
- PresentData: changed PresentStopTime to TimeInPresent where PresentStopTime = TimInPresent == 0 ? 0 : PresentStartTime + TimeInPresent
Bug Fixes
- Fixed crash caused by resetting preferences
- Fixed graph rendering errors when sampling rate was high and/or graph contained many data plots
- Disallow editing for built-in loadout presets
- Fixed issue where autoscaling settings was affecting the wrong graph
- Fixed issue where independent data display window would repeatedly appear above the control UI making it difficult to interact with the application
- Fixed overlay UI misalignment in readout widgets caused by very small values
- Loadout files are now saved with .json file extension by default
Binary Assets
- PresentMon-2.0.0-x64.exe: 64-bit console application
- PresentMon-2.0.0-x86.exe: 32-bit console application
- PresentMon-v2.0.msi: Intel PresentMon Installer
You can download the latest version of Intel PresentMon from GitHub.