Aftermath is a compact, C++ library aimed at Microsoft Windows based developers, enabling post-mortem GPU crash analysis on NVIDIA GeForce based GPUs.
In it’s basic form, it works by allowing programmers to insert markers on the GPU timeline, which can be read post-TDR, in order to determine what work the GPU was processing at the point of failure. Aftermath also includes a facility to query the current device state, much like the using conventional graphics APIs, but reporting a finer grain reason.
One of the key principles of Aftermath is for the marker insertion to be as unobtrusive as possible. Avoiding situations common with other similar debuggers, where their associated performance cost, changes timing enough to make a bug repro vanish (a Heisenbug). Aftermath avoids this problem by design, while simultaneously not compromising on functionality; a catch-all solution for post-mortem GPU crash analysis.
Aftermaths low performance footprint is low enough to be measured in the noise, meaning it’s unobtrusive enough to ship in a fully-fledged game – allowing developers to mine statistics on why the GPU crashed from the wild (should the required telemetry systems already exist).
- C++ (DLL + header)
- Minimal API (initialize, set marker and get data)
- Accurate post-crash retrieval of marker nearest to crash
- Fine-grained device state query
- Performance footprint measured in the noise
- Graphics APIs: D3D11, D3D12
- Platforms: Windows 7, Windows 8.1, Windows 10 (including UWP) - x64
- NVIDIA Driver: v387.92 (or above)
Quick Start Instructions
- Integrate the Aftermath library into your game. See the ‘GFSDK_Aftermath.h’ header file for an integration guide and API documentation.
Members of the NVIDIA Developer Program can download Aftermath here: Get Aftermath
Developers can insert markers on the GPU timeline, which can be read post-TDR,
helping determine what work the GPU was processing at the point of failure.