Код из Rust может вскоре заменить большую часть существующих реализаций.
В пятницу вечером неожиданно был представлен Tyr — новый графический драйвер для ядра Linux, написанный на языке Rust. Он предназначен для работы с современными графическими процессорами Arm Mali и использует интерфейс Direct Rendering Manager. Название Tyr может сбивать с толку, ведь оно никак явно не указывает на поддержку Mali. Вероятно, это отсылка к германо-скандинавской мифологии, в духе прежних названий архитектур Arm, таких как Bifrost и Midgard.
Драйвер Tyr будет поддерживать те же версии Mali, что и существующий драйвер Panthor, то есть графику поколения Gen10 и новее. Оба драйвера используют прошивку Command Stream Frontend (CSF), необходимую для взаимодействия с GPU. Новый проект развивается параллельно с развитием Rust-обвязки для ядра Linux и в будущем должен полностью заменить реализацию Panthor, написанную на C.
Объявление о создании Tyr сделал Даниэл Алмейда из компании Collabora. По его словам, текущая версия реализует лишь часть возможностей, так как для дальнейшего развития необходимы недостающие абстракции, включая GPU-виртуализацию и привязку виртуальной памяти. Пока драйвер тестировался только на однокристальной системе Rockchip RK3588. На других чипах он, скорее всего, пока не будет работать.
Несмотря на ограничения, цель выпуска этой версии — протестировать базовые механизмы, включая работу с памятью через iomem-платформу. В будущих обновлениях появится поддержка механизма VM_BIND, когда завершится работа над абстракцией GPUVM. Появление новых графических драйверов значительно упрощает работу с видеооборудованием в современных дистрибутивах Linux.
Код Tyr основывается на структуре другого драйвера на Rust — NOVA, который разрабатывается для поддержки видеокарт NVIDIA с открытым исходным кодом. Над проектом совместно работают инженеры Collabora, Arm и Google. Дополнительную информацию можно найти в рассылке разработчиков ядра Linux.