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

Даниел Алмейда (Daniel Almeida), занимаващ се с развитието на видеокодеците в компанията Collabora, публикува в списъка за разпространение на разработчиците на ядрото на Linux начална реализация на драйвера Tyr за GPU ARM Mali, който използва технологията CSF (Command 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