Ein erster Blick auf die Grafik-API Vulkan
Seite 2: Einsatz
Vulkan mobil und virtuell
heise Developer: Für Mobilgeräte entwickelte GPUs sind vom Leistungsumfang her ihren Desktopkollegen in einigen Fällen unterlegen. Vulkan soll jedoch für den Einsatz auf allen Endgeräten ausgelegt sein: Sehen Sie hier Probleme auf Entwickler zukommen?
Zur Person: Tobias Hector
hat 2010 seinen Bachelor-Abschluss in Computer Games Technology an der Manchester Metropolitan University gemacht. Seitdem ist er bei Imagination Technologies tätig, wo er zunächst über viereinhalb Jahre als Developer Technology Engineer arbeitete. Seit dem Frühjahr 2015 hat er eine Stelle als Software Design Engineer inne.
T. Hector: High-End-GPUs für Handcomputer haben mittlerweile mehr oder weniger Funktionsparität mit ihren Äquivalenten aus dem Desktopbereich. So hat die aktuellste Ausgabe unseres PowerVR Series7XT Hardwarevirtualisierung, Tessellierung und diverse Arithmetic Logic Units der Bauarten FP64/FP32/FP16. Zudem lässt sich Rechenleistung für Grafiken und sonstige Berechnungen auf bis zu ein TeraFLOP hochskalieren.
Als einziger Schwachpunkt gilt die Speicherbandbreite. Das liegt daran, dass es sich dabei um den größten Stromfresser handelt – allerdings ist das nicht ungewöhnlich, auf vielen System on Chips (SoCs) ist die Speicheranbindung für den meisten Stromverbrauch verantwortlich.
Wie dem auch sei: Vulkan ist eine einheitliche API für Desktop- und Mobilgerät. Entwickler können zur Laufzeit feststellen, ob sich gewisse Features einsetzen lassen (Stichworte sind hier Sparse Images und Geometrie-Shader).
heise Developer: AMD schlug vor einiger Zeit die direkte Zuordnung der Grafikhardware in VR-Situationen vor: Eine GPU handhabt das linke, die andere das rechte Auge. Unterstützt Vulkan entsprechende Datensätze oder ist das von DirectX notwendige Spiegeln der Informationen auch hier erforderlich?
T. Hector: Die Datenhaltung in Vulkan ist Verantwortung des Entwicklers. Wenn jede GPU ihren eigenen Speicherbereich mitbringt, lässt sich jede von der Anwendung mit den für sie benötigten Informationen ausstatten.
heise Developer: Wird Vulkan für ältere Hardware portiert?
T. Hector: Vulkan wird alle GPUs unterstützen, die die in OpenGL ES 3.1 festgelegten Hardwarespezifikationen unterstützen. Das Anbieten eines passenden Treibers liegt dann in Händen des GPU-Herstellers.
Wir werden unseren Kunden einen Vulkan-Treiber für alle derartigen GPUs zur Verfügung stellen. Das bedeutet, dass alle von den Familien PowerVR Rogue und Rogue abgeleiteten GPUs ab inklusive Series6 Unterstützung finden (Series6, Series6XT/6XE, Series7XE/7XT, GR6500).
Einsatzgebiete und neue Möglichkeiten
heise Developer: Die von Valve mit der Entwicklung eines Vulkan-Treibers beauftragte Firma LunarG geht davon aus, dass man OpenGL theoretisch auf Basis von Vulkan neu implementieren könnte. Was halten Sie davon?
T. Hector: Aus technischer Sicht ist es möglich: Wir rechnen damit, dass im Laufe der Zeit diverse Werkzeuge auf den Markt kommen. Ein Plan für eine spezifische Implementierung von OpenGL ist uns indes noch nicht bekannt.
Allerdings finden im Moment eine Unmenge von Versuchen und Forschungsprojekten statt. Es ist durchaus vorstellbar, dass hier auch Implementierungen anderer Grafikschnittstellen darunter sind.
heise Developer: OpenCL-Skripte lassen sich in das Vulkan-Intermediärformat SPIR umwandeln. Wird Vulkan ihrer Meinung nach auch im GPGPU-Bereich Einsatz finden?
GPGPU
Die Abkürzung GPGPU steht für General-purpose computing on graphics processing units. Hierbei nutzen Entwickler die GPU zum Erledigen von Berechnungen, die streng genommen nichts mehr mit der ursprünglichen Aufgabe des Prozessors im Grafikbereich zu tun haben. Die in der wissenschaftlichen Informatik etablierte Technik dürfte aufgrund ihrer guten Eignung zur Simulation von physikalischen Effekten in Spielen immer wichtiger werden. Um Vorteile aus ihr ziehen zu können, ist häufig ein hohes Maß an Parallelisierbarkeit der Aufgaben nötig.
T. Hector: Lassen Sie mich das mit der englischen Tagline zum Standard beantworten – sie lautet "Graphics and Compute belong together!". Vulkan unterstützt die für GPGPU benötigten Compute Command Queues. Folglich kann man die Frage also nur mit "Ja" beantworten.
heise Developer: Zwar war das im März "beerdigte" Mantle auf AMD-Systeme beschränkt und kein Industriestandard, wie es Vulkan werden soll, allerdings hätte sich das Unternehmen einen größeren Erfolg für die Schnittstelle erhofft. Das gilt allerdings auch für viele Entwickler, die Zeit in das Erlernen gesteckt haben. Was soll Programmierer nun in Bezug auf Vulkan dazu motivieren, den Aufwand der Umstellung ihres geistigen Eigentums auf sich zu nehmen?
T. Hector: Vulkan bietet Entwicklern eine so nie dagewesene Möglichkeit zur direkten Kontrolle der GPU an. Es ist klar, dass das auf Seiten der Programmierer ein Umdenken voraussetzt, denn viele bisher vom Treiber erledigte Jobs muss nun das Spiel beziehungsweise die App erledigen.
Wahrscheinlich werden anfangs nur diensterfahrene Entwickler ihre Anwendungen umstellen, der Rest des Markts folgt dann im Laufe des Aufbaus des Ökosystems. Die Übergangsphase wird mit Sicherheit lang, denn OpenGL ES wird so lange weiter unterstützt, wie von Seiten der Industrie daran Bedarf besteht.
heise Developer: Vielen Dank für das Gespräch.
Die Fragen stellte Tam Hanna. (jul)