--- Definitions People frequently get confused by the proliferation of acronyms surrounding OpenGL support on Linux. This document is a vain hope to reduce the confusion. Definitions are given in expository order rather than alphabetical; hopefully by the end you will understand better. OpenGL: 3D graphics specification from SGI, descended from an earlier product called IRIS GL, competitor of Direct3D and QuickDraw3D (deceased). Frequently abbreviated "GL", particularly on Linux, since "OpenGL" is a trademark, and use of the trademark requires passing a (non-free) conformance suite. GLX: GL is a graphics language, not a windowing system. "GLX" refers to the extension that binds GL to the X11 window system, enabling 3D drawing on X windows. GLX is an extension to the X protocol. There are similar bindings for other window systems too - WGL on Windows, AGL on MacOS, EGL for embedded. Direct rendering: There are two ways a GLX program can get its drawing done. Either the client can do the drawing itself, or it can pass the GL requests to the server and have the server do the drawing. Server-side rendering is called "indirect rendering", and client-side rendering is called "direct rendering". Direct rendering is usually faster. Indirect rendering is limited to the set of features with a defined protocol encoding in GLX, which currently means nothing newer than OpenGL 1.5. No other window system binding for GL has the concept of "indirect rendering". DRI: The Direct Rendering Infrastructure is a technology that enables direct rendering for GL programs on Linux. There are two different X protocol extensions that have been used for this, XFree86-DRI and DRI2. Functionally, both extensions serve the purpose of coordinating the actions of the client-side DRI driver with those of the X server (who owns what buffers, what's the clip list, etc). Mesa: Mesa is a work-alike implementation of GL written by Brian Paul and dozens of contributors. It contains a software rasterizer, a GL state machine, and bindings to several window systems including X and Win32. All the open- source DRI drivers are based on Mesa, as well as several closed-source DRI drivers. DRI driver: This is the really important bit, the thing that translates GL rendering commands from above into hardware commands to hand down to the kernel's DRM service. Much of this code is shared in Mesa among multiple drivers. DRM driver: This is the kernel-side component of the DRI. The DRM is responsible for security, resource contention, buffer management (in DRI2), and basically anything else that touches the hardware that's not directly about 3D state. DDX driver: This is a part of the X server, responsible for the other sorts of X drawing like Render and Xv. The DDX has to be DRI-aware, and in DRI2 the DDX driver is responsible for buffer swaps and a few other GLX-level features. AGP: AGP is a fast version of the PCI local bus, with additional features for graphics hardware. Largely replaced by PCIE these days, which is great since AGP required custom drivers for different motherboard chipsets. --- Configuration So what do you need? Well, probably, nothing. Most modern distributions have this stuff set up for you out of the box, and if it's not working they'd like to hear about it. But if you're doing this by hand, or if you're trying to diagnose why things aren't working, here's some guidelines. ... actually no, sorry. I should write some, but not here. If you're reading this, bother me to update this section with a link to a wiki or something.