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

Discussion in 'เทคโนโลยี' started by iPokz, May 20, 2020.

  1. iPokz

    iPokz ~" iPokz "~ Staff Member

    ในข่าว 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 ตามภาพ

    [​IMG]

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

    [​IMG]

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

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    ที่มา - Microsoft

    Topics: DirectXMicrosoftGraphicLinuxGPUCUDA
     

Share This Page