Daniel Almeida, que treballa en el desenvolupament de còdecs de vídeo a Collabora, ha publicat a la llista de correu de desenvolupadors Linux- la implementació inicial del controlador Tyr per a les GPU ARM Mali que utilitzen la tecnologia Command Stream Frontend (CSF), com ara les Mali G310, G510 i G710. El codi del controlador està escrit en Rust i consta de poc més de 600 línies de codi. El treball en el controlador Tyr s'està duent a terme conjuntament per Collabora, Arm i Google.
El marc de treball per crear el nou controlador utilitza components del controlador abstracte rust_platform_driver i del controlador Nova, desenvolupats per a GPU NVIDIA, escrits en Rust i afegits parcialment al nucli 6.15. La funcionalitat per interactuar amb la GPU Mali s'ha portat del controlador DRM Panthor (Direct Rendering Manager) existent, escrit en C. L'uAPI del controlador Tyr és idèntica a l'uAPI del controlador Panthor, que permet utilitzar components de l'espai d'usuari existents.
La tecnologia CSF, utilitzada des de la desena generació de GPU Mali, destaca per haver traslladat algunes funcions del controlador al costat del firmware i utilitzar un nou model per organitzar l'execució del treball a la GPU. A les GPU amb una interfície CSF, en lloc d'un model basat en l'enviament d'una cadena de treballs, s'utilitza un model basat en un flux d'ordres amb la planificació de la cua del flux d'ordres al costat del firmware. Per organitzar el treball del planificador, s'integra un microcontrolador Cortex-M10 separat a la GPU i es proporciona una unitat especial d'execució d'ordres (Command Execution Unit) per executar instruccions CSF.
La funcionalitat de Tyr encara està endarrerida respecte al controlador Panthor, però els desenvolupadors tenen la intenció de reduir gradualment la diferència fins que s'aconsegueixi la paritat en les capacitats del controlador. Les funcions que falten requereixen la integració d'abstraccions addicionals al nucli per crear controladors a Rust, de manera que el desenvolupament del controlador Tyr es sincronitzarà amb l'addició d'aquestes abstraccions al nucli. Per exemple, el nucli encara no té les capacitats per al mapatge de memòria en els controladors Rust per a GPU, que s'estan desenvolupant al conjunt de pegats GPUVM, que encara no s'ha adoptat.
Font: opennet.ru
