L'azienda Collabora ha annunciato la disponibilità del driver open source panthor, sviluppato per la decima generazione di GPU Mali (G310, G510, G710), che utilizza la tecnologia CSF (Command Stream Frontend). Questa tecnologia esternalizza alcune funzionalità del driver per ridurre il carico sulla CPU e offre un nuovo modello di organizzazione dell'esecuzione dei lavori sulla GPU. Il driver DRM (Direct Rendering Manager) panthor è stato accettato nel ramo drm-misc e presumibilmente entrerà a far parte del kernel Linux 6.10. Le modifiche per supportare il nuovo driver sono state inoltre accettate in Mesa e incluse nel driver Gallium panfrost per le GPU Mali.
Nel nuovo generazione di GPU Mali, il job scheduler Job Manager è stato sostituito dall'interfaccia CSF (Command Stream Frontend), dove, invece di un modello basato sull'invio di una catena di lavori, viene adottato un modello basato su uno stream di comandi con la pianificazione della coda dei comandi sul firmware. Per organizzare il lavoro dello scheduler, è integrato un microcontrollore Cortex-M7 nella GPU, mentre per l'esecuzione delle istruzioni CSF è previsto un blocco speciale di esecuzione dei comandi (Command Execution Unit). Queste caratteristiche richiedono un'organizzazione fondamentalmente diversa per il trasferimento dei lavori dalla user space alla GPU.
Inizialmente, si era tentato di implementare il supporto per la GPU Mali basato su CSF nel driver DRM Panfrost, ma gli sviluppatori hanno concluso che ciò avrebbe complicato notevolmente l'attuale driver e che era più ottimale creare un nuovo driver per CSF, sviluppato con un'architettura diversa. Nel driver panthor è stato implementato un uAPI completamente nuovo, una nuova logica di pianificazione dei lavori e una nuova logica di gestione della MMU/GPU-VA. Come base per il nuovo driver è stato utilizzato il codice esistente del driver DRM Panfrost, da cui sono stati presi in prestito modelli tipici di inizializzazione del driver, gestione della frequenza e gestione dell'alimentazione.
Inizialmente, lo sviluppo del nuovo driver è stato condotto utilizzando il reverse engineering, ma successivamente l'azienda ARM si è unita al progetto, fornendo l'accesso alla documentazione e partecipando alla revisione del codice. Due dipendenti di ARM hanno ottenuto lo stato di co-maintainer del driver per il kernel Linux. Successivamente, dopo la conclusione del driver OpenGL, il lavoro si concentrerà sull'implementazione del driver Vulkan per le nuove GPU Mali e sulla modernizzazione del driver Vulkan esistente per le vecchie GPU Mali.
Si segnala che il driver panthor preparato consente il supporto GPU su schede con SoC Rockchip RK3588. L'azienda Collabora ha anche lavorato per garantire il boot delle schede basate su Rockchip RK3588 utilizzando un stack software completamente open source. È stata preparata un'immagine di sistema basata su Debian e un bootloader open source per sostituire i componenti proprietari BL31 (Boot Loader stage 3.1).
Fonte: opennet.ru
