PresentMon gives us a peek under the hood of DirectX 12 games

— 5:48 PM on March 9, 2016

One worry that's arisen from game developers' move to DirectX 12 and the Universal Windows Platform is its potentially chilling effect on benchmarking and frame-time monitoring. Good old Fraps doesn't work with DirectX 12 apps like Ashes of the Singularity or UWP apps like Gears of War: Ultimate Edition yet. There's some hope, though. Friend of TR and Intel graphics guru Andrew Lauritzen released a tool called PresentMon today that gives us an independent look into the performance of DX12 apps.

Put simply, PresentMon uses counters from a Windows facility called Event Tracing for Windows (in a manner that Lauritzen says is similar to Microsoft's own GPUView tool) to give us frame times for DirectX 12 apps in a comma-separated-values file. That's quite useful for the type of benchmarking we like to perform at TR. Here's a rough graph of some random data we collected from Gears of War: Ultimate Edition:

And here's a look at one from the Ashes of the Singularity DirectX 12 benchmark:

Pretty cool, huh?

PresentMon does take some work to get running, though. You'll need to download the repository from GitHub, grab Visual Studio Express Community 2015, and open the PresentMon.vcxproj file from the repository in the IDE. After Visual Studio grabs some required updates, just build the solution and you'll get an x64 directory in your project folder. Look inside the "Debug" or "Release" folder in that x64 directory, depending on your settings, and you'll see a PresentMon executable.

In its current form, PresentMon is a command-line app. I found it easiest to use by copying the Debug or Release folder from the steps above to my desktop, then navigating to the folder from the command line. At the bare minimum, users will need to run "PresentMon.exe -process-name " from a command prompt, which launches a monitoring window for the game in question. Exiting the PresentMon executable (or the app it's logging) will stop logging. Full documentation is available on the PresentMon GitHub page.

Our thanks to Andrew for making this invaluable tool available to the public.

Tip: You can use the A/Z keys to walk threads.
View options

This discussion is now closed.