How to Monitor Vulkan Performance, for Beginners?

I know that “real”, professional-level performance monitoring is much more complex than a simple FPS (or better, millisecond/frame) counter.

However, I am not looking to squeeze every last drop of performance out of my application. Rather, I am a beginner, so if I do something stupid (as in: way too costly), I would like to get feedback on that ASAP.

I currently have a naive frame time counter, where in the draw loop I update an int frameCount and a double elapsedTime. Every time the elapsedTime is more than a second, I write frameCount and 1000/frameCount to the console as FPS and ms/frame.

That works, but it also clogs up the console output. So I had a look at:

  • NVidia NSight. I have an NVidia GPU and was already using the detailed information in NSight for other reasons. Seems to come at a cost, though: From 1200FPS/0.8ms to 600FPS/1.8ms (or so).
    Also, it’s not there automatically if I click “run” in my IDE.
    And if it is running, it shows a bunch of errors “pAllocateInfo->allocationSize (830208) is not a multiple of minImportedHostPointerAlignment (4096)”. It still works, but for running all the time, this is basically unusable (it hides all the “real” errors caused by me).
  • MSI afterburner The automatic overlay works as desired here, but also causes massive amounts of validation errors.
  • GeForce Experience Can’t get the overlay to run for my application, probably because it is not an “official”, NVidia-approved application.

So, what do people usually use to keep a simple, rough eye on performance while developing?

In this whole time since writing this post, I have been unable to find something better.

It’s difficult to prove a negative, but it looks like there simply isn’t a better solution for this.