Ottimizzazione dei CSS e accelerazione grafica
Alcuni giorni fa, durante una piccola pausa lettura, stavo leggendo un post redatto su html.it: parlava dell’ottimizzazione dell’esperienza utente nell’utilizzo delle nuove tecnologie rese disponibili con i CSS3. L’episodio portato ad esempio si riferiva ad un “background: fixed” su Firefox. In effetti mi sono sempre chiesto per quale motivo quella particolare situazione richiedesse tanti sforzi al motore di rendering del browser. Le riflessioni dell’autore però mi hanno dato stimolo su altre argomentazioni.
L’articolo mi trova concorde nell’ultima frase che cito: “La via che porta all’adozione di massa di certe proprietà deve passare attraverso[…] la saggezza e l’equilibrio di chi dovesse implementarle“. Però la interpreto diversamente dall’autore. Io con quel “chi dovesse implementarle“, intendo lo sviluppatore finale nel sito che sta creando e non l’azienda che implementa la feature.
Sono dell’idea che l’ottimizzazione costa e deve essere graduale. I CSS3 sono ancora in sviluppo e credo sia giusto e saggio a livello aziendale renderli disponibili all’utilizzo per saggiarne consistenza e appunto le performance al fine di migliorarli.
Come in tante applicazioni web la filosofia “Release Early, Release Often” identifica proprio questa situazione, derivata da concetti di programmazione Agile, dove le specifiche finali sono in continuo divenire e l’obiettivo si plasma in un continuo feedback con il committente, che in questo caso siamo noi, il mercato su internet.
Ritornando alla questione iniziale del background di Firefox, a dire il vero non mi ha mai creato particolari fastidi però mi ha fatto venire in mente che con l’implementazione dei nuovi tag HTML5 canvas (2d e 3d) e video, con il ritorno in auge di SVG, il browser sarà sempre più stressato a livello di rendering grafico il che presumo porterà ad adottare un’accelerazione hardware per il rendering dei contenuti sui diversi motori.
Spinto da curiosità sono andato a spulciare un po’ in giro e sembrerebbero sorprendentemente vicino quel momento, a partire dalla prossima versione di IE che a quanto pare comincerà ad utilizzare Direct2D al posto delle API GDi di Windows per tutti i contenuti SVG, canvas e video, seguito a ruota da Firefox.
Ora, stiamo parlando di Direct2D, ma come la mettiamo sui sistemi Linux o Apple? Quale sarà la strada che prenderanno per implementare tramite OpenGL (o altro, ad esempio OpenCL per Apple) le stesse soluzioni? Windows utilizza Direct2D per controllare hardware, ma è una tecnologia proprietaria, mentre un l’utilizzo diretto di OpenGL, tecnologia multi OS, su Windows non da gli stessi risultati (soprattutto sui vecchio OS di Microsoft).
Sarà semplice la questione o siamo di fronte ad una nuova guerra tra diverse tecnologie e sistemi operativi? Uff.. la cosa sta diventando un po’ ripetitiva… speriamo nel futuro.
OpenGL ha le stesse possibilità di DirectX per quanto riguarda le performance. Purtroppo i produttori di driver offrono implementazioni spesso blande delle specifiche OpenGL, concentrandosi su DirectX, e da questo nasce il divario prestazionale, che nulla ha a che vedere con le specifiche tecniche dei 2 standard.
Microsoft ha guadagnato un vantaggio sulla diffusione della sua libreria, come in molti altri casi, con campagne scorrette, diffusione di FUD (fear, uncertainty and doubt) e marketing ingannevole.
Come quando prima dell’uscita di Vista si era diffusa la notizia che non avrebbe avuto alcun supporto a OpenGL, oppure mi ricordo alcuni screenshot comparativi del motore Crytek (mi pare) tra OpenGL e DirectX, in cui la versione OpenGL era molto più scura (veramente ridicolo…).
E’ assurdo che gli sviluppatori abbiano appoggiato in tutti questi anni la diffusione di una standard proprietario e mono-piattaforma anziché uno standard da sempre aperto, guidato da un consorzio (invece di una corporazione) e cross-platform.
Oh… e ultima cosa.
Quando è uscito DirectX 10 sembrava chissà che rivoluzione, quando le sue innovazioni principali erano presenti in OpenGL da anni. E’ un luogo comune che le DirectX siano più “potenti” delle OpenGL.
Concordo sulla qualità delle OpenGL e tutto quello che vuoi dire sulla comparazione tra le due, argomenti di cui tra l’altro so poco.
Quello che so, al di là del motivo è che OpenGL non è supportato su Win come Direct3D, anche per esperienza tangente di alcuni programmatori ed in effetti anche tu me lo confermi.
Il vero dilemma mio (e spero non sia davvero un problema) sta nel fatto che un Firefox o un Chrome/ium altro browser multi-piattaforma dovrà implementare 2 tipologie di accelerazione a seconda del sistema operativo in uso visto che non ha accesso diretto alla GPU. Sarà davvero così liscia?