Collabora développe un module complémentaire pour exécuter OpenCL et OpenGL sur DirectX

Entreprise collaborative présenté un nouveau pilote Gallium pour Mesa, qui implémente une couche pour organiser le travail des API OpenCL 1.2 et OpenGL 3.3 au-dessus des pilotes prenant en charge DirectX 12 (D3D12). Code publié sous licence MIT.

Le pilote proposé vous permet d'utiliser Mesa sur des appareils qui ne prennent pas en charge nativement OpenCL et OpenGL, et également comme point de départ pour le portage d'applications OpenGL/OpenCL afin qu'elles s'exécutent sur D3D12. Pour les fabricants de GPU, le sous-système permet de prendre en charge OpenCL et OpenGL, si seuls les pilotes prenant en charge D3D12 sont disponibles.

Parmi les projets immédiats figurent la réussite complète des tests de compatibilité d'OpenCL 1.2 et OpenGL 3.3, la vérification de la compatibilité avec les applications et l'inclusion des développements dans la composition principale de Mesa. Le développement est réalisé conjointement avec les ingénieurs Microsoft développant ouvert outils D3D11Le12 pour transférer des jeux du D3D11 vers le D3D12 et une bibliothèque D3D12TranslationLayer, qui implémente des primitives graphiques standard au-dessus de D3D12.

L'implémentation comprend le pilote Gallium, le compilateur OpenCL, le runtime OpenCL et le compilateur de shaders NIR-to-DXIL, qui convertit la représentation intermédiaire des shaders NIR utilisés dans Mesa au format binaire DXIL (DirectX Intermediate Language), pris en charge dans DirectX 12 et basé sur Code binaire LLVM 3.7 (Compilateur DirectX Shader de Microsoft est essentiellement un fork étendu de LLVM 3.7). Le compilateur OpenCL est préparé sur la base des développements du projet et des outils LLVM SPIRV-LLVM.

Les sources avec des extensions OpenCL sont compilées à l'aide de clang en pseudocode intermédiaire LLVM (LLVM IR), qui est ensuite converti en une représentation intermédiaire des noyaux OpenCL au format SPIR-V. Les cœurs de la représentation SPIR-V sont transmis à Mesa, traduits au format NIR, optimisés et transmis à NIR-to-DXIL pour générer des shaders de calcul au format DXIL, adaptés à l'exécution sur des GPU utilisant le runtime basé sur DirectX 12.
Au lieu de Clover, l'implémentation OpenCL utilisée dans Mesa, un nouveau runtime OpenCL est proposé, permettant des conversions plus directes vers l'API DirectX 12.

Collabora développe un module complémentaire pour exécuter OpenCL et OpenGL sur DirectX

Les pilotes OpenCL et OpenGL sont préparés à l'aide de l'interface Gallium fournie dans Mesa, qui vous permet de créer des pilotes sans entrer dans les détails spécifiques à OpenGL et de traduire les appels OpenGL essentiellement plus proches des primitives graphiques sur lesquelles fonctionnent les GPU modernes. Pilote Gallium, accepte les commandes OpenGL et lors de l'utilisation du traducteur NIR vers DXIL
génère des tampons de commandes qui sont exécutés sur le GPU à l'aide du pilote D3D12.

Source: opennet.ru

Ajouter un commentaire