Gestionnaire de rendu direct

Le Direct Rendering Manager ( DRM pour faire court ) est un module de noyau spécifique au matériel ( pilote ) qui permet d'accéder à la mémoire ( DMA , AGP ) de la carte graphique même sans serveur X tel que le serveur X.org . En outre, le DRM garantit que les règles de sécurité définies sont respectées et que l'accès au matériel est géré. DRM fait partie de l' infrastructure de rendu direct (DRI).

Qu'est-ce que le DRM

Avec DRM, plusieurs programmes peuvent accéder à une carte graphique sans collision
L'accès à la carte vidéo sans DRM.svg
Accès au GPU sans DRM
Accès à la carte vidéo avec DRM.svg
Accès au GPU avec DRM

Le DRM prend en charge le DRI de trois manières:

  1. Puisqu'il y a toujours plusieurs instances du DRI "se battant" sur l'accès direct au matériel (graphique), il est important de gérer et de synchroniser cet accès. Sinon, des situations pourraient se produire dans lesquelles deux instances de rendu direct tentent d'accéder aux ressources matérielles en même temps. Cela pourrait conduire à des résultats indésirables.
    Le DRM fournit pour cela un "verrouillage par matériel".
  2. Le DRM fournit un mécanisme d'accès à la mémoire qui est similaire /dev/memet contribue ainsi à la sécurité. Parce que le serveur X fonctionne normalement sous root, alors que cela ne s'applique pas aux instances clientes. De plus, l'accès direct n'est pas du tout souhaité (voir également le premier point). Cependant, cet accès est restreint en trois points:
    • Une instance n'a accès aux mécanismes que si l'instance est connectée au serveur X ( xauth).
    • Une instance de rendu direct ne peut accéder à la mémoire que si elle y a accès /dev/drm?. Les droits d'accès ne peuvent être rootmodifiés que par (cela se fait généralement via le fichier de configuration du serveur X).
    • De plus, une telle instance DRI ne peut accéder à la mémoire que si le serveur le permet. Le serveur peut également autoriser uniquement l'accès en lecture.
  3. Le DRM gère la mémoire graphique via Graphics Execution Manager (GEM) ou TTM
  4. De plus, DRM fournit une option d'accès générique pour DMA .

libdrm

Accès au Direct Rendering Manager avec libdrm
libdrm
Donnee de base

Version actuelle  2.4.89
(18 décembre 2017)
système opérateur Linux
langage de programmation C.
Licence Licence publique générale GNU , licence MIT
dri.freedesktop.org/wiki/DRM/

développement

Tout comme l' infrastructure de rendu direct elle-même, ses composants sont également soumis à un développement constant.

  • La version 3.11 du noyau Linux du 2 septembre 2013 incluait des modifications majeures du DRM.
  • Dans le noyau Linux 3.12
    • a été enregistré Freedreno
    • les fonctions graphiques du DRM et du KMS (réglage du mode noyau), voir réglage du mode , ont été séparées
    • Une implémentation expérimentale de "Render Nodes" a été intégrée dans le Direct Rendering Manager.

Les nouveaux nœuds de rendu permettent aux applications d'accéder aux unités graphiques, voire à plusieurs, via plusieurs nœuds dans le noyau Linux. Auparavant, une seule application, telle que le serveur d'affichage , était autorisée à exécuter KMS, et uniquement avec les droits root. Les nœuds de rendu fournissent une API que l'espace utilisateur peut utiliser pour exécuter des commandes GPU non privilégiées, par exemple pour GPGPU .

Voir également

  • Mesa 3D - bibliothèque de programmation, qui implémente non seulement les API (OpenGL, OpenVG, etc.), mais également la partie espace utilisateur des pilotes graphiques gratuits disponibles

liens web

Preuve individuelle

  1. Un examen plus approfondi des GPU et de la pile graphique Linux , p. 25.
  2. [ANNONCE] libdrm 2.4.89. Récupéré le 31 janvier 2018 .
  3. Les changements DRM dans Linux 3.11 pourraient être les plus importants jamais. 30 juin 2013, consulté le 4 novembre 2013 .
  4. ^ Pull request pour le noyau Linux principal 3.12. Récupéré le 2 octobre 2013 .
  5. Linux Kernel 3.12: Rendu plus efficace avec DRM et KMS séparés. Golem.de , 25 octobre 2013, consulté le 26 octobre 2013 .
  6. drm: implémenter des nœuds de rendu expérimentaux. Récupéré le 4 novembre 2013 .
  7. drm / i915: prend en charge les nœuds de rendu. Récupéré le 4 novembre 2013 .
  8. drm / radeon: prend en charge les nœuds de rendu. Récupéré le 4 novembre 2013 .
  9. drm / nouveau: prend en charge les nœuds de rendu. Récupéré le 4 novembre 2013 .