1 คะแนน โดย GN⁺ 2024-06-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

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

    • ถ้าประสบการณ์เล่นเกมบน Asahi ง่ายและเรียบง่ายกว่า macOS ได้ ก็คงเป็นเรื่องย้อนแย้งไม่น้อย
      มันแสดงให้เห็นว่าการที่ Apple เมิน Vulkan ตลอด 10 ปีที่ผ่านมานั้นเป็นความผิดพลาดใหญ่แค่ไหน แต่คงไม่มีทางยอมรับจนกว่าจะสายเกินไป
    • มีเกมจำนวนมากที่ไม่ต้องใช้ dxvk และรันได้ที่ 60FPS ขึ้นไป ดู https://vt.social/@lina/112524118075585601
      Alyssa ก็กำลังปรับปรุงประสิทธิภาพของ FEX อยู่เมื่อเร็ว ๆ นี้ด้วย
  • สงสัยว่างานนี้ที่เพิ่ม Vulkan ให้ Linux และแปลง DirectX บน Asahi Linux จะส่งผลต่อความฝันของ Apple ที่อยากดึงเกม AAA มายัง Apple Silicon หรือไม่
    Apple คงอยากให้นักพัฒนา AAA พอร์ตเกมไป Metal เพื่อให้รันบน iPhone, iPad, Mac และ Vision Pro ได้ด้วยโค้ดเบสเดียว
    บางทีเกมเมอร์ Mac อาจถึงขั้นติดตั้ง Asahi Linux เพื่อเล่นเกม AAA ของพีซีก็ได้

    • ความฝันของ Apple ไม่ใช่การให้เกม AAA มาอยู่บน Apple Silicon แต่คือการให้มาอยู่บน Apple App Store ต่างหาก เลเยอร์แบบ Proton สามารถทำได้เหมือน GPTK
      สิ่งที่ต้องการจริง ๆ คือให้เกม AAA เข้ามาอยู่ใน App Store ไม่ใช่ Steam หรือ Epic Games Store และนั่นจึงเป็นเหตุผลที่ GPTK ทำออกมาแบบครึ่ง ๆ กลาง ๆ และไลเซนส์ก็กันไม่ให้ Valve ผสานเข้ากับ Steam โดยตรงได้
    • Asahi Linux อาจกลายเป็น Boot Camp แบบใหม่สำหรับผู้ใช้ Mac ที่เคยดูอัลบูตเพื่อเล่นเกม
      เคยลองเล่น Diablo II Resurrected ด้วย Whiskey บน M1 แล้วค่อนข้างประทับใจที่เกม Windows เนทีฟรันได้ทันทีแบบนั้น ตอนนี้มีแค่การอัปเดตโง่ ๆ ของ Blizzard launcher ที่ทำให้แครชและขวางไม่ให้เปิดเกมได้
      ถึงจะเป็นเกม DX9 เก่า ๆ แต่ EverQuest II ก็รันได้ดีมากที่ 1440p บน M1 Mac mini และ Asahi Linux น่าจะช่วยกับ เกม 32 บิต เก่า ๆ อย่าง Guild Wars ได้ด้วย
    • ถ้า Apple ต้องการแบบนั้นจริง ๆ ก็แค่ ทำ Vulkan ขึ้นมาก็พอ
    • Apple เปิดตัว Game Porting Toolkit ไปแล้ว
  • ถ้าไม่คุ้นกับ Vulkan 1.3 แต่สนใจงาน API กราฟิกระดับต่ำ ก็คุ้มค่าที่จะลองดูอย่างยิ่ง มันอยู่ คนละระดับกับ Vulkan 1.0 โดยสิ้นเชิง และเปลี่ยนเกมไปเลย
    พอผ่านกำแพงช่วงต้นไปได้แล้ว การทำงานก็สนุก และเพราะตัด dynamic state ทั้งหมดกับการตั้งค่า render pass ล่วงหน้าออกไป จึงจัดการได้ง่ายขึ้นมาก ง่ายกว่า OpenGL ที่ใช้มาตลอด 20 ปีเสียอีก และทำให้การเขียนโปรแกรมกราฟิกกลับมาสนุกอีกครั้ง
    ขอแค่มีไดรเวอร์รุ่นใหม่ ก็ใช้ฟีเจอร์ส่วนใหญ่ได้บนแพลตฟอร์มเดสก์ท็อปแทบทั้งหมดที่มี GPU ในช่วงราว 10 ปีที่ผ่านมา
    น่าเสียดายที่ยังไม่มีเฟรมเวิร์ก “ค่าเริ่มต้นที่สมเหตุสมผล” ให้เริ่มใช้งานได้ทันที แต่มีไลบรารีช่วยที่มีประโยชน์มากมายสำหรับหลายภาษา

    • ใช้ OpenGL แบบแตะ ๆ มาตลอด 20 ปี และแม้จะไม่ใช่โปรแกรมเมอร์เกมมืออาชีพ แต่ก็สร้างคอนเทนต์ 3D ในเวลาว่าง
      ยังไม่มีเวลาเปลี่ยนไปใช้ Vulkan แต่ดูเหมือนสุดท้ายแล้วแค่ต้องผ่านกำแพงเรื่องการเริ่มต้นและการตั้งค่าให้ได้ หลังจากนั้นคงไม่กลับไปใช้ OpenGL แล้ว
      บทความนี้กระตุ้นให้รู้สึกว่าควรลองทำจริง ๆ สักที
    • มีทิวทอเรียลหรือเอกสารสำหรับเริ่มใช้ Vulkan 1.3 โดยเฉพาะไหม? ครั้งล่าสุดที่ค้นดู มีแต่แหล่งข้อมูลที่ปนวิธีเก่ากับวิธีใหม่หลายรูปแบบเข้าด้วยกัน
      OpenGL แต่เดิมก็เป็นแบบนั้นเหมือนกัน อาจไม่ได้ต่างกันมากนักก็ได้ แต่ก็รู้สึกว่า Khronos ทำได้ “ยอดเยี่ยม” จริง ๆ
  • เพิ่งอัปเดตเพราะรองรับ ES 3.2 แล้วก็ทึ่งตั้งแต่ตอนนี้เลย M1 ของผมให้ความรู้สึกเหมือนถูกสร้างมาเพื่อ Asahi
    พูดตรง ๆ macOS น่าจะถูกบูตแค่ตอนติดตั้ง หรือไม่ก็เผลอบูตครั้งเดียวเท่านั้น ดีที่มีอัปเดตรายละเอียดแบบนี้
    สงสัยว่ามีเบราว์เซอร์ไหนรองรับ zero-copy rendering หรือไม่ หรือยังมีเลเยอร์คอมโพสิตเตอร์ซ้อนกันหลายชั้นอยู่เหมือนเดิม จำได้ว่า WebGL2 transform feedback เคยติดเพราะทำให้เกิดการอ่านย้อนกลับ

    • สามารถลบ macOS ออกทั้งหมดได้ไหม? เห็นแบบนี้แล้วทำให้เริ่มพิจารณา Mac mini สำหรับพกเดินทาง
  • เคยคิดว่าถ้ามีอะไรแครชขึ้นมา มันไม่มีทางเป็นบั๊กคอมไพเลอร์แน่นอน แต่วันที่ 16 เมษายน มันเป็นบั๊กคอมไพเลอร์จริง ๆ
    พูดได้อย่างมั่นใจว่าในอาชีพการงานไม่เคยเจอแบบนั้นมาก่อน แต่ยิ่งระดับ abstraction ต่ำลง มันก็อาจไม่ได้หายากขนาดนั้น

    • ไม่มีทางเป็นบั๊กคอมไพเลอร์ และก็ไม่มีทางเป็นบั๊ก CPU แน่นอน
      เว้นแต่ว่าคุณเป็นนักพัฒนาเคอร์เนลระดับต่ำ ซึ่งทั้งสองอย่างอาจจริงได้
      ล้อเล่นก็ส่วนล้อเล่น แต่ในความเป็นจริงส่วนใหญ่ไม่ใช่แบบนั้นจริง ๆ ทว่ามันเกิดขึ้นได้แน่นอน
    • อย่างน้อยส่วน register allocator นั่นก็เขียนเองไม่ใช่หรือ?
      ถ้าเป็นคอมไพเลอร์ที่ยังอยู่ระหว่างพัฒนาและเป็นงานของตัวเองที่กำลังทดสอบอยู่ คติที่ว่า “ไม่มีทางเป็นบั๊กคอมไพเลอร์” ก็ใช้ไม่ค่อยได้
  • มีโครงสร้างแปลก ๆ อยู่ในเชดเดอร์: if (condition) { while (true) { } }
    condition เป็นเท็จเสมอ แต่คอมไพเลอร์ไม่รู้เรื่องนั้น
    นอกจากจะเป็นยาพิษที่ทำให้คนเขียนคอมไพเลอร์เชดเดอร์ที่ทำตามมาตรฐานต้องปวดหัวแล้ว ก็สงสัยว่าโครงสร้างนี้มีจุดประสงค์อะไร

    • แก่นของการทดสอบคือการโยน อินพุตแบบยาพิษ ใส่ผู้เขียนคอมไพเลอร์ เพื่อให้ไม่พังไม่ว่าจะมีเชดเดอร์แบบไหนเข้ามาไม่ใช่หรือ?
      ตัวโค้ดนั้นเองอาจไม่ได้มีประโยชน์ในงานจริงมากนัก แต่ถ้าบางส่วนของเชดเดอร์สามารถถูกทำให้ง่ายลงจนกลายเป็นรูปแบบนี้ได้ในบางสถานการณ์ คอมไพเลอร์ก็ควรจัดการได้อย่างถูกต้อง
    • จุดประสงค์ของโครงสร้างนี้อาจเป็นการบอกคอมไพเลอร์ว่าเงื่อนไขเป็นเท็จเสมอ เพื่อให้ optimizer ทำการเพิ่มประสิทธิภาพได้มากขึ้น
      ถ้าไม่คุ้นกับแนวคิดนี้ ลองดูฟีเจอร์เหล่านี้ใน 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
    • นี่คือวิธีที่เชดเดอร์ทำให้เกิด “panic” หรือเปล่า?
    • อาจเป็น กรณีขอบเขต ของการสร้างโค้ดบางแบบก็ได้
  • สงสัยว่าจะใช้สิ่งนี้ภายใน VM ได้ไหม ผมพัฒนาบน macOS และโดยรวมก็พอใจ แต่สำหรับการทดสอบจะรันอิมเมจ Ubuntu ของ VMware
    ผมกำลังทำแอปกราฟิก 3D อยู่ เลยไม่แน่ใจว่า passthrough ของ VMware ไปได้ไกลแค่ไหน สงสัยว่า GPU ของ Apple Silicon ถูก virtualize ใน VM หรือไม่ และถ้ารันดิสโทรนี้แล้วประสิทธิภาพกราฟิกจะดีขึ้นได้ไหม

    • ต้องติดตั้งแบบเนทีฟ ถ้าต้องการ ประสิทธิภาพ 3D ที่ดีใน VM ของ Windows/Linux/macOS บน macOS แล้ว Parallels ดีกว่า VMware มาก
  • ใครช่วยอธิบายได้ไหมว่าสิ่งนี้เกี่ยวข้องกับ MoltenVK อย่างไร? เพราะเป็นไดรเวอร์เนทีฟ เลยไม่ต้องใช้ MoltenVK แล้วหรือเปล่า?

    • MoltenVK คือ การใช้งาน Vulkan ที่สร้างบน Metal เพื่อให้รันแอปพลิเคชัน Vulkan บน macOS ได้
      Asahi Linux เป็นดิสโทรที่กำลังพัฒนาเพื่อให้ Linux ใช้งานได้กับโปรเซสเซอร์ Apple M series และบทความนี้เป็นเรื่องการทำให้ Vulkan ที่เร่งด้วย GPU ทำงานบน Asahi
    • นี่เป็นเรื่องการใช้ Vulkan บน Asahi Linux บนฮาร์ดแวร์ M1 Mac ส่วน MoltenVK ให้ Vulkan บน Metal ใน macOS
    • นี่เป็นเนื้อหาเกี่ยวกับ Vulkan บน Linux ไม่ใช่ macOS
    • MoltenVK แปลง Metal เป็น Vulkan โดย Metal เป็น API กราฟิกหลักของ OS X และ iOS ส่วนสิ่งนี้คือ การใช้งาน Vulkan แบบเนทีฟ สำหรับ Linux
      ในบทความก็พูดไว้แบบนั้นเหมือนกัน สิ่งนี้ไม่สามารถรันบน OS X ได้โดยตรง จึงไม่ได้ทำให้ไม่ต้องใช้ MoltenVK