Direct Rendering Manager
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[1]. Il expose ainsi à l'espace utilisateur une interface unifiée pour une gestion plus cohérente et plus simple que ses prédécesseurs.
Pour les articles homonymes, voir DRM.
Présentation
Le noyau Linux possède déjà depuis de nombreuses années le module fbdev[2] 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[3]
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[4]. Il a été introduit, dans le courant de la même année, dans les sources officielles du noyau linux 2.3.18pre1[5]
Un module noyau appelé vgem a été proposé en janvier 2012[6].
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[7].
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[8].
En mai 2014, STMicroelectronics propose des pilotes pour ses puces graphiques stih416 et stih407[9]
Annexes
Bibliographie
- (en) Jesse Barnes et Laurent Pinchart, « Linux DRM Developer's Guide » [archive du ], sur Kernel.org (consulté le )
- (en) Geert Uytterhoeven, « The Frame Buffer Device », sur kernel.org,
- (en) « dri/ DRM », sur Freedesktop.org
- (en) « xorg/ DRMJanitors », sur X.org
Références
- Linux DRM Developer's Guide.
- Uytterhoeven 2001.
- Linux DRM Developer's Guide, Memory management.
- (en) Daryll Strauss, « First DRI release of 3dfx driver. », sur freedesktop.org
- (en) « Import 2.3.18pre1 », sur The History of Linux in GIT Repository Format 1992-2010 (2010)
- (en) « drm/vgem: virtual GEM provider », sur LWN.net, 11 javnvier 2012
- (en) Tom Cooksey, « New "xf86-video-armsoc" DDX driver », sur lists.X.org,
- (en) « DRM2 — Let's fix the DRM authentication policy and buffer sharing », 19 - 22 septembre 2012
- (en) « Add DRM for stih4xx platforms », sur LWN.net
- Portail des logiciels libres
- Portail GNU/Linux
- Portail de l’imagerie numérique