Samuel Pitoiset of the Nouveau driver project, and the student who was participating in this year's Google Summer of Code, has made great progress in understanding and documenting NVIDIA's "NV50" GPUs performance counters.
Pitoiset already did basic Nouveau NVC0 compute support
for reading NVC0/Fermi performance counters
that require a hard-coded compute kernel. He's also committed other performance counter code to the Nouveau Gallium3D drivers this summer.
While GSoC is now over, Samuel has been able to figure out most of the NV50 counters by using his own implementation of the libpciaccess PCI library on Windows 7 to read "pcounter" configurations for the NVPerfKit and GDebugger utilities. He's been able to document most of the generated signals and has published his findings to GitHub
. Samuel shared this good news today via his blog
After completing the documentation process, it would be theoretically possible to develop a NVPerfSDK/PerfKit for Linux. NVIDIA offers "PerfKit" to Windows developers as an advanced software suite for measuring the performance of -- and debugging -- OpenGL and Direct3D applications. The closed-source PerfKit reads these performance counters from the driver to understand bottlenecks and other issues in the game/application under test.