OpenGL 3.0 and extensions query

I found inconsistencies with OpenGL 3.0 and extensions.

If you query the extensions with glGetIntegerv(GL_NUM_EXTENSIONS, …) + glGetStringi(GL_EXTENSIONS, …), you will get old fixed pipeline extensions like GL_ARB_texture_env_dot3.
Is it normal ?

(It’s a GL 3.0 forward context i’m initializing btw, on a ATI Radeon HD 48xx. Catalyst 9.3).

For a while, I wondered about this too and thought it was a mistake but sadly it isn’t. The OpenGL 3.1 standard doesn’t say that GetStringi has to be context aware. Not even GetProcAddress is. GetProcAddress can return pointers to the deprecated functions, and GetStringi can return extensions with deprecated functions. The only thing the specification mentions is that the effects of old functionality have to be ignored and set an appropriate GL_INVALID_OPERATION if it is called with a OpenGL 3.1 context or with a forward compatible 3.0 context.

I somehow agree with you though. What’s the reason behind the new query function if it isn’t context aware? Then again, it would be difficult to come up with a definite rule for which extensions which should be ommited and not. Some extensions define both deprecated and non-deprecated functionality.