Ubuntu – Why is the OpenGL version stuck at 3.0 despite new hardware & software

16.10intel graphicsopenglxubuntu

I need to use a program on my laptop that requires OpenGL 3.3 or better. Apparently my "effective" OpenGL version is 3.0. Below is the output from glxinfo. This is xubuntu 16.10 and the graphics card is Intel HD 5500. So I don't understand what's going wrong, it seems like both hardware and software should be plenty up to date to get at least 3.3. Hope someone can help!

glxinfo|grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) 
OpenGL core profile version string: 4.3 (Core Profile) Mesa 12.0.3
OpenGL core profile shading language version string: 4.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 12.0.3
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 12.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

Best Answer

Short answer: Your OpenGL version in not stuck at 3.0. The "OpenGL core profile version string" line displays your supported OpenGL as "4.3".

More detailed explanation: This complicated versioning is related to changes done in OpenGL version 3.0, up to which all OpenGL versions were fully backwards compatible. Starting from OpenGL version 3.0 some features were marked as deprecated, and newer drivers don't necessarily have to support them to be OpenGL 3.1+ compatible.

To make it possible for OpenGL drivers to support deprecated functions while also being fully compatible with versions 3.1+, OpenGL introduced "core" and "compatible" profiles.

Basically, if you run an application in the context of the "compatible" profile, you are guaranteed to have access to all OpenGL capabilities up to a particular version including all the deprecated functions. This is not the case when running an application in the context of "core" profile.

My speculation is that, for context-unaware applications, the OpenGL version might be purposefully reported as 3.0 for maximum compatibility. This is were environment variables like MESA_GL_VERSION_OVERRIDE=4.3 come in handy.

For more information: OpenGL Context