Одним из интересных дополнений в только что выпущенное ядро Linux 6.18 является драйвер GPU Tyr на Rust для CSF-графических процессоров Arm Mali, который представляет собой порт зрелого драйвера Panthor на C , включённого в состав Linux 6.10 . Он был разработан Collabora в сотрудничестве с Arm и Google.
Цель Tyr — реализовать тот же пользовательский API, что предоставляет Panthor, чтобы в конечном итоге его можно было использовать в качестве прямой замены в Vulkan-драйвере PanVK компании. Спустя несколько лет драйвер Tyr на Rust может заменить драйвер Panthor на C, но до тех пор будет использоваться Panthor, поскольку он более зрелый и соответствует стандарту OpenGL ES 3.1 с июля 2024 года.

Работа над Tyr продвинута довольно далеко, и Collabora предоставила обновление в конце ноября. Ключевой вывод заключается в том, что драйвер Tyr (прототип) работает с GNOME, Weston и даже полноэкранными 3D-играми, такими как SuperTuxKart, соответствуя по производительности C-драйверу (Panthor), по крайней мере, для даунстрим-прототипа, поскольку для апстрима (т.е. мейнлайна Linux) требуется дополнительная работа, как поясняется в Linux 6.18 changelog :
Изначальный скелет Rust-драйвера для GPU ARM Mali.
– Он может запустить GPU, запрашивать метаданные GPU через MMIO и предоставлять их пользовательскому пространству через IOCTL устройства DRM (struct drm_panthor_dev_query).
….Однако этот первый патч реализует лишь подмножество текущих функций, доступных в даунстриме, так как остальное невозможно реализовать без привлечения ещё большего количества абстракций. В частности, многие вещи зависят от правильного отображения памяти в заданном диапазоне виртуальных адресов, что, в свою очередь, зависит от абстракции GPUVM, которая в настоящее время находится в разработке. По этой причине все еще невозможно загрузить MCU и, следовательно, пока нельзя сделать многое.
Даунстрим-прототип Tyr был протестирован на одноплатном компьютере Radxa ROCK 5B , но также может работать на других платформах Rockchip RK3588. Вот несколько вещей, которые работают на данный момент.
- Отрисовка 3D-куба, типичный тест ускорения 3D-графики. В данном случае — vkcube в Weston. Примечание: скриншот в 4K (разрешение 4096×2160).
- GNOME с Firefox и просмотр видео с YouTube оттуда.
- Запуск 3D-гоночной игры SuperTuxKart
Collabora поясняет, что игра отрисовывается корректно и полностью пригодна для игры в полноэкранном режиме, как показано на видео в конце этой записи, но в оконном режиме есть некоторые сбои, над чем предстоит работать.
Tyr ещё не готов для повседневного использования, а интеграция в основную ветку займёт дополнительное время, но достигнутый прогресс обнадёживает. Для тестирования на плате ROCK 5B демонстрационный код доступен на GitLab-сервере Freedesktop . В конфигурации ядра потребуется включить опции CONFIG_TYR_DRM_DEPS и CONFIG_DRM_TYR.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.



