Releases: GameTechDev/PresentMon
2.0.0
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 <unknown> instead of <error>.
-
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
1.10.0
This is a release of the PresentMon console application only, in order to provide some recent bug fixes. A new version of the complete Intel PresentMon capture and overlay tools will be released in a few weeks.
New Features
- Support for processes with non-ANSI characters in their name (#191)
Bug fixes
Intel PresentMon Beta 0.6
New Features:
- Added ability to change background on Readouts.
- Added additional customization options for Graphs.
- Changed default Capture and Loadouts save location to be "Documents/PresentMon" to align with other capture tools.
- Updated spawn location of metrics window. Inspired by issue #158.
Bug Fixes:
- Fixed a bug where the overlay would cause some games to minimize. Fixes issue #158.
- Fixed a bug where selecting a stale process would cause PresentMon application to turn all white.
- Fixed a bug where WMI CPU code was not functioning correctly on non-English languages. Fixes issue #140.
- Added support for ADL Overdrive 7 to enable GPU telemetry on AMD RX590 cards. Fixes issue #142.
1.9.2
1.9.1
1.9.0
General Improvements
- Improved process tracking, especially for short-running processes.
- Fixed an issue where some data could be missing when
--output_stdout
is used. - Fixed an issue where dependent presents are kept after a DWM present is lost.
- Process id is added to the CSV filename when
-multi_csv
is used, to avoid file collisions when multiple processes have the same name. - etw_list can now extract provider information from ETL files.
- Added scripts (tools/start_etl_collection.cmd, stop_etl_collection.cmd) to collect minimal ETL files for debugging/reproducing issues.
- Various minor performance and tracking improvements.
New Features
--track_gpu
tracks GPU work and adds two new metrics to the CSV:- msUntilRenderStart: the time between the Present() call and when the GPU work for this frame started, and
- msGPUActive: the total duration the GPU was working on this frame.
--track_gpu_video
when used, tracks video work separately from other GPU work.--track_input
tracks user input and adds the msSinceInput metric to the CSV which is the time between the Present() call and the earliest keyboard or mouse interaction that contributed to this frame.--date_time
outputs the Present() time as a date and time.
Breaking API Changes:
- PresentEvent::QpcTime and TimeTaken have been renamed to PresentStartTime and PresentStopTime, see 094fcbc for more details.
Intel PresentMon
- Release includes the initial beta for new capture and overlay tools (PMInstaller-v0.5-beta.msi). See https://game.intel.com/story/intel-presentmon/ for more details.
1.8.0
General
- Adds initial support for Windows 11.
- Adds support for parsing ETL files using system time or CPU cycle counter based time stamps.
- Various minor defect, security, and performance improvements.
PresentMon
- Increases the precision of floating point values written in the CSV.
- Fixes an issue where
-hotkey
specified using characters A-Z would not map to the correct character.
Present tracking
- Fixes an issue where the reported
msInPresentAPI
value could be too small when the present is displayed before Present() returns. - Fixes an issue where presents could be associated with the wrong display event, leading to consistent higher latency.
- Fixes an issue where presents using the independent flip present mode could be incorrectly reported as dropped.
- Adds support for Present() calls that fail (including the expected scenario of DXGI_ERROR_WAS_STILL_DRAWING results when using DO_NOT_WAIT flags).
- Improves tracking of presents on multi-monitor systems, though some issues may remain on latest windows (see issue #108).
- Reports the final SyncInterval used, which may be modified by the driver, instead of the value passed from the application (see issue #99).
- Removes identification of the "Composed Composition Atlas" present mode.
1.7.1
Bug fixes:
- Restricts dependent DLL loading to system32
1.7.0
Potentially-breaking changes for tools/scripts:
- PresentMon no longer attempts to elevate privilege by default. The
-dont_restart_as_admin
command line argument is deprecated and a new-restart_as_admin
argument is added which enables the previous behaviour (#96). -simple
,-verbose
, and-include_mixed_reality
command line arguments are deprecated, and should be replaced with-no_track_display
,-track_debug
, and-track_mixed_reality
respectively, all with the same behaviours.- The output CSV format has changed:
- The columns have been re-ordered.
- The column headers for time-based metrics starting in "Ms..." have been renamed to "ms...".
- Floating point values are no longer restricted to three decimal point precision.
New features:
- Support was added for multi-plane VSync DPC, ensuring that all planes are properly completed and distinguishing between "Hardware: Independent Flip" and "Hardware Composed: Independent Flip". (#98, #100)
Bug fixes:
- Fixed an issue for some captures (depending on the timing of initialization) and for certain presentation paths, where the display and rendering metrics were attributed to the wrong Present() call leading to incorrect latency calculations.
- Fixed a rare hang caused by a particular present sequence (#95)
- Various improvements in identifying, reporting, and freeing memory for frames whose tracking has failed (e.g., due to a missed ETW event).
- Fixed an issue where presents from APIs other than D3D9 or DXGI would not be tracked when
-simple
or-no_track_display
were used
Known issues:
1.6.0
New features:
- Various present tracking improvements
- Build support for ARM and ARM64 on Windows
- Added
-qpc_time_s
command line argument (#67) - Added
-terminate_existing
command line argument (#81)
Bug fixes:
- HSync flips are now considered tearing (#70)
- Recursive spawning of PresentMon processes when privilege elevation fails (#94)
- Average latency calculation improved
Known issues: