Ο Daniel Almeida, ο οποίος εργάζεται στην ανάπτυξη κωδικοποιητών βίντεο στην Collabora, δημοσίευσε στη λίστα αλληλογραφίας προγραμματιστών Linux- την αρχική υλοποίηση του προγράμματος οδήγησης Tyr για GPU ARM Mali που χρησιμοποιούν τεχνολογία Command Stream Frontend (CSF), όπως οι Mali G310, G510 και G710. Ο κώδικας του προγράμματος οδήγησης είναι γραμμένος σε Rust και περιλαμβάνει λίγο περισσότερες από 600 γραμμές κώδικα. Οι εργασίες για το πρόγραμμα οδήγησης Tyr διεξάγονται από κοινού από την Collabora, την Arm και την Google.
Το πλαίσιο για τη δημιουργία του νέου προγράμματος οδήγησης χρησιμοποιεί στοιχεία του προγράμματος οδήγησης abstract rust_platform_driver και του προγράμματος οδήγησης Nova, που αναπτύχθηκαν για GPU NVIDIA, γραμμένα σε Rust και προστέθηκαν εν μέρει στον πυρήνα 6.15. Η λειτουργικότητα για την αλληλεπίδραση με την GPU Mali μεταφέρεται από το υπάρχον πρόγραμμα οδήγησης DRM Panthor (Direct Rendering Manager), γραμμένο σε C. Το uAPI του προγράμματος οδήγησης Tyr είναι πανομοιότυπο με το uAPI του προγράμματος οδήγησης Panthor, το οποίο επιτρέπει τη χρήση υπαρχόντων στοιχείων χώρου χρήστη με αυτό.
Η τεχνολογία CSF, που χρησιμοποιείται από τη 10η γενιά των GPU Mali, είναι αξιοσημείωτη για τη μεταφορά ορισμένων λειτουργιών του προγράμματος οδήγησης στην πλευρά του υλικολογισμικού και τη χρήση ενός νέου μοντέλου για την οργάνωση της εκτέλεσης εργασίας στην GPU. Στις GPU με διεπαφή CSF, αντί για ένα μοντέλο που βασίζεται στην αποστολή μιας αλυσίδας εργασιών, χρησιμοποιείται ένα μοντέλο που βασίζεται σε μια ροή εντολών με προγραμματισμό της ουράς ροής εντολών στην πλευρά του υλικολογισμικού. Για την οργάνωση της εργασίας του χρονοπρογραμματιστή, ένας ξεχωριστός μικροελεγκτής Cortex-M7 είναι ενσωματωμένος στην GPU και παρέχεται μια ειδική μονάδα εκτέλεσης εντολών (Command Execution Unit) για την εκτέλεση εντολών CSF.
Η λειτουργικότητα του Tyr εξακολουθεί να υστερεί σε σχέση με τον οδηγό Panthor, αλλά οι προγραμματιστές σκοπεύουν να μειώσουν σταδιακά το χάσμα μέχρι να επιτευχθεί ισοτιμία στις δυνατότητες των οδηγών. Τα χαρακτηριστικά που λείπουν απαιτούν την ενσωμάτωση πρόσθετων αφαιρέσεων στον πυρήνα για τη δημιουργία προγραμμάτων οδήγησης στο Rust, επομένως η ανάπτυξη του προγράμματος οδήγησης Tyr θα συγχρονιστεί με την προσθήκη αυτών των αφαιρέσεων στον πυρήνα. Για παράδειγμα, ο πυρήνας δεν διαθέτει ακόμη τις δυνατότητες για αντιστοίχιση μνήμης στους οδηγούς Rust για GPU, οι οποίες αναπτύσσονται στο σύνολο ενημερώσεων GPUVM, το οποίο δεν έχει ακόμη υιοθετηθεί.
Πηγή: opennet.ru
