Die Entwickler von Collabora stellten einen neuen Gallium-Controller für Mesa vor

Collabora-Controller

Vor kurzem Collabora-Entwickler veröffentlicht durch einen Blog-Beitrag, die neuer Gallium-Controller für Mesa, welches eine Zwischenschicht implementiert um OpenCL 1.2 und OpenGL 3.3 API zu organisieren Informationen zu Treibern mit DirectX 12 (D3D12) -Unterstützung und deren Quellcode wird unter der MIT-Lizenz veröffentlicht.

Der vorgeschlagene Controller wird ermöglicht es Ihnen, Mesa auf Geräten zu verwenden die zunächst nicht kompatibel sind mit OpenCL und OpenGL und auch als Ausgangsposition, um OpenGL / OpenCL-Anwendungen für die Arbeit an D3D12 zu portieren. Für GPU-Hersteller bietet das Subsystem Unterstützung für OpenCL und OpenGL, wobei Treiber nur D3D12 unterstützen.

In ihrem Blog-Beitrag teilen die Entwickler:

In den letzten Monaten haben wir bei Collabora an zwei aufregenden neuen Projekten gearbeitet, und es ist endlich Zeit, Informationen darüber mit der Welt zu teilen ...

Von unmittelbaren PlänenEs wird das Erreichen der vollständigen Genehmigung der Prüfungen von beobachtet OpenCL 1.2 und OpenGL 3.3 unterstützenÜberprüfung der Kompatibilität mit Anwendungen und Einbeziehung bewährter Verfahren in die Hauptzusammensetzung von Mesa.

Über den neuen Controller

Die Entwicklung des neuen Controllers erfolgt in Zusammenarbeit mit Microsoft-Ingenieuren Entwicklung von D3D11On12-Tools für D3D11-Übertragungskits und D3D12 D3D12TranslationLayer-Bibliothek sowie von standardmäßigen grafischen primitiven Geräten über D3D12.

Die Umsetzung Enthält den Gallium-Treiber und den OpenCL-Compiler, die OpenCL-Laufzeit und der NIR-zu-DXIL-Shader-Compiler, der die in Mesa verwendete Zwischendarstellung von NIR-Shadern in das binäre DXIL-Format (DirectX-Zwischensprache) konvertiert, das mit DirectX 12 kompatibel ist und auf dem Bitcode LLVM 3.7 (Microsoft) basiert DirectX Shader Compiler ist im Wesentlichen eine erweiterte Version von LLVM 3.7). Der OpenCL-Compiler wurde basierend auf den Erfahrungen des LLVM-Projekts und des SPIRV-LLVM-Toolkits erstellt.

Diese Arbeit baut auf vielen früheren Arbeiten auf. Zunächst erstellen wir dies mit Mesa 3D, wobei die Gallium-Schnittstelle als Basis für die OpenGL-Schicht und NIR als Basis für den OpenCL-Compiler dienen. Wir verwenden auch LLVM und den Khronos SPIRV-LLVM-Übersetzer als Compiler.

Darüber hinaus nutzen wir die Erfahrung von Microsoft bei der Erstellung der D3D12-Übersetzungsschicht sowie unsere eigenen Erfahrungen bei der Entwicklung von Zink.

Der OpenCL-Quellcode wird mit clang in den Zwischen-LLVM-Pseudocode (LLVM IR) kompiliert, der dann in eine Zwischendarstellung des OpenCL-Kernels im SPIR-V-Format konvertiert wird.

Die Kerne in der SPIR-V-Darstellung werden an Mesa übertragen. In das NIR-Format übersetzt, optimiert und in NIR-zu-DXIL übertragen, um geeignete DXIL-Rechnershader zu generieren für die GPU-Ausführung mit DirectX 12-basierter Laufzeit. Anstatt Clover in der OpenCL Mesa-Implementierung zu verwenden, wird eine neue OpenCL-Laufzeit vorgeschlagen, die direktere Konvertierungen in die DirectX 12-API ermöglicht.

OpenCL- und OpenGL-Treiber werden über die Gallium-Schnittstelle vorbereitet In Mesa bereitgestellt, mit dem Sie OpenGL-Besonderheiten beim Erstellen von Treibern umgehen und OpenGL-Aufrufe in Entitäten übersetzen können, die näher an den grafischen Grundelementen liegen, mit denen moderne GPUs arbeiten.

Der Gallium-Treiber akzeptiert OpenGL-Befehle und erstellt unter Beteiligung des NIR-zu-DXIL-Übersetzers Befehlspuffer, die mit dem D3D12-Treiber auf der GPU ausgeführt werden.

Schließlich Entwickler erwähnen, dass dies frühe Arbeit ist und sie erwarten, dass sich der Controller im Laufe der Zeit verbessert:

Dies ist nur die Ankündigung, und es bleibt noch viel zu tun. Wir haben etwas, das in einigen Fällen im Moment funktioniert, aber wir fangen gerade erst an, die Oberfläche zu kratzen.

Zunächst müssen wir das Niveau der Funktionen erreichen, auf die wir zusteuern. Unser derzeitiges Ziel ist es, Konformitätstests für OpenCL 1.2 und OpenGL 3.3 zu bestehen. Wir haben noch einen langen Weg vor uns, aber mit ein wenig harter Arbeit und Schweiß werden wir sicher dorthin gelangen.

Wenn Sie mehr darüber erfahren möchten, Sie können die Originalnotiz einchecken den folgenden Link oder für diejenigen, die daran interessiert sind, den Quellcode zu überprüfen, können sie dies tun von diesem Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.