Vista UX: DWM e WDDM

Questo è il primo di una serie di post dedicati alla grafica di Windows Vista. Ho deciso di scriverlo in seguito ai commenti apparsi al mio post Apparire o essere e in seguito ad altre informazioni (errate) che ho letto su siti, blog e riviste. Molte delle informazioni che illustrerò sono derivate dai siti come MSDN (e dall’SDK di Windows) o dai blog delle persone che hanno collaborato alla  scrittura di Vista. Cercherò di citare le fonti ma siccome sono passati magari anche mesi da quando ho appreso queste informazioni può darsi che non riesca a farlo per tutto (e me ne dispiace molto). Altre sono mie personali deduzioni. Ogni contributo e chiarificazione sono benvenuti.   

Intanto UX sta per User Experience e in senso lato si riferisce all’interfaccia utente basata prevalentemente sulla grafica (e vorrei vedere) ma anche su altri elementi come la voce, il suono, il supporto al riconoscimento calligrafico, alle penne, ai dispositivi SideShow, ecc.

E ora cominciamo!

Windows Vista introduce un nuovo Desktop Window Manager (DWM). Il DWM è quel componente del sistema che si occupa di gestire gli elementi (finestre) visualizzati sul desktop e l’interazione con essi. DWM è in grado di supportare la desktop composition. Quando la desktop composition è attivata fondamentalmente una applicazione non disegna direttamente sullo schermo ma scrive su un’area di memoria video dedicata che non viene visualizzata direttamente. Il sistema si occupa poi di prendere questa area e le altre e utilizzandone il contenuto compone la schermata reale che l’utente vede (cioè il desktop). Grazie a questo componente vengono realizzati vari effetti come le finestre transparenti (o per essere più corretti translucenti), le animazioni 3D, il Flip (ALT-TAB con le miniature live delle applicazioni), il Flip 3D (WIN-TAB con le finestre live in una prospettiva 3D), possibilità di scalare il DPI (in altre parole su schermi ad altissima risoluzione le scritte e i bottoni non appaiono troppo piccoli ma con una dimensione adeguata e leggibile). Come molti sottosistemi Windows, DWM ha una serie di API classiche (cioè non managed) per il suo utilizzo e controllo da parte di applicazioni scritti da utenti. Un esempio molto famoso con sorgenti che gira in rete è MyExpose, un tool di un signore francese che ha realizzato un task switcher simile a quello quasi omonimo del Mac. Tra l’altro, da quel che sò, è una caratteristica fornita pure dai driver dei mouse Microsoft più recenti. Un buon programmatore potrebbe costruire un task switcher a forma di cubo (ma forse è più conveniente combinare in questo anche WPF visto che questi ha il supporto 3D integrato).

Per i programmatori DWM è una “semplice” aggiunta al sottosistema esistente (quello definito in USER32 per intederci). Ma se così fosse perchè non attivarlo anche su XP? La risposta è semplice: il nuovo DWM (ma anche WPF) per questione di prestazioni e capacità si appoggia al nuovo modello di device driver denominato Windows Display Driver Model. Per supportare le nuove funzionalità Microsoft ha definito questo modello che richiede necessariamente una GPU cioè una scheda grafica relativamente potente. Quando era stato rilasciato XP le schede grafiche erano rudimentali o costose. Nel 2006 non è più così ovviamente e quindi ha sicuramente senso utilizzarne le funzionalità e goderne le prestazioni.

WDDM ha due componenti: un driver KMD (Kernel Mode Driver) in modalità kernel molto semplice che funge da interfaccia con l’hardware grafico (e quindi le GPU) e un driver in modalità utente che fa la maggior parte del lavoro. Questo split (che si ritrova spesso in Vista) migliora la stabilità tanto è vero che personalmente non ho mai visto un BSOD neanche con driver beta o mal fatti. WDDM si occupa anche di gestire il multitasking della GPU (o meglio il contenzioso per l’accesso e il task switching) e la gestione della memoria video. In altri termini fà da schedulatore dei processi che accedono alla GPU e da gestore della memoria video per gli stessi processi senza intervento diretto del programmatore (in modo analogo ai classici schedulatore dei processi e gestore della memoria).

WDDM permette poi di utilizzare meglio le funzionalità delle schede grafiche migliorando grafica, prestazioni, playback dei contenuti, gestione dei colori, offload del lavoro. Anche le API sono migliorate. Ci sono le API tradizionali, WPF (che a me piacciono molto perchè permettono di sfruttare le GPU senza impazzire) per le applicazioni e le nuove DirectX per i giochi. 

WDDM ha un’altra importante funzionalità legata alla sicurezza che impedisce a due programmi di andare in conflitto tra loro. Inoltre questo permette di implementare quel “protected path” necessario per riprodurre i contenuti ad alta definizione (i film in HD-DVD o BlueRay per intenderci). Senza questo le major non darebbero mai il permesso a Microsoft di riprodurre i film in HD. So già che i teorici del complotto diranno che Microsoft è in combutta con le major e vuole imporre il DRM a tutti però questo meccanismo deve essere implementato anche da player come i normali home theatre. E lo dovrà fare qualsiasi altro sistema che voglia riprodurre legalmente contenuti HD (Mac o Linux si adegueranno per forza di cose). In effetti conosco aziende che operano in questo tipo di industria (quella della riproduzione di contenuti) e tutte si stanno attrezzando per far questo. Microsoft è semplicemente più avanti dei suoi concorrenti nel fornire questa funzionalità ai propri clienti.

DWM e WDDM insieme concorrono a creare quella “esperienza utente” denominata Aero. In altre parole Aero è un insieme di funzionalità, effetti, metafore di interazione e temi.

Aero è forse il primo beneficio per gli utenti finali. Per vederne altri occorre utilizzare applicazioni che sfruttano le nuove funzionalità. Queste stanno appena adesso cominciando ad apparire.

Per oggi ho finito. Prossimamente voglio descrivere cosa è WPF e come si “incastra” nella attuale architettura di Windows Vista e XP/2003. Più avanti accennerò alla programmazione di WPF.

P.S.: domani sarò ad Innovaction 2007.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: