Collabora entwickelt ein Add-on für die Ausführung von OpenCL und OpenGL zusätzlich zu DirectX

Collabora-Unternehmen präsentiert ein neuer Gallium-Treiber für Mesa, der eine Ebene zur Organisation der Arbeit der OpenCL 1.2- und OpenGL 3.3-APIs zusätzlich zu Treibern implementiert, die DirectX 12 (D3D12) unterstützen. Code veröffentlicht unter der MIT-Lizenz.

Mit dem vorgeschlagenen Treiber können Sie Mesa auf Geräten verwenden, die OpenCL und OpenGL nicht nativ unterstützen, und auch als Ausgangspunkt für die Portierung von OpenGL/OpenCL-Anwendungen zur Ausführung auf D3D12 dienen. Für GPU-Hersteller ermöglicht das Subsystem die Unterstützung von OpenCL und OpenGL, sofern nur Treiber mit D3D12-Unterstützung verfügbar sind.

Zu den unmittelbaren Plänen gehören das vollständige Bestehen der Kompatibilitätstests von OpenCL 1.2 und OpenGL 3.3, die Überprüfung der Kompatibilität mit Anwendungen und die Einbeziehung von Entwicklungen in die Hauptzusammensetzung von Mesa. Die Entwicklung erfolgt gemeinsam mit den entwickelnden Microsoft-Ingenieuren открытый Werkzeuge D3D11On12 zum Übertragen von Spielen von D3D11 auf D3D12 und Bibliothek D3D12TranslationLayer, das Standard-Grafikprimitive auf Basis von D3D12 implementiert.

Die Implementierung umfasst den Gallium-Treiber, den OpenCL-Compiler, die OpenCL-Laufzeit und den NIR-zu-DXIL-Shader-Compiler, der die Zwischendarstellung der in Mesa verwendeten NIR-Shader in das DXIL-Binärformat (DirectX Intermediate Language) konvertiert, das in DirectX 12 unterstützt wird und darauf basiert LLVM 3.7-Bitcode (DirectX-Shader-Compiler von Microsoft ist im Wesentlichen ein erweiterter Zweig von LLVM 3.7). Der OpenCL-Compiler wird basierend auf den Entwicklungen des LLVM-Projekts und der Tools vorbereitet SPIRV-LLVM.

Quellen mit OpenCL-Erweiterungen werden mithilfe von Clang in LLVM-Intermediate-Pseudocode (LLVM IR) kompiliert, der dann in eine Zwischendarstellung von OpenCL-Kerneln im SPIR-V-Format konvertiert wird. Kerne in der SPIR-V-Darstellung werden an Mesa übergeben, in das NIR-Format übersetzt, optimiert und an NIR-to-DXIL übergeben, um Compute-Shader im DXIL-Format zu generieren, die für die Ausführung auf GPUs mit DirectX 12-basierter Laufzeit geeignet sind.
Anstelle von Clover, der in Mesa verwendeten OpenCL-Implementierung, wird eine neue OpenCL-Laufzeitumgebung vorgeschlagen, die direktere Konvertierungen auf die DirectX 12-API ermöglicht.

Collabora entwickelt ein Add-on für die Ausführung von OpenCL und OpenGL zusätzlich zu DirectX

OpenCL- und OpenGL-Treiber werden mithilfe der in Mesa bereitgestellten Gallium-Schnittstelle vorbereitet, die es Ihnen ermöglicht, Treiber zu erstellen, ohne auf OpenGL-spezifische Details einzugehen, und OpenGL-Aufrufe im Wesentlichen näher an die Grafikprimitive zu übersetzen, mit denen moderne GPUs arbeiten. Gallium-Treiber, akzeptiert OpenGL-Befehle und bei Verwendung des NIR-zu-DXIL-Übersetzers
generiert Befehlspuffer, die mithilfe des D3D12-Treibers auf der GPU ausgeführt werden.

Source: opennet.ru

Kommentar hinzufügen