Android Grundlagen – Die Vulkan API erklärt!

Vulkan ist eine plattformübergreifende 3D-Grafik- und Berechnungs-API mit geringem Overhead. Vulkan zielt auf leistungsstarke Echtzeit-3D-Grafikanwendungen wie Videospiele und interaktive Medien auf allen Plattformen. Im Vergleich zu OpenGL und Direct3D 11 und wie Direct3D 12 und Metal soll Vulkan eine höhere Performance und eine ausgewogenere CPU/GPU-Nutzung bieten. Weitere wesentliche Unterschiede zu Direct3D 11 – und früher – und OpenGL ist, dass Vulkan eine deutlich niedrigere API und paralleles Tasking bietet. Vulkan hat außerdem die Fähigkeit, 2D-Grafikanwendungen zu rendern – ist aber im Allgemeinen am besten für 3D geeignet.

Neben der geringeren CPU-Auslastung ist Vulkan auch in der Lage, die Arbeit besser auf mehrere CPU-Kerne zu verteilen. Im Allgemeinen wird gesagt, dass Vulkan in der Laufzeit im Vergleich zu anderen APIs eine marginale bis polynomiale Beschleunigung bewirkt, wenn es auf der gleichen Hardware korrekt implementiert ist.

Vulkan wurde erstmals auf der GDC 2015 von der gemeinnützigen Khronos-Gruppe angekündigt. Die Vulkan API wurde von Khronos ursprünglich als „Next Generation OpenGL Initiative“ oder „OpenGL next“ bezeichnet, aber die Verwendung dieser Namen wurde eingestellt, sobald der Name Vulkan bekannt gegeben wurde. Vulkan basiert auf Komponenten der AMD Mantle API, die von AMD an Khronos gespendet wurde, mit der Absicht, Khronos eine Grundlage zu geben, auf der sie beginnen kann, eine Low-Level-API zu entwickeln, die in der gesamten Branche standardisiert werden kann, ähnlich wie OpenGL.

Vulkan Features

Vulkan soll eine Reihe von Vorteilen gegenüber anderen APIs sowie seinem Vorgänger OpenGL bieten. Vulkan bietet weniger Overhead, mehr direkte Kontrolle über den Grafikprozessor und eine geringere CPU-Auslastung. Das Gesamtkonzept und der Funktionsumfang von Vulkan ist ähnlich wie bei Direct3D 12, Metal und Mantle.

Zu den geplanten Vorteilen von Vulkan gegenüber APIs der vorherigen Generation gehören:

  • Vulkan API ist sowohl für High-End-Grafikkarten als auch für Grafikhardware auf mobilen Geräten gut geeignet. OpenGL hat hingegen eine spezielle Untermenge für mobile Geräte namens OpenGL ES; es ist immer noch eine alternative API in Vulkan unterstützenden Geräten.
  • Im Gegensatz zu Direct3D 12 ist Vulkan auf mehreren modernen Betriebssystemen verfügbar; wie OpenGL ist die Vulkan-API nicht an ein einziges Betriebssystem oder einen einzigen Geräteformfaktor gebunden. Ab Release läuft Vulkan auf Android, Linux, Tizen, Windows 7, Windows 8 und Windows 10 – frei lizenzierte Drittanbieterunterstützung für iOS und macOS ist ebenfalls verfügbar.
  • Reduzierter Treiber-Overhead, dadurch geringere CPU-Auslastung.
  • Reduzierte Belastung der CPUs durch den Einsatz von Batching, so dass die CPU mehr Rechen- und Rendering-Möglichkeiten hat als sonst.
  • Bessere Skalierung auf Multi-Core-CPUs. Direct3D 11 und OpenGL 4 wurden ursprünglich für den Einsatz mit Single-Core-CPUs entwickelt und erhielten nur Erweiterungen, die auf Multi-Cores ausgeführt werden sollten. Selbst wenn Anwendungsentwickler die Erweiterungen nutzen, skaliert die API regelmäßig nicht gut auf Multi-Cores.
  • OpenGL verwendet die High-Level-Sprache GLSL zum Schreiben von Shadern, was jeden OpenGL-Treiber zwingt, einen eigenen Compiler für GLSL zu implementieren, der zur Laufzeit der Anwendung ausgeführt wird, um die Shader des Programms in den Maschinencode der GPU zu übersetzen. Stattdessen sollen Vulkan-Treiber bereits übersetzte Shader in ein binäres Zwischenformat namens SPIR-V, den Standard Portable Intermediate Representation, einlesen, analog zum Binärformat, in das HLSL-Shader in Direct3D kompiliert werden. Durch die Möglichkeit der Shader-Vorkompilierung wird die Initialisierungsgeschwindigkeit der Anwendung verbessert und es kann eine größere Anzahl von Shadern pro Szene verwendet werden. Ein Vulkan-Treiber muss nur die GPU-spezifische Optimierung und Codegenerierung durchführen, was zu einer einfacheren Treiberwartung und eventuell kleineren Treiberpaketen führt – derzeit müssen GPU-Anbieter noch OpenGL/CL einbinden.
  • Einheitliche Verwaltung von Computerkernen und grafischen Shadern, wodurch die Verwendung einer separaten Compute-API in Verbindung mit einer Grafik-API überflüssig wird.
OpenGL Vulkan
Eine einzige globale Zustandsmaschine Objektbasiert ohne globalen Status
Zustand ist an einen einzigen Kontext gebunden Alle Zustandskonzepte sind in einem Befehlspuffer lokalisiert.
Operationen können nur sequentiell ausgeführt werden Multi-Thread-Programmierung ist möglich
GPU-Speicher und Synchronisation sind in der Regel versteckt Explizite Kontrolle über Speicherverwaltung und Synchronisation
Umfangreiche Fehlerprüfung Vulkan-Treiber führen keine Fehlerprüfung zur Laufzeit durch; es gibt eine Validierungsschicht für Entwickler

NVIDIA merkt an, dass OpenGL immer noch eine großartige Option für viele Anwendungsfälle ist, da es eine viel geringere Komplexität und einen geringeren Wartungsaufwand als Vulkan aufweist, während es in vielen Fällen immer noch eine großartige Gesamtleistung bietet. AMD sagt, dass Vulkan eine Metal-nahe Steuerung unterstützt, die eine schnellere Leistung und bessere Bildqualität unter Windows 7, Windows 8.1, Windows 10 und Linux ermöglicht. Keine andere Grafik-API bietet die gleiche leistungsstarke Kombination aus Betriebssystem-Kompatibilität, Rendering-Funktionen und Hardware-Effizienz.

Geplante Features

Auf der SIGGRAPH 2016 kündigte Khronos an, dass Vulkan Unterstützung für automatische Multi-GPU-Funktionen erhalten würde, ähnlich dem, was Direct3D 12 bietet. Die in der API enthaltene Multi-GPU-Unterstützung macht SLI oder Crossfire überflüssig, für die Grafikkarten des gleichen Modells erforderlich sind. API Multi-GPU erlaubt es der API stattdessen, die Arbeitslast intelligent auf zwei oder mehr völlig verschiedene Grafikprozessoren aufzuteilen. Beispielsweise können integrierte GPUs auf der CPU in Verbindung mit einem dedizierten High-End-Grafikprozessor für eine leichte Leistungssteigerung verwendet werden.

Bei der Veröffentlichung von OpenCL Version 2.2 kündigte die Khronos Group an, dass OpenCL in Zukunft mit Vulkan fusionieren wird.

Advertisements

Ein Kommentar zu „Android Grundlagen – Die Vulkan API erklärt!

Gib deinen ab

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a website or blog at WordPress.com

Nach oben ↑

%d Bloggern gefällt das: