Microsoft porta le DirectX 12 su Linux, con molti "ma"

Rispondi
cmo
Reactions score: 0
mag 2020 22 06:07

Microsoft porta le DirectX 12 su Linux, con molti "ma"

Messaggio da cmo

Con un annuncio completamente inaspettato Microsoft ha comunicato l'arrivo delle API grafiche DirectX su Linux. Le DirectX sono utilizzate sotto Windows sia dai giochi che dalle applicazioni che eseguono calcoli sfruttando la GPU. A un primo sguardo la notizia appare estremamente positiva per gli sviluppatori, l'ecosistema Linux, l'ecosistema Windows e gli utenti; scavando un po' più a fondo si scopre, però, che ci sono limitazioni e paletti ben precisi nell'attuale implementazione proposta.
DirectX su Linux: come funzionano e perché sono state implementate
Immagine
La notizia dell'arrivo delle DirectX su Linux ha generato - comprensibilmente - entusiasmo in molti utenti: le prime voci affermavano che si trattasse di un porting delle API e delle librerie collegate verso il sistema operativo del pinguino. Non è però così: Microsoft ha portato le DirectX 12 su Linux come parte del progetto Windows Subsystem for Linux 2 (o WSL2 per brevità), come spiegato sul blog ufficiale. Si tratta di un'implementazione di Linux tramite macchine virtuali all'interno di Windows: l'utente può così utilizzare applicazioni scritte per Linux direttamente da Windows, senza dover configurare una propria macchina virtuale o un'installazione completa.
Grazie a questa implementazione delle DirectX sarà possibile utilizzare applicazioni che sfruttano OpenGL e OpenCL, con Vulkan e CUDA in arrivo in futuro, all'interno delle macchine virtuali Linux utilizzate da WSL2. Questo perché le chiamate a tali API verranno convertite in tempo reale verso chiamate DirectX, gestite poi da Windows.
Per far sì che ciò possa avvenire, però, Microsoft sta chiedendo che il codice per sfruttare le DirectX 12 sotto Linux sia integrato direttamente nel kernel. In questo modo sarebbe poi possibile installare una distribuzione Linux (Ubuntu, Fedora, SUSE) nel WSL2 e sfruttare le nuove funzionalità senza la necessità di installare pacchetti particolari o dover intervenire sulla configurazione.
La motivazione dietro questa implementazione delle DirectX viene spiegata da Sasha Levin, kernel hacker che lavora in Microsoft e che si è occupato di creare il codice necessario per questa funzionalità, nella mailing list del kernel Linux:
"C'è un solo caso d'uso per questa [funzionalità]: uno sviluppatore che lavora con WSL2 che vuole eseguire il machine learning sulla propria GPU. Lo sviluppatore sta lavorando sul suo portatile, che esegue Windows, e questo portatile ha una sola GPU che Windows sta utilizzando. Dal momento che la GPU è utilizzata da Windows, non possiamo assegnarla direttamente al guest Linux, ma dobbiamo invece utilizzare il partizionamento della GPU per dare accesso come guest alla GPU. Questo significa che il guest deve essere in grado di "parlare" in DirectX 12, e questo è il motivo per cui abbiamo tirato le DX12 dentro Linux."
Di fatto l'implementazione scelta da Microsoft funziona come un condotto che passa le istruzioni dalla macchina virtuale Linux alla macchina fisica Windows sottostante: non si tratta dunque di un vero e proprio porting delle DirectX verso Linux, ma piuttosto di un modo per rendere possibile l'uso della GPU senza tutto l'overhead della virtualizzazione (che porta a un impatto significativo sulle prestazioni). Non c'è poi la possibilità, al momento, di sfruttare la GPU per visualizzare applicazioni grafiche: è possibile usarla soltanto per effettuare calcoli.
Microsoft intende quindi dare agli sviluppatori la possibilità di utilizzare Windows come sistema operativo anche per sviluppare applicazioni per Linux che sfruttino la GPU, cosa finora non possibile con WSL.
DirectX su Linux: un futuro più aperto all'orizzonte?
Immagine
Da tempo la disponibilità delle librerie grafiche sui vari sistemi è causa di problemi di compatibilità: da un lato c'è Windows con il supporto a DirectX, OpenGL, OpenCL e Vulkan; dall'altro c'è Linux con OpenGL, OpenCL e Vulkan; c'è poi macOS che fa storia a sé con Metal.
La piattaforma di Microsoft è quella che offre la compatibilità con il maggior numero di API, mentre Linux sfrutta DXVK e progetti simili per effettuare una "traduzione" da DirectX a Vulkan e riuscire comunque a sfruttare le API di Microsoft. macOS fa storia a sé e rifiuta il supporto a ogni API di cui non abbia il controllo, ragione per cui sono nati progetti come MoltenVK per sfruttare le librerie Vulkan anche su macOS.
Il fatto che molte applicazioni, da quelle professionali a quelle ludiche, siano scritte per sfruttare le DirectX e che non esistano alternative fa sì che sia impossibile sfruttarle appieno su Linux. Tuttavia lo sviluppatore di Microsoft Steve Pronovost lascia intendere, in uno dei suoi interventi nella mailing list del kernel Linux citata precedentemente, che Microsoft possa portare le DirectX su Linux in maniera nativa in futuro:
"Abbiamo considerato la possibilità di portare le DX [DirectX] su Linux senza tenerle attaccate al cordone ombelicale di Windows. Non sono pronto per parlarne ora... ma nel caso ipotetico in cui facessimo questa cosa, le DX verrebbero eseguite su DRI/DRM [Direct Rendering Management, il gestore della grafica nel kernel Linux] su Linux in maniera nativa. [...] In questo mondo ipotetico, in pratica avremmo le DX che puntano verso il DRM sulle macchine Linux native e le DX che continuano a puntare verso DXG in WSL per condividere la GPU con l'host."
Il messaggio chiaro è che Microsoft sta pensando a un porting nativo delle DirectX su Linux. Ciò ha portato molti nella comunità Linux a domandarsi se l'azienda lo farà con un approccio aperto, rendendo almeno una parte delle DirectX open source, o se l'azienda le manterrà chiuse lasciando però la possibilità di utilizzarle con un driver apposito.
In ogni caso, la questione è rilevante sia per gli utenti privati che per le aziende, per quanto per motivi differenti. Poter sviluppare direttamente da Windows con un target Linux sfruttando anche la GPU del proprio computer apre a scenari interessanti di semplificazione della gestione del parco macchine; la maggiore integrazione tra Windows e Linux rappresenta un plus non di poco conto che può mettere insieme il meglio di due mondi. Resta indubbio che le filosofie alla base dei due sistemi siano differenti e le aziende devono valutare quale delle due può portare più vantaggi, anche in base alle competenze presenti internamente, quando scelgono il sistema operativo da adottare per i propri progetti.
Dal punto di vista dell'utenza, invece, il messaggio circa il possibile porting delle DirectX rappresenta forse il passaggio più importante della vicenda perché aprirebbe all'uso di giochi senza particolari penalizzazioni dal punto di vista prestazionale.
In ogni caso questa mossa di Microsoft sembra andare nella direzione di confermare quello che il presidente Brad Smith aveva affermato pochi giorni fa: "ci siamo sbagliati su Linux e sull'open source". I più fervidi sostenitori del modello aperto e di Linux restano in attesa di sviluppi per vedere se ciò sia vero e, in un senso o nell'altro, qualcosa sembra comunque cambiato in Microsoft.

Rispondi