Представен е Tyr, Linux драйвер за GPU ARM Mali, написан на Rust

Даниел Алмейда (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), написан на C. 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster