Представлен Tyr, Linux-драйвер для GPU ARM Mali, написанный на Rust
Дата публикации:Sat, 28 Jun 2025 14:37:16 +0300
Дэниел Алмейда (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
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63490