ไมโครซอฟท์เปิดตัว DirectX บนลินุกซ์ Windows Subsystem for Linux 2

by mk
20 May 2020 - 02:42

ในข่าว Windows Terminal 1.0 ไมโครซอฟท์ประกาศว่าจะเรนเดอร์กราฟิกของแอพจากลินุกซ์ด้วย GPU ด้วย เบื้องหลังของมันคือสิ่งที่อาจจินตนาการไม่ถึงเมื่อหลายปีก่อนอย่าง DirectX บนลินุกซ์ (ในความหมายนี้คือลินุกซ์ที่ติดตั้งบน Windows Subsystem for Linux 2 หรือ WSL 2)

ไมโครซอฟท์อธิบายว่าพัฒนาเทคนิค GPU paravirtualization (GPU-PV) บนวินโดวส์มาหลายปีแล้ว และใช้งานในโปรแกรมฝั่งวินโดวส์หลายตัว เช่น Windows Defender Application Guard, Windows Sandbox และอีมูเลเตอร์ของ Hololens

ที่ผ่านมา GPU-PV รองรับเฉพาะ guest OS ที่เป็นวินโดวส์เท่านั้น แต่ล่าสุดไมโครซอฟท์ขยายมายัง guest ลินุกซ์ด้วย โดยเพิ่มไดรเวอร์ตัวใหม่ชื่อ dxgkrnl ที่ฝั่งเคอร์เนลวินโดวส์ที่เป็น host OS ส่วนฝั่งลินุกซ์ที่เป็น guest อยู่บนระบบ WSL2 จะมองเห็นเป็น /dev/dxg ตามภาพ

เมื่อฝั่งลินุกซ์มองเห็น GPU (เสมือน) เรียบร้อยแล้ว ไมโครซอฟท์จึงพอร์ตบางส่วนของ DirectX (ในที่นี้คือ DirectX Core และ Direct3D) มาบนลินุกซ์ โดยตัว libd3d12.so ของลินุกซ์เป็นการคอมไพล์โค้ดตัวเดียวกับ d3d12.dll ของวินโดวส์ ที่มีความสามารถและประสิทธิภาพทัดเทียมกัน (ในการใช้งานจริงจะเสียประสิทธิภาพจาก virtualization ไปบ้าง)

เมื่อโครงสร้างพื้นฐานทั้งไดรเวอร์จีพียู และ API ของ DirectX พร้อมแล้ว ทำให้โปรแกรมฝั่งลินุกซ์สามารถเรียกใช้งานจีพียูได้อย่างเต็มที่ ไมโครซอฟท์ยกตัวอย่างการใช้งานที่พบบ่อยมา 3 แบบ ได้แก่

โปรแกรมลินุกซ์มักเรียกใช้ API กราฟิกจากค่าย Khronos (OpenGL, OpenCL, Vulkan) ไมโครซอฟท์จึงเริ่มพัฒนาระบบ mapping ระหว่างฝั่ง Khronos มายัง DirectX อีกที ในขั้นแรกจะรองรับเฉพาะ OpenGL และ OpenCL ส่วน Vulkan อยู่ในแผนขั้นต่อไป

งานด้าน AI ที่เรียกใช้ผ่าน DirectML ของไมโครซอฟท์เอง (ที่ขี่อยู่บน Direct3D อีกที) ไมโครซอฟท์พอร์ต DirectML มาอยู่บนลินุกซ์แล้วเช่นกัน

แต่โปรแกรมสายใช้จีพียูช่วยประมวลผล (เช่น งาน AI) มักเรียกใช้งานผ่าน NVIDIA CUDA โดยตรง (ไม่ต้องผ่าน Direct3D) ตรงนี้ไมโครซอฟท์จับมือกับ NVIDIA แก้ปัญหานี้เรียบร้อยแล้ว โดย CUDA เวอร์ชันใหม่จะรองรับไดรเวอร์ /dev/dxg ได้โดยตรง

ฟีเจอร์ทั้งหมดจะอยู่ในไดรเวอร์ WDDM (Windows Display Driver Model) เวอร์ชัน 2.9 และจะเริ่มเปิดให้ใช้งานใน Windows Insider กลุ่ม Fast Ring ในเร็วๆ นี้

ที่มา - Microsoft

Blognone Jobs Premium