ATI/AMD Cat7.11 - AMD performance monitor

I’ve finally got around to installing the latest Cat. drivers and, as always, I ran OpenGL Extension Viewer x64 just to see if anything had changed…

My god was I shocked when I found full GL2.1 support o.O
(including FBO sRGB support)

However, an extension which did catch my eye was the one in the subject; GL_AMD_performance_monitor

Basically, my question to any ATI/AMD guys lurking on the forum is will we be able to get our hands on this spec any time soon? Is it likely to turn up soon in an SDK update? (also, it would be nice if other extensions which lack a public spec had their details released in the SDK).

I don’t know what this extension does, but from the sounds of it, it might be exposing hardware performance counters. That would be my guess anyway. I suppose your best bet is to send an email to ATI devrel and ask.

Yeah, I figured it was something like that and devrel was going to be my next port of call, however over the years I’ve found their reply rate to be a bit hit and miss (thus why when you were working for ATI/AMD I fired my last email directly to you) so I figured nowt to lose by seeing if I could catch the attention of someone here :slight_smile:

Some functions for performance monitor extension:
glGetPerfMonitorCounterDataAMD
glEndPerfMonitorAMD
glBeginPerfMonitorAMD
glSelectPerfMonitorCountersAMD
glDeletePerfMonitorsAMD
glGenPerfMonitorsAMD
glGetPerfMonitorCounterInfoAMD
glGetPerfMonitorCounterStringAMD
glGetPerfMonitorGroupStringAMD
glGetPerfMonitorCountersAMD
glGetPerfMonitorGroupsAMD

Still don’t know their parameters.

My friend has reverse-engineered the number of parameters and possibly their names. This is what we know:

// performance monitor
// RBBM, VAP, GA, SU, SC, RS, TX, US, ZB, FG, RB3D, GPIN
// these are most probably some gpu registers which
// knowledge would be very useful in this extension
// somehow it should be possible to access them directly
// through these functions (perfstudio can do that)
void glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
void glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
void glBeginPerfMonitorAMD (GLint monitor);
void glEndPerfMonitorAMD (GLint monitor);
void glGetPerfMonitorGroupsAMD (GLint* nOut, GLsizei n, GLint* groups);
void glGetPerfMonitorCountersAMD (GLint group, GLint*nOut, GLint* data, GLsizei n, GLint* counters);
void glGetPerfMonitorCounterDataAMD (GLint monitor, GLenum type, GLint ct,GLint* data, GLint* data2);
void glSelectPerfMonitorCountersAMD (GLint monitor, GLint x, GLint group, GLsizei n, GLint* counters);
void glGetPerfMonitorCounterStringAMD (GLint group, GLint y, GLsizei n,GLint* nOut, GLbyte* buff);
void glGetPerfMonitorGroupStringAMDPROC (GLint group, GLint n, GLint* nOut,GLbyte* data);
void glGetPerfMonitorCounterInfoAMDPROC (GLint group, GLint counter, GLenum type,GLint* data);

Include this source code in GLIntercept, then run GPU PerfStudio while GLIntercepting your application and values of those parameters will be logged. There’s still a lot of work to be done and I don’t think I have enough time to play with it. This extension seems to be pretty low-level.