GLProfiler

Hi All,

I just want to announce that the first public version (0.1.0) of tiny GL profiler is released and can be downloaded from the following link:
GLProfiler

In fact, this is a pre-release, but I’ve published it in order to get feedback as soon as possible. :slight_smile:

GLProfiler is a C++ GL profiling library for NVIDIA graphics cards (shipped as a Windows DLL). It requires R259.09+ drivers and SM4.0+ card. There is a more compact version, but I still have problem with execution on different platforms. The currently published version is shipped with DevIL and Fonts bitmap. That will be removed in the foreseeable future.

All comments and suggestions are welcome!

GLProfiler is a C++ GL profiling library for NVIDIA graphics cards (shipped as a Windows DLL). It requires R259.09+ drivers and SM4.0+ card.

So it’s not only NVIDIA-only, but Fermi architecture only. Is that a current limitation of the pre-release version, or is that really only what you’re targeting?

No, GLProfiler does not require Fermi architecture. It works just fine on 8xxx cards. Furthermore, it has been developed on 8600M GT. :slight_smile:

The limitations are imposed by DEBUG_OUTPUT (R259.09) and NVAPI (R256). NVAPI is supported since R195, but I fear that some functionality I’m using is not included in that early release. It is planned for GLProfiler to be both debugger and profiler. That’s why I’ve included DEBUG_OUTPUT from the initial version.

I also plan to support AMD GPUs. The main problem is displaying charts and text. I’ve implemented everything using attributless rendering. According to your post, AMD doesn’t support it neither in core nor in compatibility profile. Also, I need to figure out how to read clock frequencies and states on AMD. The third, and maybe the most important fact is - I don’t have even a single AMD card in my computers. It is not easy to develop something that requires pick&poke (since vendors unwillingly expose functionality regarding GPU states) without having the chance to test everything on the real hardware.

Till the end of this week, I’ll probably publish STANDARD edition of the library (without charts and reading states). It should run also on AMD hardware, but will generate only textual output. Of course, there are functions that retrieve current state of the profiler, so even charting can be done in the application.

A new and more stable version of GLProfiler has been released.

Now it supports both NV and AMD graphics cards. GLProfiler tracks changes in: GPU/Mem freqencies, GPU/Mem utilization, eviction size (NV only), Aux memory allocation (AMD only), etc. Display() function does not work with older AMD drivers (tested successfully on Catalyst 11.10).

A Quick Start Guide is provided as well as a sample application that demonstrates basic usage. More detailed documentation will follow if it proves to be useful…

Please, send all your comments, whether they are positive or not.

Hi Aleksandar. Just had a quick test of the triangle demo on my GT540M running with GeForce 285.62. Doesn’t work.

It first reports that some fragment shader is going to be recompiled due to a shader key mismatch. Then it reports GL_INVALID_OPERATION over and over again.

Another question would be what version of MSVC you compiled the lib with. I wonder if there’s some binary incompatibility. Wouldn’t it make sense to release the source code as well or are you holding it back intentionally?

Thank you thorka for the comments!

It is built with VS2k8. There is no MFC classes in the library and it should work on all platforms. No known incompatibilities.

The problem is in the following:

glBindVertexArray(0);

should be called after m_pGLProfiler->Display(). I’m using rendering without attributes, but in the latest NV drivers it is change (according to the spec.) and there should be a VAO selected even if there is nothing to be read from it. I used the old project for the sample.

Sorry!!! :frowning:

I’ll update it immediately.

Thank you again!