I've got a program that uses OpenGL for rendering. In doing so, it depends on having a core profile, but even if there is no core profile available, I always want to create an OpenGL context if only to be able to query the driver vendor and version when reporting the error that no suitable profile is available. For that reason, even if there is no core profile available, I always use some available profile to just attempt to initialize, and check during initialization that the profile fits my prerequisites, which specifically are that the OpenGL version is at least 3.0, and that GL_ARB_compatibility is absent.
However, I'm getting error reports from users whose drivers appear to violate those assumptions. Here's an example:
- GL_VENCOR:
ATI Technologies Inc. - GL_VERSION:
4.2.11411 Core Profile Context - GL_RENDERER:
AMD Radeon HD 7610M - GL_EXTENSIONS: [...]
GL_ARB_compatibility[...]
As can be seen, glGetString(GL_VERSION) says it is a "Core Profile Context", but GL_EXTENSIONS contains GL_ARB_compatibility.
How should I interpret this? Is this a valid configuration and, if so, what does it mean for functionality that differs between core and compatibility profiles? Or should it be considered a driver bug? Is there a better way to check whether a given OpenGL context is core or compatibility?
GL_ARB_compatibilityregardless. - Ruslan