jeudi 21 mai 2020

Vulkan OpenGL Khronos Wayland

Vulkan Vulkan,

OpenGL OpenGL, GLSL, Qt, Cairo,

KhronosWebKit, WebRender, Khronos Group, 

WaylandWayland, SPIR-V, Mesa, GTK+,

   

Les entreprises développant des logiciels pour les environnements mobiles, embarqués ou de bureau trouvent souvent que la pile de logiciels de graphisme et de rendu est l'un de leurs plus grands défis. Les appareils et plates-formes logicielles les plus performants ont des piles graphiques optimisées pour offrir la meilleure expérience utilisateur.
API 3D accélérées par matériel

Igalia a une longue histoire d'utilisation des API 3D pour fournir des solutions graphiques accélérées à nos clients. Nos ingénieurs ont une solide expérience dans OpenGL et Vulkan, à la fois en tant qu'utilisateurs d'API et en tant qu'implémenteurs. Igalia est également membre de Khronos, le groupe responsable des spécifications pour OpenGL, Vulkan et plus encore. En tant que membre, nous participons à l'examen, au développement et à la correction de bogues dans les suites de tests de conformité Khronos utilisées pour certifier les pilotes OpenGL (ES) et Vulkan.
Pilotes OpenGL et Vulkan

Nous contribuons depuis des années au développement des pilotes OpenGL et Vulkan de l'espace utilisateur open source d'Intel, et avons joué un rôle important dans l'obtention de la certification de conformité pour les pilotes OpenGL et Vulkan.

Notre travail dans la pile de pilotes comprend le développement de fonctionnalités pour OpenGL et Vulkan sur Mesa et les pilotes Intel, les optimisations frontales et principales du compilateur de shaders et la correction générale des bogues des pilotes.
Pipelines graphiques Linux

Igalia est très expérimenté avec les différents pipelines graphiques open source sous Linux. En cours de route, nous avons construit des compositeurs accélérés, des serveurs d'affichage intégrés (Wayland / Weston), éliminé les goulots d'étranglement matériels, optimisé le rendu des navigateurs Web et perfectionné l'affichage des polices.

Les moteurs de navigation Web sont des piles de technologies très complexes, et pourtant Igalia a contribué à la plupart des pipelines graphiques de tous les principaux navigateurs Web open source. Nos réalisations remarquables incluent la direction du développement de la pile graphique pour les ports Linux du moteur de navigateur WebKit (comme WebKitGTK + et WPE) et la contribution active aux moteurs de rendu Gecko et Servo par le biais de notre travail dans WebRender.

Nous avons maintenu les plugins GStreamer de gstreamer-vaapi pour fournir une prise en charge de l'encodage / décodage accéléré par le matériel pour la plupart des plates-formes Intel et certains GPU AMD.


Vulkan, OpenGL, GLSL, SPIR-V, Mesa, GTK +, Qt, Le Caire, Wayland, WebKit, WebRender, Khronos Group

Le pilote Intel Mesa pour Linux est désormais conforme à OpenGL 4.6
1 février 2018

Khronos a récemment annoncé le programme de conformité pour OpenGL 4.6 et je suis très heureux de dire qu'Intel a soumis avec succès des demandes de conformité pour divers de ses modèles de GPU pour le pilote Mesa Linux. Pour des détails sur le matériel conforme, vous pouvez consulter la liste des produits OpenGL conformes sur le site Web de Khronos.

Être conforme le premier jour, ce que le pilote Intel Mesa Vulkan a également obtenu dans la journée, est une réussite importante. Outre Intel Mesa, seule NVIDIA a réussi à le faire, ce qui, je pense, parle de la quantité de travail et d'efforts qu'il faut mettre pour y parvenir. L'époque où les implémentations de Linux ont pris du retard est révolue depuis longtemps, nous devons tous célébrer cela et reconnaître les efforts importants que des entreprises comme Intel ont déployés pour en faire une réalité.

Au cours des 8 à 9 derniers mois environ, j'ai travaillé avec certains de mes amis Igaliens pour garder les pilotes Intel (pour OpenGL et Vulkan) conformes, donc je suis très fier que nous ayons atteint ce jalon. Félicitations à tous mes collègues de travail qui ont travaillé avec moi à ce sujet, à nos amis d'Intel, qui ont fourni des critiques pour nos correctifs, des commentaires et des correctifs de pilotes supplémentaires, et à de nombreux autres membres de la communauté Mesa qui ont contribué à rendre cela possible d'une manière ou d'une autre.

