Драйвер Tyr на Rust для GPU ARM Mali

Опубліковано початкову реалізацію драйвера Tyr на Rust для GPU ARM Mali з технологією CSF

Деніел Алмейда (Daniel Almeida), розробник відеокодеків у компанії Collabora, оприлюднив у списку розсилки розробників Linux-ядра початкову реалізацію драйвера Tyr для GPU ARM Mali, які використовують технологію CSF (Command 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 у GPU ARM Mali

Технологія CSF, що застосовується починаючи з 10 покоління GPU Mali, примітна винесенням на бік прошивки деяких функцій драйвера та використанням нової моделі організації виконання робіт на GPU. У GPU з інтерфейсом CSF замість моделі на основі відправки ланцюжка робіт застосовується модель на основі потоку команд з плануванням черги потоку команд на боці прошивки.

Для організації роботи планувальника в GPU вбудовано окремий мікроконтролер Cortex-M7, а для виконання інструкцій CSF передбачено спеціальний блок виконання команд (Command Execution Unit).

Поточний стан та плани розвитку драйвера Tyr

Функціональність Tyr наразі відстає від драйвера Panthor, але розробники мають намір поступово скорочувати цей розрив, доки не буде досягнуто паритету в можливостях драйверів. Бракуючі функції вимагають інтеграції в ядро додаткових абстракцій для створення драйверів на Rust, тому розвиток драйвера Tyr буде синхронізовано з додаванням у ядро цих абстракцій.

Зокрема, в ядрі поки відсутні можливості для маппінгу пам’яті в драйверах для GPU, що розвиваються в ще не прийнятому наборі патчів GPUVM. Однак, незважаючи на це, поява драйвера Tyr є важливим кроком у розвитку підтримки GPU ARM Mali з технологією CSF у Linux.

Більше інформації можна знайти на офіційному сайті ARM та в офіційному анонсі драйвера Tyr.