1 คะแนน โดย GN⁺ 2024-06-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

Vulkan 1.3 ถูกทำงานได้บน M1 ภายในเวลาเพียงหนึ่งเดือน

แนะนำไดรเวอร์ Honeykrisp

  • ไดรเวอร์ Honeykrisp: เป็นไดรเวอร์ตัวแรกที่ทำให้สเปก Vulkan 1.3 สมบูรณ์บนฮาร์ดแวร์ของ Apple
  • สถานะการพัฒนา: ยังไม่ได้ปล่อยให้ผู้ใช้ทั่วไปใช้งาน และกำลังเพิ่มฟีเจอร์กับปรับปรุงประสิทธิภาพอยู่ โดยเปิดเผยซอร์สโค้ดให้นักพัฒนาแล้ว

กระบวนการพัฒนา

2 เมษายน

  • เริ่มต้น: เริ่มพัฒนาไดรเวอร์ Vulkan สำหรับ M1 โดยอ้างอิงจากไดรเวอร์ NVK

3 เมษายน

  • Descriptor set: ปรับ descriptor set ของ M1 ที่แตกต่างจาก NVIDIA ให้เข้ากับ NVK

4 เมษายน

  • Compute shader: ทำให้คอมไพล์ compute shader ได้ และเพิ่มความสามารถในการคัดลอกบัฟเฟอร์กับอิมเมจด้วยคำสั่ง Vulkan

6 เมษายน

  • การจัดการสถานะกราฟิก: เขียนโค้ดสำหรับจัดการสถานะกราฟิก โดยนำโค้ดจากไดรเวอร์ OpenGL มาผสานกับ NVK

7 เมษายน

  • Dynamic state: เลือกใช้แนวทางจัดการทุกสถานะแบบ dynamic และเพิ่มโค้ดสำหรับคอมไพล์กับแคช prologue และ epilogue

8 เมษายน

  • ผลการทดสอบ: ผลทดสอบเบื้องต้นผ่าน 149,770 รายการ ล้มเหลว 7,741 รายการ และแครช 2,396 รายการ

9 เมษายน

  • Vulkan 1.3: หลังทำอัตราผ่านของ Vulkan 1.1 ได้ 99.6% ก็เปลี่ยนไปทำ Vulkan 1.3 และได้อัตราผ่าน 98.3%

10 เมษายน~12 เมษายน

  • การทดสอบเพิ่มเติม: ยืนยันว่า Vulkan renderer ทำงานได้บน SuperTuxKart และ Zink พร้อมแก้บั๊กในระบบทดสอบ

16 เมษายน~17 เมษายน

  • แก้บั๊กคอมไพเลอร์: แก้บั๊กคอมไพเลอร์ที่พบจากการทดสอบ descriptor indexing และแก้ปัญหา infinite loop

18 เมษายน

  • การเรนเดอร์แบบ zero-copy: ทำส่วนขยาย EXT_image_drm_format_modifier เพื่อใช้เลย์เอาต์พื้นผิวที่มีประสิทธิภาพ

22 เมษายน

  • ทบทวนสถาปัตยกรรมไดรเวอร์: หลังทบทวนสถาปัตยกรรมไดรเวอร์ก็ทำการปรับแต่งต่อ และทำได้ถึง 100 ล้าน draw call ต่อวินาทีในการทดสอบ vkoverhead

24 เมษายน~25 เมษายน

  • รองรับ YCbCr: เพิ่มความสามารถ YCbCr โดยใช้โค้ด NVK ของ Mohamed Ahmed
  • การคัดลอก query: ทำฟีเจอร์คัดลอก GPU query

26 เมษายน

  • Border color: ทำส่วนขยาย EXT_custom_border_color เพื่อความเข้ากันได้กับ Direct3D และแก้ปัญหา border color

27 เมษายน

  • การทดสอบขั้นสุดท้าย: ผ่านการทดสอบทั้งหมด ผ่าน 686,930 รายการ ล้มเหลว 0 รายการ

แผนในอนาคต

  • รองรับ DXVK และ vkd3d-proton: มีแผนเพิ่มฟีเจอร์เพิ่มเติมเพื่อรองรับการทำเลเยอร์ของ Direct3D
  • รันเกม Windows: มีแผนรันเกม Windows บน Asahi Linux โดยใช้ Wine และ x86 emulator แบบโอเพนซอร์ส

ความเห็นของ GN⁺

  • ความท้าทายทางเทคนิค: การทำ Vulkan 1.3 บน M1 เป็นงานที่ท้าทายมากในเชิงเทคนิค เพราะสถาปัตยกรรมของฮาร์ดแวร์ Apple มีความเฉพาะตัว
  • เป็นประโยชน์ต่อผู้พัฒนาเกม: เมื่อไดรเวอร์ Vulkan เสร็จสมบูรณ์ นักพัฒนาเกมจะสามารถทำให้เกมรันได้บนแพลตฟอร์มที่หลากหลายขึ้น
  • ยังต้องปรับแต่งประสิทธิภาพ: ในระยะแรกอาจยังต้องมีการปรับแต่งประสิทธิภาพ โดยเฉพาะการแก้ปัญหา CPU overhead จากการจัดการ dynamic state
  • การมีส่วนร่วมของชุมชน: ในฐานะโครงการโอเพนซอร์ส การมีส่วนร่วมจากชุมชนมีความสำคัญ ต้องอาศัยการทดสอบและฟีดแบ็กจากสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ที่หลากหลาย
  • ผลิตภัณฑ์คู่แข่ง: นอกจาก DXVK และ vkd3d-proton ยังมี compatibility layer อื่นอย่าง Wine ด้วย การเปรียบเทียบข้อดีข้อเสียของแต่ละตัวก่อนเลือกใช้งานเป็นเรื่องสำคัญ

