Bon, je suppose que mon message peut être assimilé à du troll. Ce n'est pas le cas. Je me pose des questions, je me fais des réflexions et j'ai l'impression d'être la seule personne à se les poser.
Est-ce que Vulkan est vraiment une bonne idée ?
La première fois que j'en ai entendu parler je me suis dit que c'était une idée horrible. Depuis, Vulkan est sortit et il ne s'agit plus d'une théorie mais d'une réalité en face de nous. Pourtant, je continue de penser qu'il s'agit d'une mauvaise idée.
Vulkan est une API bas niveau. Contrairement aux API précédentes ( comprendre : opengl), Vulkan est adapté aux architectures des cartes graphiques modernes. Bien que plus verbeux, il permet à l'utilisateur de spécifier précisément ce qu'il souhaite et évite ainsi les états cachés et les comportements inconsistants d'une carte graphique à l'autre.
Est-ce que ce paragraphe vous semble injuste envers Vulkan ?
Parce que si ce n'est pas le cas, alors ça confirme ce que je pense.
Il est acté ( et acté par kronos ) que les architectures des cartes graphiques changent. Et donc face à ce constat que les architectures évoluent, ils décident de ... Faire une API hautement spécifique à l'architecture moderne.
Donc une API qui vieillira bien plus et plus vite que les anciennes.
Ils décident de la faire bas niveau, ce qui implique qu'en cas de changement d'architecture il faudra émuler le bas niveau de Vulkan.
Et émuler du bas niveau est ce qu'il y a de pire pour les performances.
Aujourd'hui en 2022 mon ordinateur peut afficher une page HTML écrite dans les années 90. Il me permet également de jouer à Doom 1&2, et ce sur des moteurs qui peuvent ne pas partager une ligne de code avec l'original.
Je peux également afficher des images PNG et jpg datant de ces mêmes années.
Ce qui fait la pérennité en informatique, c'est le déclaratif, c'est dire ce qu'une chose EST, non pas ce qu'elle fait où comment elle doit être interprétée. C'est ce qui permet de régulièrement jeter à la poubelle ce qu'il y a autour de la donnée, et de recréer une interprétation complètement différente de celle-ci.
Les fichiers obj traversent les époques, les exe ne le font pas.
Constater que les temps changent et, en réponse, faire une API ancrée dans son époque est un non-sens.
On vante les performances de Vulkan. Mais c'est bien normal qu'il soit performant _dans son époque_. C'est la moindre des choses j'ai envie de dire.
La question c'est comment il va se comporter dans dix ans, quand les architectures auront encore évolué. Il ne serait pas surprenant de voir l'OpenGL haut niveau repasser devant Vulkan.
Mais ce n'est que la moitié du problème que j'ai.
Vulkan, en dépit de tout ce que j'ai dit, aurait pu avoir un intérêt : en donnant accès au bas niveau, il aurait pu permettre à d'autres API , d'un niveau similaire à OpenGL, d'apparaître. Dès API avec des approches radicalement différentes, des approches auxquelles on ne pense même pas aujourd'hui, aussi "alien" pour nous que peut l'être du LISP pour un développeur assembleur.
Parmi ces API, certaines auraient finit par devenir populaires et bénéficier d'un support natif dans les cartes graphiques ultérieures.
Mais pour cela, il aurait fallu que Vulkan tienne ses promesses et fournisse un accès vraiment bas niveau, une sorte de langage exposant le SIMD, où on ne parlerait plus de texture, de buffer, de shader ou de queue ( concepts trop hauts niveau alors ), mais de mémoire, de blocs d'instructions SIMD et d'interruptions/de sémaphores.
Sauf que non. Passé le vomit de mettre en place les trucs bateaux, on arrive sur ... Les fixed functions.
C'est-à-dire que le coeur dur, l'essentiel, le truc qui compte vraiment, là où on aurait pu s'amuser et innover : NON !
Non, c'est du fixed function, passez votre chemin il n'y a rien à voir. Vous resterez bien dans les clous, avec les mêmes possibilités et limitations qu'avant. Il ne s'agirait pas de faire de l'ombre à Vulkan, après tout.
Voilà.
Pour moi Vulkan est un échec pour ces deux raisons. Trop bas niveau pour être futur-proof, trop haut niveau pour être un pont vers l'avenir. Il est et restera efficace tant que l'architecture des cartes graphiques ne changera pas, puis deviendra un cauchemar.
Ais-je tort ? Si oui, où ?
Merci pour la lecture, et j'espère lire vos commentaires et réponses.
Partager