Collabora développe un module pour faire fonctionner OpenCL et OpenGL au-dessus de DirectX

La société Collabora présentée un nouveau pilote Gallium pour Mesa, implémentant une couche pour le fonctionnement des API OpenCL 1.2 et OpenGL 3.3 au-dessus des pilotes prenant en charge DirectX 12 (D3D12). Le code publiée sous licence MIT.

Le pilote proposé permet d'utiliser Mesa sur des appareils qui ne supportent initialement pas OpenCL et OpenGL, ainsi que comme point de départ pour le portage d'applications OpenGL/OpenCL fonctionnant au-dessus de D3D12. Pour les fabricants de GPU, le sous-système offre la possibilité de fournir un support OpenCL et OpenGL, à condition que les pilotes ne prennent en charge que D3D12.

Parmi les projets à court terme, on note l'objectif d'atteindre la pleine réussite des tests de compatibilité OpenCL 1.2 et OpenGL 3.3, la vérification de la compatibilité avec les applications et l'intégration des travaux en cours dans la version principale de Mesa. Le développement se fait en collaboration avec les ingénieurs de Microsoft qui développent ouvert outils D3D11On12 pour porter des jeux de D3D11 vers D3D12 et une bibliothèque D3D12TranslationLayer, qui implémente des primitives graphiques typiques au-dessus de D3D12.

La mise en œuvre comprend le pilote Gallium, le compilateur OpenCL, le runtime OpenCL et le compilateur de shaders NIR-to-DXIL, transformant la représentation intermédiaire des shaders NIR utilisée dans Mesa en format binaire DXIL (DirectX Intermediate Language), pris en charge dans DirectX 12 et basé sur le bytecode LLVM 3.7 (DirectX Shader Compiler de Microsoft, qui est en réalité un fork étendu de LLVM 3.7). Le compilateur OpenCL a été élaboré sur la base des travaux du projet LLVM et des outils disponibles SPIRV-LLVM.

Les codes sources avec des extensions OpenCL sont compilés à l'aide de clang en pseudo-code intermédiaire LLVM (LLVM IR), qui est ensuite transformé en une représentation intermédiaire des noyaux OpenCL au format SPIR-V. Les noyaux en représentation SPIR-V sont transmis à Mesa, transformés en format NIR, optimisés et passés à NIR-to-DXIL pour générer des shaders de calcul au format DXIL, adaptés pour l'exécution sur GPU à l'aide d'un runtime basé sur DirectX 12.
Au lieu de Clover, utilisé dans l'implémentation OpenCL de Mesa, un nouveau runtime OpenCL a été proposé, permettant plus de transformations directes vers l'API DirectX 12.

Collabora développe un module pour faire fonctionner OpenCL et OpenGL au-dessus de DirectX

Les pilotes OpenCL et OpenGL ont été préparés en utilisant l'interface Gallium fournie dans Mesa, permettant lors de la création des pilotes de ne pas s'enfermer dans des détails spécifiques à OpenGL et de traduire les appels OpenGL en entités plus proches des primitives graphiques que manipulent les GPU modernes. Le pilote Gallium reçoit les commandes OpenGL et fait appel au traducteur NIR-to-DXIL.
forme des tampons de commandes qui s'exécutent sur le GPU en utilisant le pilote D3D12.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster