Collabora entwickelt eine Erweiterung für die Arbeit mit OpenCL und OpenGL über DirectX

Das Unternehmen Collabora präsentierte Der neue Gallium-Treiber für Mesa implementiert eine Schicht zur Unterstützung der API OpenCL 1.2 und OpenGL 3.3 auf Treibern, die DirectX 12 (D3D12) unterstützen. Code veröffentlicht unter der MIT-Lizenz.

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

Unter den nächstgelegenen Zielen wird die vollständige Durchführung von Kompatibilitätstests für OpenCL 1.2 und OpenGL 3.3 hervorgehoben, die Überprüfung der Kompatibilität mit Anwendungen und die Integration der Ergebnisse in die Hauptversion von Mesa. Die Entwicklung erfolgt in Zusammenarbeit mit Ingenieuren von Microsoft, die offenen ein Toolset D3D11On12 für den Übergang von Spielen von D3D11 auf D3D12 und die Bibliothek D3D12TranslationLayer, die gängige grafische Primitiven über D3D12 implementiert.

Die Implementierung umfasst den Gallium-Treiber, den OpenCL-Compiler, die OpenCL-Laufzeitumgebung und den NIR-to-DXIL-Shader-Compiler, der die in Mesa verwendete NIR-Zwischenvertretung von Shadern in das DXIL-Binärformat (DirectX Intermediate Language) umwandelt, das in DirectX 12 unterstützt wird und auf LLVM 3.7 basiert.DirectX Shader Compiler von Microsoft, im Wesentlichen ein erweiterter Fork von LLVM 3.7). Der OpenCL-Compiler ist auf der Grundlage der Entwicklungen des LLVM-Projekts und des Werkzeugsets erstellt. SPIRV-LLVM.

OpenCL-Quelltexte mit Erweiterungen werden mit clang in eine Zwischenform von LLVM-Pseudocode (LLVM IR) kompiliert, die dann in die OpenCL-Kernel-Zwischenvertretung im SPIR-V-Format umgewandelt wird. Die Kerne im SPIR-V-Format werden an Mesa übergeben, in das NIR-Format übersetzt, optimiert und in NIR-to-DXIL zur Erzeugung von Compute-Shadern im DXIL-Format übertragen, die für die Ausführung auf der GPU mit einer Laufzeitumgebung auf Basis von DirectX 12 geeignet sind.
Anstelle von Clover, das in der Mesa-Implementierung von OpenCL verwendet wird, wird eine neue OpenCL-Laufzeitumgebung angeboten, die mehr direkte Umwandlungen in die DirectX 12-API zulässt.

Collabora entwickelt eine Erweiterung für die Arbeit mit OpenCL und OpenGL über DirectX

OpenCL und OpenGL Treiber wurden unter Verwendung der in Mesa bereitgestellten Gallium-Schnittstelle erstellt, die es ermöglicht, bei der Entwicklung von Treibern nicht in spezifische OpenGL-Details einzutauchen und OpenGL-Aufrufe in Entitäten zu übersetzen, die näher an den grafischen Primitiven sind, mit denen moderne GPUs arbeiten. Der Gallium-Treiber nimmt OpenGL-Befehle entgegen und erzeugt unter Verwendung des NIR-to-DXIL-Translators.
Er erstellt Befehls-Puffer, die auf dem GPU ausgeführt werden, und nutzt dabei den D3D12-Treiber.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster