NVIDIA Aftermath

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).

Key Features

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

Support

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.

Availability

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.