Bien sûr, la conformité à OpenGL 4.6 nécessite que nous ayons une implémentation de GL_ARB_gl_spirv, qui permet aux applications OpenGL de consommer des shaders SPIR-V. Si vous avez suivi le travail d'Igalia, vous avez déjà vu certains de mes collègues envoyer des correctifs pour cela au cours des derniers mois, mais la fonctionnalité n'est pas encore complètement en amont. Nous y travaillons dur, mais la portée de l'implémentation que nous voulons pour l'amont est assez ambitieuse, car elle implique d'avoir (enfin) un linker shader complet dans NIR. Obtenir que cela soit aussi complet que l'éditeur de liens GLSL actuel et dans une forme qui soit suffisamment bonne pour être révisé et en amont va prendre un certain temps, mais c'est sûrement un effort utile qui sera payant à l'avenir, alors veuillez et soyez patient avec nous car nous en aurons plus en amont dans les mois à venir.

Il est également important de noter que la conformité à OpenGL 4.6 ne se contente pas de valider les nouvelles fonctionnalités d'OpenGL 4.6, c'est un programme de conformité complet pour les pilotes OpenGL qui inclut la fonctionnalité OpenGL 4.6, et en tant que tel, c'est un super ensemble de la conformité OpenGL 4.5 . En fait, l'OpenGL 4.6 CTS incorpore un grand nombre de corrections de bogues et une couverture étendue pour les fonctionnalités OpenGL qui étaient déjà présentes dans OpenGL 4.5 et antérieures.
Qu'est-ce que le processus de conformité et pourquoi est-il important?

C'est un problème bien connu avec les normes que les différentes implémentations ne sont pas toujours cohérentes. Cela peut se produire pour plusieurs raisons. Par exemple, les implémentations ont des bogues qui peuvent faire fonctionner quelque chose sur une plate-forme mais pas sur une autre (ce qui nécessitera alors des applications pour implémenter des solutions). Une autre raison à cela est que certains implémenteurs ont parfois des interprétations différentes de la norme.

Le programme de conformité Khronos est destiné à garantir que les produits qui implémentent les normes Khronos (tels que les pilotes OpenGL ou Vulkan) font ce qu'ils sont censés faire et ils le font de manière cohérente dans les implémentations du même fournisseur ou de fournisseurs différents. Cet objectif est atteint en produisant une suite de tests complète, la Suite de tests de conformité (ou CTS en abrégé), qui vise à vérifier que la sémantique de la norme est correctement mise en œuvre par le plus grand nombre de fournisseurs possible.
Pourquoi CTS est-il différent des autres suites de tests disponibles?

L'une des raisons est que le développement de CTS inclut des membres de Khronos qui sont impliqués dans la définition des spécifications de l'API. Cela signifie qu'il y a des gens qui connaissent bien le langage des spécifications qui peuvent réviser et fournir des commentaires aux développeurs de tests pour s'assurer que les tests sont bons.

Une autre raison est qu'avant que de nouveaux tests n'entrent, il est nécessaire qu'il y ait au moins un certain nombre d'implémentations (de différents fournisseurs) qui les réussissent. Cela signifie que différents fournisseurs ont implémenté les spécifications associées et que ces différentes implémentations s'accordent sur le résultat attendu, ce qui est généralement un bon signe que les tests et les implémentations sont bons (bien que cela ne soit pas toujours suffisant!).
Comment CTS et le processus de conformité Khronos aident-ils les implémenteurs et les utilisateurs d'API?

Tout d'abord, il permet de tester les fonctionnalités existantes et nouvelles couvertes dans les spécifications de l'API avant d'accorder le statut de conformité. Cela signifie que les implémentations doivent exécuter tous ces tests et les passer, produisant les mêmes résultats que les autres implémentations.Par conséquent, en ce qui concerne la couverture des tests, les implémentations sont correctes et cohérentes, ce qui est tout l'intérêt de ce processus: importe si vous exécutez votre application sur Intel, NVIDIA, AMD ou un autre fournisseur de GPU, si votre application est correcte, elle devrait exécuter le
même peu importe le pilote que vous exécutez