Che cos'è Vulkan e in cosa differisce da OpenGL?


151

Khronos Group (l'ente normativo dietro OpenGL) ha appena annunciato Vulkan :

Vulkan è la nuova generazione di API standard aperte per un accesso ad alta efficienza alla grafica e al calcolo su GPU moderne. Questo design innovativo, precedentemente denominato OpenGL di prossima generazione, offre il controllo diretto delle applicazioni sull'accelerazione della GPU per massimizzare le prestazioni e la prevedibilità.

La loro pagina è piuttosto pesante / gergo di mercato, così come il comunicato stampa ... In termini semplici, cosa significa Vulkan per gli sviluppatori di giochi? (Gabe Newell è citato come fortemente favorevole, senza ulteriori spiegazioni.)

Qual è esattamente la relazione di Vulkan con OpenGL? Il suo nome precedente "glNext" (abbreviazione di "Next Generation OpenGL Initiative") lo fa sembrare un rimpiazzo.


Aggiornamento: le specifiche di Vulkan 1.0 sono state rilasciate il 16-02-2016.


3
Qo'noS e Vulcan ...
IllidanS4

14
Traduzione per le persone che non catturano la deriva di Star Trek : Khronos e Vulkan suonano come Qo'noS e Vulcan ; i pianeti del pianeta natale delle razze Klingon e Vulcan. Leonard Nimoy , l'attore di Spock (un personaggio molto popolare) recentemente è morto il 27-02-2015, quindi la speculazione abbonda che il nome era un tributo. Tuttavia, è stato un caso: la richiesta di marchio Vulkan è stata depositata il 19-02-2015; prima della morte di Nimoy.
Anko

7
Anche Mantello -> Lava -> Vulcano -> Vulkan.
Jmegaffin,

1
@Boreal Vulkan == Vulcano in molte lingue (tedesco, russo (adattato per cir), ecc.). Quindi è Mantle -> Lava -> Vulkan (Vulcano) davvero :)
user362515

Risposte:


119

Vulkan è una nuova API per la grafica accelerata dall'hardware (e il calcolo generale) tramite GPU tradizionali. OpenGL continuerà a essere sviluppato, poiché si tratta di un'API di livello superiore rispetto a quella che Vulkan dovrebbe essere. Originariamente riferito a "glNext", si può dedurre che Vulkan sarebbe probabilmente diventato "OpenGL 5", ma che il corpo degli standard alla fine decise che un nuovo nome sarebbe meglio coincidere con la rottura relativamente pulita che l'API pretende di fare dall'esistente Paradigmi OpenGL.

I vantaggi pratici di Vulkan per gli sviluppatori di giochi riguardano principalmente il controllo (ad esempio, consentendone di più, potenzialmente consentendo migliori ottimizzazioni a costo di un lavoro significativamente più iniziale da parte dello sviluppatore). In particolare:

  • L'API è orientata alla generazione asincrona di buffer di comando su più thread e all'elaborazione sequenziale di tali buffer su una pipeline di comandi. Ciò riflette le realtà dell'hardware moderno. La maggior parte dei software di alto profilo e / o ad alte prestazioni basati su OpenGL oggi implementano questo tipo di comportamento; avere l'API stesso supporta questo fatto che gli sviluppatori non devono implementare e mantenere quel framework da soli, o che possono farlo con meno sforzo.
  • Le attività di gestione dei thread e della memoria sono lasciate all'applicazione, non al driver, consentendo agli sviluppatori di giochi un maggiore controllo su tali comportamenti e quindi una personalizzazione potenzialmente più accurata di tali comportamenti in base alle esigenze dei singoli giochi.
  • I livelli di convalida e diagnostica possono essere abilitati in modo indipendente, consentendo in teoria una migliore integrazione degli strumenti con l'API (qualcosa di cui OpenGL stesso ha sofferto) e disabilitando una convalida eccessiva, in teoria consentendo " la grafica al livello tre " di essere molto più performante.
  • Non esiste un forte differenziale API tra le versioni mobile e desktop, che in teoria faciliterà il porting di giochi multipiattaforma e se non altro ridurrà il mal di testa di controllo della versione che tutti odiano.

