Opengl shadering performance

Hi all,

Opengl shading performance seems to be an unresolved issue. I’d like to put this topic here. Any comment will highly welcome.

I used to use the following tools to get the opengl shader performance profile, like GPU usage, shader usage est., but didn’t success:

  1. gDebugger. gDebugger has a feature to add Nvidia to be counted, which needs NVIDIA’s PerfKit package. Although PerfKit package was installed and enabled, there is still no GPU parameter that could be counted.
  2. NVShaderPerf. Some material show NVShaderPerf belta could be used to measure and optimize opengl shadering performance. But NVShaderPerf belta seems to be no longer available in the internet now.
  3. PerfKit package. Sure we can add PerKit code to our application to measure the performance. But these codes will effect the application’s performance themself. Of course they could bee added in debug mode. Anyway it’s not a convenient way to measure shader performance.

Is there any other way to do this?

Unfortunately, there is no universal answer to your question. It highly depends on the vendor and hardware you choose.
For NV hardware, GPU utilization can be retrieved by NVAPI on the most elegant way. The problem with PerfSDK is that it doesn’t supports even Fermi. Shame! Currently AMD is more widely open for that kind of analysis, but from your post I can conclude that you are bound to NV.

Thanks for your information!

Any tool or way to AMD is welcome too.

Just to elaborate a little more on this, performance analysis with OpenGL programs is a nightmare and neither NVIDIA nor AMD are committed to providing a cross-platform way to retrieve timings for single commands or pipeline stalls or anything. Sure, there is the GPUPerfAPI by AMD which lets you introduce analysis into your program yourself and it’s available on both Windows and Linux, but the GUI already providing pretty good analysis, i.e. the GPUPerfStudio is Windows only. With NVIDIA’s Parallel NSight there is a timeline which lets you examine timings of all commands in the command stream of your program. However, in regard to other features, NSight falls extremely short and I would recommand using gDEBugger 6.2 stand-alone or the Visual Studio plugin.

All in all, there is no portable, standard way to measure performance except for timer queries.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.