Après l’arrivée de l’API Open GL ES 3.2 sous Android d’ici quelques mois, il faudra faire connaissance avec l’API Vulkan. Elle est toujours éditée par le Kronos Group, mais souhaite faire table rase du passé afin de repartir sur de bonnes bases pour l’avenir. Cette nouvelle API sera intégrée sous Android (en plus de Windows, SteamOS et Linux) et promet d’augmenter considérablement les performances pour certaines scènes des jeux vidéo.

Vulkan

Si vous avez du mal avec le terme API, vous pouvez jeter un œil à l’article d’hier consacré à l’arrivée d’Open GL ES 3.2 sous Android, une API graphique éditée par le Kronos Group, un consortium industriel qui regroupe près de 100 entreprises du secteur. Si Open GL ES 3.2 semble prêt pour arriver en même temps qu’Android M, ce n’est pas le cas de Vulkan, la future API du Kronos Group qui a profité du SIGGRAPH 2015 pour dévoiler quelques détails à son sujet. La nouvelle API a en effet été développée de manière totalement différente d’Open GL ES, en se basant sur l’API Mantle d’AMD. Le but est d’augmenter les performances du couple processeur – puce graphique dans les jeux, ou du moins d’augmenter l’efficacité énergétique des appareils.

 

Une API davantage tournée vers le multitâche

Les API graphiques classiques comme Open GL ou DirectX ont été pensés bien avant l’avènement des processeurs multi-cœurs et du multithreading (plus de détails dans notre dossier dédié aux CPU multi-cœurs sous Android). Quand le moteur graphique d’un jeu a besoin de réaliser un rendu, il doit communiquer avec la puce graphique via l’API puis les pilotes. Avec Vulkan, l’idée est de réduire au maximum le besoin d’avoir recours au pilote. C’est pour cette raison qu’on dit que l’API est de type bas niveau : les développeurs ont davantage accès de manière directe au GPU. La conséquence, c’est une réduction de la charge processeur pour un même type de rendu, puisque l’appel au pilote fait travailler le processeur dans le cas d’une API classique et fait perdre énormément de temps, induisant une latence. Deux inconvénients qui mènent à des performances dégradées lorsqu’une scène est chargée de multiples rendus en temps réel. Avec Vulkan, les verrous sautent.

gh_es_vs_vk1

Vulkan à gauche, utilisant 4 cœurs CPU

 

 

Augmenter les performances ou réduire la consommation

Grâce à Vulkan, les développeurs pourront créer des scènes très chargées en rendus sans avoir un impact trop négatif sur les performances. Dans le cas où une scène n’est pas trop chargée, Vulkan apportera également des améliorations. En effet, puisque le processeur sera moins sollicité, la consommation énergétique du terminal diminuera. Vulkan est donc une bonne nouvelle pour l’autonomie de nos smartphones, mais également pour les développeurs qui pourront réaliser des jeux plus réalistes et plus beaux, sans avoir peur que leur titre tourne sous la barre fatidique des 60 FPS. On a un exemple ci-dessous, entre une scène rendue en mode Open GL ES 3.0 puis avec Vulkan, sous Android. La différence est bluffante, même si la scène choisie est un peu trop chargée par rapport à de véritables titres.

Lien Youtube
Chaine Youtube FrAndroid

 

Une version unifiée mobile / desktop

Bonne nouvelle aussi : il existera une seule version de Vulkan, pour les appareils mobiles et pour les ordinateurs. À ce titre, le Kronos Group a annoncé que chaque plateforme (Android, SteamOS, Linux et Windows) supportera les fonctionnalités décidées par son propriétaire. Il est donc probable qu’Android ne supportera pas l’ensemble des fonctionnalités de Vulkan. Les développeurs indiqueront ensuite les fonctionnalités prises en charge par leur jeu. Si une fonctionnalité non prise en charge par une plateforme est utilisée par un développeur, on imagine que le titre pourra tourner sur cette plateforme, mais de manière dégradée.

VulkanFeatureSets

Vulkan serait prêt d’ici la fin de l’année, mais on a des doutes que l’API puisse arriver à temps pour Android M puisque les constructeurs de matériel doivent réaliser des tests de conformité. On sait seulement que les puces compatibles Open GL ES 3.1 supporteront Vulkan. C’est déjà une belle base de travail. De son côté, Tim Sweeney a annoncé sur Twitter le début du développement du moteur Unreal Engine 4 pour Vulkan sous Android.