Das Unternehmen Collabora hat die Integration des Gallium-Treibers D3D12 in den Hauptbestand von Mesa bekannt gegeben, welcher eine Schicht zur Ausführung von OpenGL über die DirectX 12 API (D3D12) bereitstellt. Gleichzeitig wurde die erfolgreiche Durchführung der Kompatibilitätstests des Treibers mit OpenGL 3.3 bekannt gegeben, während er über die D3D12-Treiber WARP (Software-Rasterisierer) und NVIDIA arbeitet.
Der Treiber könnte nützlich sein, um Mesa auf Geräten zu verwenden, die nur D3D12-Treiber unterstützen, sowie als Ausgangspunkt für die Portierung von OpenGL-Anwendungen zur Ausführung über die D3D12 API. Der Treiber kann auch verwendet werden, um grafische Anwendungen in Umgebungen unter dem Windows Subsystem for Linux (WSL) auszuführen, was die Ausführung von Linux-Programmen unter Windows ermöglicht.
Die Entwicklung erfolgt in Zusammenarbeit mit Ingenieuren von Microsoft, die das Open-Source-Tool D3D11On12 zur Übertragung von Spielen von D3D11 auf D3D12 sowie die Bibliothek D3D12TranslationLayer, die grafische Primitive über D3D12 implementiert, vorantreiben. Auf Grundlage dieses Projekts hat Microsoft bereits eine Schicht vorbereitet, die das Ausführen von Anwendungen, die auf OpenGL basieren, auf Windows-Geräten ermöglicht, die keine vollständige Unterstützung für OpenGL bieten. Insbesondere konnte die Verwendung von Photoshop auf Windows-Geräten mit ARM-Prozessoren realisiert werden.
Die Implementierung umfasst einen Treiber für Mesa und einen NIR-to-DXIL Shader-Compiler (D3D12-Laufzeit), der die in Mesa verwendete Zwischendarstellungsform der Shader NIR in das binäre Format DXIL (DirectX Intermediate Language) umwandelt, das in DirectX 12 unterstützt wird und auf dem Bitcode von LLVM 3.7 basiert (der DirectX Shader Compiler von Microsoft ist eine Abspaltung von LLVM 3.7). Der Treiber für Mesa nutzt die Gallium-Schnittstelle, akzeptiert OpenGL-Befehle und erstellt mithilfe des NIR-to-DXIL-Translators D3D12-Befehle, die auf der GPU über den Systemtreiber D3D12 ausgeführt werden. Zudem werden Komponenten entwickelt, um OpenCL über D3D12 lauffähig zu machen, dazu gehören der OpenCL-Compiler und die OpenCL-Laufzeit.
Quelle: opennet.ru
