พวกเขาเสนอการใช้งานไดรเวอร์ GPU ที่เขียนด้วย Rust สำหรับ Apple AGX G13 และ G14

Linux Apple สนิม

นี่เป็นไดรเวอร์ที่ค่อนข้างครอบคลุมสำหรับ GPU ซีรีส์ Apple AGX G13 และ G14
คอนโทรลเลอร์ของวันนี้เข้ากันได้กับ SoC

โดยมีข่าวออกมาเมื่อไม่นานนี้ว่า มีการเสนอการใช้งานเบื้องต้นของไดรเวอร์ drm-asahi สำหรับ GPU ซีรีส์ Apple AGX G13 และ G14 ใช้ในชิป Apple M1 และ M2 ในรายชื่อผู้รับเมลของผู้พัฒนาเคอร์เนล Linux

คอนโทรลเลอร์เขียนด้วยภาษาสนิม บวก รวมชุดลิงก์สากลเกี่ยวกับระบบย่อย DRM (Direct Rendering Manager) ที่สามารถใช้ในการพัฒนาไดรเวอร์กราฟิกอื่นๆ ใน Rust

ชุดแพทช์ที่ปล่อยออกมา จนถึงตอนนี้ ถูกเสนอเพื่ออภิปรายเท่านั้น โดยนักพัฒนาหลัก (RFC) แต่อาจได้รับการยอมรับให้เข้าร่วมทีมหลักหลังจากการตรวจสอบเสร็จสิ้นและข้อบกพร่องที่ระบุจะถูกลบออก

นี่เป็นรุ่นแรกของ Rust abstractions สำหรับ DRM ระบบย่อย รวมถึงสิ่งที่เป็นนามธรรมเอง บางส่วนเล็กน้อย การเปลี่ยนแปลงข้อกำหนดเบื้องต้นในด้าน C เช่นเดียวกับไดรเวอร์ GPU drm-asahi (สำหรับการอ้างอิงเกี่ยวกับวิธีการใช้นามธรรม แต่ไม่จำเป็น ตั้งใจจะลงดินด้วยกัน)

แพตช์เหล่านี้ใช้ที่ด้านบนของทรีใน [1] ซึ่งอิงตาม 6.3-rc1 พร้อมการสนับสนุน abstraction/Rust จำนวนมากที่เพิ่มเข้ามา ข้างบน. สิ่งเหล่านี้ส่วนใหญ่ไม่ใช่ข้อกำหนดเบื้องต้นสำหรับนามธรรม DRM ตัวเอง แต่จากคนขับเท่านั้น

ตั้งแต่เดือนธันวาคม ตัวควบคุมจะรวมอยู่ใน แพ็คเกจกับเคอร์เนล สำหรับการแจกจ่าย Asahi Linux และได้รับการทดสอบโดยผู้ใช้ของโครงการนี้

สามารถใช้ไดรเวอร์บนลีนุกซ์รุ่นดิสทริบิวชั่นได้ จัดสภาพแวดล้อมกราฟิกในงอุปกรณ์ Apple ที่มี SoC M1, M1 Pro, M1 Max, M1 Ultra และ M2 เมื่อพัฒนาไดรเวอร์ ความพยายามไม่เพียงเพิ่มความปลอดภัยโดยลดข้อผิดพลาดให้เหลือน้อยที่สุดเมื่อทำงานกับหน่วยความจำในโค้ดที่เรียกใช้จากฝั่ง CPU แต่ยังป้องกันปัญหาบางส่วนที่เกิดขึ้นเมื่อโต้ตอบกับเฟิร์มแวร์ด้วย

โดยเฉพาะอย่างยิ่ง ไดรเวอร์ให้การรวมบางอย่างสำหรับโครงสร้างหน่วยความจำที่ใช้ร่วมกัน ไม่ปลอดภัยกับสตริงของตัวชี้ที่ซับซ้อนที่ใช้ในเฟิร์มแวร์เพื่อโต้ตอบกับคอนโทรลเลอร์ ไดรเวอร์ที่นำเสนอนี้ใช้ร่วมกับไดรเวอร์ Asahi Mesa ซึ่งรองรับ OpenGL พื้นที่ผู้ใช้ และผ่านการทดสอบความเข้ากันได้ของ OpenGL ES 2 และเกือบจะพร้อมรองรับ OpenGL ES 3.0 แล้ว

ในขณะเดียวกันไดรเวอร์ที่ทำงานในระดับเคอร์เนล ได้รับการพัฒนาในขั้นต้นโดยคำนึงถึงการสนับสนุนในอนาคตสำหรับ Vulkan APIและอินเทอร์เฟซการเขียนโปรแกรมสำหรับการโต้ตอบกับพื้นที่ผู้ใช้ได้รับการออกแบบโดยคำนึงถึง UAPI ที่จัดทำโดยไดรเวอร์ Intel Xe ใหม่

ในช่วง ปัญหาที่ทราบ มีการกล่าวถึงต่อไปนี้:

  • การรวม Rust ที่มีอยู่ในปัจจุบันไม่รองรับการสร้างนามธรรมเป็นโมดูล ดังนั้นนามธรรมของสนิมจึงใช้ได้เฉพาะกับคอมโพเนนต์ DRM ที่ฝังไว้เท่านั้น
  • DRM อาศัยรูปแบบ "subclassing" อย่างมากสำหรับอ็อบเจกต์คอนโทรลเลอร์ ซึ่งไม่เหมาะกับ Rust
  • ในปัจจุบัน เฉพาะสิ่งที่จำเป็นสำหรับคอนโทรลเลอร์เท่านั้นที่ถูกนำมาใช้ (บวกจำนวนเล็กน้อยของ
    ความพิเศษที่เห็นได้ชัดซึ่งความสมบูรณ์ของ API ที่ดีกว่าสมเหตุสมผล)
  • drm::mm จบลงด้วยการต้องใช้ mutex ในตัวสิ่งที่เป็นนามธรรมแทน
    เพื่อมอบสิทธิ์นั้นให้กับผู้ใช้ด้วยกฎการกลายพันธุ์ของสนิมตามปกติ
    นี่เป็นเพราะโหนดสามารถหลุดได้ตลอดเวลาและการดำเนินการเหล่านั้น
    จะต้องซิงค์กัน
  • ทางด้าน Mesa ขณะนี้คุณมีไดรเวอร์ Gallium ซึ่งส่วนใหญ่อยู่ต้นน้ำแล้ว (ส่วนใหญ่ขาด UAPI บิต) และ
    ผ่านการทดสอบ dEQP GLES2/EGL โดยส่วนใหญ่ผ่าน GLES3.0
    สาขาต้นน้ำของงานที่อยู่ระหว่างดำเนินการ นี่คือวิศวกรรมย้อนกลับของไดรเวอร์ชุมชน ดังนั้นจึงมีการกล่าวถึงว่ายังมีอีกมากที่ต้องทำในด้านนี้

ในที่สุดถ้าคุณเป็น สนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา