WSL, 21H1 Derlemeleri ile Linux'ta DirectX Desteği Alacak
Microsoft, WSL 2 ortamında çalışan Linux dağıtımlarına DirectX desteği ekliyor. Değişiklik, bu Haziran'da gelmesi beklenen Fast Ring'deki Iron (Fe) dalından ilk 21H1 yapıları ile hayata geçiyor.
Microsoft tanıtma WSL 2'ye GPU hızlandırmasını getirecek olan Windows Ekran Sürücüsü Modeli sürüm 2.9, WDDMv2.9. Bunu mümkün kılmak için, WSL tarafında özel bir Linux çekirdek modülü bulunmaktadır. dxgkrnl
.
dxgkrnl
Dxgkrnl, Linux için aşağıdakileri ortaya çıkaran yepyeni bir çekirdek sürücüsüdür. /dev/dxg cihazdan kullanıcı moduna Linux. /dev/dxg Windows'ta yerel WDDM D3DKMT çekirdek hizmet katmanını yakından taklit eden bir IOCTL kümesi sunar. Linux çekirdeğinin içindeki Dxgkrnl, VM Bus üzerinden Windows ana bilgisayarındaki büyük kardeşine bağlanır ve fiziksel GPU ile iletişim kurmak için bu VM veri yolu bağlantısını kullanır.
Ana bilgisayarın birden fazla GPU'su varsa, tüm GPU'lar yansıtılır ve Linux ortamı için kullanılabilir (tüm bu GPU'ların WDDMv2.9 sürücülerini çalıştırdığı varsayılarak).
Microsoft, mimarinin WSL uygulamalarının ve GPU kaynaklarının performansını sınırlamayacağını veya engellemeyeceğini iddia ediyor Linux GUI ile birlikte çalışan Windows uygulamaları ile konsol uygulamaları arasında düzgün bir şekilde paylaşılacaktır. DirectX.
Dxgkrnl Linux sürümü açık kaynak haline getiriliyor.
Linux'ta DxCore ve D3D12
Bu projeler, tam D3D12 API'sini imitations olmadan Linux'a getiriyor.ibd3d12.so, Windows'ta d3d12.dll ile aynı kaynak koddan, ancak bir Linux hedefi için derlenmiştir. Aynı düzeyde işlevsellik ve performans sunar (eksi sanallaştırma yükü). Tek istisna Present()'dir. WSL, günümüzde yalnızca bir konsol deneyimi olduğundan, şu anda WSL ile sunum entegrasyonu bulunmamaktadır. D3D12 API, ekran dışı işleme ve hesaplama için kullanılabilir, ancak pikselleri doğrudan ekrana kopyalamak için takas zinciri desteği yoktur.
DxCore (libdxcore.so), API'nin eski özelliklerinin modern sürümlerle değiştirildiği, dxgi'nin basitleştirilmiş bir sürümüdür. DxCore hem Windows hem de Linux'ta mevcuttur. DxCore ayrıca Windows'ta WDDM tabanlı bir sürücü tarafından GPU ile konuşmak için kullanılan D3DKMT API'sinin düz bir sürümünü barındırmak için kullanılır. Bu API, çeşitli WDDM hizmetlerinin çekirdeğe (Windows'ta hizmet tablosuna karşı Linux'ta IOCTL'ye karşı) nasıl ilerlediği konusundaki farklılıkları özetler.
libd3d12.so ve libdxcore.so, Windows'un bir parçası olarak gönderilen kapalı kaynaklı, önceden derlenmiş kullanıcı modu ikili dosyalarıdır. Bu ikili dosyalar, glibc tabanlı dağıtımlarla uyumludur ve otomatik olarak /usr/lib/wsl/lib ve yükleyiciye görünür hale getirilir. Başka bir deyişle, bu API'ler, ek paketler yüklemeye veya dağıtımın yapılandırmasını değiştirmeye gerek kalmadan kutudan çıkar çıkmaz çalışır. Destek şu anda Ubuntu, Debian, Fedora, Centos, SUSE vb. dahil olmak üzere glibc tabanlı dağıtımlarla sınırlıdır.
D3D12, GPU üretici ortakları tarafından sağlanan GPU'ya özel kullanıcı modu sürücüsü (UMD) olmadan çalışamaz. UMD, gölgelendiricileri donanıma özel bayt koduna derlemek gibi şeylerden sorumludur ve tarafından yürütülecek komut arabelleklerinde API oluşturma isteklerini gerçek GPU talimatlarına çevirme GPU'su. Ana bilgisayar sürücü paketi, /usr/lib/wsl/drivers konumunda WSL'nin içine monte edilmiştir ve d3d12 API'sinden doğrudan erişilebilir. Yine WDDM 2.9 sürücüsü gereklidir.
Microsoft ayrıca Mesa kitaplığı aracılığıyla WSL'de OpenGL, OpenCL ve Vulkan için GPU hızlandırma getirmek için çalışıyor.
DxCore, D3D12 desteği, DirectML ve NVIDIA CUDA geliyor Windows İçeriği Yakında hızlı inşa. Hızlı halka şu anda açık Manganez (Mn) işletim sistemi şubesi. Fast ring'in yeniye geçmesi bekleniyor Demir (Fe) dalı
Bu yeni işlevi Insider'ların kullanımına sunacak olan Haziran ayının sonlarına doğru.