Vulkan 1.0, il vero rivale delle DirectX 12

Vulkan è la prima API grafica prodotta da Khronos Group, che fonda le sue basi su AMD Mantle ma è ora compatibile con tantissimi dispositivi, offrendo inoltre un buon supporto alla realtà virtuale.

speciale Vulkan 1.0, il vero rivale delle DirectX 12
Articolo a cura di
Daniele Vergara Daniele Vergara viene alla vita con un chip Intel 486 impiantato nel cervello, a mo' di coprocessore. E' più che entusiasta di tutto ciò che riguarda la tecnologia intera e i videogames, con un occhio di riguardo verso l'hardware PC e l'overclocking. D'inverno ama snowboardare, macinando km e km di piste. Lo trovate su Facebook, Twitter e Google+.

Khronos Group è un consorzio aperto che si occupa principalmente dello stabilire degli standard su API open source, cioè libere da royalty di qualsivoglia tipologia. Non tutti gli utenti lo sapranno ma, circa due anni fa, il gruppo presentò il progetto di una nuova libreria grafica, che si candidò ad essere il reale successore delle oramai defunte e poco utilizzate OpenGL - ed OpenGL ES. Il nome scelto da Khronos fu Vulkan, una API che oggigiorno è probabilmente l'unica, concreta rivale delle DirectX 12. E' la prima volta che il consorzio progetta e mette in campo delle API grafiche, e chiaramente ha tutta l'intenzione di farne un successo e progredire anche in tale ambito. Alla luce delle informazioni diffuse fino ad oggi, cerchiamo di capire quali sono le peculiarità di queste librerie, che si preannunciano come le vere antagoniste delle DirectX 12.

Panoramica su Vulkan 1.0

Vulkan deve le sue fondamenta ad AMD Mantle, su cui basano gran parte delle sue caratteristiche di basso livello. Khronos si è rifatta all'API dell'azienda di Sunnyvale e, per tale motivo, ha potuto velocizzare gli sviluppi e portare sin da subito un set di funzioni piuttosto maturo. Sulla carta, però, Vulkan si candida ad essere l'erede low-level delle OpenGL. Mettere a disposizione degli sviluppatori un'API di basso livello è diventato sempre più rilevante, in quanto ogni developer può ottimizzare sempre più parametri in base agli scopi prefissati. Con OpenGL, ad esempio, non era previsto decidere direttamente quali thread si facessero carico di un determinato workload grafico, fattore che poteva fare la differenza grazie ad una più efficiente gestione dei moderni processori a più core. Con Vulkan, è l'applicazione ad essere responsabile dell'allocazione della memoria e dei thread disponibili, i cui dati ed istruzioni possono essere direttamente manipolati e messi in coda come più conviene. E' possibile così incrementare il livello di parallelismo fra i core della CPU e quindi diminuire i colli di bottiglia. Tramite i driver si può ottenere un controllo più fine su tutto il sistema e, in maniera più rilevante, sulla scheda grafica.
Oltre alla gestione low-level, un altro degli aspetti su cui Khronos punta per la diffusione di Vulkan è la sua ampia compatibilità. L'API è infatti supportata da molti sistemi operativi, sia mobile che non, a differenza di OpenGL ed OpenGL ES: come ricorderete, la prima ha abbracciato la maggior parte dei videogiochi desktop, mentre la seconda è di fattura più recente ed è apprezzata su dispositivi quali smartphone o tablet. Vulkan vuole fare quello e quell'altro, snaturando ambiziosamente la scissione di OpenGL, che oramai appartiene al passato. Essa dovrebbe quindi poter lavorare con la stragrande maggioranza dell'hardware in circolazione, offrendo i suoi servizi sia a Windows che a Linux. Le DirectX 12, invece, sono strettamente legate a 10, l'ultimo sistema operativo di Microsoft, mentre Vulkan è compatibile anche con Windows 8, Windows 7 e persino con il vetusto Windows XP. Questa peculiarità di Vulkan le dà un chiaro vantaggio su DirectX, e non obbliga gli utenti che ne vogliono beneficiare ad aggiornare il proprio sistema operativo.
Khronos non ha fatto comunque alcun riferimento a nessuna scheda grafica, e non conosciamo fino a quale famiglia il consorzio si spingerà in merito al supporto.
Anche Google ha confermato la compatibilità con Vulkan, ed ovviamente si è riferita ad Android. L'azienda statunitense non ha ancora fatto sapere come e quando integrerà l'API nel proprio OS mobile, ma ci aspettiamo novità a partire dalla prossima release del sistema del robottino verde, e cioè da Android N. NVIDIA ha invece affermato che, per il proprio hardware mobile, Vulkan sarà supportato a partire da Marshmallow, quindi le possibilità che altri dispositivi (oltre a quelli Android 7.0) ottengano la certificazione per l'API non sono poi così remote. Gli unici sistemi operativi ad essere stati tagliati fuori sono quelli targati Apple. Khronos ha fatto sapere che l'azienda di Cupertino è voluta rimanere lontano dai suoi piani, e possiamo immaginare perché. Apple sta curando e sviluppando la sua API grafica, cioè Metal. Il supporto a Metal è stato infatti di recente esteso anche al sistema operativo desktop, ovvero OS X. E' chiaro che la società vuole puntare solo e soltanto su Metal, rendendo chiusi i propri device a qualsiasi altra soluzione.

