Tyr: o novo driver DRM em Rust para GPUs ARM Mali revoluciona desenvolvimento open source com colaboração entre Collabora, ARM e Google

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Primeiro driver gráfico significativo em Rust para GPUs ARM Mali chega com apoio da Collabora, ARM e Google, abrindo uma nova era para o kernel Linux.

O desenvolvimento de drivers gráficos sempre foi um dos maiores desafios dentro do ecossistema Linux, principalmente quando se trata de suporte a GPUs ARM Mali, amplamente utilizadas em dispositivos móveis, embarcados e em SBCs como o Rockchip RK3588. Em um marco histórico para o movimento open source, surge Tyr, o primeiro driver DRM (Direct Rendering Manager) de peso implementado em Rust para suportar a arquitetura CSF-based das GPUs ARM Mali.

Mais do que uma inovação técnica, Tyr simboliza a convergência de esforços estratégicos de gigantes da tecnologia como Google, ARM e a experiente Collabora, reconhecida por sua atuação no desenvolvimento do Kernel Linux e por liderar a Rust-for-Linux initiative. Essa colaboração não apenas busca acelerar o suporte gráfico de alta qualidade para chips ARM, como também impulsiona uma transformação radical na maneira como drivers são escritos: com segurança, modularidade e robustez como pilares — graças ao uso de Rust.

Ao mesmo tempo em que representa um salto na qualidade do suporte gráfico, Tyr também é uma vitrine para práticas modernas de desenvolvimento no kernel: submissões upstream iterativas, validação de abstrações, e harmonização entre código downstream (customizado) e upstream (oficial), servindo como referência para o futuro dos drivers gráficos no Linux.

Apresentando Tyr: um driver DRM inovador em Rust para GPUs ARM Mali

Tyr é um novo driver DRM desenvolvido do zero em Rust para GPUs ARM Mali CSF-based, com foco inicial no SoC RK3588 da Rockchip. Trata-se de um projeto derivado diretamente do Panthor, um backend de DRM também mantido pela Collabora, mas reescrito com a proposta de explorar o potencial do Rust na construção de componentes críticos para o kernel.

Este driver é, atualmente, o mais avançado e completo do tipo escrito em Rust para GPUs reais, rompendo com o domínio do C nesse espaço e pavimentando o caminho para novos paradigmas de segurança e legibilidade no desenvolvimento de drivers gráficos.

O que é Tyr e seu papel na iniciativa Rust-for-Linux

Tyr se insere como um protagonista central na Rust-for-Linux initiative, esforço comunitário e corporativo para trazer o suporte à linguagem Rust de forma oficial ao Kernel Linux. Essa iniciativa visa, entre outros objetivos, ampliar a segurança de memória e facilitar a manutenção de código kernel, que tradicionalmente sofre com bugs sutis e regressões difíceis de detectar.

Ao adotar Rust desde o início, Tyr não é um experimento isolado, mas sim uma aplicação prática que valida as APIs e abstrações propostas pelo projeto Rust-for-Linux, tornando-se o maior consumidor real desse ecossistema emergente dentro do kernel.

De Panthor a Tyr: uma evolução com foco em compatibilidade

Panthor é um backend DRM escrito em C, desenvolvido pela Collabora, que serviu como ponto de partida para a arquitetura de Tyr. A principal diferença está na linguagem: Tyr é um reimplementação de Panthor em Rust, preservando sua lógica de funcionamento e estrutura conceitual, mas trazendo os benefícios de segurança e modularidade da linguagem moderna.

Ambos os drivers foram projetados para suportar GPUs ARM Mali baseadas em CSF (Command Stream Frontend), uma arquitetura mais recente das GPUs Mali que substitui a tradicional base em Job Manager (JM).

A Collabora: pioneirismo e compromisso com o Rust no Kernel

A Collabora tem se destacado como uma das principais empresas a investir consistentemente na adoção de Rust no desenvolvimento de drivers de kernel. Além do envolvimento com Tyr e Panthor, a empresa também atua em projetos como Nova (driver Rust para GPUs NVIDIA), suporte para o chip Apple M-series (AGX), e controladores em placas com Micro Controller Units (MCUs).

Mais do que escrever código, a Collabora trabalha para estabelecer as bases do uso de Rust no Kernel, contribuindo com discussões técnicas, validação de design, e interface entre o userspace e o kernelspace.

Estratégia de desenvolvimento: a colaboração por trás de Tyr e a submissão upstream iterativa

Um dos destaques da abordagem da Collabora, ARM e Google em torno de Tyr é a submissão upstream iterativa. Em vez de tentar introduzir o driver completo de uma só vez — o que geraria resistência e riscos de regressões — a estratégia consiste em:

  1. Enviar partes pequenas e funcionais do driver;
  2. Submeter código que já é útil, mesmo que limitado (por exemplo, ativação da GPU e leitura de ROM);
  3. Validar abstrações Rust de forma incremental;
  4. Facilitar revisões, testagem e aceitação pela comunidade Linux.

