Introduction to libglvnd
The libglvnd package dispatches OpenGL API calls to a given driver
vendor at runtime. Some of the libraries are simply wrappers to the
main dispatcher. Drivers that are built with libglvnd in mind
provide their own OpenGL functionality. For Mesa-25.2.2, it will install
libEGL_mesa
and libGLX_mesa
. For NVIDIA-580.82.07, it
will provide libEGL_nvidia
,
libGLESv2_nvidia
, and libGLX_nvidia
. Each rendition is specific to the
driver it comes from. The benefit of doing it this way is that a
driver doesn't have to obey to the architecture an OpenGL vendor
applies nor being absorbed by the vendor.
Important
Read About OpenGL for some important information
regarding libglvnd vs Mesa's OpenGL implementations. In short,
this package is heavily recommended.
libglvnd Dependencies
Recommended
Xorg
Libraries
Installation of libglvnd
Install libglvnd by running the following commands:
mkdir build &&
cd build &&
meson setup --prefix=/usr \
--buildtype=release \
-D gles1=false \
-D hgl=false \
.. &&
ninja
Now as the root
user:
ninja install
lib32 Installation of libglvnd
Install lib32-libglvnd by running the following commands:
rm -rf * &&
CC="gcc -m32" CXX="g++ -m32" \
PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
meson setup --prefix=/usr \
--libdir=/usr/lib32 \
--buildtype=release \
-D gles1=false \
-D hgl=false \
.. &&
ninja
Now as the root
user:
DESTDIR=$PWD/DESTDIR ninja install &&
cp -vr DESTDIR/usr/lib32/* /usr/lib32 &&
rm -rf DESTDIR &&
ldconfig
Command Explanations
Note
Inspect meson_options.txt
or
meson.options
for a full list of
options.
--buildtype=release
:
Specify a buildtype suitable for stable releases of the package, as
the default may produce unoptimized binaries.
-D gles1=false
: This
disables an obsolete version of OpenGL ES.
-D hgl=false
: This disables
targeting Haiku by default as this guide is for Linux, not Haiku.
-D gles2=false
: If you don't need
OpenGL ES, use this option. Be sure to read the section
called “About GLES (OpenGL ES)”.
Contents
Installed Programs:
None
Installed Libraries:
libEGL, libGL, libGLESv2, libGLX,
libGLdispatch, and libOpenGL
Installed Directories:
/usr/include/{EGL,GLES{2,3},glvnd,KHR}
Short Descriptions
libEGL
|
contains EGL window-system API functions
|
libGL
|
is the “legacy” OpenGL library; wrapper
library calling libGLdispatch and libGLX
|
libGLESv2
|
exposes OpenGL ES 2.x and 3.x entrypoints; wrapper
library calling libGLdispatch
|
libGLX
|
dispatches GLX extensions to the right vendor
|
libGLdispatch
|
dispatches OpenGL and TLS to the right vendor
|
libOpenGL
|
is the “new” OpenGL library and exposes
OpenGL entrypoints; wrapper library calling libGLdispatch
|