- Honeykrisp ยัง ไม่ได้เปิดตัว สำหรับผู้ใช้ปลายทาง และขณะนี้เปิดเผยเฉพาะ source code สำหรับนักพัฒนาเท่านั้น
- Honeykrisp สำหรับ M1 เป็นการใช้งาน conformant Vulkan ครั้งแรกบน Apple hardware และรองรับ สเปก Vulkan 1.3 ครบถ้วน โดยไม่มี waiver แบบ
portability - Honeykrisp ไม่ได้ต่อยอดจากงาน Vulkan เดิมบน M1 แต่เริ่มจาก NVK driver แบบโอเพนซอร์สสำหรับ NVIDIA GPU โดยเพิ่มโค้ดสำหรับ M1 และลบส่วนที่เกี่ยวข้องกับ NVIDIA ออก
- ผลลัพธ์สุดท้ายของ Vulkan 1.3 conformance test suite ถูกบันทึกเป็น Pass 686930, Fail 0
- เพิ่มโค้ดสำหรับจัดการสถานะทั้งหมดเป็น dynamic state และสำหรับ build, compile และ cache prolog กับ epilog เพื่อมุ่งไปสู่การรองรับ full dynamic state และ
EXT_shader_object - ใช้งาน
EXT_image_drm_format_modifierเพื่อการเรนเดอร์แบบ zero-copy - รองรับ
EXT_custom_border_colorที่ DXVK และ vkd3d-proton ต้องการเพื่อความเข้ากันได้กับ Direct3D โดยการแก้ไข border colour ถูกจำลองด้วยวิธีแทรกโค้ดเข้าไปใน shader - การจำลอง custom border colour ถูกระบุว่า “simple, correct, and slow” และมีแผนจะเพิ่มความเร็วด้วย driver tricks ในภายหลัง
- งานถัดไปคือการ implement รายการที่ DXVK และ vkd3d-proton ต้องใช้สำหรับการซ้อนเลเยอร์ Direct3D โดยยก transform feedback เป็นตัวอย่าง
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เป็นงานที่น่าประทับใจจริง ๆ และแสดงให้เห็นคุณค่าของ คอมโพเนนต์แบบเปิดที่ถูกแชร์และปรับปรุงซ้ำได้ อย่างชัดเจน
สงสัยว่าอีกนานแค่ไหนกว่า Proton จะถูกพอร์ตมาได้ แต่ต่อให้การใช้งาน Vulkan จะเหมาะสมที่สุด เกมจำนวนมากก็น่าจะมีประสิทธิภาพไม่ดีนัก เพราะความต่างของสถาปัตยกรรม GPU, โอเวอร์เฮดจากการแปลง ARM และต้นทุนของ Proton เอง
ถึงอย่างนั้น ถ้า SoC อย่าง Snapdragon พบได้บ่อยขึ้นบนเดสก์ท็อป ก็ยังมองโลกในแง่ดีว่าในอนาคตจะมีเกมมากขึ้นที่มุ่งเป้าไปที่ หน่วยความจำแบบรวมและ ARM
มันแสดงให้เห็นว่าการที่ Apple เมิน Vulkan ตลอด 10 ปีที่ผ่านมานั้นเป็นความผิดพลาดใหญ่แค่ไหน แต่คงไม่มีทางยอมรับจนกว่าจะสายเกินไป
Alyssa ก็กำลังปรับปรุงประสิทธิภาพของ FEX อยู่เมื่อเร็ว ๆ นี้ด้วย
สงสัยว่างานนี้ที่เพิ่ม Vulkan ให้ Linux และแปลง DirectX บน Asahi Linux จะส่งผลต่อความฝันของ Apple ที่อยากดึงเกม AAA มายัง Apple Silicon หรือไม่
Apple คงอยากให้นักพัฒนา AAA พอร์ตเกมไป Metal เพื่อให้รันบน iPhone, iPad, Mac และ Vision Pro ได้ด้วยโค้ดเบสเดียว
บางทีเกมเมอร์ Mac อาจถึงขั้นติดตั้ง Asahi Linux เพื่อเล่นเกม AAA ของพีซีก็ได้
สิ่งที่ต้องการจริง ๆ คือให้เกม AAA เข้ามาอยู่ใน App Store ไม่ใช่ Steam หรือ Epic Games Store และนั่นจึงเป็นเหตุผลที่ GPTK ทำออกมาแบบครึ่ง ๆ กลาง ๆ และไลเซนส์ก็กันไม่ให้ Valve ผสานเข้ากับ Steam โดยตรงได้
เคยลองเล่น Diablo II Resurrected ด้วย Whiskey บน M1 แล้วค่อนข้างประทับใจที่เกม Windows เนทีฟรันได้ทันทีแบบนั้น ตอนนี้มีแค่การอัปเดตโง่ ๆ ของ Blizzard launcher ที่ทำให้แครชและขวางไม่ให้เปิดเกมได้
ถึงจะเป็นเกม DX9 เก่า ๆ แต่ EverQuest II ก็รันได้ดีมากที่ 1440p บน M1 Mac mini และ Asahi Linux น่าจะช่วยกับ เกม 32 บิต เก่า ๆ อย่าง Guild Wars ได้ด้วย
ถ้าไม่คุ้นกับ Vulkan 1.3 แต่สนใจงาน API กราฟิกระดับต่ำ ก็คุ้มค่าที่จะลองดูอย่างยิ่ง มันอยู่ คนละระดับกับ Vulkan 1.0 โดยสิ้นเชิง และเปลี่ยนเกมไปเลย
พอผ่านกำแพงช่วงต้นไปได้แล้ว การทำงานก็สนุก และเพราะตัด dynamic state ทั้งหมดกับการตั้งค่า render pass ล่วงหน้าออกไป จึงจัดการได้ง่ายขึ้นมาก ง่ายกว่า OpenGL ที่ใช้มาตลอด 20 ปีเสียอีก และทำให้การเขียนโปรแกรมกราฟิกกลับมาสนุกอีกครั้ง
ขอแค่มีไดรเวอร์รุ่นใหม่ ก็ใช้ฟีเจอร์ส่วนใหญ่ได้บนแพลตฟอร์มเดสก์ท็อปแทบทั้งหมดที่มี GPU ในช่วงราว 10 ปีที่ผ่านมา
น่าเสียดายที่ยังไม่มีเฟรมเวิร์ก “ค่าเริ่มต้นที่สมเหตุสมผล” ให้เริ่มใช้งานได้ทันที แต่มีไลบรารีช่วยที่มีประโยชน์มากมายสำหรับหลายภาษา
ยังไม่มีเวลาเปลี่ยนไปใช้ Vulkan แต่ดูเหมือนสุดท้ายแล้วแค่ต้องผ่านกำแพงเรื่องการเริ่มต้นและการตั้งค่าให้ได้ หลังจากนั้นคงไม่กลับไปใช้ OpenGL แล้ว
บทความนี้กระตุ้นให้รู้สึกว่าควรลองทำจริง ๆ สักที
OpenGL แต่เดิมก็เป็นแบบนั้นเหมือนกัน อาจไม่ได้ต่างกันมากนักก็ได้ แต่ก็รู้สึกว่า Khronos ทำได้ “ยอดเยี่ยม” จริง ๆ
เพิ่งอัปเดตเพราะรองรับ ES 3.2 แล้วก็ทึ่งตั้งแต่ตอนนี้เลย M1 ของผมให้ความรู้สึกเหมือนถูกสร้างมาเพื่อ Asahi
พูดตรง ๆ macOS น่าจะถูกบูตแค่ตอนติดตั้ง หรือไม่ก็เผลอบูตครั้งเดียวเท่านั้น ดีที่มีอัปเดตรายละเอียดแบบนี้
สงสัยว่ามีเบราว์เซอร์ไหนรองรับ zero-copy rendering หรือไม่ หรือยังมีเลเยอร์คอมโพสิตเตอร์ซ้อนกันหลายชั้นอยู่เหมือนเดิม จำได้ว่า WebGL2 transform feedback เคยติดเพราะทำให้เกิดการอ่านย้อนกลับ
เคยคิดว่าถ้ามีอะไรแครชขึ้นมา มันไม่มีทางเป็นบั๊กคอมไพเลอร์แน่นอน แต่วันที่ 16 เมษายน มันเป็นบั๊กคอมไพเลอร์จริง ๆ
พูดได้อย่างมั่นใจว่าในอาชีพการงานไม่เคยเจอแบบนั้นมาก่อน แต่ยิ่งระดับ abstraction ต่ำลง มันก็อาจไม่ได้หายากขนาดนั้น
เว้นแต่ว่าคุณเป็นนักพัฒนาเคอร์เนลระดับต่ำ ซึ่งทั้งสองอย่างอาจจริงได้
ล้อเล่นก็ส่วนล้อเล่น แต่ในความเป็นจริงส่วนใหญ่ไม่ใช่แบบนั้นจริง ๆ ทว่ามันเกิดขึ้นได้แน่นอน
ถ้าเป็นคอมไพเลอร์ที่ยังอยู่ระหว่างพัฒนาและเป็นงานของตัวเองที่กำลังทดสอบอยู่ คติที่ว่า “ไม่มีทางเป็นบั๊กคอมไพเลอร์” ก็ใช้ไม่ค่อยได้
มีโครงสร้างแปลก ๆ อยู่ในเชดเดอร์:
if (condition) { while (true) { } }conditionเป็นเท็จเสมอ แต่คอมไพเลอร์ไม่รู้เรื่องนั้นนอกจากจะเป็นยาพิษที่ทำให้คนเขียนคอมไพเลอร์เชดเดอร์ที่ทำตามมาตรฐานต้องปวดหัวแล้ว ก็สงสัยว่าโครงสร้างนี้มีจุดประสงค์อะไร
ตัวโค้ดนั้นเองอาจไม่ได้มีประโยชน์ในงานจริงมากนัก แต่ถ้าบางส่วนของเชดเดอร์สามารถถูกทำให้ง่ายลงจนกลายเป็นรูปแบบนี้ได้ในบางสถานการณ์ คอมไพเลอร์ก็ควรจัดการได้อย่างถูกต้อง
ถ้าไม่คุ้นกับแนวคิดนี้ ลองดูฟีเจอร์เหล่านี้ใน C++, LLVM, Rust:
https://en.cppreference.com/w/cpp/utility/unreachable
https://en.cppreference.com/w/cpp/language/attributes/assume
https://en.cppreference.com/w/cpp/memory/assume_aligned
https://llvm.org/docs/LangRef.html#unreachable-instruction
https://llvm.org/docs/LangRef.html#llvm-assume-intrinsic
https://doc.rust-lang.org/std/hint/fn.unreachable_unchecked....
https://doc.rust-lang.org/std/hint/fn.assert_unchecked.html
ลูปไม่สิ้นสุดในทางปฏิบัติคือคำสั่งที่เข้าถึงไม่ได้ และคำสั่งที่เข้าถึงไม่ได้หลังการแตกแขนง ในทางปฏิบัติก็จะกลายเป็นคำสั่ง assume
สงสัยว่าจะใช้สิ่งนี้ภายใน VM ได้ไหม ผมพัฒนาบน macOS และโดยรวมก็พอใจ แต่สำหรับการทดสอบจะรันอิมเมจ Ubuntu ของ VMware
ผมกำลังทำแอปกราฟิก 3D อยู่ เลยไม่แน่ใจว่า passthrough ของ VMware ไปได้ไกลแค่ไหน สงสัยว่า GPU ของ Apple Silicon ถูก virtualize ใน VM หรือไม่ และถ้ารันดิสโทรนี้แล้วประสิทธิภาพกราฟิกจะดีขึ้นได้ไหม
ใครช่วยอธิบายได้ไหมว่าสิ่งนี้เกี่ยวข้องกับ MoltenVK อย่างไร? เพราะเป็นไดรเวอร์เนทีฟ เลยไม่ต้องใช้ MoltenVK แล้วหรือเปล่า?
Asahi Linux เป็นดิสโทรที่กำลังพัฒนาเพื่อให้ Linux ใช้งานได้กับโปรเซสเซอร์ Apple M series และบทความนี้เป็นเรื่องการทำให้ Vulkan ที่เร่งด้วย GPU ทำงานบน Asahi
ในบทความก็พูดไว้แบบนั้นเหมือนกัน สิ่งนี้ไม่สามารถรันบน OS X ได้โดยตรง จึงไม่ได้ทำให้ไม่ต้องใช้ MoltenVK