Тир е претставен, Linux- драјвер за ARM Mali GPU, напишан во Rust

Даниел Алмеида, кој работи на развој на видео кодеци во Collabora, објави на мејлинг листата за програмери Linux- почетната имплементација на драјверот Tyr за ARM Mali графички процесори кои користат технологија Command Stream Frontend (CSF), како што се Mali G310, G510 и G710. Кодот на драјверот е напишан во Rust и се состои од нешто повеќе од 600 линии код. Работата на драјверот Tyr ја спроведуваат заеднички Collabora, Arm и Google.

Фрејмерот за креирање на новиот драјвер користи компоненти од abstract rust_platform_driver драјверот и Nova драјверот, развиен за NVIDIA графички процесори, напишан во Rust и делумно додаден на јадрото 6.15. Функционалноста за интеракција со Mali графичката картичка е преземена од постоечкиот Panthor (Direct Rendering Manager) DRM драјвер, напишан во C. uAPI на драјверот Tyr е идентичен со uAPI на драјверот Panthor, што овозможува користење на постоечките компоненти на корисничкиот простор со него.

CSF технологијата, која се користи од 10-тата генерација на Mali графички процесори, е значајна по преместувањето на некои функции на драјверот на страната на фирмверот и користењето на нов модел за организирање на извршувањето на работата на графичкиот процесор. Кај графичките процесори со CSF интерфејс, наместо модел базиран на испраќање низа на работи, се користи модел базиран на проток на команди со закажување на редот на проток на команди на страната на фирмверот. За организирање на работата на распоредувачот, во графичкиот процесор е вграден посебен микроконтролер Cortex-M7, а обезбедена е и посебна единица за извршување на команди (единица за извршување на команди) за извршување на CSF инструкции.

Функционалноста на Tyr сè уште заостанува зад драјверот на Panthor, но програмерите имаат намера постепено да го намалуваат јазот додека не се постигне паритет во можностите на драјверите. Карактеристиките што недостасуваат бараат дополнителни апстракции да се интегрираат во јадрото за да се креираат драјвери во Rust, така што развојот на драјверот Tyr ќе биде синхронизиран со додавањето на овие апстракции во јадрото. На пример, јадрото сè уште нема можности за мапирање на меморијата во драјверите на Rust за графички процесори, кои се развиваат во комплетот за закрпи на GPUVM, кој сè уште не е усвоен.

Извор: opennet.ru

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster