Part of my involves doing performance work on the OpenGL driver. Working on a driver presents all sorts of challenges, and getting performance info is particularly stressful. Why is an app running slow? Is it the CPU? Is it the GPU? Is it the app? Is it the driver? Is some knob not in the right spot?
One of the tools I recently started using that has made my life much easier is GPUView. GPUView uses Windows Event Trace Logging to illustrate the performance interactions between the GPUs, CPUs, drivers, Windows graphics kernel, and apps in a system. It would be best if you first read Matt Fisher’s post on his blog describing GPU View. Matt Fisher was an intern at Microsoft when he developed this tool with Steve Pronovost, a full time engineer at Microsoft. It’s required reading for learning about GPUView. There are other resources listed below, as far as education and downloading the tool itself.
I admit that I had delayed my education in GPUView for a long time, because I did not quite understand the functionality offered by the tool. If you have never used GPUView before, and you just saw someone using it, it really makes no sense to look at. But as soon as you understand how the data is being represented, it is really quite remarkable. You can see how the CPU and GPUs are interacting, whether an app is CPU or GPU limited, and a mess of other things, within minutes of opening a trace. Add it to your toolkit, if you do any graphics performance related work on Windows.
Matt Fisher’s GPUView webpage – http://graphics.stanford.edu/~mdfisher/GPUView.html
Windows SDK For Windows 7 – http://www.microsoft.com/en-us/download/details.aspx?id=8279
Windows SDK for Windows 8 – http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx (I couldn’t install this on my Win7 box, as I wanted to view Win8 traces on my main dev machine)