Direct Rendering Infrastructure
|Original author(s)||Precision Insight|
|Stable release||2.4.x / February 2009|
|License||MIT and other licenses|
In computing, the Direct Rendering Infrastructure (DRI) is an interface and a free software implementation used in the X Window System to securely allow user applications to access the video hardware without requiring data to be passed through the X server. Its primary application is to provide hardware acceleration for the Mesa implementation of OpenGL used as the core for the DRI OpenGL drivers. Without DRI, programs have to use the CPU while rendering (indirect rendering), which degrades overall performance. DRI has also been adapted to provide OpenGL acceleration on a framebuffer console without an X Server running.
The project was started by Jens Owen and Kevin E. Martin of Precision Insight. It was first made widely available as part of XFree86 4.0 and is now part of the X.Org Server. It is currently maintained by the free software community.
The DRI OpenGL support consists of several pieces:
- The Direct Rendering Manager (DRM) is a combination of at least two kernel modules, one of core DRM code and others providing APIs to userland to access different classes of video hardware.
- The userland driver module contains an OpenGL driver that typically prepares buffers of commands to be sent to the hardware by the DRM and interacts with the windowing system for synchronization of access to the hardware.
- Additional code provides access to the interface provided by the driver module. In X this is the libdri.so support module and a DRI-enabled DDX (2D driver). In the framebuffer implementation this is MiniGLX, which initializes the DRM and provides some X APIs to the userland driver despite the lack of an X Server.
Several open source DRI drivers have been written, including ones for ATI Mach64, ATI Rage128, ATI Radeon, 3dfx Voodoo3 through Voodoo5, Matrox G200 through G400, SiS 300-series, Intel i810 through i965, S3 Savage, VIA UniChrome graphics chipsets, and nouveau for Nvidia. Some graphics vendors have written closed-source DRI drivers, including Nvidia, ATI, and Kyro. The DRI is supported on Linux, OpenSolaris, FreeBSD, NetBSD, and OpenBSD.
Work on DRI2 started at the 2007 X Developers' Summit. The new rendering infrastructure improves several shortcomings of the old design, including removing internal locks and adding proper support for offscreen rendering, so that compositing and XVideo/OpenGL applications are properly managed.
There has been talk about DRI3 by Keith Packard and Eric Anholt at XDC2012. RI3 still revolves around using POSIX file descriptors for passing kernel objects between the X Server and the application. As part of the proposed DRI3 is also the swap extension for swapping the screen contents in a synchronized manner. http://keithp.com/blogs/DRI3000/ DRI3 will improve the window resizing process, improve security a bit, utilize DMA-BUF.
See also 
- Mesa DRI License / Copyright Information - The Mesa 3D Graphics Library
- A Multipipe Direct Rendering Architecture for 3D (Jens Owen and Kevin Martin, 1998) (original DRI design document)
- Direct Rendering Infrastructure, Low-Level Design Document (Kevin E. Martin, Rickard E. Faith, Jens Owen, and Allen Akin, 1999)
- DRI Extension for supporting Direct Rendering Protocol Specification (Jens Owen and Kevin Martin, Precision Insight, 1999)
- DRI for beginners (Frank Worsley)
- Getting X Off The Hardware (Keith Packard)
- DRI - Developer interview with Owain Ainsworth (OpenBSD Journal)
- Direct Rendering Infrastructure project home page
- Direct Rendering Infrastructure project "To Do" page
- Tungsten Graphics
- DRI2 Design Pages
- Announcing DRI on OpenSolaris