1 ความคิดเห็น

 
GN⁺ 2024-06-06
ความเห็นจาก Hacker News
  • เป็นงานที่น่าประทับใจซึ่งพิสูจน์ คุณค่าของคอมโพเนนต์ที่ใช้ร่วมกัน ทำซ้ำได้ และเปิดกว้าง อยากรู้ว่าจะต้องใช้เวลานานแค่ไหนกว่าจะพอร์ต Proton ได้ เกมจำนวนมากอาจรันได้ไม่สมบูรณ์เพราะความแตกต่างของสถาปัตยกรรม GPU และโอเวอร์เฮดจากการแปลง ARM ถึงอย่างนั้นก็ยังมองในแง่ดีว่าเมื่อ SoC กลายเป็นเรื่องแพร่หลายมากขึ้น เกมก็จะหันมาเจาะจง unified memory และ ARM มากขึ้น

  • สงสัยว่าความพยายามในการ เพิ่ม Vulkan ให้ Linux และแปลง DirectX บน Asahi Linux จะส่งผลต่อความฝันของ Apple ที่อยากนำเกม AAA มาสู่ Apple Silicon หรือไม่ Apple ต้องการให้นักพัฒนา AAA พอร์ตเกมไปยัง Metal เพื่อให้รันได้บน iPhone, iPad, Mac และ Vision Pro และก็มีความเป็นไปได้ที่เกมเมอร์ Mac จะติดตั้ง Asahi Linux เพื่อเล่นเกม AAA ฝั่ง PC

  • ถ้ายังไม่คุ้นกับ Vulkan 1.3 แต่สนใจงานด้านกราฟิก API ระดับล่าง ก็ถือว่าคุ้มค่าที่จะลองดู พอผ่านอุปสรรคช่วงแรกไปได้ งานจะเริ่มสนุกขึ้นมาก ด้วย dynamic state ที่ครบถ้วนและ render pass ที่ไม่ต้องตั้งค่าล่วงหน้า งานจึงง่ายขึ้นมาก ใช้ได้บนทุกแพลตฟอร์มเดสก์ท็อปที่มี GPU อายุไม่เกิน 10 ปี เพียงแต่ไม่มีเฟรมเวิร์กแบบ "ค่าเริ่มต้นที่สมเหตุสมผล" แต่ก็มี helper library ที่มีประโยชน์ในหลายภาษา

  • อยากมี ความสามารถด้านการเขียนโปรแกรม สักครึ่งหนึ่งของเธอบ้าง สุดยอดจริง ๆ

  • มนตร์แห่งการเขียนโค้ดอันน่าทึ่งของ Alyssa ไม่รู้ว่าเธอทำได้อย่างไร แต่ก็ดีใจที่เธอกำลังสู้ในสิ่งที่ควรสู้

  • บั๊กของคอมไพเลอร์ ไม่มีทางเกิดขึ้นเด็ดขาด แต่สุดท้ายแล้วมันก็คือบั๊กของคอมไพเลอร์จริง ๆ ตลอดอาชีพที่ผ่านมาไม่เคยเจอเลยสักครั้ง แต่ในระดับนามธรรมแบบนี้อาจเกิดได้บ่อยกว่าที่คิด

  • เพิ่งมี อัปเดตการรองรับ ES 3.2 และรู้สึกว่า M1 เหมือนถูกสร้างมาเพื่อ Asahi โดยเฉพาะ macOS ถูกบูตแค่ครั้งเดียวตอนติดตั้งเท่านั้น สงสัยว่าเบราว์เซอร์รองรับ 'zero-copy rendering' หรือไม่ จำได้ว่าเคยติดปัญหาที่ WebGL2 transform feedback ไปกระตุ้นการอ่านข้อมูล

  • มี โครงสร้างเชดเดอร์ที่แปลก อยู่ โดยมีเงื่อนไขที่เป็นเท็จเสมอ แต่คอมไพเลอร์ไม่รู้เรื่องนี้ สงสัยว่าจุดประสงค์ของโครงสร้างนี้คืออะไร

  • สามารถใช้ภายใน VM ได้หรือไม่ พัฒนาบน macOS และใช้อิมเมจ VMware เพื่อทดสอบ Ubuntu กำลังพัฒนาแอปกราฟิก 3D อยู่ แต่ไม่แน่ใจว่า passthrough ของ VMware ดีแค่ไหน สงสัยว่า GPU ของ Apple Silicon ถูกทำ virtualization ใน VM หรือไม่ และจะรันดิสโทรนี้เพื่อให้ได้ประสิทธิภาพกราฟิกที่ดีกว่าได้หรือเปล่า

  • สงสัยว่าจะมีใครอธิบาย ความสัมพันธ์กับ MoltenVK ได้ไหม ว่างานนี้ทำให้ความจำเป็นของ MoltenVK หมดไปหรือไม่ และมันเป็นไดรเวอร์แบบเนทีฟหรือเปล่า