Daniel Almeida ผู้ทำงานด้านการพัฒนาตัวแปลงสัญญาณวิดีโอที่ Collabora ได้โพสต์ข้อความในรายชื่อผู้รับอีเมลสำหรับนักพัฒนา Linux- การพัฒนาเบื้องต้นของไดรเวอร์ Tyr สำหรับ GPU ARM Mali ที่ใช้เทคโนโลยี Command Stream Frontend (CSF) เช่น Mali G310, G510 และ G710 โค้ดไดรเวอร์เขียนด้วยภาษา Rust และประกอบด้วยโค้ดมากกว่า 600 บรรทัดเล็กน้อย การพัฒนาไดรเวอร์ Tyr นี้ดำเนินการร่วมกันโดย Collabora, Arm และ Google
กรอบงานสำหรับการสร้างไดรเวอร์ใหม่ใช้ส่วนประกอบของไดรเวอร์ rust_platform_driver แบบนามธรรมและไดรเวอร์ Nova ที่พัฒนาสำหรับ GPU ของ NVIDIA เขียนด้วย Rust และเพิ่มบางส่วนในเคอร์เนล 6.15 ฟังก์ชันการทำงานสำหรับการโต้ตอบกับ GPU ของ Mali นั้นพอร์ตมาจากไดรเวอร์ DRM Panthor (Direct Rendering Manager) ที่มีอยู่ซึ่งเขียนด้วย C uAPI ของไดรเวอร์ Tyr นั้นเหมือนกับ uAPI ของไดรเวอร์ Panthor ซึ่งทำให้สามารถใช้ส่วนประกอบของพื้นที่ผู้ใช้ที่มีอยู่กับไดรเวอร์ได้
เทคโนโลยี CSF ที่ใช้ตั้งแต่ GPU Mali รุ่นที่ 10 โดดเด่นในเรื่องการย้ายฟังก์ชันไดรเวอร์บางส่วนไปที่ด้านเฟิร์มแวร์และใช้โมเดลใหม่ในการจัดระเบียบการดำเนินการงานบน GPU ใน GPU ที่มีอินเทอร์เฟซ CSF แทนที่จะใช้โมเดลที่อิงจากการส่งชุดงาน จะใช้โมเดลที่อิงจากโฟลว์คำสั่งร่วมกับการจัดกำหนดการคิวโฟลว์คำสั่งบนด้านเฟิร์มแวร์ เพื่อจัดระเบียบการทำงานของตัวกำหนดตารางเวลา ไมโครคอนโทรลเลอร์ Cortex-M7 แยกต่างหากจะถูกสร้างขึ้นใน GPU และมีการจัดเตรียมหน่วยการดำเนินการคำสั่งพิเศษ (หน่วยการดำเนินการคำสั่ง) เพื่อดำเนินการคำสั่ง CSF
ฟังก์ชันการทำงานของ Tyr ยังคงตามหลังไดรเวอร์ Panthor แต่ผู้พัฒนาตั้งใจที่จะลดช่องว่างนี้ลงทีละน้อยจนกว่าจะบรรลุความเท่าเทียมกันในความสามารถของไดรเวอร์ คุณสมบัติที่ขาดหายไปต้องการการแยกย่อยเพิ่มเติมเพื่อรวมเข้าในเคอร์เนลเพื่อสร้างไดรเวอร์ใน Rust ดังนั้นการพัฒนาไดรเวอร์ Tyr จะซิงโครไนซ์กับการเพิ่มการแยกย่อยเหล่านี้ในเคอร์เนล ตัวอย่างเช่น เคอร์เนลยังไม่มีความสามารถในการแมปหน่วยความจำในไดรเวอร์ Rust สำหรับ GPU ซึ่งกำลังได้รับการพัฒนาในชุดแพตช์ GPUVM ซึ่งยังไม่ได้รับการนำมาใช้
ที่มา: opennet.ru