Essa metodologia demonstra maturidade técnica e respeito pelo ecossistema open source, e reforça o caráter colaborativo e inclusivo do desenvolvimento do Tyr.

Desafios do desenvolvimento de drivers de GPU em Rust: a necessidade de novas abstrações

Drivers gráficos são componentes complexos, que interagem intensamente com o hardware, o kernel DRM subsystem, e o userspace (via mesa, Wayland, Xorg, etc). Migrar essa lógica para Rust exige não apenas reescrever código, mas criar novas abstrações que permitam lidar com DMA, mapeamento de memória, sincronização de threads e chamadas assíncronas.

Com Tyr, a comunidade testa essas novas construções em escala real, fornecendo feedback crucial para o amadurecimento da infraestrutura Rust-for-Linux e servindo como “cliente” das APIs do kernel escritas em Rust.

O modelo de desenvolvimento downstream e a conciliação com o upstream

Hoje, Tyr é mantido em um repositório downstream separado, onde evolui de forma acelerada, mas com total foco em ser eventualmente aceito no mainline do Kernel Linux. Esse modelo híbrido permite:

  • Avançar rápido sem bloqueios burocráticos;
  • Testar novas ideias e APIs antes da formalização;
  • Manter a compatibilidade com outros componentes em tempo real;
  • Reduzir riscos de regressões em kernels estáveis.

A conciliação entre o código downstream e o upstream é feita cuidadosamente por meio da divisão em branches, patches separados e rotinas de integração contínua.

Provar abstrações e motivar o desenvolvimento: a importância do Tyr como usuário

Um dos papéis estratégicos de Tyr é o de servir como prova de conceito para as abstrações Rust do Kernel Linux. Seu desenvolvimento exige que certas funcionalidades existam ou evoluam, e isso estimula a criação de:

  • APIs genéricas para buffers e dispositivos;
  • Helpers para IRQs, clocks, MMIO, PCI/AMBA;
  • Estruturas de controle para DRM (via DRM_IOCTL_PANTHOR_DEV_QUERY);
  • Interfaces seguras para comunicação entre kernel e userspace (vulgo uAPI).

Em outras palavras, Tyr puxa a evolução do kernel Rust ao mesmo tempo que se apoia nela.

O que está na submissão upstream atual de Tyr e os próximos passos

A primeira submissão upstream de Tyr já foi realizada e consiste em:

  • Ativação da GPU do RK3588;
  • Leitura da ROM de inicialização da GPU;
  • Infraestrutura mínima de device driver para integrar com o subsistema DRM;
  • Testes com ferramentas como VkCube (presente no Vulkan-Tools repository) para validar o funcionamento básico da renderização via Vulkan.

Este primeiro patch não traz aceleração gráfica ainda, mas é fundamental para construir o alicerce sobre o qual recursos mais avançados serão adicionados em breve.

Funcionalidades iniciais: ativando a GPU e lendo a ROM no RK3588

O SoC RK3588, da Rockchip, é uma escolha estratégica para o desenvolvimento inicial do Tyr. Ele possui uma GPU ARM Mali baseada em CSF, que oferece um bom equilíbrio entre complexidade e disponibilidade no mercado de SBCs.

As funcionalidades atualmente implementadas incluem:

# Carregar o driver Tyr
modprobe tyr

# Validar ativação da GPU
dmesg | grep tyr

# Ler a ROM da GPU
cat /sys/class/drm/card0/device/rom

Com isso, os desenvolvedores podem confirmar que o hardware está sendo reconhecido e operado corretamente pelo driver em Rust.

Próximos passos: uma série de blog posts para aprofundar o desenvolvimento de drivers de GPU

A Collabora anunciou que publicará uma série de blog posts técnicos explorando em detalhes o processo de criação do Tyr, abordando temas como:

  • Mapeamento de MMIO em Rust;
  • Comunicação com firmware via CSF;
  • Gerenciamento de buffers e filas de comandos;
  • Validação com PanVK (driver Vulkan para Panthor);
  • Integração com Mesa3D, Wayland e ferramentas de renderização.

Esses artigos servirão como documentação de referência para engenheiros interessados em contribuir com drivers Rust no kernel, e também como material educativo para novos colaboradores.

Conclusão: Tyr — um futuro promissor para gráficos ARM de alta performance no Linux

O nascimento do Tyr não é apenas mais um marco técnico no universo dos drivers gráficos. Ele simboliza a chegada de uma nova era: a era do Rust no Kernel Linux, com foco em segurança, modularidade e eficiência.

Ao unir Collabora, ARM e Google em torno de um projeto de código aberto com profundo impacto técnico e filosófico, Tyr mostra que é possível construir software de baixo nível com alto nível de confiabilidade. Sua existência não apenas acelera o suporte a GPUs ARM Mali CSF-based, como também inspira uma geração inteira de desenvolvedores a abraçar Rust, contribuir com o kernel Linux, e reimaginar o futuro dos gráficos no open source.

Compartilhe este artigo