Vulkan è molto simile a C / OpenGL nella struttura superficiale (l'aspetto delle chiamate API, eccetera. Tuttavia, è meglio digitato (in quanto non tutto è nudo int; ci sono typedef rilevanti e così via).

È di livello molto più basso di OpenGL. Ci si può aspettare un salto nella configurazione operativa e nella complessità tra OpenGL e Vulkan, come si è visto nella transizione da D3D9 a D3D10, che ha esposto molto più dettagli sul funzionamento del dispositivo GPU al client API. La transizione è in realtà più simile a D3D11 a 12, poiché D3D12 è essa stessa un'API molto simile a Vulkan, dal punto di vista delle capacità.


18
Potrebbe essere utile sottolineare che Vulkan è fondamentalmente una versione altamente iterata di Mantle: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/… Le convenzioni API sembrano in qualche modo simili a DSA OpenGL, tranne con l'onnipresente glprefisso sostituito con vk: blog.imgtec.com/powervr/…
jmegaffin

Pensavo che sarebbe stato così, ma non avevo visto alcuna prova fino a quel link, grazie.
Josh

3
Cordiali saluti, sarete in grado di sostituire la speculazione e le ipotesi con (alcuni) fatti concreti dopo la presentazione di Valve giovedì e la moratoria sui membri di Khronos che rivelano maggiori dettagli è (per lo più) revocata.
Sean Middleditch

4
Trovo la cosa del bytecode dello shader leggermente divertente, considerando che per gli shader esisteva un semplice linguaggio simile ad un assembly, e poi è stato sostituito da un linguaggio complesso (GLSL), e ora torniamo a un semplice linguaggio bytecode.
immibis

2
Pensavo che Vulkan, come Mantle, sarebbe rimasto accanto a OpenGL per un accesso più basso, non per sostituirlo completamente. Almeno questo è quello che ho letto finora. O Vulkan coprirà le operazioni sia di basso che di alto livello?
Roy T.

18

Per approfondire il futuro di OpenGL:

OpenGL potrebbe ottenere prestazioni comparabili a Vulkan, in chiamate al secondo, ma anche per quanto riguarda i costi generali del driver:

  • Le estensioni OpenGL più recenti in realtà rimuovono un sacco di sovraccarico del driver rendendo tutto senza legame (ad es. ARB_direct_state_access(4.5 core) ,, ARB_bindless_texture...).
  • Con la mappatura persistente ( ARB_buffer_storage, core in 4.4) è possibile accedere direttamente alla memoria buffer dalla CPU, quindi anche la sincronizzazione con la GPU è esplicita, proprio come Vulkan.
  • Le future estensioni come NV_command_list(vedi la presentazione Siggraph Asia 2014 di Tristan Lorach ) forniranno ad OpenGL lo stesso "paradigma di alimentazione GPU" di Vulkan.

11
Questa non è in realtà una risposta alla domanda da sola.
MichaelHouse

1

Khronos ha recentemente annunciato il rilascio della nuovissima API Vulkan, che completerà (e in alcuni casi sostituirà) OpenGL e OpenGL ES. Vulkan è un'API a basso costo progettata per avvicinare il codice al metal, aumentando le prestazioni e l'efficienza. Si basa sull'API Mantle di AMD e le specifiche finali sono attese entro la fine dell'anno.

In questo post - Una breve panoramica dell'API di Vulkan - L'editore tecnico di Toptal Nermin Hajdarbegovic spiega perché Vulkan potrebbe essere un grosso problema a lungo termine. Potrebbe volerci un po 'di tempo, ma questa API multipiattaforma potrebbe migliorare drasticamente le prestazioni 3D su alcuni dispositivi, in particolare i processori di applicazioni multi-core utilizzati in miliardi di smartphone e tablet.


2
"Khronos ha recentemente annunciato il rilascio della nuovissima API Vulkan" Um, non a partire dal 18 agosto. Non è stato "rilasciato" da nessuna definizione di quel termine. È l'8 dicembre e non è ancora stato rilasciato.
Nicol Bolas,

2
@NicolBolas - Ora ha. È stato lanciato oggi: khronos.org/vulkan
beatgammit,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.