Si Daniel Almeida, na nagtatrabaho sa pagbuo ng video codec sa Collabora, ay nag-post sa mailing list ng mga developer Linux- ang unang implementasyon ng Tyr driver para sa mga ARM Mali GPU na gumagamit ng teknolohiyang Command Stream Frontend (CSF), tulad ng Mali G310, G510, at G710. Ang driver code ay nakasulat sa Rust at binubuo lamang ng mahigit 600 linya ng code. Ang trabaho sa Tyr driver ay isinasagawa nang magkasama ng Collabora, Arm, at Google.
Ang balangkas para sa paglikha ng bagong driver ay gumagamit ng mga bahagi ng abstract rust_platform_driver driver at ang Nova driver, na binuo para sa NVIDIA GPUs, nakasulat sa Rust at bahagyang idinagdag sa 6.15 kernel. Ang functionality para sa pakikipag-ugnayan sa Mali GPU ay naka-port mula sa kasalukuyang Panthor (Direct Rendering Manager) DRM driver, na nakasulat sa C. Ang uAPI ng Tyr driver ay kapareho ng uAPI ng Panthor driver, na nagbibigay-daan sa paggamit ng mga kasalukuyang bahagi ng user space kasama nito.
Ang teknolohiya ng CSF, na ginamit mula noong ika-10 henerasyon ng mga Mali GPU, ay kapansin-pansin sa paglipat ng ilang function ng driver sa panig ng firmware at paggamit ng bagong modelo para sa pag-aayos ng pagsasagawa ng trabaho sa GPU. Sa mga GPU na may CSF interface, sa halip na isang modelo na nakabatay sa pagpapadala ng isang hanay ng mga gawa, isang modelong batay sa isang command flow ay ginagamit sa pag-iiskedyul ng command flow queue sa gilid ng firmware. Upang ayusin ang gawain ng scheduler, ang isang hiwalay na Cortex-M7 microcontroller ay binuo sa GPU, at isang espesyal na command execution unit (Command Execution Unit) ay ibinigay upang maisagawa ang mga tagubilin sa CSF.
Nahuhuli pa rin ang functionality ni Tyr sa driver ng Panthor, ngunit nilalayon ng mga developer na unti-unting bawasan ang agwat hanggang sa maabot ang pagkakapantay-pantay sa mga kakayahan ng driver. Ang mga nawawalang feature ay nangangailangan ng mga karagdagang abstraction na maisama sa kernel upang lumikha ng mga driver sa Rust, kaya ang pagbuo ng Tyr driver ay masi-synchronize sa pagdaragdag ng mga abstraction na ito sa kernel. Halimbawa, ang kernel ay wala pang mga kakayahan para sa memory mapping sa mga Rust driver para sa mga GPU, na ginagawa sa GPUVM patch set, na hindi pa naa-adopt.
Pinagmulan: opennet.ru
