I am attempting to run some Unity3D games, which require "OpenGL core profile 3.2 or later for OpenGL Core renderer" (according to the games' own output).
As far as I know, I have OpenGL 3.3. However, my glxinfo
output is very, very confusing:
glxinfo | grep "OpenGL"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 6.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.2.0-devel
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.1 Mesa 18.2.0-devel
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.2.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:
So, I have "Core profile version" 3.3 (greater than is required by Unity3D) but my "version" is 3.1? Why is this, and what can I do about it?
I have a Intel Core i5-3320M, and am using Mesa 18.2 with the i915 driver.
The core profile version is what version of GL you can use on your card with your drivers. This is what really matters, usually.
The OpenGL version string you can just ignore. It's the compat profile version.
However, the specific issue you are having, seems to be that your system is actually using the llvmpipe renderer, rather than the hardware acceleration for your actual GPU. The vendor string value should be something like Intel Open Source Technology Center with the renderer string something like Mesa DRI Intel(R) Ivybridge Mobile. You may need to make sure you have the
intel-microcode
package installed.Turns out this was due to a chain of bugs in the Ubuntu 18.04 upgrade process.
Bug 1, Bug 2, and Bug 3 caused any system with
libegl
to fall back tollvmpipe
- software rendering.libegl
, in turn, was incorrectly installed on systems that didn't need it, due tolibnvidia-gl-390
depending on it.libnvidia-gl-390
was incorrectly required on many systems. Uninstalling it fixes this issue.