I have written a benchmark app (http://www.headline-benchmark.com) that rates graphics cards, but my problem is that I get the graphics card name from the OpenGL API using GL_STRING. For NVidia cards this works fine but for AMD cards I get useless naming like "R9 200 Series" which maps (currently) to four totally different graphics cards.
I've tried using the OpenCL API to get more card info (such as total number of compute units) as I can use this to disambiguate the AMD cards, but OpenCL is prone to crashing on older systems so I would rather avoid it. Is there any feature of the OpenGL API I can use that will give me more detail about the cards? Or indeed does AMD provide any kind of diagnostic command-line utilities that I could exploit?
What kind of details are you looking for?
Since you are using a benchmark utility, I would suggest using AMD's ADL API. This is roughly the same as NV's NVML API and they will both let you get the memory and GPU clock as well as GPU load %. Be aware that if you want to use this information, you should query it while your benchmark is in full-swing, because modern GPUs scale their clock rates back during idle load.
AMD has also recently released a new API, called AGS that is much more sophisticated than ADL and likely to give you the information you are looking for. Unfortunately I have not had a chance to work with it yet; ADL is mostly for power state management but still useful (particularly since it is cross-platform unlike AGS).