Possible bug in Nvidia drivers -- not exporting extension strings correctly

On my machine (GeForceFX 5800 Ultra, latest drivers), the symbols returned by glGetString(GL_EXTENSIONS) does not include the extensions that have been promoted to core OpenGL functions. For example, GL_ARB_load_transpose_matrixf is not included, even though I can successfully call it.

This seems to be in direct violation of the OpenGL specification (Section H2: Promoting Extensions to Core Features) which states that when an extension is promoted to the core, vendors should continue to export the old extension string.

In addition, unless I am mistaken, this makes it impossible to implement correct application behavior on NVidia cards in the case where the GL client and server are on separate machines with different levels of OpenGL support. This is because the machine running the program has no (reliable) mechanism for determining if the display machine supports a given extension. However, if GL_EXTENSIONS was a complete list of supported extensions (as the OpenGL spec requires) then I could check its value to determine if glTransposeMatrixfARB was supported on the display machine.

It’s possible that I am mis-reading the spec – could someone from NVidia please clarify this issue?

thanks
chris

Are you checking for GL_ARB_load_transpose_matrix or for GL_ARB_transpose_matrix? The latter is the correct extension and shows up on all GeForce cards I’ve seen.

Yes, you are correct – I was using the wrong extension string. My apologies for the silly mistake.

thanks
chris

Originally posted by jra101:
Are you checking for GL_ARB_load_transpose_matrix or for GL_ARB_transpose_matrix? The latter is the correct extension and shows up on all GeForce cards I’ve seen.