FOSDEM: Vulkan für den Raspberry Pi 4 mit V3DV
Ein Vulkan-Treiber ist in Zusammenarbeit mit Broadcom im Entwicklerbüro Igalia in Arbeit, dasjenige zur FOSDEM 21 Fortschritte und Herausforderungen präsentierte.
Von
- David Wolski
Mit der Grafikeinheit "VideoCore VI" ist der Raspberry Pi 4 und 400 fähig, Vulkan 1.1 zu stemmen. Gegenüber OpenGL kann Vulkan auf der GPU dieser Modelle noch mehr Leistung heraus holen. Ende Januar 2020 hatte deshalb die Raspberry Pi Foundation angekündigt, einen Vulkan-Treiber für den Raspberry Pi 4 zusammen mit dem Entwicklerbüro Igalia und mit Unterstützung von Broadcom in Angriff zu nehmen. Die Anstrengungen tragen jetzt erste Früchte, wie ein Entwickler von Igalia auf der diesjährigen FOSDEM zeigte.
Schon vergangenen November hat der Treiber für den Raspberry Pi 4 einen wichtigen Meilenstein erreicht: Der Vulkan-Treiber absolvierte etwas über 100.000 Tests der Khronos Conformance Test Suite (CTS) und demonstrierte damit erstmals die volle Unterstützung der API von Vulkan. Wie Alejandro Piñeiro, der mit einem einzigen weiteren Kollegen bei Igalia an diesem Vulkan-Treiber arbeitet, berichtete, bedeutet der erfolgreiche Conformance-Test immer noch viel Arbeit, bis Vulkan auf dem Raspberry Pi 4 und 400 der Allgemeinheit zur Verfügung steht. Eine Menge Erweiterungen und optionale Features fehlen noch, um gegenüber OpenGL einen echten Gewinn zu haben. Aktuell absolviert das Team jede Woche mit einem neuen Build des Treibers ein Subset von 10.000 CTS-Tests, um die Fortschritte zu messen.
V3DV: Zurück im Mesa-Hauptzweig
Die Basis für Vulkan für diese GPU liefert der bisherige V3D-Treiber des Linux-Kernels, der bereits die Schnittstelle zu OpenGL ES für die VideoCore VI bereitstellt. Dieser Code ist schon in ab Mesa 19.1 in dieser Bibliothek enthalten und erhielt zuletzt Feintuning des damaligen Broadcom-Enwicklers Eric Anholt. Igalia begann die Entwicklung mit einem neuen Fork von Mesa und erhält von Broadcom auf Anfrage Dokumentation und Spezifikationen, die einem Non-Disclosure-Agreeement (NDA) unterliegen. Die Entwickler dürfen deshalb nicht zu viel Dokumentation teilen, zumal auch die Entwicklerdokumente für den OpenGL-Treiber V3D 4.2 unter Verschluss sind. Es dürfte deshalb nicht ganz einfach sein, Mitstreiter aus der Open-Source-Szene zu gewinnen. Mittlerweile ist der neue Vulkan-Treiber unter dem Namen "V3DV" immerhin zurück im Hauptzweig der Bibliothek Mesa und wird dort schon im allgemeinen Bugtracker behandelt.
Der Versprechen Vulkans ist eine bessere Leistung gegenüber OpenGL und echte Parallelität von Threads, sofern sich die grafikintensiven Programme brav um ihre Prozesse kümmern. Dazu gehört in der Praxis mehr als nur ein Treiber und die Vulkan-API. Auf dem Raspberry Pi 4 ist deshalb von Geschwindigkeitsvorteilen noch nicht viel zu spüren, wie Alejandro Piñeiro anmerkte, zumal noch Programme fehlen. Für Demos und Tests auf dem Desktop kommt die Übersetzungsschicht "Zink" von Mesa zum Einsatz. Immerhin ist der Vulkan-Fork VkQuake vielversprechend und schneller als Quake mit OpenGL und auch OpenArena kann sich laut des Talks schon sehen lassen. Es gibt auch schon einen PSP-Emulator für den Raspberry Pi 4 mit passabler Vulkan-Unterstützung.
Was schon funktioniert: Laut Igalia-Entwickler Alejandro Piñeiro gibt es erst wenig stabile Vulkan-Programme für den Raspberry Pi. Die Liste der Programme für Tests ist entsprechend kurz.
Leistung: Langfristige und kurzfristige Ziele
Alejandro Piñeiro betonte, dass bisher noch nicht viel Arbeit in die Performance und deren Verbesserung ging, sondern hauptsächlich in die Compliance mit Vulkan 1.0. Seit Dezember 2020 gibt es aber schon Ideen zur Optimierung und Igalia hat unter den Eigenheiten des Raspberry Pi einige Probleme für Vulkan identifiziert: Für eine optimale Grafikausgabe verlangt Vulkan eine GPU am PCI-Bus, aber im Raspberry Pi ist der Grafikchip kein PCI-Gerät. Vulkan geht zudem davon aus, dass alle Operationen in der GPU ausgeführt werden. Dies funktioniert auf dem Raspberry Pi 4 jedoch nicht und der Treiber muss Aufgaben auslagern. Einen Performanceschub verspricht die bessere Nutzung von Texture Filtering Units (TFUs) in der Textureinheit der VideoCore VI. Ein grundsätzliches, von Mesa geerbtes Problem ist dessen Vulkan-Schicht für die Window-System-Integration (WSI), die den Igalia-Entwicklern gerade noch Kopfzerbrechen bereitet. Dennoch sieht Alejandro Piñeiro die Lösung dieser Probleme auf der Liste der kurzfristig machbaren Fortschritte. Langfristig soll es um die Compliance zu Vulkan 1.1 gehen, das schon 2018 von der Khronos Group vorgestellt wurde. Wo möglich, soll der Treiber in Mesa für Vulkan und Open GL ES für die VideoCore VI auf lange Sicht möglichst viel gemeinsamen Code teilen. Denn Vulkan wird in absehbarer Zeit Open GL auf den Raspberry-Pi-Modellen zunächst lediglich für einige prominente Anwendungsszenarien und Programme ergänzen.
Die Präsentation von Igalia zum Talk auf der FOSDEM 21 steht als PDF bereit und diente schon zur X.Org Developer Conference (XDC 2020) als Grundlage einer Präsentation.
(bme)
Quelle: www.heise.de