[mks_dropcap size="90" bg_color="#ffffff" txt_color="#e64946"]P[/mks_dropcap]

ochi giorni fa al Siggraph 2014, tenutosi dal 10 al 14 agosto a Vancouver, durante la presentazione della revisione 4.5 delle OpenGL (che aggiungono in particolare maggiore flessibilità fra mobile e desktop e l'emulazione DirectX 11), Khronos ha presentato il nuovissimo progetto OpenGL Next Generation, per gli amici OpenGL NG.

Ricordiamo che la prima revisione di OpenGL venne rilasciata da SGI nel 1992 (la prima versione di DirectX risale al settembre del 1995). Durante tutti questi anni le OpenGL hanno fatto tantissima strada e sono state adottate da molti sviluppatori per vari e variegati utilizzi. Il loro maggiore pregio è sempre stato quello della compatibilità a 360 gradi (rendendola di fatto la libreria grafica ufficiale dei sistemi operativi Linux-like). Nonostante ciò il mercato dei videogiochi ha sempre visto le DirectX dominare, in quanto, soprattutto grazie ai grossi investimenti di Microsoft, hanno sempre offerto un vantaggio in termini di documentazione ed efficienza del codice. Per contro, le OpenGL sono ancora oggi le librerie grafiche cross-platform più utilizzate al mondo.

Negli ultimi anni, soprattutto dopo la rinascita del gaming su PC, gli sviluppatori hanno cominciato a sentire l'esigenza di utilizzare API più pulite, più efficienti e più orientate alla programmazione a basso livello. La prima a farsi avanti per dare sfogo a queste esigenze è stata AMD con Mantle, seguita a ruota da Microsoft con le DirectX 12 di prossima uscita.

Next Generation OpenGL

opengl-ng-slide1

opengl-ng-slide2

La presentazione è stata davvero interessante: il tipo di implementazione seguirà la scia di ciò che è stato fatto con Mantle e DirectX 12. Meno frammentazione dunque, sfruttamento delle istruzioni a 64 bit e interazione più congeniale e conveniente con le CPU multiple (multithreading).

L'obiettivo è ambizioso: definire un futuro standard aperto ad alta efficienza per il calcolo sulle GPU moderne. Le direzioni chiave saranno: utilizzo esplicito delle applicazioni su CPU e GPU, quindi maggior controllo dei carichi di lavoro e delle performance. Low-level design studiato per minimizzare l'overheat dei driver. Infrastruttura shader cross-platform utilizzando un linguaggio intermediario tale da generare un ambiente di lavoro comune, semplice ma rigoroso.

Stiamo parlando di riscrivere praticamente da zero (ground-up approach) l'intera libreria grafica, consentendo così di ottenere prestazioni all'avanguardia, sfibrando completamente tutte le inefficienze che affliggono le attuali versioni.

Particolarmente interessanti saranno le funzioni avanzate per lavorare a basso livello. Questione particolarmente spinosa; anche per questo le OpenGL NG non saranno compatibili con le vecchie OpenGL. La riscrittura si è resa necessaria anche perché, ha spiegato Khronos, una delle priorità è quella di consentire alle API di lavorare bene con tutti i tipi di hardware. L'ottimizzazione a basso livello dovrà essere ben bilanciata, in quanto OpenGL NG non potrà spingersi fin dove, ad esempio, si è spinta AMD con Mantle (che ha dovuto infatti rinunciare alla compatibilità).

"Stiamo lavorando duramente per sviluppare le OpenGL di nuova generazione, cercando di dare vita a uno standard aperto, per prevenire la frammentazione del mercato e fornire agli sviluppatori di tutto il settore, un nuovo livello di accesso alle GPU", ha affermato Neil Trevett, presidente di Khronos.

Mentre AMD e Microsoft si stanno concentrando in particolare sulle proprie personali implementazioni, le OpenGL NG resteranno libere, aperte e totalmente multi-piattaforma, compatibili cioè con tutto l'hardware e tutti i sistemi operativi disponibili.

Obiettivi e prospettive

opengl-ng-slide3

Una riscrittura totale è impegnativa, e Khronos stessa ha ammesso che la strada è dura e gli obiettivi imponenti. Subito dopo però, ha annunciato i partner che lavoreranno insieme a loro al progetto OpenGL NG; i nomi sono tanti e importanti: Apple, Intel, nVidia, Google, AMD, Valve (vedi anche: Steam Machines: il sogno della console unica) e tanti altri, fra cui alcuni sviluppatori molto noti nel mondo del gaming: Unity, Epic Games, Blizzard, Oculus, Electronic Arts.

Interessante la presenza di AMD, che lascia facilmente pensare a una possibile condivisione del knowledge acquisito dai ragazzi di Sunnyvale durante lo sviluppo di Mantle.

Starete pensando: l'unico grande nome che manca alla comitiva è, ovviamente, quello di Microsoft. Certo, ma... per quanto possa sembrare assurdo da parte di una società che si è opposta per oltre un decennio a OpenGL, pochi giorni fa, Neil Trevett ha annunciato che Microsoft si è unita a Khronos e parteciperà allo sviluppo di WebGL (una libreria grafica pensata per il Web).

Le WebGL, pur non essendo esplicitamente legate al nuovo progetto Next Generation, fanno comunque parte dell'attuale ecosistema OpenGL. Per questo viene da pensare: ci sarà una partecipazione in OpenGL NG? Microsoft sta pian piano aprendo il suo cuore o si tratta di una mossa tattica? Vedremo.

Non è ancora stata annunciata alcuna data di rilascio, ma con ogni probabilità se ne parlerà fra un bel po' di tempo, certamente dopo l'uscita di DirectX 12 (prevista dopo la metà del 2015).

Per adesso possiamo solo immaginare gli scenari futuri e domandarci: come si comporterà AMD con Mantle? Quando le Steam Machines saranno realtà, riusciranno a imporsi sul mercato delle console casalinghe? Riuscirà OpenGL NG ad eguagliare, se non superare, le prestazioni delle DirectX 12? Se sì, ci stiamo davvero avvicinando al giorno del superamento definitivo del monopolio Windows + DirectX?