DirectX 12 läuft ohne Grafik nun auch in Linux, allerdings nur für das Windows Subsystem für Linux (WSL). Die Linux-Kernel-Community zeigt sich wenig überzeugt.
Für die GPU-Unterstützung in seinem Windows Subsystem für Linux (WSL) hat Microsoft seine Grafikschnittstelle DirectX 12 mit sehr viel Aufwand und auch mit Hilfe der Grafikkartenhersteller auf Linux portiert. Das gibt der Hersteller zu seiner virtuellen Hausmesse Build bekannt und erläutert näheres in einem Blogbeitrag.
Da das WSL in seiner aktuellen Version 2 auf eine Virtualisierung per Hyper-V setzt, kann Microsoft aber keinen direkten Zugriff auf die Hardware ermöglichen. Deshalb ist eine Linux-Kernel-Modul entstanden, dass die unter Windows für DirectX 12 genutzte Grafikinfrastruktur schlicht an das WSL weiterleitet. Konkret hat Microsoft dafür den Kernel-Mode-Treiber dxgkrnl ein gleichnamiges Linux-Pendant erstellt.
Diese Abstraktion macht es möglich, dass Microsoft seine Bibliotheken für die Grafikschnittelle schlicht nur neu kompilieren musste, um diese auf Linux zu portieren, wie es in der Ankündigung heißt. Dies betrifft das D3D12-API, unter Linux nun als libd3d12.so verfügbar, sowie das neue DxCore (libdxcore.so).
Beide genannten Bibliotheken sind weiterhin prorprietäre Software und werden von dem Loader des WSL in die Umgebung beim Start automatisch eingefügt. Zusätzlich dazu Microsoft auch noch seine Machine-Learning-Bibliothek DirectML auf diesen neuen Stack portiert und auch die Grafikkartenhersteller haben ihre Userspace-Treiber daran angepasst, die mit der Windows-Technik nun ebenfalls in Linux laufen.
Gleiches gilt für Cuda von Nvidia, das nun auch auf Grundlage von DirectX12 in Linux laufen kann. All diese Arbeiten und Ports dienen bisher der Unterstützung für Machine-Learning-Aufgabe oder ähnlichen Compute-Anwendungen auf der GPU.
Konkrete Angaben zur Unterstützung von Vulkan macht Microsoft derzeit nicht. Aber die unter Linux häufig verwendeten Schnittstellen OpenGL und OpenCL werden derzeit von Collabora ebenso auf den neuen Stack portiert. Damit sollten dann auch jene Linux-Anwendungen vergleichsweise einfach auf die Grafikbeschleunigung in dem neuen WSL-Stack zugreifen können.
Für die Portierung setzt das Linux-Team auf die freie 3D-Grafikbibliothek Mesa. Ziel ist es hier, den nun auf Linux portierten DirectX-12-Technik als Backend für Mesa verfügbar zu machen, sodass die freie Technik als einer Art Übersetzungsschicht fungiert. Das ist nicht ungewöhnliche, ähnliche Ansätze gibt es mit der Vulkan-API als Backend. Der Code zu den Arbeiten an Mesa steht bereits als Open Source zur Verfügung.
Wie es für Microsoft inzwischen zum guten Ton gehört, versucht das Unternehmen auch, für diese Arbeiten aktiv und eng mit der Linux-Community zusammenzuarbeiten. Der von Microsoft erstellte Linux-Kernel-Treiber steht deshalb nicht nur als Open Source bereit. Das zuständige Team hat den Code dafür darüber hinaus auch auf der Linux-Kernel-Mailing-Liste zur Aufnahme in dem Hauptzweig von Linux vorgeschlagen und will aktiv daran mitwirken.
Der bei Micrsoft angestellte Linux-Entwickler Sasha Levin erklärt in der E-Mail erneut detailliert den beschrieben Aufbau sowie zusätzlich dazu auch weitere Details zu dem Linux-Treiber selbst. Dort wird unter anderem erneut explizit dargestellt, dass der Aufbau bisher keine Display-Funktionalität enthält. Levin schreibt außerdem: “Dieser GPU-Stack steht effektiv neben dem nativen Linux-Grafikstapel.”
Vor allem letzteres dürfte eine Aufnahme in das Grafiksubsystem des Kernel deutlich erschweren. Immerhin hat Microsoft für den DirectX-12-Port lediglich seine eigenen Windows-Schnittstellen für Linux nachgebaut, statt die vorhandenen Kernel-Schnittstellen und Technik wiederzuverwenden. Vor allem diese Wiederverwendung und die damit verbundenen Kooperation unter einander ist eine Stärke der Linux-Community, die diese immer wieder forciert.
Es ist deshalb zumindest derzeit nicht absehbar, dass der Code in seiner derzeitigen Form in das Grafik-Subsystem eingepflegt wird. Das schreibt etwa auch David Airlie, der dieses als haupterverantworlicher Betreuer pflegt. Airlie vermutet, dass die Technik wohl nie außerhalb des WSL von Microsoft genutzt werden würde und klassische Linux-Distributoren entsprechend kaum Interesse daran haben dürften. Die Pflege des Treibers hält Airlie deshalb derzeit nicht für sinnvoll.
Ähnlich argumentiert auch Daniel Vetter, der Hauptbetreuer für den Intel-Grafiktreiber unter Linux. Dieser schreibt, es gebe einige fundamentale Probleme mit dem Code. Das wichtigste ist wohl, dass der Userspace dazu bisher komplett prorprietär ist. Voraussetzung für die Aufnahme im Grafiksubsystem des Kernel sind jedoch freie Userspace-Treiber. Vetter kritisiert darüber hinaus, dass Microsoft einige vorhandene Linux-Technik schlicht nicht genutzt habe, sondern komplett neu erstellt. Vetter fehlen ebenso weitere Integrationen mit vorhandener Technik etwa zur Speicherverwaltung.
Sowohl Vetter als auch Airlie sehen trotz ihrer technischen Kritik jedoch die Möglichkeit, dass der Microsoft-Code ähnlich behandelt wird wie andere Beschleuniger-Karten und damit in einem anderen Subsystem landet, für das diese keine Verantwortung tragen. Die nun von beiden vorgetragenen Kritik haben diese so ähnlich vor etwa mehr als einem Jahr schon einmal vorgetragen, als die Linux-Community über die Schaffung eine Subsystems für Beschleuniger-Karten diskutiert hat.
Sollte Microsoft jedoch tatsächlich die nun neu geschaffene Technik jemals auch um eine echte Grafikdarstellung erweitern wollen, könnte die Diskussion von vorn beginnen, befürchten die Grafikentwickler.





