Les développeurs de Collabora ont présenté un nouveau contrôleur Gallium pour Mesa

Contrôleur Collabora

Récemment Les développeurs de Collabora ont publié à travers un article de blog, le nouveau contrôleur Gallium pour Mesa, qui implémente une couche intermédiaire pour organiser les API OpenCL 1.2 et OpenGL 3.3 à propos des pilotes prenant en charge DirectX 12 (D3D12) et que leur code source est publié sous la licence MIT.

Le contrôleur proposé vous permet d'utiliser Mesa sur les appareils qui ne sont pas initialement compatibles avec OpenCL et OpenGL et aussi comme position de départ pour porter les applications OpenGL / OpenCL pour qu'elles fonctionnent sur D3D12. Pour les fabricants de GPU, le sous-système permet de prendre en charge OpenCL et OpenGL, les pilotes ne prenant en charge que D3D12.

Dans leur article de blog, les développeurs partagent:

Depuis quelques mois, nous travaillons sur deux nouveaux projets passionnants chez Collabora, et il est enfin temps de partager des informations à leur sujet avec le monde ...

De plans immédiats, il est observé l'obtention de l'approbation complète des essais de Prise en charge d'OpenCL 1.2 et d'OpenGL 3.3, vérification de la compatibilité avec les applications et inclusion des meilleures pratiques dans la composition principale de Mesa.

À propos du nouveau contrôleur

Le développement du nouveau contrôleur est réalisé en collaboration avec les ingénieurs Microsoft pour développer les outils D3D11On12 vers les kits de transfert D3D11 et la bibliothèque D3D12 D3D12TranslationLayer, ainsi que les implémentations graphiques primitives standard au-dessus de D3D12.

La mise en oeuvre inclut le pilote Gallium, le compilateur OpenCL, le runtime OpenCL et le compilateur de shader NIR-to-DXIL, qui convertit la représentation intermédiaire des shaders NIR utilisés dans Mesa au format binaire DXIL (langage intermédiaire DirectX), compatible avec DirectX 12 et basé sur le code bit LLVM 3.7 (Microsoft DirectX Shader Compiler est essentiellement un fork étendu de LLVM 3.7). Le compilateur OpenCL a été préparé sur la base de l'expérience du projet LLVM et de la boîte à outils SPIRV-LLVM.

Ce travail s'appuie sur de nombreux travaux antérieurs. Tout d'abord, nous construisons cela en utilisant Mesa 3D, avec l'interface Gallium comme base pour la couche OpenGL et NIR comme base pour le compilateur OpenCL. Nous utilisons également LLVM et le traducteur Khronos SPIRV-LLVM comme compilateur.

De plus, nous tirons parti de l'expertise de Microsoft pour créer leur couche de traduction D3D12, ainsi que de notre propre expérience dans le développement de Zink.

Le code source OpenCL est compilé avec clang dans le pseudocode LLVM intermédiaire (LLVM IR), qui est ensuite converti en une représentation intermédiaire du noyau OpenCL au format SPIR-V.

Les cœurs de la représentation SPIR-V sont transférés vers Mesa, traduit au format NIR, optimisé et transféré vers NIR-to-DXIL pour générer des shaders de calcul DXIL appropriés pour l'exécution GPU à l'aide du runtime basé sur DirectX 12. Au lieu d'utiliser Clover dans l'implémentation OpenCL Mesa, un nouveau runtime OpenCL est proposé, qui permet des conversions plus directes vers l'API DirectX 12.

Les pilotes OpenCL et OpenGL sont préparés à l'aide de l'interface Gallium fourni dans Mesa, qui vous permet de contourner les spécificités d'OpenGL lors de la création de pilotes et de traduire les appels OpenGL en entités plus proches des primitives graphiques sur lesquelles les GPU modernes fonctionnent.

Le pilote Gallium accepte les commandes OpenGL et, avec la participation du traducteur NIR-DXIL, crée des tampons de commande qui s'exécutent sur le GPU à l'aide du pilote D3D12.

Enfin, les développeurs mentionnent qu'il s'agit d'un travail précoce et ils s'attendent à ce que le contrôleur s'améliore au fil du temps:

Ce n’est que l’annonce et il reste encore beaucoup à faire. Nous avons quelque chose qui fonctionne dans certains cas pour le moment, mais nous commençons à peine à gratter la surface.

Tout d'abord, nous devons atteindre le niveau de fonctionnalités vers lequel nous nous dirigeons. Actuellement, nos objectifs sont de réussir les tests de conformité pour OpenCL 1.2 et OpenGL 3.3. Nous avons un long chemin à parcourir, mais avec un peu de travail acharné et de sueur, je suis sûr que nous y arriverons.

Si vous souhaitez en savoir plus, vous pouvez archiver la note originale dans le lien suivant ou pour ceux qui souhaitent revoir le code source, ils peuvent le faire de ce lien.


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.