Vulkan: le nuove OpenGL pronte a sfidare le DirectX 12

Il Khronos Group ha annunciato Vulkan, una nuova API di basso livello che raccoglie l'eredità delle OpenGL per proiettarsi nel futuro.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Le Next Generation OpenGL (glNext) hanno finalmente un nome, Vulkan. Come Mantle, DirectX 12 e Apple Metal, le nuove librerie - svelate alla GDC 2015 - diventano delle API di basso livello in grado di sfruttare meglio le caratteristiche dell'hardware, in modo da offrire maggiori prestazioni e funzionalità più avanzate.

Vulkan

Vulkan è una API grafica cross-platform aperta e, come tale, punta a offrire in un'unica entità ciò che finora era disponibile in modo separato con le OpenGL da una parte e le OpenGL ES dall'altra.

Vulkan

Vulkan - clicca per ingrandire

Al momento lo sviluppo dell'API non è ancora terminato (le specifiche arriveranno entro l'anno), ma il Khronos Group che ne presiede lo sviluppo ha già dichiarato che le librerie saranno compatibili con ogni piattaforma che supporta le OpenGL ES 3.1 e successive, quindi con tutti i prodotti grafici moderni.

Vulkan

Vulkan - clicca per ingrandire

I programmatori avranno a disposizione migliori strumenti di sviluppo, con layer di debug che potranno essere inseriti nella catena di rendering e usati durante lo sviluppo, in modo da effettuare un debugging approfondito.

Vulkan

Vulkan - clicca per ingrandire

Gli sviluppatori potranno anche eseguire test di conformità più efficaci. Secondo il Khronos Group l'API dovrebbe comportarsi in modo simile a Mantle e DX12, quindi chi sarà in grado di sfruttare tali librerie non avrà problemi a usare Vulkan.

Vulkan

Vulkan - clicca per ingrandire

Vulkan nasce, se così vogliamo dire, sulla base di AMD Mantle. Non si tratta della stessa API, ma AMD ha contribuito allo sviluppo di Vulkan permettendo di usare Mantle per avviare il processo di sviluppo e velocizzarlo.

Vulkan

Vulkan - clicca per ingrandire

Il Khronos Group ha poi lavorato sull'ottimizzazione, eliminando porzioni di codice inadatte (caratteristiche ne avrebbero limitato la compatibilità) e aggiungendo altre funzionalità ritenute necessarie o migliori.

SPIR-V

SPIR-V - clicca per ingrandire

Vulkan supporterà più backend per gli shader. GLSL sarà il linguaggio di shading iniziale, ma sul lungo termine il Khronos Group vuole aggiungere altri linguaggi come C++. Il Khronos Group ha anche affermato che gli shader in Vulkan saranno compilati dagli sviluppatori in un bytecode derivato LLVM chiamato SPIR-V. In questo modo gli sviluppatori potranno scrivere in più linguaggi.

SPIR-V

SPIR-V - clicca per ingrandire

L'annuncio di Vulkan è una buona notizia per tutti, soprattutto per il mondo del gaming Linux che nei prossimi mesi potrebbe crescere grazie al progetto SteamOS. "Eseguire il porting tra Vulkan e DirectX 12 non dovrebbe essere troppo difficile", ha dichiarato Neil Trevett, presidente del Khronos Group (e vicepresidente di Nvidia). "Il porting da DirectX 12 a Vulkan sarà più semplice del porting da DirectX 12 a OpenGL".

OpenCL 2.1

OpenCL 2.1 - clicca per ingrandire

Il Khronos Group ha scelto la GDC 2015 per svelare la versione 2.1 delle OpenCL. Due le principali novità: OpenCL (calcolo) e Vulkan (grafica) finiscono sotto lo stesso tetto grazie a SPIR-V. 

Asus STRIX GeForce GTX 970 Asus STRIX GeForce GTX 970
Sapphire Vapor-X R9 290X 8 GB Sapphire Vapor-X R9 290X 8 GB

Gli sviluppatori potranno lavorare su grafica e altro codice con SPIR, creando un comune linguaggio frontend che permetta a Vulkan e OpenCL di accettare molti degli stessi linguaggi di alto livello. OpenCL, inoltre, ottiene il supporto a C++.

OpenCL 2.1

OpenCL 2.1 - clicca per ingrandire

Le nuove OpenCL 2.1 offriranno anche alcune caratteristiche per migliorare la flessibilità dell'API. La presenza di "device timer a bassa latenza" dovrebbe consentire un profiling del codice d'esecuzione più affidabile e accurato. Ci sono anche funzionalità di clonazione del kernel grazie al comando clCloneKernel.

OpenCL 2.1

OpenCL 2.1 - clicca per ingrandire

Le OpenCL 2.1 sono disponibili inizialmente come una specifica provvisoria. Non è chiaro quando saranno rilasciate in forma finale, ma probabilmente entro l'anno.