O kernel Linux acaba de receber um novo driver gráfico DRM, batizado de “Tyr”, escrito na linguagem Rust, a fim de impulsionar o suporte a hardware gráfico Arm Mali de ponta, especificamente a arquitetura “Gen10” e posteriores, aproveitando o firmware Arm Mali Command Stream Frontend (CSF).
Ele é um projeto conjunto da Collabora, ARM e Google, o que demonstra um compromisso com seu desenvolvimento, um driver de código aberto de alta qualidade para essas GPUs e que promete melhorar significativamente a experiência do usuário e o suporte a essas plataformas no Linux.
Ele foi escrito em Rust por sua segurança de memória e confiabilidade, o que pode levar a drivers mais robustos e com menos vulnerabilidades, em comparação com os escritos em C. Isso é um passo significativo para a “rustificação” do kernel Linux, que vem ganhando força.
Daniel Almeida, da Collabora, foi o responsável por anunciá-lo. Ele esclareceu que o desenvolvimento será feito de forma incremental, para substituir a funcionalidade do driver Panthor, escrito em C. O Tyr é, na verdade, um “port” do Panthor, mantendo a mesma uAPI e nome para o espaço de usuário. Este é um esforço conjunto e dedicado, contando com a colaboração de engenheiros da Collabora, ARM e Google.
Inicialmente, o Tyr implementa apenas um subconjunto dos recursos, uma vez que muitas funcionalidades dependem de abstrações que ainda estão em fase de desenvolvimento, como o mapeamento de memória em um intervalo VA específico e a abstração GPUVM.
O código-fonte básico foi inspirado no driver DRM NOVA, também em Rust, oferecendo suporte a GPUs NVIDIA modernas. Apesar de seus recursos ainda limitados, uma ramificação IGT está disponível para testes, atualmente validada apenas no rk3588. O Tyr é um passo significativo na adoção do Rust no Linux, prometendo mais segurança e eficiência.
Ele já foi aceito na árvore de staging do kernel Linux, sinalizando o início de uma nova era para dispositivos com GPUs Mali, além de prometer suporte de primeira classe sem depender de blobs binários ou engenharia reversa.