Les API graphiques ne sont pas un matériel, mais un logiciel, mais elles sont essentielles pour le rendu des graphiques qui sont présentés sur notre écran et sans eux la communication entre les applications et le GPU ne serait pas possible. Dans cet article, nous expliquons de manière accessible ce que sont les API graphiques et nous brisons certains mythes qui y sont liés.
Il faut tenir compte du fait que les GPU n'exécutent pas de programmes, mais exécutent une liste d'instructions. Mais d'où vient cette liste et comment parvient-elle au GPU?
Qu'est-ce qu'une API graphique?
Les API graphiques permettent aux applications de communiquer avec le GPU pour indiquer comment il doit dessiner l'image suivante ou une partie de celle-ci. Le concept est basé sur l'abstraction qui est la création dans un langage de programmation de ce qu'est un GPU, pour comprendre le concept d'abstraction, nous allons supposer qu'au lieu d'un GPU, nous avons une machine à soda connectée.
L'API de la machine de rafraîchissement serait une bibliothèque avec les fonctions suivantes: lancer la pièce, retourner la monnaie, sélectionner le rafraîchissement et fournir le rafraîchissement, de manière à ce que le programme puisse interagir, cette partie de l'API est appelée par le Front-End, et ce que nous en faisons, c'est la liste des instructions, eh bien dans un GPU cette liste s'appelle DisplayList ou liste d'écran.
Ladite liste d'écrans est lue par un logiciel qui n'est autre que le pilote de la carte graphique, cela transforme la liste en un microcode que le GPU peut comprendre et la copie dans une partie du RAM mémoire à laquelle le GPU accède toujours. Pour lire la liste d'écrans, copiez la liste dans la mémoire interne de vos processeurs de commande et commencez à rendre la scène ou une partie de celle-ci avec les instructions de la liste d'écrans.
Ce processus est effectué en continu dans chaque image que le GPU rend et envoie à l'écran, que vous utilisiez un PC de jeu, un smartphone ou une console de jeux vidéo.
Quelles sont les API graphiques aujourd'hui?
Les API graphiques les plus utilisées aujourd'hui sont les suivantes:
- Vulkan : Remplace OpenGL, il est utilisé dans tous les types de systèmes d'exploitation, ce qui est dit indépendant de la plate-forme, mais c'est l'API principale de Google.
- Platinium L'API graphique d'Apple, utilisée dans macOS et spécialement optimisée pour son architecture GPU.
- DirectX: L'API de Microsoft pour Windows et Xbox a été divisée en plusieurs versions en fonction de la plate-forme, mais récemment, ils l'ont unifiée en une seule version.
- GNM/GNMX/GNM++ : L'API graphique pour les consoles PlayStation 4 et PlayStation 5 de SONY, GNMX est une API de haut niveau, GNM est l'API de version de bas niveau sur PS4 et GNM ++ sur PS5.
- NVN : L'API graphique Nintendo Switch, qui est utilisée exclusivement dans cette série de consoles.
- OpenGL: L'API qui a tout déclenché, à l'origine connue sous le nom d'IrisGL et conçue pour les stations de travail Silicon Graphics, a évolué pour devenir l'API pour les PC, les consoles et plus tard les smartphones. J'arrive à la version 4 étant Vulkan une nouvelle image d'OpenGL 5.
Informatique vs graphiques
Les GPU sont des processeurs très complexes qui ont depuis longtemps cessé d'être de simples jouets pour rendre des jeux vidéo, ils sont aujourd'hui utilisés dans des domaines tels que l'intelligence artificielle ou le calcul haute performance, ce qui a conduit à l'évolution des API graphiques et vont au-delà du graphique.
Actuellement les applications n'envoient pas une seule liste mais plusieurs listes, l'une d'entre elles étant des graphiques et le reste de l'informatique, où le GPU est utilisé pour résoudre des problèmes spécifiques qui n'ont rien à voir avec le rendu des graphiques, ces derniers fonctionnant complètement asynchrones. et donc pas en fonction de la liste des écrans.
Par exemple, il se peut qu'une application de conception graphique utilise la puissance du GPU pour résoudre un effet spécial sur une photo, simplement parce que le GPU est mieux équipé pour résoudre ce problème qu'un Processeur. Grâce aux listes de calcul, vous pouvez le faire en utilisant les ressources gratuites du GPU pour résoudre ces petits problèmes
API graphiques de haut niveau et de bas niveau: en quoi sont-elles différentes?
Lorsque nous parlons d'API de bas niveau, nous nous référons à une API qui tourne à proximité du GPU, qui est en bas de la pile tandis que le pilote est en haut, une API de haut niveau est donc celle qui nécessite un pilote générant l'affichage. liste. Comme certaines tâches du pilote ne sont pas exécutées dans l'API de haut niveau, ce qui est théoriquement réalisé est que le temps d'exécution de la liste d'écrans par le processeur est plus court, cela signifie terminer la trame en moins de millisecondes ou donner plus de temps pour améliorer les graphiques de ce même cadre.
En réalité, il est faux que les API de bas niveau manquent de pilote car il peut être lu et écouté à certains endroits, mais c'est beaucoup plus simple et alourdit le travail lors de l'exécution de certaines tâches essentielles à l'application, cela permettra aux développeurs de optimiser le timing de chaque image autant que possible en contrôlant le processus de création de la liste des écrans.
Cependant, plusieurs fois pour les développeurs, il peut être beaucoup plus confortable d'utiliser une API de haut niveau, en raison du fait que le temps de développement supplémentaire n'en vaut pas la peine ou simplement parce que l'avantage qui peut être obtenu en adaptant le jeu à une API le niveau bas est imperceptible.
Le mythe de la console et du PC
Il y a un mythe selon lequel parce qu'une console a un matériel unique, cela signifie que les API sont beaucoup plus optimisées que sur le PC où il existe de nombreuses configurations différentes, mais c'est vraiment le pilote que nous avons installé qui génère la liste des écrans. La différence est que dans les consoles, ce pilote est statique et ne reçoit pas de mises à jour de performances ou de modifications pendant toute la durée de vie commerciale de la console.