FOSDEM: Vulkan-Treiber kommt für den Raspberry Pi 4

Die Raspberry Pi Foundation arbeitet an einem Vulkan-Treiber. Auf der FOSDEM lieferte ein unabhängiger Entwickler derweil Einblicke in eigene Bemühungen.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen
FOSDEM: Vulkan-Treiber kommt für den Raspberry Pi 4

(Bild: David Wolski)

Lesezeit: 4 Min.
Von
  • David Wolski

Für Projekte mit dem Raspberry Pi geht es im spielerischen wie auch im produktiven Einsatz oft darum, das letzte Quäntchen Leistung aus der Platine heraus zu holen. Der Raspberry Pi 4 lässt hier mit Video Core VI In Sachen GPU-Leistung noch Luft nach oben. Denn die Broadcom-GPU ist nicht nur in der Lage, OpenGL ES 3.1 zu stemmen, sondern auch Vulkan 1.1.

Ein Vulkan-Treiber könnte dem Video Core VI merklich mehr Leistung entlocken, von welcher nicht nur grafikintensive Anwendungen und Spiele profitieren würden – denn Compute Shader sind auch für andere Rechenoperationen nützlich. Compute Shader sind zwar auch schon in OpenGL ES 3.1 ansprechbar, zu dem der Raspberry Pi 4 seit kurzem konform ist, verlangen aber zyklisches Memory-Management, während Vulkan persistentes Memory-Mapping und damit echte Parallelität erlaubt. Zumindest sofern sich Programmierer brav um ihre Threads kümmern. Gelungene Umsetzungen zeigen auf gleicher Grafik-Hardware einen erheblichen Leistungsschub gegenüber OpenGL.

Einen funktionierenden Vulkan-Treiber gibt es bis dato für den Raspberry Pi 4 noch nicht, zumindest nicht "in freier Wildbahn" außerhalb der Broadcom-Entwicklerlabors. Allerdings hat Eben Upton, Raspberry-Pi-Schöpfer und Mitbegründer der Raspberry Pi Foundation, Ende Januar 2020 angekündigt, Vulkan für den Raspberry Pi 4 zusammen mit dem Entwicklerbüro Igalia in Angriff zu nehmen.

Was nach keiner kleinen Aufgabe klingt, zog davor schon den Entwickler Andreas Bergmeier an, der unabhängig von Broadcom oder Igalia an einem Treiber im Rahmen eines Hobby-Projekts arbeitete und auf der FOSDEM 20 von seinen Fortschritten und Rückschlägen berichtete. Der Gedanke, dass die Entwicklung eines Vulkan-Treibers auf eigene Faust überhaupt realistisch sein könnte, lieferte der V3D-Treiber des Linux-Kernels, der bereits mit VideoCore VI umgehen kann und die Schnittstelle zu OpenGL ES bereitstellt. Dieser Code hat zuletzt mit Mesa 19.1 noch viel Feintuning durch den damaligen Broadcom-Enwickler Eric Anholt enthalten und ist die Basis des Treiber-Stacks für Vulkan auf dem Raspberry Pi 4.

In seinem Hobby-Projekt ging Andreas Bergmeier nach der Analyse, welcher bereits vorhandene Code sich zur Wiederverwendung eignet, eine ABI für Mesa über Gallium 3D an, auf die ein Vulkan-Treiber zugreifen kann. Die ersten Hürden ließen nicht lange auf sich warten: Mesa verfügt über enorme, monolithische Header, die den Compile-Test-Zyklus bremsen und Symbols schwerer auffindbar machen. Nach einem halben Jahr Entwicklungszeit war der selbstgebaute Treiber im Sommer 2019 immerhin so weit, den ersten Vulkan Conformance Test zu meistern.

Open-Source-Konferenz FOSDEM 2020

Mittlerweile schafft es der Treiber von Andreas Bergmeier durch 64 Conformance Tests, was einen vielversprechenden Anfang markiert. Nach der Ankündigung der Raspberry Pi Foundation ist die Zukunft von Bergmeiers selbst entwickeltem Vulkan-Treiber allerdings wieder offen.

Erstes Lebenszeichen des Vulkan-Treibers der Raspberry Pi Foundation: Das RGB-Dreieck ist bereits mit Vulkan auf dem Video Core VI des Raspberry Pi 4 gezeichnet.

(Bild: Raspberry Pi Foundation)

Bergmeiers Talk, der als Stream und MP4-Datei von der Webseite zur FOSDEM 20 abrufbar ist, ist ein kurzes, anschauliches Lehrstück zur Treiberentwicklung aus unfertigen Versatzstücken. Interessant ist auch die Einschätzung Bergmeiers, dass auf Igalia und die Raspberry Pi Foundation noch etwa ein Jahr Entwicklung zukommt, bis der offizielle Linux-Treiber für Video Core VI in einer frühen Form fertig sein wird, die sich etwa für OpenArena eignet.

Ende Januar präsentierte Eben Upton immerhin schon ein gerendertes RGB-Dreieck, das der kommende offizielle Vulkan-Treiber gezeichnet hat.

Mehr Infos

gg

(ovw)