Direct Rendering Manager

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Direct Rendering Manager
Type Kernel module
License GPL

The Direct Rendering Manager (DRM) is a device-independent kernel-level device driver that provides support for the Direct Rendering Infrastructure.[1] The Direct Rendering Manager can be compiled into the Linux kernel or loaded via the standard module interface.

  • The DRM provides synchronized access to the graphics hardware via the use of an optimized two-tiered lock.
  • The DRM enforces the DRI security policy for access to the graphics hardware by only allowing authenticated X11 clients access to restricted regions of memory.
  • The DRM provides a generic DMA engine, complete with multiple queues and the ability to detect the need for an OpenGL context switch.
  • The DRM is extensible via the use of small device-specific modules that rely extensively on the API exported by the DRM module.

It consists of two in-kernel drivers (released as kernel modules on Linux): a generic drm driver, and another which has specific support for the GPUs. This pair of drivers allows a userspace client direct access to the video hardware. The entire DRI system enables hardware accelerated 3D rendering, video decoding as well as GPGPU.

Linux kernel version 3.11, which was released on 2013-09-02, included major changes to the direct rendering manager.[2] As of September 2013, freedreno has been adopted into mainline Linux, and will be part of Linux kernel 3.12.[3]

In version 3.12 an (experimental) implementation of render nodes were merged into the Direct Rendering Manager.[4][5][6][7]

A render node is a character device that exposes a GPU's off-screen rendering and GPGPU capabilities to unprivileged programs, without exposing any display manipulation access. This is the first step in of an effort to decouple the kernel's interfaces for GPUs and display controllers from the obsolete notion of a graphics card.[8] Coincidentally, unprivileged off-screen rendering is presumed by both the emerging Wayland and Mir display protocols — only the compositor is entitled to send its output to a display, and rendering on behalf of client programs is outside the scope of these protocols.

In Linux kernel 3.13

  • DRM for freedreno by Rob Clark are expected to be merged.[9]
  • DRM support for Marvell's ARMADA 510 display subsystem.[10]


The DRM core exports several interfaces to applications, generally intended to be used through corresponding libdrm wrapper functions. In addition, drivers export device-specific interfaces for use by userspace drivers & device-aware applications through ioctls and sysfs files. External interfaces include: memory mapping, context management, DMA operations, AGP management, vblank control, fence management, memory management, and output management.


External links[edit]