Дэніэл Алмейда (Daniel Almeida), які займаецца развіццём відэакодэкаў у кампаніі Collabora, апублікаваў у спісе рассылання распрацоўнікаў Linux-ядра пачатковую рэалізацыю драйвера Tyr для GPU ARM Mali, у якіх прымяняецца тэхналогія CSF (Сommand Stream Frontend), такіх як 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), напісанага на мове Сі. uAPI драйвера Tyr ідэнтычны uAPI драйвера Panthor, што дазваляе выкарыстоўваць з ім ужо існыя кампаненты прасторы карыстача.
Тэхналогія CSF, якая ўжываецца пачынальна з 10 пакаленні GPU Mali, характэрна вынасам на бок прашыўкі некаторых функцый драйвера і задзейнічаннем новай мадэлі арганізацыі выканання прац на GPU. У GPU з інтэрфейсам CSF замест мадэлі на аснове адпраўкі ланцужкі прац ужываецца мадэль на аснове струменя каманд з планаваннем чаргі струменя каманд на боку прашыўкі. Для арганізацыі працы планавальніка ў GPU убудаваны асобны мікракантролер Cortex-M7, а для выканання інструкцый CSF прадугледжаны адмысловы блок выканання каманд (Command Execution Unit).
Функцыянальнасць Tyr пакуль адстае ад драйвера Panthor, але распрацоўшчыкі маюць намер паступова скарачаць разрыў датуль пакуль не будзе дасягнуць парытэт у магчымасцях драйвераў. Якія адсутнічаюць функцыі патрабуюць інтэграцыі ў ядро дадатковых абстракцый для стварэння драйвераў на Rust, таму развіццё драйвера Tyr будзе сінхранізавана з даданнем у ядро дадзеных абстракцый. Напрыклад, у ядры пакуль адсутнічаюць магчымасці для мапінга памяці ў Rust-драйверах для GPU, якія развіваюцца ў яшчэ не прынятым наборы патчаў GPUVM.
Крыніца: opennet.ru