Vulkan: driver ed hardware

Al fine di servire le necessità sia dei dispositivi desktop che di quelli mobile, Khronos ha dovuto necessariamente offrire un feature set più ricco. Un feature set non è altro che un insieme di funzionalità e semplificazioni garantite a chi usa le librerie. E' chiaro che differenti sistemi operativi potranno attingere ad una quantità di funzioni diverse, e sembra anche che gli ingegneri dietro ai vari OS possano scegliere di creare il proprio feature set. Khronos ha solo instaurato e comunicato un meccanismo di progettazione, ma poi non ha posto particolari limiti. Google, ad esempio, ha affermato che per Android farà uso di quello da lei progettato, mentre Microsoft non ha ancora preso una decisione in merito. Dal canto suo, Linux ha stabilito invece di affidarsi alle funzionalità messe a disposizione da Khronos stessa, che però devono ancora essere implementate. Probabilmente, considerato che del codice beta è stato già rilasciato, Khronos sta aspettando un feedback dagli sviluppatori, in modo tale che possa modellare le funzionalità e renderle quanto più vicine possibile ai bisogni degli stessi. La strada più semplice sarebbe quella di mettere a disposizione dei developer un feature set simile a quello di OpenGL 4.5 e a quello di OpenGL ES 3.1, rispettivamente per i sistemi operativi desktop e mobile. In questo caso potremmo avere delle funzioni identiche sia per Windows che per Linux, a patto che Microsoft decida di rivolgersi direttamente a Khronos.

Le sperimentazioni preliminari di Vulkan

I primi test di conformità di Vulkan sono già stati avviati, e il gruppo ha affermato di aver già prodotto ben trenta driver funzionanti per i sistemi operativi supportati. Essi sono stati ovviamente distribuiti fra i vari produttori hardware, tra i quali segnaliamo Intel ed Imagination Technologies sul fronte Linux e Qualcomm per Android 6.0. NVIDIA è l'azienda che ha mostrato più interesse su Vulkan, in quanto ha già sviluppato i driver sia per Linux, sia per Windows 7, 8, 10, che per Android Marshmallow. Attualmente, Khronos sta valutando il driver di ARM per Linux, così come quello di AMD per i sistemi Windows, che è in fase beta.

Oltre al software - che è la questione meno spinosa - è interessante capire come verranno gestiti i prodotti appartenenti alle generazioni precedenti. Imagination Technologies, ARM e Qualcomm hanno una vasta gamma di GPU, sul mercato da diverso tempo, e purtroppo non sappiamo ancora fino a dove si estenderà il supporto, probabilmente perché i feature set non sono ancora stati ben definiti. NVIDIA, AMD ed Intel sono state le uniche ad aver dato qualche certezza sotto questo punto di vista: la prima ha affermato che le schede grafiche ad essere compatibili con Vulkan saranno quelle da Kepler in poi, a differenza di quelle che possono lavorare con le DirectX 12, che partono dall'architettura Fermi; la seconda ha reso noto che le schede con design Graphics Core Next 1.0 o superiore saranno le uniche a poter lavorare con Vulkan; Intel ha invece fatto sapere che la compatibilità sarà garantita solo per le GPU integrate nei processori Broadwell o più recenti. A tal proposito, alcune voci parlano anche di un supporto per quelle delle CPU Ivy Bridge ed Haswell, ma per adesso non c'è nulla di confermato.

Vulkan Siamo ancora lontani dalla vasta adozione dell’API grafica di Khronos Group. Essa ha dichiarato che Vulkan è fatta in buona parte per venire incontro alle stringenti necessità della realtà virtuale e, esaminando brevemente i principi su cui essa si fonda, noi ci crediamo. Vulkan, rispetto al passato e ad OpenGL, sarebbe capace di portare l’overhead e la latenza ad un livello molto più basso, parametri che nelle applicazioni VR sono assolutamente fondamentali. Allo stato attuale, l’unico titolo che può vantare il supporto a Vulkan - in fase di beta - è The Talos Principle. Gli sviluppatori di Croteam, la software house che produce il videogioco, hanno però dichiarato che Vulkan è stato solo implementato a scopi dimostrativi, e che non mette in mostra tutte le potenzialità dell’API. The Talos Principle è un videogame che non punta troppo sull’aspetto estetico, e che conseguentemente non beneficia molto del controllo più granulare (sulle draw call e sul rendering, ad esempio) che Vulkan rende possibile. Ad ogni modo, altre demo sono sulla strada del rilascio, e The Talos Principle non sarà di certo l’unico a sfruttare l’API di Khronos Group. Come abbiamo detto inizialmente, è già disponibile un software development kit che gli sviluppatori possono utilizzare per ampliare la diffusione di Vulkan. Questo è solo l’inizio, e le buone premesse sembrano esserci tutte. Aspettiamo di analizzare l’andamento e le performance dell’API, sperando però che le sorti siano diverse da quelle che sono state riservate a Mantle.