Direct Rendering Manager (gestionnaire de rendu direct en anglais), 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.
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.
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é.
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.