glGetString( GL_DRIVER_VERSION )

OpenGL applications often produce a log file that can be sent to the developer when things go wrong.
This usually includes the vendor and renderer strings as well as the supported OpenGL version and extensions.
The particular version of the video card driver that the customers are using can often be vital in determining if the problem is in the application or a bug in the driver.

At the moment it is necisary to use OS API’s to obtain this information, but this can require hours of research into obscure OS features on each platform just to obtain a simple piece of information that the driver already knows.

Windows has GetDeviceCaps( DisplayDC, DRIVERVERSION ) to get this information,
but it doesnt work.
We could look in the registry at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\DriverVersion
but if microsoft ever decides to change the class of GPU’s to something else (like ‘parallel coprocessor’) it will stop working, and what happens on a computer with multiple display adapters, you dont know which entry to look at.

Some applications get the driver filename from HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\RIVATNT\dll and use Version.dll to read the files version resource.
But this key is ‘\Windows’ instead of ‘\Windows NT’ in older versions of windows and could change again in future versions.
Microsoft might even make it impossible for ordinary user accounts to obtain read access to the system32 files in a future security upgrade.
This is just too unreliable for long-lived applications.

Even non-updatable platforms with the OS in ROM will have different software versions in units manufactured at different times, so i see no reason not to include this on all platforms.
This is a trivial addition to an opengl driver that can be very useful to many developers, so i believe it should be added to the core in 3.1
It could also be used to correct for known bugs in particular driver versions.

I have recommended the very same thing like 3 times over the last 2 years. The only way we would get something like this, were if nVidia would simply add an extension “NV_api_enhancements” which would then add such features. The ARB won’t do anything about such “insignificant details”.

Jan.