I am installing crossover on a laptop with integrated Intel HD 520 Graphics. It runs 64bit Arch Linux and the 64bit display driver is mesa (version 19.3.3-1).

I'm installing crossover, and I am given the following choice:

:: There are 8 providers available for lib32-libgl:
:: Repository AUR
    1) catalyst-test 2) lib32-amdgpu-pro-libgl 3) lib32-catalyst-libgl 4) lib32-libglvnd-git 5) lib32-mesa-libgl-noglvnd 6) lib32-nvidia-340xx-utils 7) lib32-nvidia-libgl-352 8) lib32-nvidia-libgl-llb

Which option should I choose?

I believe the choice is between lib32-libglvnd-git or lib32-mesa-libgl-noglvnd.

Here's what I know about libglvnd:

libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL API calls between multiple vendors. It allows multiple drivers from different vendors to coexist on the same filesystem, and determines which vendor to dispatch each API call to at runtime. Both GLX and EGL are supported, in any combination with OpenGL and OpenGL ES.

However, I still don't know which option to choose.

1 Answer 1


I stumbled on your question while sorting out which shared library to link my project against for reasonably portable OpenGL support on Linux. My (limited) understanding is that all common OpenGL implementations are compatible with the vendor neutral GLVND dispatch layer at this point, so it should be the default choice.

As noted in the package description you quoted, GLVND is a wrapper that dispatches API usage to the appropriate vendor provided implementation (ie an installed GPU driver stack) at runtime. My understanding is that the vendor provided API libraries historically clobbered each other.

Mesa provides open source graphics API implementations built on top of the vendor specific drivers (as opposed to the vendor providing both the driver and the API implementations on top of it). As far as I can tell, Mesa was not originally compatible with the GLVND wrapper. However, it appears that they gained support at least two years ago. I can only assume that the lib32-mesa-libgl-noglvnd package is a holdover from prior to that.

The official GLVND repo might be of interest for more information, as well as this thread that you might have already seen. For the curious, these slides provide more information about what originally motivated the development of GLVND.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .