Was ist Vulkan und wie unterscheidet es sich von OpenGL?

150

Die Khronos Group (die Standardorganisation hinter OpenGL) hat Vulkan soeben angekündigt :

Vulkan ist die neue Generation der offenen Standard-API für den hocheffizienten Zugriff auf Grafiken und das Rechnen auf modernen GPUs. Dieses grundlegende Design, das früher als OpenGL-Initiative der nächsten Generation bezeichnet wurde, bietet Anwendungen eine direkte Steuerung der GPU-Beschleunigung für maximale Leistung und Vorhersagbarkeit.

Ihre Seite ist ziemlich Marketingsprache / Jargon -schwerer, wie in der Pressemitteilung ... In einfachen Worten, was bedeutet Vulkan bedeuten Entwickler zum Spiel? (Gabe Newell wird ohne weitere Erklärung mit Nachdruck dafür angeführt.)

In welcher Beziehung steht Vulkan genau zu OpenGL? Sein früherer Name "glNext" (kurz für "Next Generation OpenGL Initiative") lässt es wie einen Ersatz klingen.


Update: Die Vulkan 1.0-Spezifikation wurde am 16-02-2016 veröffentlicht.

Anko
quelle
3
Qo'noS und Vulcan ...
IllidanS4
14
Übersetzung für Leute, die die Star Trek- Strömung nicht verstehen : Khronos und Vulkan klingen wie Qo'noS und Vulcan ; die Heimatplaneten der klingonischen und vulkanischen Rassen. Leonard Nimoy , der Schauspieler von Spock (ein sehr beliebter Charakter), ist vor kurzem am 27.02.2015 verstorben, daher gibt es viele Spekulationen, dass der Name eine Hommage war. Es war jedoch ein Zufall: Der Vulkan- Markenantrag wurde am 19.02.2015 eingereicht. vor Nimoys Tod.
Anko
7
Auch Mantel -> Lava -> Vulkan -> Vulkan.
jmegaffin
1
@Boreal Vulkan == Vulkan in vielen Sprachen (deutsch, russisch (angepasst für cyr.), Etc.). Also ist es Mantle -> Lava -> Vulkan (Volcano) wirklich :)
user362515

Antworten:

118

Vulkan ist eine neue API für hardwarebeschleunigte Grafiken (und allgemeine Berechnungen) über herkömmliche GPUs. OpenGL wird weiterentwickelt, da es sich um eine API auf höherer Ebene handelt, als Vulkan beabsichtigt. Ursprünglich als "glNext" bezeichnet, kann man vermuten, dass Vulkan wahrscheinlich "OpenGL 5" werden würde, aber dass die Normungsbehörde schließlich entschied, dass ein neuer Name besser mit dem relativ sauberen Bruch zusammenfällt, den die API vorgibt, aus dem Bestehenden zu machen OpenGL-Paradigmen.

Bei den praktischen Vorteilen von Vulkan für Spieleentwickler geht es in erster Linie um die Kontrolle (wie zum Beispiel darum, mehr davon zuzulassen und möglicherweise bessere Optimierungen zu erzielen, was den Entwickler vorab erheblich mehr Arbeit einbringt). Speziell:

  • Die API ist auf die asynchrone Generierung von Befehlspuffern über mehrere Threads und die sequenzielle Verarbeitung dieser Puffer zu einer Befehlspipeline ausgerichtet. Dies spiegelt die Realität moderner Hardware wider. Die meisten bekannten und / oder leistungsfähigen Softwareprodukte, die auf OpenGL basieren, implementieren diese Art von Verhalten selbst. Die API-Unterstützung selbst bedeutet, dass Entwickler dieses Framework nicht selbst implementieren und warten müssen oder dies mit weniger Aufwand tun können.
  • Thread- und Speicherverwaltungsaufgaben werden der Anwendung und nicht dem Treiber überlassen, sodass Spieleentwickler mehr Kontrolle über diese Verhaltensweisen haben und diese Verhaltensweisen möglicherweise genauer auf die Anforderungen ihres jeweiligen Spiels abstimmen können.
  • Validierung und Diagnose Schichten können unabhängig voneinander aktiviert werden, in der Theorie so dass für bessere Tools Integration mit der API (etwas OpenGL selbst gelitten hat) und zum Sperren der übermäßigen Validierung, in der Theorie „ so dass die Grafiken auf Ebene drei “ sein , dass viel mehr performant.
  • Es gibt keinen Unterschied zwischen mobilen und Desktop-Versionen, der theoretisch die Portierung von plattformübergreifenden Spielen erleichtert und die Versionsprüfungsprobleme, die jeder hasst, verringert.

Vulkans sehr C-ähnliche / OpenGL-ähnliche oberflächliche Struktur (das Aussehen und Verhalten der API-Aufrufe usw.) ist jedoch besser typisiert (da nicht alles kahl ist int; es gibt relevante Typedefs usw.).

Es ist viel niedriger als OpenGL. Es ist zu erwarten, dass die operative Einrichtung und Komplexität zwischen OpenGL und Vulkan sprunghaft zunimmt, wie dies beim Übergang von D3D9 zu D3D10 zu beobachten war, bei dem dem API-Client wesentlich mehr Details des GPU-Gerätebetriebs enthüllt wurden. Der Übergang ähnelt eigentlich eher D3D11 zu 12, da D3D12 selbst eine sehr ähnliche API zu Vulkan ist, was die Funktionalität betrifft.

Josh
quelle
18
Es kann sich lohnen, darauf hinzuweisen, dass Vulkan im Grunde genommen eine stark iterierte Version von Mantle ist: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/… Die API-Konventionen scheinen DSA etwas ähnlich zu sein OpenGL, außer mit dem allgegenwärtigen glPräfix ersetzt durch vk: blog.imgtec.com/powervr/…
jmegaffin
Ich hatte angenommen, dass dies der Fall sein würde, aber bis zu diesem Link keine Beweise gesehen, danke.
Josh
3
Zu Ihrer Information, Sie werden in der Lage sein, die Spekulationen und Vermutungen nach Valves Präsentation am Donnerstag durch (einige) harte Fakten zu ersetzen, und das Moratorium für Khronos-Mitglieder, das weitere Details enthüllt, wird (größtenteils) aufgehoben.
Sean Middleditch
4
Ich finde das Shader-Bytecode-Ding ein wenig amüsant, wenn man bedenkt, dass es für Shader eine einfache Assembler-ähnliche Sprache gab, die dann durch eine komplexe Sprache (GLSL) ersetzt wurde, und jetzt kehren wir zu einer einfachen Bytecode-Sprache zurück.
immibis
2
Ich dachte, Vulkan würde, wie Mantle, neben OpenGL für einen einfacheren Zugriff stehen und ihn nicht vollständig ersetzen. Zumindest habe ich das bisher gelesen. Oder wird Vulkan sowohl Low-Level- als auch High-Level-Operationen abdecken?
Roy T.
18

Um auf die Zukunft von OpenGL einzugehen:

OpenGL kann eine mit Vulkan vergleichbare Leistung erzielen, und zwar in Bezug auf Zugriffe pro Sekunde, aber auch in Bezug auf den allgemeinen Treiber-Overhead:

  • Die neuesten OpenGL-Erweiterungen reduzieren den Treiberaufwand erheblich, indem sie alles bindungslos machen (z. B. ARB_direct_state_access(4.5-Kern) ,, ARB_bindless_texture...).
  • Bei persistentem Mapping ( ARB_buffer_storageCore in 4.4) kann die CPU direkt auf den Pufferspeicher zugreifen, daher ist die Synchronisation mit der GPU ebenso explizit wie bei Vulkan.
  • Zukünftige Erweiterungen wie NV_command_list(siehe Tristan Lorachs Präsentation Siggraph Asia 2014 ) werden OpenGL wahrscheinlich das gleiche "GPU-Fütterungsparadigma" bieten wie Vulkan.
Alex
quelle
11
Dies ist eigentlich keine Antwort auf die Frage für sich.
MichaelHouse
1

Khronos hat kürzlich die Veröffentlichung der brandneuen Vulkan-API angekündigt, die OpenGL und OpenGL ES ergänzen (und in einigen Fällen ersetzen) wird. Vulkan ist eine Low-Overhead-API, die entwickelt wurde, um Code "näher an Metall" zu bringen und Leistung und Effizienz zu steigern. Es basiert auf der Mantle API von AMD und die endgültige Spezifikation wird noch in diesem Jahr erwartet.

In diesem Beitrag - Ein kurzer Überblick über die Vulkan-API - erklärt der technische Redakteur von Toptal, Nermin Hajdarbegovic, warum Vulkan auf lange Sicht eine große Sache sein könnte. Es kann eine Weile dauern, aber diese plattformübergreifende API kann die 3D-Leistung auf bestimmten Geräten drastisch verbessern, insbesondere bei Multi-Core-Anwendungsprozessoren, die in Milliarden von Smartphones und Tablets verwendet werden.

Dmitry Pavlov
quelle
2
"Khronos hat kürzlich die Veröffentlichung der brandneuen Vulkan API angekündigt" Ähm, nicht bis zum 18. August. Es wurde von keiner Definition dieses Begriffs "freigegeben". Es ist jetzt der 8. Dezember und es wurde immer noch nicht veröffentlicht.
Nicol Bolas
2
@NicolBolas - Es hat jetzt. Es wurde heute veröffentlicht: khronos.org/vulkan
beatgammit