Το WSL θα λάβει υποστήριξη DirectX σε Linux με εκδόσεις 21H1
Η Microsoft προσθέτει υποστήριξη DirectX σε διανομές Linux που εκτελούνται σε περιβάλλον WSL 2. Η αλλαγή γίνεται ζωντανή με τις πρώτες κατασκευές του 21ου εξαμήνου από τον κλάδο Iron (Fe) στο Fast Ring, οι οποίες αναμένεται να έρθουν αυτόν τον Ιούνιο.
Η Microsoft είναι εισάγοντας Windows Display Driver Model έκδοση 2.9, WDDMv2.9, το οποίο θα φέρει την επιτάχυνση GPU στο WSL 2. Για να γίνει αυτό δυνατό, υπάρχει μια ειδική μονάδα πυρήνα Linux στην πλευρά του WSL, dxgkrnl
.
dxgkrnl
Το Dxgkrnl είναι ένα ολοκαίνουργιο πρόγραμμα οδήγησης πυρήνα για Linux που εκθέτει το /dev/dxg συσκευή σε λειτουργία χρήστη Linux. /dev/dxg εκθέτει ένα σύνολο IOCTL που μιμείται στενά το εγγενές επίπεδο υπηρεσίας πυρήνα WDDM D3DKMT στα Windows. Το Dxgkrnl μέσα στον πυρήνα του Linux συνδέεται μέσω του VM Bus με τον μεγάλο αδερφό του στον κεντρικό υπολογιστή των Windows και χρησιμοποιεί αυτή τη σύνδεση διαύλου VM για να επικοινωνήσει με τη φυσική GPU.
Εάν ο κεντρικός υπολογιστής έχει πολλές GPU, όλες οι GPU προβάλλονται και είναι διαθέσιμες στο περιβάλλον Linux (υποθέτοντας ότι όλες αυτές οι GPU εκτελούν προγράμματα οδήγησης WDDMv2.9).
Η Microsoft ισχυρίζεται ότι η αρχιτεκτονική δεν θα περιορίσει ούτε θα παρεμποδίσει την απόδοση των εφαρμογών WSL και των πόρων GPU θα κοινοποιηθεί σωστά μεταξύ των εφαρμογών των Windows που εκτελούνται παράλληλα με το Linux GUI και τις εφαρμογές της κονσόλας που χρησιμοποιούν DirectX.
Η έκδοση Dxgkrnl Linux γίνεται ανοιχτού κώδικα.
DxCore & D3D12 σε Linux
Αυτό το έργο φέρνει πλήρες D3D12 API στο Linux χωρίς imitations.ibd3d12.so μεταγλωττίζεται από τον ίδιο πηγαίο κώδικα με το d3d12.dll στα Windows αλλά για στόχο Linux. Προσφέρει το ίδιο επίπεδο λειτουργικότητας και απόδοσης (μείον τα γενικά έξοδα εικονικοποίησης). Η μόνη εξαίρεση είναι η Present(). Προς το παρόν δεν υπάρχει ενοποίηση παρουσίασης με το WSL, καθώς το WSL είναι μια εμπειρία μόνο για κονσόλα σήμερα. Το D3D12 API μπορεί να χρησιμοποιηθεί για απόδοση εκτός οθόνης και υπολογισμό, αλλά δεν υπάρχει υποστήριξη swapchain για την απευθείας αντιγραφή pixel στην οθόνη.
Το DxCore (libdxcore.so) είναι μια απλοποιημένη έκδοση του dxgi όπου οι πτυχές παλαιού τύπου του API έχουν αντικατασταθεί από σύγχρονες εκδόσεις. Το DxCore είναι διαθέσιμο τόσο σε Windows όσο και σε Linux. Το DxCore χρησιμοποιείται επίσης για τη φιλοξενία μιας επίπεδης έκδοσης του API D3DKMT που χρησιμοποιείται από ένα πρόγραμμα οδήγησης που βασίζεται στο WDDM στα Windows για συνομιλία με τη GPU. Αυτό το API αφαιρεί τις διαφορές στον τρόπο με τον οποίο οι διάφορες υπηρεσίες WDDM φτάνουν στον πυρήνα (πίνακας υπηρεσιών στα Windows έναντι του IOCTL στο Linux).
Τα libd3d12.so και libdxcore.so είναι δυαδικά αρχεία κλειστού κώδικα, προμεταγλωττισμένα σε λειτουργία χρήστη που αποστέλλονται ως μέρος των Windows. Αυτά τα δυαδικά αρχεία είναι συμβατά με διανομές που βασίζονται στο glibc και τοποθετούνται αυτόματα κάτω /usr/lib/wsl/lib και γίνεται ορατό στον φορτωτή. Με άλλα λόγια, αυτά τα API λειτουργούν αμέσως χωρίς να χρειάζεται να εγκαταστήσετε πρόσθετα πακέτα ή να τροποποιήσετε τη διαμόρφωση της διανομής. Επί του παρόντος, η υποστήριξη περιορίζεται σε διανομές που βασίζονται στο glibc, συμπεριλαμβανομένων των Ubuntu, Debian, Fedora, Centos, SUSE και ούτω καθεξής.
Το D3D12 δεν θα μπορούσε να λειτουργήσει χωρίς ένα πρόγραμμα οδήγησης λειτουργίας χρήστη για συγκεκριμένη GPU (UMD) που παρέχεται από συνεργάτες κατασκευαστή GPU. Το UMD είναι υπεύθυνο για πράγματα όπως η μεταγλώττιση shaders σε κώδικα byte συγκεκριμένου υλικού και μετάφραση αιτημάτων απόδοσης API σε πραγματικές οδηγίες GPU σε buffer εντολών που θα εκτελεστούν από η GPU. Το πακέτο προγράμματος οδήγησης κεντρικού υπολογιστή είναι τοποθετημένο μέσα στο WSL στο /usr/lib/wsl/drivers και είναι άμεσα προσβάσιμο στο API d3d12. Απαιτείται και πάλι πρόγραμμα οδήγησης WDDM 2.9.
Η Microsoft εργάζεται επίσης για να φέρει την επιτάχυνση GPU για OpenGL, OpenCL & Vulkan στο WSL μέσω της βιβλιοθήκης Mesa.
Υποστήριξη για DxCore, D3D12, DirectML και NVIDIA CUDA έρχεται σε α Windows Insider Γρήγορη κατασκευή σύντομα. Το δαχτυλίδι Fast είναι αυτή τη στιγμή στο Μαγγάνιο (Mn) Υποκατάστημα ΛΣ. Το δαχτυλίδι Fast αναμένεται να αλλάξει στο νέο Κλαδί σιδήρου (Fe).
προς τα τέλη Ιουνίου που θα εκθέσει αυτή τη νέα λειτουργικότητα στους Insiders.