Con la Developer Preview di Windows 8 è possibile dare un’occhiata al prossimo aggiornamento di DirectX, la suite di librerie multimediali di casa Microsoft, numerata 11.1. Nonostante la sinteticità delle informazioni pubblicate sino ad ora, è possibile già di trarre alcune considerazioni.
Le informazioni rivelate riguardano in gran parte Direct3D e l’interfaccia audio di Windows, denotando un aggiornamento di minore impatto, ma per questo non meno importante, almeno dal punto di vista degli sviluppatori.
Direct3D 11.1
Direct3D è la libreria dedicata alla grafica 3D di DirectX. Con Windows 8 si giungerà alla versione 11.1 e, come molti potranno dedurre, indica un aggiornamento minore come da tradizione Microsoft. La parte più rilevante per gli amanti dei videogiochi è l’introduzione di direttive comuni circa la stereoscopia 3D, probabilmente proveniente da S3D Technologies (già in passato ne fu stilato un abbozzo, ma data la prematurità venne tutto abbandonato con la versione 8.0 di Direct3D). Tale novità permetterà ai giocatori di usufruire finalmente della stereoscopia 3D indipendentemente dal produttore della propria scheda video e, come ora invece accade, indipendentemente se questo abbia collaborato o meno con gli sviluppatori mano al portafoglio.
Le altre novità riguardano invece direttamente gli sviluppatori. Tra le più importanti spicca la possibilità di utilizzare le unordered access views (UAV) in ogni stadio programmabile della pipeline senza alterarne l'attuale struttura, permettendo una programmazione più flessibile e general purpose.
(Immagine tratta da Practical Rendering and Computation with Direct3D 11, di J. Zink, M. Pettineo e J. Hoxley, CRC PRESS editore)
Per la gioia degli sviluppatori la struttura della pipeline di Direct3D rimarrà inalterata.
Altre novità importanti sono la disponibilità di una piattaforma comune di shader tracing (prima ci si doveva basare sugli strumenti proprietari dei produttori di hardware video), l’aggiornamento e l’ottimizzazione della device WARP (diventando compatibile con Direct3D 11 e implementando le ultime estensioni delle CPU come AVX), la possibilità di processare stream video direttamente sulla pipeline grafica, nonché il permesso di usare operazioni logiche nel blending stage, il ritorno dei caps bit (abrogati con Direct3D 10), un generale aumento di diversi limiti riguardanti il numero di risorse processabili e il supporto (opzionale) alla doppia precisione in virgola mobile.
Per chi non è del mestiere tutto ciò si traduce in una maggiore flessibilità di programmazione e nella necessità da parte di Microsoft di adottare un mercato hardware più ampio rispetto al passato, dove spopoleranno le soluzioni di tipo SoC (System on Chip): tali soluzioni per loro natura saranno varie e non tutte riusciranno sin da subito a supportare ogni singola direttiva grafica, da qui il motivo del ritorno ai caps bit e ad alcune disposizioni opzionali.
Direct2D 1.1
Direct2D è l’attuale libreria dedicata alla grafica 2D. Nata di recente per soppiantare librerie deprecate come GDI e DirectDraw, Direct2D ha avuto alcune difficoltà ad affermarsi sul campo, complici alcuni problemi di compatibilità al di fuori di Direct3D 10.1, risolvibili solo tramite strani kamasutra e costrutti esotici. Finalmente con la nuova versione tali problemi verranno risolti, facendo diventare la libreria molto più appetibile anche per lo sviluppo di interfacce grafiche di videogiochi dove attualmente prevalgono soluzioni esterne, e spesso e purtroppo non così efficienti.
DXGI 1.2 e WDDM 1.2
Anche DXGI (DirectX Graphics Infrastructure) e WDDM (Windows Display Driver Model) verranno aggiornati, entrambi con la numerazione 1.2. DXGI è la componente responsabile per il dialogo fra le librerie grafiche come Direct3D e il kernel del sistema operativo che a sua volta si interfaccia con i driver WDDM. Le nuove versioni apporteranno miglioramenti prestazionali, nonché il supporto alle nuove tecnologie come la stereoscopia 3D, dove per quest’ultima il nuovo modello driver sarà obbligatorio. Con WDDM 1.2 inoltre il sistema operativo avrà la possibilità di de-allocare direttamente la memoria video senza passare per le librerie grafiche. Infine con la Developer Preview di Windows 8 scompare il supporto al vecchio modello driver XDDM, introdotto a partire da Windows 2000 e perpetrato con Windows XP, delegando il compito di supportare le vecchie periferiche video direttamente a DXGI.
Per quanto riguarda l’utenza finale sarà necessario disporre di driver WDDM 1.2 per sfruttare appieno le nuove funzionalità di DirectX, ma la compatibilità sarà assicurata fin dalla versione 1.0 introdotta con Windows Vista.
Kinect SDK
Attualmente l’SDK (Software Development Kit) di Kinect è in fase beta, e uscirà in via definitiva con l’arrivo del nuovo SDK di Windows, atteso in concomitanza con il lancio di Windows 8. Potranno pertanto comparire un discreto numero di applicazioni e videogiochi che sfruttano la periferica di XBOX 360 anche su PC. Nulla di nuovo da segnalare se non eventuali miglioramenti per una migliore integrazione con Metro UI di Windows 8.
WASAPI e il ritorno dell’accelerazione hardware audio
Microsoft prese con Windows Vista la drastica decisione di ridimensionare radicalmente le funzionalità di DirectSound, riducendola di fatto ad una libreria in grado di generare semplice output stereo, nonché la decisione di eliminare il supporto all’accelerazione hardware per le periferiche audio tramite l’interfaccia audio di Windows. Le conseguenze furono principalmente il dover re-implementare i driver da parte dei produttori di periferiche audio e la totale inefficacia di tutti quei software che sfruttavano l’accelerazione hardware per effetti di post-processing e di tridimensionalità audio, come EAX di Creative (per quest’ultima fu rilasciato ALchemY, applicazione in grado di ripristinare gli effetti di tridimensionalità e EAX reindirizzando le chiamate ad OpenAL, libreria audio in grado di sfruttare l’accelerazione hardware indipendentemente dal sistema operativo).
L’attuale interfaccia audio in Windows Vista e Windows 7
Sebbene la scelta di Microsoft fosse da un lato assai discutibile per i problemi sovra elencati, dall’altro fu in parte doverosa: DirectSound stava diventando sempre più improduttivo al crescere della dimensione del progetto; inoltre a Microsoft serviva ampliare la base delle librerie comuni fra XBOX 360 e Windows. Altro motivo fu la volontà dell'azienda di Redmond di cambiare modello driver anche per le periferiche audio e creare una base più solida per i prossimi sistemi operativi. Venne così imposto l’uso della più recente libreria XAudio o in alternativa l’adozione di librerie esterne come OpenAL.
L’evoluzione del mercato software e hardware tuttavia sta facendo cambiare nuovamente idea allo sviluppatore che deve fare in conti da un lato con il crescente numero di applicazioni che implementano codifiche digitali ed effetti di post-processing audio e dall’altro con un aumento considerevole di sistemi di tipo SoC. Se nel primo caso si possono avere cali prestazionali anche considerevoli laddove il software non sia sufficientemente ottimizzato, nel secondo l’affidare ad un hardware dedicato la computazione dell’audio oltre che a migliorare le performance permette di avere un risparmio energetico superiori, elementi entrambi importanti per dispositivi mobile.
La soluzione trovata non è un passo indietro, bensì una nuova combinazione tra architettura software e hardware, laddove la scelta di dove far processare gli stream audio venga affidata al driver, il tutto dialogando direttamente con l’interfaccia audio di Windows (WASAPI) in modo da preservare l’attuale struttura delle librerie audio di alto livello. Inoltre se il numero di stream aperti fosse eccessivo per l’hardware, quelli in eccesso verrebbero processati via software, per poi essere mixati dall’hardware: in questo modo si eliminerebbero una volta per tutte le incompatibilità dettate dalle limitazioni di diverse implementazioni hardware.
La nuova interfaccia audio proposta per Windows 8
Tutto ciò tuttavia non è ancora stato confermato in via definitiva da Microsoft, e in caso accadesse, verrà richiesto ai produttori un aggiornamento dei driver adeguato per implementare tali funzionalità.
Considerazioni finali
Il prossimo aggiornamento delle DirectX porterà diversi miglioramenti per gli sviluppatori ma ben poche novità per l’utenza finale. La volontà di Microsoft di dedicare maggiori risorse e attenzioni alle librerie e ai framework di sistema (come C++AMP o WinRT) piuttosto che alle componenti multimediali denotano l’impegno dell’azienda di uniformare la base software che si relazionerà all'hardware dei prossimi anni, nonché l’attuale stagnazione del mercato console. Tutto ciò si riflette sul prossimo aggiornamento delle DirectX, che sarà minore, un raffinamento, dovuto alla situazione che si verrà a creare con l’uscita di Windows 8.
Per quanto riguarda eventuali compatibilità hardware, la documentazione pubblicata non fornisce direttamente una risposta e, come da tradizione, Microsoft lascia ai produttori eventuali risposte. Tuttavia per ora non vi sono riferimenti di alcunché riguardo a nuove necessità legate all'hardware grafico, come il supporto ad un nuovo shader model, cosa che accadeva invece in passato con gli aggiornamenti minori di Direct3D. Tutto ciò fa ben sperare sul fatto che sarà sufficiente solo un semplice aggiornamento dei driver, lasciando il tutto alla volontà dei produttori: si spera che le "anime pie" di AMD e NVIDIA siano misericordiose nei confronti dei propri consumatori, rendendo il passaggio alle nuove librerie del tutto indolore.
Per quanto concerne invece il fronte audio, difficilmente Creative Labs dedicherà ulteriori risorse per re-introdurre l’accelerazione hardware per le proprie SoundBlaster X-Fi, essendo ormai l’azienda in difficoltà finanziarie da diversi anni, per non dire del tutto ridimensionata rispetto al passato. Inoltre Creative sta per lanciare una nuova linea di schede dedicate basate su un’architettura completamente diversa rispetto a quelle precedenti e semmai dovesse impegnare risorse per la nuova interfaccia audio di Windows, saranno certamente queste a beneficiarne.
Infine l’aggiornamento sarà senza dubbi disponibile anche per Windows 7, e verosimilmente anche per Windows Vista. Concludendo il discorso si può affermare, con quasi assoluta certezza, che il passaggio alla prossima versione di DirectX non creerà problemi all’utenza che difficilmente noterà differenze.