Platform specifics: Linux
This Section explains how to install Drivers to make OpenGL Programs run under Linux and how to use different Libraries/Toolkits to create Opengl Programs.
The standard OpenGL implementation used on Linux systems is Mesa3D. As of this writing, it provides implementations of OpenGL (up to version 3.0), as well as OpenGL ES, both versions 1.1 and 2.0. It includes a software-only implementation of the entire GL stack, but can also use hardware-specific drivers.
Mesa3D & DRI
Direct Rendering Infrastructure, also known as the DRI, is a framework for allowing direct access to graphics hardware under the X Window System in a safe and efficient manner. It includes changes to the X server, to several client libraries, and to the kernel (DRM, Direct Rendering Manager). The most important use for the DRI is to create fast OpenGL implementations providing hardware acceleration for Mesa. Several 3D accelerated drivers have been written to the DRI specification
http://dri.freedesktop.org/wiki/
DRIconf is a configuration applet for the Direct Rendering Infrastructure. It allows customizing performance and visual quality settings of OpenGL drivers on a per-driver, per-screen and/or per-application level. The settings are stored in system wide and per-user XML configuration files
http://dri.freedesktop.org/wiki/DriConf/ https://packages.debian.org/sid/all/driconf/filelist
- DRI libgl1-mesa-dri
- /etc/drirc
- /usr/lib/x86_64-linux-gnu/dri/i915_dri.so
- /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
- /usr/lib/x86_64-linux-gnu/dri/kms_swrast_dri.so
- /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so
- /usr/lib/x86_64-linux-gnu/dri/nouveau_vieux_dri.so
- /usr/lib/x86_64-linux-gnu/dri/r200_dri.so
- /usr/lib/x86_64-linux-gnu/dri/r300_dri.so
- /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
- /usr/lib/x86_64-linux-gnu/dri/radeon_dri.so
- /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
- /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
- /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so
- /usr/share/bug/libgl1-mesa-dri/control
- /usr/share/bug/libgl1-mesa-dri/script
- /usr/share/doc/libgl1-mesa-dri/changelog.Debian.gz
- /usr/share/doc/libgl1-mesa-dri/copyright
- /usr/share/lintian/overrides/libgl1-mesa-dri
https://packages.debian.org/sid/amd64/libgl1-mesa-dri/filelist
Mesa3D & GLX
- OpenGL application on X Windows must use GLX, a standardized API, to set up a rendering context;
- GLX API is closely coupled with Xlib;
- OpenGL library also provides the GLX API implementation;
- GLX system has two roles, it communicates with the X server and initializes client-side and hardware state. The GLX client-server communication takes place using a standardized GLX wire protocol, which is an extension to the X network protocol;
- GLX library abstracts all client-side and hardware initialization and the internals of the process are hidden in the OpenGL implementation library;
- GLX API is specified in terms of Xlib, the glX functions use Xlib Displays, Windows, Visuals, etc. The GLX implementations are also built using Xlib;
http://xcb.freedesktop.org/opengl/
glxinfo is a command-line tool that can help you diagnose problems with your 3D acceleration setup
http://dri.freedesktop.org/wiki/glxinfo/ https://packages.debian.org/sid/amd64/mesa-utils/filelist
- GLX libgl1-mesa-glx
- /usr/lib/x86_64-linux-gnu/libGL.so.1
- /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
- /usr/share/bug/libgl1-mesa-glx/control
- /usr/share/bug/libgl1-mesa-glx/script
- /usr/share/doc/libgl1-mesa-glx/changelog.Debian.gz
- /usr/share/doc/libgl1-mesa-glx/copyright
- /usr/share/lintian/overrides/libgl1-mesa-glx
https://packages.debian.org/sid/amd64/libgl1-mesa-glx/filelist
OpenGL ABI (Headers, Datatypes, Libraries)
- ABI (Application Binary Interface) and runtime environment for applications using OpenGL under X11 on Linux enable applications using the OpenGL API for rendering to run on a variety of underlying implementations transparently. The intent is to address all of open source, commercial closed binary, OpenGL SI-based, and Mesa-based implementations.
- SDK for developing apps using OpenGL. This includes header file locations, conventions for use of extensions, etc.
https://www.opengl.org/registry/ABI/
Some Linux distributions may include support for hardware acceleration. Also, some GPUs have Open Source drivers developed by the community even though a closed source driver may be available from the manufacturer.