Les derniers contenus liés au tag Khronos
Radeon Software 18.3.3 beta avec Vulkan 1.1
Vulkan en novembre pour le CryEngine
Un patch Vulkan pour Doom
Vulkan 1.0 dispo, avec pilotes et jeu beta!
GDC: Khronos annonce OpenCL 2.1
Radeon Software 18.3.3 beta avec Vulkan 1.1
AMD a mis en ligne ces dernières heures une nouvelle version beta de ses pilotes graphiques. On retrouve comme souvent un support "optimisé" pour de nouveaux titres, cette fois ci il s'agit de Sea of Thieves et A Way Out.
Côté bugs, un problème de stuttering intermittent sous Forza Motorsport 7 à été corrigé. Pour Final Fantasy XV, ce sont des clignotements et objets disparaissant qui ont été résolus pour les configurations Multi GPU. Enfin pour Battlefront 2, c'est un plantage au lancement du titre, là encore sur des configurations Multi GPU, qui a été corrigé.
L'autre nouveauté de ces pilotes est qu'ils apportent un support de la version 1.1 de Vulkan, l'API "bas niveau" de Khronos Group. Cette nouvelle version avait été annoncée il y a quinze jours de cela apporte plusieurs nouveautés dont les "Subgroup Operations" pour partager des données entre plusieurs tâches sur un GPU et une nouvelle version du langage intermédiaire de shaders, SPIR-V 1.3 (et de ses outils). Nvidia avait de son côté proposé un pilote beta spécifique pour Vulkan 1.1 au moment de l'annonce .
L'autre objectif pour Khronos Group est un support multi plateforme universel. Quelques jours avant l'annonce de cette version 1.1, la "Khronos Vulkan Portability Initiative" avait été annoncée avec pour but de créer des couches de compatibilités fines s'appuyant sur les API bas niveau natives des plateformes, comme DirectX 12 pour Windows ou Metal chez Apple.
Pour rappel, Apple gère le déploiement (et le co développement) des pilotes graphiques pour sa plateforme contrairement à ce que l'on voit sous Windows, et il n'y a pas de support natif dans l'OS pour Vulkan. Microsoft n'en propose pas non plus pour Windows, le support y étant assuré par les pilotes directement (cf cette actualité), comme cela était le cas pour OpenGL dans les dernières versions de Windows.
Avec LunarG et MoltenVK, Valve annonce 50% de performances en plus sous Dota 2 par rapport à l'implémentation OpenGL sur Mac
Proposer des couches intermédiaires est donc une solution assez pragmatique, car si en général ces couches sont assez coûteuses, toutes ces API bas niveau sont excessivement proches dans leurs caractéristiques (elles sont après tout de bas niveau et "très proches du métal" avec des similarités larges) ce qui limite grandement l'impact sur les performances. Valve et Brenwill Workshop ont rendu open source LunarG (un SDK MacOS Vulkan spécifique développé par Valve) et MoltenVK (une couche de traduction Vulkan vers Metal pour MacOS et iOS) en partenariat avec Khronos. Vous pouvez retrouver une présentation de cette initiative sur cette page qui évalue également la portabilité pour DirectX 12. Une autre initiative est celle de Mozilla dans le cadre du développement de son API cross plateforme bas niveau gfx-rs .
Le téléchargement de ces pilotes AMD s'effectue sur cette page du site du constructeur .
Vulkan en novembre pour le CryEngine
Nos confrères d'Overclock3D ont noté que Crytek a mis à jour sa roadmap concernant son moteur graphique CryEngine. Pour rappel, Crytek propose désormais son moteur sous licence .
La version 5.2 lancée en août avait déjà apporté le support de DirectX 12, la version 5.3, prévue pour le mois de novembre apportera cette fois ci le support de Vulkan, l'API bas niveau du Khronos Group.
La roadmap indique également que la version 5.4, prévue pour la GDC, apportera un support du multi GPU sous DirectX 12. Si précédemment le multi GPU était géré par le pilote (avec plus ou moins de mal), les API de bas niveau redonnent désormais la main aux développeurs de jeux et de moteurs pour qu'ils implémentent eux même correctement la gestion de plusieurs GPU, ouvrant pour le coup des possibilités d'asymétrie y compris dans des marques différentes.
Du côté des autres gros moteurs proposés sous licence, on notera qu'Unity a ajouté le support de DirectX 12 cet été, et que le support de Vulkan a été annoncé comme en développement. L'Unreal Engine propose déjà de son côté le support de DX12 et Vulkan.
Un patch Vulkan pour Doom
Bethesda vient d'annoncer l'arrivée d'un patch pour Doom qui apporte le support de Vulkan. Pour rappel, Vulkan est la nouvelle API graphique proposée par Khronos Group, en charge de l'OpenGL. Nous avions eu l'occasion de vous présenter en détail Vulkan dans cette actualité lors de la sortie de la version 1.0 en février dernier. Il s'agit pour rappel d'une API graphique de bas niveau, dérivée de Mantle d'AMD, et qui permet de réduire la dépendance du GPU envers le CPU et d'améliorer les performances, notamment via le multi-threading.
Bethesda indique avoir travaillé avec à la fois AMD et Nvidia depuis mars pour optimiser le support chez les deux constructeurs. Même si l'importance du driver dans les nouvelles API que sont Vulkan et DirectX 12 est réduit, cela reste important étant donné que Doom est le premier gros titre à utiliser cet API.
Pour en profiter il faudra disposer au minimum des pilotes 368.69 chez Nvidia et 16.7.2 Hotfix chez AMD .
La FAQ de Bethesda donne quelques détails supplémentaires, il faudra s'attendre à quelques bugs, notamment avec l'overlay Steam ou lors des changements de résolution. Bethesda indique que seuls les pilotes AMD supportent actuellement l'async compute mais qu'ils travaillent avec Nvidia pour apporter une solution (nous vous renvoyons à notre couverture de la GDC pour plus de détails). Le patch est disponible via Steam.
Vulkan 1.0 dispo, avec pilotes et jeu beta!
Après 18 mois de gestation, Khronos annonce la disponibilité immédiate de la variante plus bas niveau d'OpenGL : Vulkan. Pour les premiers pas de cette API graphique qui promet une meilleure exploitation des différentes plateformes, sont directement proposés des kits de développements, des pilotes et même le portage beta d'un jeu PC.
Il y a un an, lors de la GDC 2015, Khronos dévoilait Vulkan, sa vision de l'API graphique de plus bas niveau. Face à Mantle, Direct3D 12 ou encore Metal, Khronos se devait de réagir rapidement pour rester dans la course. Avec cette concurrence et une demande insistante des développeurs, une évolution radicale d'OpenGL, son API graphique historique, était aussi nécessaire que difficile à mettre en place. Pour bouger rapidement et éviter tout compromis boiteux, Khronos a pris la décision de mettre au point une API complémentaire à OpenGL et non de faire évoluer cette dernière vers un plus bas niveau d'abstraction. OpenGL et Vulkan vont coexister, évoluer côte à côte dans le futur, partager certains points communs mais rester distinctes sur d'autres.
Ces API de plus bas niveau permettent aux développeurs de mieux contrôler le GPU et sa gestion, ce qui a pour principal effet de réduire le coût CPU des commandes de rendu et d'autoriser une exploitation efficace du multi-threading. En contrepartie, le travail des développeurs se complexifie quelque peu, notamment en ce qui concerne la robustesse de leur code, qui ne sera plus facilitée par de lourdes sécurités mises en place au niveau des API classiques et de leurs pilotes. Ce dernier point est cependant un mal pour un bien puisque les meilleurs développeurs auront tout le contrôle nécessaire pour assurer un code robuste, sans devoir prendre en compte l'inconnue de ce qui peut se passer à l'intérieur des pilotes.
Pour en savoir plus sur la philosophie qui se cache derrière Vulkan, n'hésitez pas à repasser par l'actualité liée à la présentation de Vulkan en mars dernier. Rappelons simplement qu'à la base des travaux de Khronos, nous retrouvons l'API Mantle qui a été "offerte" par AMD (une contribution que Khronos affiche sans détour contrairement à Nvidia qui ne peut s'empêcher d'essayer de la minimiser autant que possible).
Ses fondamentaux sont toujours là, il aurait été inutile de réinventer la roue, mais après 18 mois de travaux, de nombreuses modifications plus ou moins importantes ont été apportées par le groupe de travail mis en place au sein de Vulkan. Dans sa documentation destinée aux développeurs, Nvidia indique ainsi qu'une douzaine de sociétés ont apporté des contributions majeures et au moins le double étaient sérieusement impliquées dans le projet. Neil Trevett, le Président du consortium (et accessoirement le Vice-Président de l'écosystème développeur chez Nvidia) avec lequel nous avons pu nous entretenir, a tenu à insister sur l'implication plus importante que jamais des développeurs de moteurs de jeu.
Si les plus grosses modifications concernent la gestion des ressources et la prise en compte des architectures de type TBDR (Tiled-Based Deferred Rendering), telles que celle des GPU PowerVR, la présence des développeurs a fait en sorte de contrebalancer les demandes spécifiques que pouvaient avoir les concepteurs de GPU pour éviter de trop complexifier l'API.
Vulkan supporte tout type d'extensions, exactement comme OpenGL, mais face à la large plage de possibilités liée au matériel supporté (de type OpenGL ES 3.1 mobile à OpenGL 4.5 desktop et supérieur), Khronos a mis en place des feature sets, soit un niveau de fonctionnalité minimum garanti. Ceux-ci sont définis par plateforme, de préférence par l'organisme qui contrôle la dite plateforme, et par Khronos si cet acteur tiers ne souhaite pas s'impliquer. Ces feature sets sont toujours en cours de finalisation et ne devraient être publiés que d'ici 1 ou 2 mois.
Sur PC, comme vous vous en doutez, Microsoft n'a pas réellement intérêt à pousser l'arrivée de Vulkan, préférant sa propre API Direct3D 12 liée à Windows 10 et qui est également disponible sur Xbox One. C'est donc Khronos qui se chargera de définir le feature set sous Windows (avec un support de Windows XP à Windows 10), après les premiers retours des développeurs et en jonglant avec le lobbying intense d'AMD, d'Intel et de Nvidia. Ce même feature set devrait également être étendu à Linux, même si certaines releases pourraient mettre en place un feature set spécifique. Il sera évidemment possible d'aller plus loin que le feature set, via le système d'extensions.
Sous Android, Google sera aux commandes. Et c'est là le point qui est probablement le plus important pour Vulkan. L'an passé, nous émettions quelques doutes quant au succès de Vulkan. Pourquoi ? Bien que tout cela n'ait jamais été annoncé publiquement, nous savons de multiples sources sûres que Google préparait sa propre API de bas niveau avec pour projet de la rendre disponible sur d'autres plateformes. Mais quelque part entre la GDC et la fin de 2015, Google a changé son fusil d'épaule, est passé au statut de Promoter au sein de Khronos (le plus élevé) et a abandonné son API propriétaire au profit exclusif de Vulkan. Google proposera ainsi un peu plus tard une version d'Android avec intégration complète de Vulkan, ce qui ne manquera pas de faciliter l'adoption de cette API.
Les possibilités pour cette API sont multiples. Vulkan a un intérêt évident dans le monde mobile, en termes de performances directes bien entendu, mais également au niveau des effets indirects que cela peut avoir : un coût CPU moindre implique une réduction de la consommation, un argument de poids. Vulkan devrait également trouver sa place dans le monde professionnel où les moteurs de visualisation sont souvent lourdement limités par le CPU. Vulkan pourra également aider à réduire la latence et à éviter les petites saccades dans le cadre de la réalité virtuelle.
C'est d'ailleurs une autre observation importante que nous pouvons faire aujourd'hui. Si l'ADN de Mantle d'AMD est bel et bien à la base de Vulkan, ce qui a mis Nvidia dans une position inconfortable au départ, c'est bien ce dernier qui est progressivement devenu le plus actif autour de cette nouvelle API. Nvidia propose ainsi un pilote Vulkan beta à destination de ses GPU Kepler et Maxwell, qu'ils soient GeForce, Quadro ou Tegra, et que ce soit sous Windows 7-8-10, sous Linux ou sous Android 6.0.
Mais surtout, Nvidia est particulièrement actif au niveau de la documentation et des démos fournies aux développeurs et a mis en place plusieurs mécanismes pour aider ces derniers à passer à cette nouvelle API. Le pilote Vulkan de Nvidia accepte ainsi les shaders OpenGL classiques de type GLSL et pas uniquement le langage intermédiaire SPIR-V de la nouvelle API. Par ailleurs, ce pilote autorise de faire tourner Vulkan à l'intérieur d'un contexte OpenGL. De quoi pouvoir faire des essais rapidement et expérimenter avec Vulkan sans devoir repartir de zéro, ce que de nombreux développeurs devraient apprécier.
> Les pilotes Nvidia pour Windows 7/8.1/10 et Linux
La documentation et les démos de Nvidia pour les développeurs
Du côté d'AMD, qui en amont a communiqué très peu (ou très mal ?) sur Vulkan, aucun pilote n'a encore été certifié par Khronos mais nous venons de remarquer qu'un pilote beta est disponible sur son portail GPUOpen. Il est compatible avec tous les GPU GCN, même s'il y a probablement des limitations pour les plus anciens de ces GPU, et supporte Windows 7, 8.1 et 10. La version Linux arrivera un peu plus tard. Nous ne savons pas pourquoi ce pilote n'a pas encore passé la certification de Khronos.
> Les pilotes AMD pour Windows 7/8.1/10
Du côté d'Intel, un pilote a été certifié par Khronos pour Skylake sous Linux, mais nous ne savons pas quand il sera disponible. Imagination dispose également d'un pilote certifié sous Linux (nous avons pu le voir en démo lors du CES), tout comme Qualcomm sous Android 6.0. ARM est également annoncé comme prêt à fournir un pilote sous peu.
> La page dédiée d'Imagination
Notons que dans le cas du support sous iOS, qui ne sera pas natif, Apple privilégiant Metal, Vulkan devrait être proposé d'une manière détournée puisque The Brenwill Workshop développe Molten (MetalGL + MetalVK), une surcouche qui permet de faire tourner OpenGL ES ou Vulkan par-dessus Metal. A voir cependant quelles seront les limitations et autres impacts sur les performances.
Enfin, Khronos tient à insister sur le fait que Vulkan, comme les autres API de plus bas niveau, n'est pas fait pour tous les développeurs, compte tenu de sa complexité plus élevée et d'avantages qui ne s'appliquent pas à toutes les situations. Mais au vu de l'intérêt apporté à ces API par les spécialistes du moteur graphique et d'autres middlewares, qui feront le travail pour la plupart des développeurs de jeux vidéo, le premier point ne devrait pas être un obstacle. Attendez-vous à de nombreuses annonces annexes lors de la GDC 2016 qui se tiendra le mois prochain à San Francisco.
Pour plus d'informations techniques, les spécifications de Vulkan sont disponibles sur le site de Khronos et nous avons ajouté ci-dessous la présentation complète de Khronos destinée à la presse technique :
GDC: Khronos annonce OpenCL 2.1
Parallèlement à l'annonce de Vulkan, le groupe Khronos fait évoluer légèrement OpenCL avec l'annonce des spécifications provisoires de la version 2.1 de cette API dédiée au GPU computing. La principale nouveauté est l'ajout d'un nouveau langage pour les kernels : à côté d'OpenCL C prendra désormais place OpenCL C++.
Ce langage correspond à un subset de C++14, amputé de quelques fonctionnalités, et permettra de faciliter le travail des développeurs, en leur permettant d'ignorer certains détails de bas niveau, tout en gardant une efficacité suffisamment élevée.
Alors que compiler vers un langage intermédiaire, SPIR, était possible optionnellement depuis quelques temps avec OpenCL 2.0, le langage intermédiaire SPIR-V, partagé avec Vulkan, rentre dans les spécifications "core" d'OpenCL 2.1. OpenCL C++ est d'ailleurs prévu pour passer exclusivement par SPIR-V.
De petites fonctionnalités font également leur apparition ou rentrent dans les spécifications "core", c'est par exemple le cas des requêtes concernant les "subgroups", qui exposent l'organisation matérielle du threading (warps chez Nvidia, wavefronts chez AMD etc.) et permettent des optimisations plus fines.
A noter que si Intel et AMD louent les avantages d'OpenCL 2.1 dans la communication officielle, Nvidia reste aux abonnés absents et tient donc le cap sur sa stratégie qui consiste à se concentrer sur son écosystème propriétaire CUDA.