Compatibility Profile?

Simple question, what is the meaning of Compatibility Profile Context ? It’s something you might see when calling glGetString(GL_VERSION) for AMD cards. Compatibility to what? forward? backward?

If I happen to be running an older OpenGL program that uses immediate mode functions only, should I be worried that it might crash?

OpenGL 3.0 deprecated many features, e.g. the fixed-function pipeline, glBegin/glEnd, etc. 3.1 removed these features altogether. 3.2 introduced two distinct profiles: the core profile (which doesn’t include the deprecated features) and the compatibility profile (which includes them).

Code written for OpenGL 1.x and 2.x should work fine with a 3.2+ compatibility profile. It won’t work with a 3.2+ core profile. The online reference pages for OpenGL 4 only describe the core profile. If a function isn’t listed there, it isn’t available in the core profile.

Note that the compatibility profile isn’t available on all platforms. In particular MacOS doesn’t have it; you have a choice between OpenGL 2.1 and OpenGL 3/4 core profile. So if you want to use 3+ features in code which should run on a Mac, you need to use the core profile.

None of this should matter if you’re running legacy (OpenGL 1/2) code.

Thanks for the info. Just wondering if these new drivers were ripping out old functions and causing my program to crash. Must be something else.

If your program is crashing you’re better off using a proper debugger and finding out why.

I wouldn’t be asking for info if that was possible. AMD Drivers have always been flaky, and I don’t trust them enough to maintain old functions for the future.