J'ai bien lu l'article, mais avec mes pauvres connaissances dans la pile graphique de Linux je n'en comprends pas bien tous les tenants et les aboutissants. Quelqu'un saurait en résumer l'essence ?
Les DMA, ce sont des modules hardwares qui te permettent de faire une copie d'une zone memoire a une autre sans que le CPU soit occupe, typiquement copier un flux video vers le module hardware qui va faire son décodage.
De ce que je comprends, ils ont ajoute a GTK un container et une data structure pour manipuler ces objets sans que le toolkit n'y touche.
Les dmabuf sont un concept dans le noyau qui permettent d'exposer une zone mémoire d'un composant matérial sous la forme d'un pseudo-fichier ; justement pour ne pas faire de copie.
Par exemple, une application utilisant OpenGL va effectuer son rendu, et transmettre le contenu de la fenêtre au compositeur sous la forme d'un dmabuf fd (file descriptor). Ensuite le compositeur va pouvoir utiliser ce dmabuf comme une texture pour dessiner le bureau complet. Comme le rendu du jeu et du compositeur sont effectués sur le même GPU, il n'y a besoin d'aucune copie.
Mais dans certains cas, comme j'imagine une vidéo ou un jeu en mode fenêtré, GTK va faire quelque chose comme ça pour dessiner la zone de la vidéo :
1) faire décoder au GPU la vidéo -> le résultat est un dmabuf
2) importer ce dmabuf qui contient la vidéo
3) dessiner la vidéo
4) exporter le résultat dans un nouveau dmabuf pour le compositeur
Dans le cas général, le contenu du dmabuf obtenu à l'étape 4 sera exactement le même que celui obtenu à l'étape 1. L'optimisation décrite c'est de permettre de sauter les étapes 2, 3, et 4 et de directement transmettre le dmabuf de 1 au compositeur.
L'étape d'après étant de sauter aussi l'étape "envoyer le dmabuf au compositeur" et à la place l'envoyer directement à la partie affichage du GPU pour dessiner la vidéo "au dessus" du bureau produit par le compositeur (direct scanout).
# Lapin compris
Posté par azmeuk (site web personnel) . Évalué à 6.
J'ai bien lu l'article, mais avec mes pauvres connaissances dans la pile graphique de Linux je n'en comprends pas bien tous les tenants et les aboutissants. Quelqu'un saurait en résumer l'essence ?
[^] # Re: Lapin compris
Posté par Glandos . Évalué à 3.
Premier essai :
C'est mieux, ça va plus vite.
[^] # Re: Lapin compris
Posté par flagos . Évalué à 6.
Les DMA, ce sont des modules hardwares qui te permettent de faire une copie d'une zone memoire a une autre sans que le CPU soit occupe, typiquement copier un flux video vers le module hardware qui va faire son décodage.
De ce que je comprends, ils ont ajoute a GTK un container et une data structure pour manipuler ces objets sans que le toolkit n'y touche.
[^] # Re: Lapin compris
Posté par pepp . Évalué à 10.
Les dmabuf sont un concept dans le noyau qui permettent d'exposer une zone mémoire d'un composant matérial sous la forme d'un pseudo-fichier ; justement pour ne pas faire de copie.
Par exemple, une application utilisant OpenGL va effectuer son rendu, et transmettre le contenu de la fenêtre au compositeur sous la forme d'un dmabuf fd (file descriptor). Ensuite le compositeur va pouvoir utiliser ce dmabuf comme une texture pour dessiner le bureau complet. Comme le rendu du jeu et du compositeur sont effectués sur le même GPU, il n'y a besoin d'aucune copie.
Mais dans certains cas, comme j'imagine une vidéo ou un jeu en mode fenêtré, GTK va faire quelque chose comme ça pour dessiner la zone de la vidéo :
1) faire décoder au GPU la vidéo -> le résultat est un dmabuf
2) importer ce dmabuf qui contient la vidéo
3) dessiner la vidéo
4) exporter le résultat dans un nouveau dmabuf pour le compositeur
Dans le cas général, le contenu du dmabuf obtenu à l'étape 4 sera exactement le même que celui obtenu à l'étape 1. L'optimisation décrite c'est de permettre de sauter les étapes 2, 3, et 4 et de directement transmettre le dmabuf de 1 au compositeur.
L'étape d'après étant de sauter aussi l'étape "envoyer le dmabuf au compositeur" et à la place l'envoyer directement à la partie affichage du GPU pour dessiner la vidéo "au dessus" du bureau produit par le compositeur (direct scanout).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.