Il primo vero rivale delle DirectX 12 è finalmente arrivato. Il suo nome è Vulkan ed è sviluppato da Khronos Group, un consorzio fondato nel 2000 e che ha come obiettivo quello di realizzare e promuovere API aperte, libere da royalties per coadiuvare gli sviluppatori nella realizzazione di contenuti multimediali di qualità e gli utenti finali nella riproduzione degli stessi.
Che cos’è Vulkan
Vulkan è una libreria grafica a basso livello alla quale ci si riferisce comunemente con termine API (Application Programming Interface). Vulkan, infatti, mette a disposizione specifici strumenti che consentono al software di interfacciarsi con l’hardware e, in particolare, con la scheda video.
I linguaggi di programmazione ad alto livello sono caratterizzati da una significativa astrazione dai dettagli del funzionamento di un calcolatore e dalle caratteristiche del linguaggio macchina. Si pensi a Java o a qualunque altro linguaggio di programmazione simile: semplici sintassi consentono di realizzare operazioni viceversa complesse da implementare a basso livello.
Un ciclo loop o una struttura di controllo come if…then…else sono costrutti semplicissimi da implementare con un linguaggio ad alto livello.
Le librerie grafiche ad alto livello prendono in carico problematiche quali la gestione delle risorse di sistema, ottimizzano il livello di astrazione e fanno sì che lo sviluppatore possa concentrarsi sugli aspetti che più gli interessano (nel caso di un videogioco, il movimento dei personaggi, la creazione delle scene e dei vari effetti).
Le librerie grafiche a basso livello, di contro, consentono di realizzare codice immediatamente comprensibile dalla GPU ed offrono al programmatore un’ampia visibilità su ciò che avviene lato hardware. Questo tipo di sviluppo richiede, ovviamente, maggiori competenze tecniche ed è generalmente molto più dispendioso anche in termini di tempo.
Quali sono le migliorie che introduce Vulkan
Poco meno di due anni fa, il Khronos Group ha ricevuto un bel regalo da AMD: la società di Sunnyvale (California) ha infatti deciso di donare al consorzio tutto il lavoro fino allora svolto per quanto riguarda lo sviluppo dei driver a basso livello Mantle.
Come abbiamo spiegato nell’articolo Vulkan, successore di OpenGL supportato da AMD e NVidia, tuttavia, a giugno 2014 iniziò un’avventura tutta nuova perché il Khronos Group da allora in avanti si attivò per rendere Vulkan compatibile con ogni piattaforma ed architettura.
Diversamente ad esempio da OpenGL, Vulkan è sempre rimasta una libreria grafica a basso livello. Oltre ai benefici intrinseci in termini prestazionali derivanti dall’utilizzo di API capaci di dialogare direttamente con l’hardware, Vulkan riduce l’overhead eliminando le informazioni non essenziali trasferite alla API responsabile del rendering grafico.
Si tratta di un obiettivo a cui stanno guardando in tanti: anche le DirectX 12 e Apple Metal cercano di ridurre il set di funzioni da passare alle API in modo tale da sveltire le elaborazioni grafiche. In questo modo, è possibile generare un maggior numero di poligoni o di effetti per secondo inserendo ad esempio nuovi effetti grafici; in alternativa, si otterrà un risultato migliore dal punto di vista del numero di frame per secondo (fps) prodotti.
Vulkan, poi, gestisce in maniera migliore l’elaborazione parallela da parte di più schede grafiche e riduce in maniera incisiva le necessità di richiamare l’utilizzo della CPU.
Le nuove librerie, inoltre, semplificano lo sviluppo dei cosiddetti shaders ovvero di quegli strumenti che vengono utilizzati per determinare l’aspetto finale della superficie di un oggetto.
Il pacchetto di sviluppo per Vulkan (SDK) si chiama LunarG: esso consente agli sviluppatori di iniziare a programmare sulla piattaforma preferita, sia essa Windows o Linux.
A breve, sotto la spinta di Google, anche Android integrerà il supporto per Vulkan.
Il progetto LunarG è stato invece finanziato da Valve, una delle case videoludiche più famose ed apprezzate a livello mondiale. Ed è proprio The Talos Principle, distribuito da Valve attraverso la sua piattaforma Steam il primo videogioco compatibile con Vulkan.
Le piattaforme supportate da Vulkan
Uno dei più convinti sostenitori di Vulkan, come accennato in precedenza, è Gabe Newell, cofondatore e amministratore delegato di Valve e Steam.
Vulkan viene ritenuto come la giusta leva per decretare il successo di Steam OS, sistema operativo specifico per i videogiochi. I driver OpenGL attualmente utilizzati non riescono, in gran parte delle situazioni, a competere con le prestazioni garantite ad esempio dalle librerie DirectX 11 di Microsoft.
Ma mentre le ultimissime DirectX 12 supportano solo Windows 10 (vedere Windows 10 e DirectX 12: schede grafiche compatibili), Vulkan supporta una vastissima schiera di sistemi operativi: oltre a Linux, da Windows XP compreso fino a Windows 10.
AMD (Radeon Software Beta) e NVIDIA hanno già rilasciato i rispettivi driver aggiornati capaci di supportare Vulkan.
Mentre per il momento Google non ha annunciato alcuna novità, NVIDIA afferma – in una nota ufficiale – che il supporto per Vulkan sarà introdotto già nell’attuale versione di Android, la 6.0 Marshmallow.
La “grande assente” è Apple: dopo aver inizialmente partecipato al gruppo di lavoro per lo sviluppo delle specifiche Vulkan, la società di Tim Cook ha fatto un deciso passo indietro preferendo concentrare gli sforzi esclusivamente su Metal, API a basso livello dell’azienda di Cupertino, che sono state portate anche su Mac OS X.
Allo stato attuale, però, Metal non integra una gestione degli shaders equiparabile con quella di DirectX 12 e Vulkan. Il risultato è che le prestazioni sono indubbiamente inferiori rispetto alle librerie grafiche rivali.
Apple, comunque, è ancor’oggi parte del gruppo di lavoro Vulkan: non è escluso, quindi, che la posizione della Mela possa mutare nel prossimo futuro.
Schede grafiche supportate da Vulkan
AMD consente di utilizzare le API Vulkan con tutte le sue schede video rilasciate sul mercato a partire all’incirca da quattro anni fa.
Il supporto di Vulkan è infatti garantito per tutte le schede video basate su chip Graphics Core Next (GCN) 1.0 o successivo. Insomma, dalla Radeon HD 7700 in avanti.
Per quanto riguarda NVIDIA, le schede grafiche supportate da Vulkan sono quelle basate su architettura Kepler e Maxwell (serie 600 e successive).
A quanto ne sappiamo, anche Intel offre il supporto per Vulkan con le schede integrate nelle CPU Broadwell (Iris Pro 6200, ad esempio) e successive.
Per ciò che concerne il supporto di Vulkan da parte delle GPU usate sui dispositivi mobili, le notizie sono ancora poche e frammentarie. Bisogna prima attendere, infatti, che Google rilasci le specifiche Vulkan per Android in modo da tirare le prime somme.
ARM, Imagination Technologies (GPU PowerVR usate da Apple e da altri produttori) e Qualcomm dovrebbero essere subito della partita ma i dettagli arriveranno nelle settimane a venire.
I problemi di Vulkan
Il problema che rende Vulkan incapace di misurarsi “faccia a faccia”, ad armi pari, con DirectX 12 è una sua caratteristica basilare ovvero il supporto multipiattaforma.
Vulkan non è in alcun modo legato, quindi, all’utilizzo del WDDM (Windows Display Driver Model) 2.0, introdotto nella sua ultima versione insieme con Windows 10 ed utilizzato da Microsoft per migliorare le performance dei driver grafici.
Quindi, nonostante tutto il lavoro di ottimizzazione che possa essere svolto, è molto difficile – per non dire impossibile – che in Windows 10 Vulkan possa comportarsi meglio rispetto alle DirectX 12.
Un altro problema, poi, è che anche i driver delle schede video dovranno essere ulteriormente ottimizzati. The Talos Principle, ad esempio, ha evidenziato con Vulkan prestazioni nettamente migliori a OpenGL 11 ma più contenute rispetto alle DirectX 11.