Collabora entwickelt eine Erweiterung für die Verwendung von OpenCL und OpenGL über DirectX

Das Unternehmen Collabora hat neuer Gallium-Treiber für Mesa, der eine Schicht zur Organisation der Arbeit von API OpenCL 1.2 und OpenGL 3.3 über Treiber mit Unterstützung für DirectX 12 (D3D12) implementiert. Code veröffentlicht unterliegt der MIT-Lizenz.

Der vorgeschlagene Treiber ermöglicht die Nutzung von Mesa auf Geräten, die ursprünglich OpenCL und OpenGL nicht unterstützen, sowie als Ausgangspunkt für die Portierung von OpenGL/OpenCL-Anwendungen, um über D3D12 zu arbeiten. Für GPU-Hersteller bietet das Subsystem die Möglichkeit, Unterstützung für OpenCL und OpenGL bereitzustellen, wenn nur Treiber mit D3D12-Unterstützung vorhanden sind.

Zu den nahen Plänen gehört das Erreichen einer vollständigen Kompatibilität von OpenCL 1.2 und OpenGL 3.3, die Überprüfung der Kompatibilität mit Anwendungen und die Integration von Entwicklungen in die Hauptversion von Mesa. Die Entwicklung erfolgt in Zusammenarbeit mit Ingenieuren von Microsoft, die offen Toolkit D3D11On12 für die Umstellung von Spielen von D3D11 auf D3D12 und die Bibliothek D3D12TranslationLayer, die typische grafische Grundelemente über D3D12 implementiert.

Die Implementierung umfasst den Gallium-Treiber, den OpenCL-Compiler, das OpenCL-Laufzeitsystem und den NIR-to-DXIL-Shader-Compiler, der die in Mesa verwendete Zwischenrepräsentation der NIR-Shader in das binäre DXIL-Format (DirectX Intermediate Language) umwandelt, das in DirectX 12 unterstützt wird und auf dem LLVM 3.7 Bitcode basiert (DirectX Shader Compiler von Microsoft, im Wesentlichen ein erweiterter Fork von LLVM 3.7). Der OpenCL-Compiler wurde auf der Grundlage der Entwicklungen des LLVM-Projekts und der Toolbox SPIRV-LLVM.

erstellt. Quelltexte mit OpenCL-Erweiterungen werden mithilfe von clang in eine Zwischenrepräsentation von LLVM (LLVM IR) kompiliert, die anschließend in die Zwischenrepräsentation von OpenCL-Kernen im SPIR-V-Format umgewandelt wird. Kerne in der SPIR-V-Darstellung werden in Mesa übertragen, in das NIR-Format übersetzt, optimiert und an NIR-to-DXIL übergeben, um Compute-Shader im DXIL-Format zu generieren, die zur Ausführung auf GPU mit der auf DirectX 12 basierenden Laufzeit geeignet sind.
Statt Clover, das in der Mesa-Implementierung von OpenCL verwendet wird, wurde ein neuer OpenCL-Laufzeitumgebung vorgeschlagen, die mehr direkte Umwandlungen in die API DirectX 12 zulässt.

Collabora entwickelt eine Erweiterung für die Verwendung von OpenCL und OpenGL über DirectX

OpenCL- und OpenGL-Treiber wurden mit der in Mesa bereitgestellten Gallium-Schnittstelle erstellt, die es ermöglicht, bei der Erstellung von Treibern nicht auf spezifische OpenGL-Details einzugehen und OpenGL-Aufrufe in Entitäten zu transkribieren, die den grafischen Grundelementen näher sind, mit denen moderne GPUs arbeiten. Der Gallium-Treiber akzeptiert OpenGL-Befehle und nutzt den NIR-to-DXIL-Übersetzer.
bildet Befehls-Puffer, die auf der GPU unter Verwendung des D3D12-Treibers ausgeführt werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4