Tyr este prezentat, Linux- un driver pentru placa video ARM Mali, scris în Rust

Daniel Almeida, care lucrează la dezvoltarea de codecuri video la Collabora, a postat pe lista de discuții pentru dezvoltatori Linux- implementarea inițială a driverului Tyr pentru GPU-urile ARM Mali care utilizează tehnologia Command Stream Frontend (CSF), cum ar fi Mali G310, G510 și G710. Codul driverului este scris în Rust și cuprinde puțin peste 600 de linii de cod. Lucrările la driverul Tyr sunt realizate în comun de Collabora, Arm și Google.

Framework-ul pentru crearea noului driver utilizează componente ale driverului abstract rust_platform_driver și ale driverului Nova, dezvoltate pentru GPU-uri NVIDIA, scrise în Rust și adăugate parțial la kernel-ul 6.15. Funcționalitatea pentru interacțiunea cu GPU-ul Mali este portată din driverul DRM Panthor (Direct Rendering Manager) existent, scris în C. uAPI-ul driverului Tyr este identic cu uAPI-ul driverului Panthor, ceea ce permite utilizarea componentelor existente din spațiul utilizatorului.

Tehnologia CSF, utilizată încă de la a 10-a generație de GPU-uri Mali, se remarcă prin mutarea unor funcții ale driverelor pe partea de firmware și utilizarea unui nou model de organizare a execuției lucrărilor pe GPU. În GPU-urile cu interfață CSF, în loc de un model bazat pe trimiterea unui lanț de lucrări, se utilizează un model bazat pe un flux de comenzi cu programarea cozii de flux de comenzi pe partea de firmware. Pentru a organiza munca planificatorului, în GPU este încorporat un microcontroler Cortex-M7 separat și este prevăzută o unitate specială de execuție a comenzilor (Command Execution Unit) pentru a executa instrucțiunile CSF.

Funcționalitatea lui Tyr este încă în urma driverului Panthor, dar dezvoltatorii intenționează să reducă treptat decalajul până când se va atinge paritatea în ceea ce privește capacitățile driverelor. Caracteristicile lipsă necesită integrarea unor abstracțiuni suplimentare în kernel pentru a crea drivere în Rust, astfel încât dezvoltarea driverului Tyr va fi sincronizată cu adăugarea acestor abstracțiuni în kernel. De exemplu, kernelul nu are încă capacitățile de mapare a memoriei în driverele Rust pentru GPU-uri, care sunt dezvoltate în setul de patch-uri GPUVM, care nu a fost încă adoptat.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster