Windows Tips & News

WSL จะได้รับการสนับสนุน DirectX ใน Linux ด้วย 21H1 Builds

Microsoft กำลังเพิ่มการรองรับ DirectX ให้กับ Linux distros ที่ทำงานในสภาพแวดล้อม WSL 2 การเปลี่ยนแปลงมีผลกับบิลด์ 21H1 แรกจากสาขา Iron (Fe) ใน Fast Ring ซึ่งคาดว่าจะมาในเดือนมิถุนายนนี้

ไมโครซอฟต์คือ แนะนำตัว 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 ในการคัดลอกพิกเซลโดยตรงไปยังหน้าจอ

DxCore (libdxcore.so) เป็นเวอร์ชันที่เรียบง่ายของ dxgi โดยที่ลักษณะดั้งเดิมของ API ถูกแทนที่ด้วยเวอร์ชันที่ทันสมัย DxCore สามารถใช้ได้ทั้งบน Windows และ Linux DxCore ยังใช้เพื่อโฮสต์เวอร์ชันแบนของ D3DKMT API ที่ใช้โดยไดรเวอร์ที่ใช้ WDDM บน Windows เพื่อพูดคุยกับ GPU API นี้สรุปความแตกต่างในวิธีที่บริการ WDDM ต่างๆ เข้าถึงเคอร์เนล (ตารางบริการบน Windows เทียบกับ IOCTL บน Linux)

libd3d12.so และ libdxcore.so เป็นไบนารีของโหมดผู้ใช้ที่คอมไพล์แล้วล่วงหน้าแบบปิดซึ่งจัดส่งโดยเป็นส่วนหนึ่งของ Windows ไบนารีเหล่านี้เข้ากันได้กับ distros ที่ใช้ glibc และติดตั้งโดยอัตโนมัติภายใต้ /usr/lib/wsl/lib และทำให้คนโหลดมองเห็นได้ กล่าวอีกนัยหนึ่ง API เหล่านี้ทำงานได้ทันทีโดยไม่จำเป็นต้องติดตั้งแพ็คเกจเพิ่มเติมหรือปรับแต่งการกำหนดค่าของ distro ปัจจุบันการสนับสนุนจำกัดเฉพาะ distros ที่ใช้ glibc ซึ่งรวมถึง Ubuntu, Debian, Fedora, Centos, SUSE และอื่นๆ

D3D12 จะไม่สามารถทำงานได้หากไม่มีไดรเวอร์โหมดผู้ใช้เฉพาะของ GPU (UMD) ที่จัดหาโดยพันธมิตรผู้ผลิต GPU UMD มีหน้าที่รับผิดชอบในสิ่งต่าง ๆ เช่นการคอมไพล์ shaders กับรหัสไบต์เฉพาะของฮาร์ดแวร์และ แปลคำขอการแสดง API เป็นคำสั่ง GPU จริงในบัฟเฟอร์คำสั่งที่จะดำเนินการโดย จีพียู แพ็คเกจไดรเวอร์โฮสต์ติดตั้งอยู่ภายใน WSL ที่ /usr/lib/wsl/drivers และเข้าถึงได้โดยตรงจาก d3d12 API ต้องใช้ไดรเวอร์ WDDM 2.9 อีกครั้ง

Microsoft กำลังทำงานเพื่อนำการเร่งความเร็ว GPU สำหรับ OpenGL, OpenCL & Vulkan ใน WSL ผ่านไลบรารี Mesa


รองรับ DxCore, D3D12, DirectML และ NVIDIA CUDA กำลังจะมาถึง Windows Insider สร้างเร็วทันใจ. The Fast ring อยู่บน แมงกานีส (Mn) สาขาโอเอส คาดว่าวงแหวนเร็วจะเปลี่ยนไปใช้วงแหวนใหม่ สาขาเหล็ก (เฟ) ในช่วงปลายเดือนมิถุนายนซึ่งจะแสดงฟังก์ชันใหม่นี้แก่ Insiders

สกิน AIO v1.8 ใหม่ที่สะดวกสบายจาก AIMP3

Sergey Tkachenko เป็นผู้พัฒนาซอฟต์แวร์จากรัสเซียซึ่งเริ่ม Winaero ย้อนกลับไปในปี 2011 ในบล็อกนี้...

อ่านเพิ่มเติม

สกิน Big Bento v1.4 จาก AIMP3

Sergey Tkachenko เป็นผู้พัฒนาซอฟต์แวร์จากรัสเซียซึ่งเริ่ม Winaero ย้อนกลับไปในปี 2011 ในบล็อกนี้...

อ่านเพิ่มเติม

สกิน Dekor Blue จาก AIMP3

Sergey Tkachenko เป็นผู้พัฒนาซอฟต์แวร์จากรัสเซียซึ่งเริ่ม Winaero ย้อนกลับไปในปี 2011 ในบล็อกนี้...

อ่านเพิ่มเติม