Tyr – драйвер GPU на языке Rust для Arm Mali GPUs

Одним из интересных дополнений в только что выпущенное ядро 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 года.

Debian Gnome on Tyr
GNOME на Tyr

Работа над 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).

vkcube on Weston on Tyr

  • GNOME с Firefox и просмотр видео с YouTube оттуда.

GNOME on Tyr Firefox YouTube

  • Запуск 3D-гоночной игры SuperTuxKart

Supertuxkart Tyr Rust driver

Collabora поясняет, что игра отрисовывается корректно и полностью пригодна для игры в полноэкранном режиме, как показано на видео в конце этой записи, но в оконном режиме есть некоторые сбои, над чем предстоит работать.

Tyr ещё не готов для повседневного использования, а интеграция в основную ветку займёт дополнительное время, но достигнутый прогресс обнадёживает. Для тестирования на плате ROCK 5B демонстрационный код доступен на GitLab-сервере Freedesktop . В конфигурации ядра потребуется включить опции CONFIG_TYR_DRM_DEPS и CONFIG_DRM_TYR.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments