human
Quel est le problème avec l'API Vulkan ? D'après ce que j'ai compris, c'est l'une des API graphiques analogues à OpenGL ou DirectX. Pourquoi en avait-on besoin d'un autre et comment cela change-t-il réellement les choses pour les développeurs ou les consommateurs ? S'il vous plaît, expliquez-moi comme si j'avais cinq ans.
gpt
J'ai écrit ce long message dans un autre fil et je pense que cela pourrait également vous être utile. ---- Les pilotes que vous installez (ou qui sont fournis avec votre système d'exploitation) permettent aux logiciels de s'interfacer avec votre matériel, dans ce cas votre GPU, afin qu'ils puissent réellement l'utiliser dans le but prévu de rendu accéléré. Le pilote vous donne des appels de méthode avec lesquels travailler , comme « charger cette texture » ou « dessiner ceci ici » ou « dessiner le contenu de votre framebuffer sur l' écran » . Sauf que, vu que les GPU et tous les différents contrôleurs et coprocesseurs avec lesquels ils sont livrés sont différents les uns des autres, une sorte de norme doit exister pour que le développeur n'ait pas besoin de créer son application pour chaque GPU (tel qu'utilisé être le cas à l'époque du DOS). Le travail de l'API graphique est de s'assurer que les fonctions fournies avec les pilotes sont toujours plus ou moins les mêmes. L'API est une spécification, c'est-à-dire une liste de fonctions, avec des noms spécifiques, des arguments, des valeurs de retour et des comportements qui doivent être copiés, et précisément. Ce n'est pas un logiciel en soi. Le code qui remplit réellement le comportement attendu derrière ces fonctions est entièrement laissé au développeur du pilote. DirectX et OpenGL sont des API de haut niveau. Le niveau élevé se réfère ici au niveau d'abstraction, ou simplement à l'étendue des fonctions individuelles. DirectX 12 et Vulkan sont de bas niveau, c'est-à-dire que leurs fonctions sont conçues pour en faire beaucoup moins, ce qui a ses avantages et ses inconvénients. Une API de haut niveau est plus facile à développer avec . Cela nécessitera moins de code et moins de compréhension du matériel sous-jacent. L'inconvénient est qu'il a plus de frais généraux (en faisant plus de tâches, il est donc plus lent) et offre moins de flexibilité et de marge d'optimisation. L'API de bas niveau est plus difficile à développer, car les fonctions en font beaucoup moins. DirectX et OpenGL étaient anciens, peu performants et développés pour du matériel et des pratiques différentes de celles qui existent actuellement. Nous avons maintenant des processeurs multicœurs. Nous avons des moteurs commerciaux extrêmement bien développés. La plupart des développeurs n'écrivent plus directement de code DirextX ou OpenGL. Au lieu de cela, ils autorisent les moteurs susmentionnés, ce qui rend le développement encore plus facile. Cela, et les tâches qui devaient à l'époque être exécutées par un seul processeur central peuvent désormais être exécutées sur le GPU et de manière beaucoup plus efficace. Vulkan et DirectX sont conçus pour que non seulement le processeur effectue globalement moins de tâches, mais qu'il puisse également répartir la charge de travail sur ses multiples cœurs. La complexité supplémentaire de l'écriture de logiciels avec DX12 et Vulkan sera très probablement entre les mains des développeurs de moteurs commerciaux, qui ont prouvé leur capacité à comprendre des concepts mathématiques complexes et le fonctionnement des GPU et à en tirer le maximum de performances. En bref, il n'y a plus besoin d'API graphiques de haut niveau, et elles doivent être remplacées. DX12 et Vulkan sont très similaires et tentent d'atteindre les mêmes objectifs, mais Vulkan n'est pas développé et administré par une seule entreprise, et n'est pas non plus verrouillé sur deux plates-formes comme DX12. C'est son principal avantage.