# Direct Rendering Manager

Direct Rendering Manager (litt. « gestionnaire de rendu direct »), abrégé en DRM est un sous-système du noyau linux, servant à la gestion cohérente au sein du système informatique, du mode d'affichage (modesetting), des tampons mémoires utilisés par le système graphique, de la gestion de objets partagés en mémoire, de la gestion de la queue de commandes au processeur graphique, la gestion de l'intervalle de rafraîchissement vertical, ainsi que la synchronisation inter-processus de toutes ces fonctions. Il expose ainsi à l'espace utilisateur une interface unifiée pour une gestion plus cohérente et plus simple que ses prédécesseurs.

## Présentation

Le noyau Linux possède déjà depuis de nombreuses années le module fbdev pour la gestion des tampons mémoires utilisés par les processeurs graphiques, que ce soit la mémoire vidéo confinée à une carte graphique ou la mémoire unifiée, partagée par l'ensemble du système dont le processeur graphique. Dans les processeurs récents cependant, il est également nécessaire de gérer également, les queues de commande des tampons (notamment afin d'éviter les conflits inter-processus), ainsi que leur libération.
Il est décomposé en plusieurs parties, libdrm, bibliothèque utilisée par les applications, chargée de communiquer avec les modules. Un module DRM générique, différents modules noyaux, chargés de communiquer avec les différents processeurs graphiques.

### Modules
#### Gestion de la mémoire

Le système DRM contient deux modules pour la gestion de la mémoire
La première version était le Gestionnaire de traduction de table (en anglais, Translation Table Manager) (TTM), aujourd'hui obsolète, qui fut le premier gestionnaire de mémoire implémenté, gérant à la mémoire unifiée et mémoire .
Aujourd'hui, le Gestionnaire d'exécution graphique (Graphics Execution Manager) (GEM), est utilisé et préconisé.

#### Réglage du mode graphique

Le Réglage de mode par le noyau (en anglais, Kernel Mode-Setting) (KMS), il est une représentation abstraite des périphérique connectés. Il expose au système un ensemble de plans (vidéo), de CRTCs, d'encodeurs et de connecteurs, les pilotes KMS sont chargés d'initialiser ces objets après l'initialisation du mode setting.

## Historique

En 1999, lors du développement de Direct Rendering Infrastructure (DRI) pour XFree86, Precision Insight crée la première version de DRM pour la carte graphique 3dfx, comme un patch noyau inclus dans le code source de Mesa. Il a été introduit, dans le courant de la même année, dans les sources officielles du noyau linux 2.3.18pre1
Un module noyau appelé vgem a été proposé en janvier 2012.
En mai 2012, les intégrateurs des processeurs graphiques ARM Mali annoncent avoir développé les différentes couches permettant d'utiliser les DRM avec les pilotes Mali T6xx, et X11 via un module DDX (Device Dependent X) sur les SoC Samsung Exynos et sur la carte de développement Versatile Express.
En septembre 2012, la fondation X.org propose DRM2 afin de régler différents problèmes de politique d'authentification et de partage de tampon mémoire.
En mai 2014, STMicroelectronics propose des pilotes pour ses puces graphiques stih416 et stih407