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, especialmente no suporte a GPUs ARM Mali, amplamente utilizadas em dispositivos móveis, embarcados e em SBCs como o Rockchip RK3588. Em meio à crescente adoção da linguagem Rust no Kernel Linux, surge Tyr, um dos primeiros drivers DRM (Direct Rendering Manager) escritos em Rust para a arquitetura CSF-based das GPUs ARM Mali.

Mais do que uma inovação técnica, Tyr representa um esforço colaborativo entre Collabora, ARM e Google, que busca alavancar o potencial de Rust no desenvolvimento de drivers gráficos com mais segurança, modularidade e qualidade de manutenção. Embora não seja o primeiro driver em Rust dentro do DRM (essa posição pertence ao AGX, voltado para as GPUs Apple M-series, do Projeto Asahi), Tyr se destaca como o primeiro de seu tipo com foco em dispositivos baseados em ARM Mali com CSF architecture.

O projeto também marca uma evolução na forma como drivers são enviados ao kernel: com uma estratégia de submissão upstream iterativa, Tyr está sendo desenvolvido para validar abstrações do Rust no kernel e evitar regressões, enquanto se mantém funcional e útil desde seus estágios iniciais.

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

Tyr é um driver DRM desenvolvido em Rust com suporte inicial para GPUs Mali baseadas na arquitetura CSF — incluindo o popular SoC RK3588 da Rockchip. Embora ainda em estágios iniciais, sua implementação visa pavimentar o caminho para uma base gráfica robusta e segura, usando o ecossistema Rust como plataforma.

Sua criação está intimamente conectada à evolução do Panthor, um driver DRM existente, também voltado para GPUs ARM Mali com CSF. O Tyr reimplementa parte da lógica do Panthor com uma nova fundação em Rust, buscando demonstrar a viabilidade da linguagem em contextos reais e complexos como drivers gráficos.

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

Tyr é um projeto prático dentro do esforço maior da Rust-for-Linux initiative, que visa trazer suporte oficial e sustentável ao uso de Rust como linguagem de desenvolvimento para o Kernel Linux.

Embora a Collabora não seja líder da iniciativa — que é conduzida por uma equipe multiempresarial dedicada — ela é uma colaboradora ativa e importante, contribuindo com drivers, testes e feedback sobre as abstrações Rust no kernel. O Tyr funciona como um “cliente” dessas abstrações, ajudando a moldá-las com base em demandas reais.

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

Panthor é um driver DRM voltado para GPUs Mali com CSF, implementado em C, mantido pela Collabora. Já o Tyr é uma reimplementação parcial dessa lógica, mas escrita em Rust, com a intenção de validar estruturas modernas de desenvolvimento em um contexto de hardware real.

Ambos têm como alvo a mesma família de GPUs, mas enquanto o Panthor já está em uso funcional para aceleração gráfica, o Tyr ainda está em estágio inicial e não substitui o Panthor — embora esse seja um objetivo futuro.

A Collabora: pioneirismo e compromisso com o Rust no Kernel

A Collabora tem se destacado como uma das colaboradoras mais engajadas no movimento Rust-for-Linux. Seus engenheiros atuam no desenvolvimento de drivers como Panthor e Tyr, além de contribuírem com estruturas de suporte para o DRM, subsistemas gráficos e desenvolvimento de ferramentas de validação.

Vale esclarecer que a Collabora não é responsável pelo driver Nova (voltado para GPUs NVIDIA, desenvolvido pela Red Hat) nem pelo driver AGX (para GPUs da Apple, desenvolvido pelo Projeto Asahi). Cada um desses projetos representa iniciativas paralelas na adoção de Rust para gráficos Linux.

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

A proposta de desenvolvimento do Tyr é baseada na submissão upstream iterativa: ao invés de enviar um driver completo de uma só vez, o time opta por compartilhar pedaços funcionais e testáveis. Isso facilita:

  • A revisão incremental pela comunidade do kernel;
  • A validação de abstrações Rust em uso real;
  • A prevenção de regressões em outros drivers;
  • A construção de consenso técnico ao longo do tempo.

Essa abordagem é estratégica e respeita o ciclo de vida e os padrões exigentes do desenvolvimento de drivers no Kernel Linux.

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

Drivers gráficos são módulos particularmente exigentes: precisam lidar com controle de dispositivos, sincronização fina, buffers de memória compartilhada, comunicação com firmware e gerenciamento de filas de comandos — tudo isso com baixa latência e alta confiabilidade.

A linguagem Rust oferece garantias de segurança de memória, mas o ambiente kernel impõe restrições únicas. O desenvolvimento do Tyr exige a criação de abstrações específicas para:

  • Gerenciamento de registradores (MMIO);
  • Controle de interrupções (IRQs);
  • Sincronização e estado de dispositivos CSF.

Essas abstrações estão sendo testadas e moldadas a partir da necessidade concreta do Tyr, com a intenção de que possam ser reutilizadas em outros drivers no futuro.

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

O Tyr está sendo desenvolvido inicialmente em um repositório downstream. Isso permite liberdade para evoluir rapidamente, experimentar APIs e testar novas funcionalidades sem impactar imediatamente a árvore oficial do kernel.

Ao mesmo tempo, há um forte compromisso com a integração no upstream, e por isso os desenvolvedores submetem partes funcionais do código em pequenos patches — validando a infraestrutura aos poucos e mantendo compatibilidade.

Esse modelo de desenvolvimento híbrido combina agilidade com conformidade, algo crucial em projetos que lidam com hardware e precisam de validação constante.

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

Ao servir como caso de uso real das abstrações Rust no kernel, o Tyr ajuda a revelar pontos cegos, necessidades de ajustes e até mesmo oportunidades para simplificação das APIs. Sua construção contribui com:

  • Feedback prático sobre ergonomia das interfaces;
  • Estímulo ao desenvolvimento de helpers genéricos;
  • Testes reais para a infraestrutura de device drivers em Rust;
  • Motivação para a evolução dos frameworks de driver DRM.

Esse ciclo virtuoso beneficia não apenas o projeto Tyr, mas todo o ecossistema Linux que busca adotar Rust com responsabilidade.

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

A primeira submissão upstream de Tyr foca nas funções mínimas necessárias para ativar a GPU e testar a integração com o DRM no RK3588. Ela inclui:

  • Inicialização básica do dispositivo Mali;
  • Comunicação com o firmware via CSF;
  • Integração inicial com o subsistema DRM do kernel;
  • Infraestrutura de driver modular em Rust.

Ainda não há suporte a renderização gráfica ou compatibilidade com stacks como OpenGL ou Vulkan. O trabalho está focado em garantir uma base sólida e segura, sobre a qual recursos mais avançados serão adicionados futuramente.

Funcionalidades iniciais: ativação da GPU no RK3588

O foco atual do Tyr é o suporte à GPU Mali CSF presente no SoC RK3588. As funcionalidades implementadas incluem:

  • Detecção do dispositivo e inicialização do hardware;
  • Comunicação básica com o firmware CSF;
  • Integração com o subsistema DRM para gerenciamento de dispositivos.

Ainda não há suporte para leitura da ROM via sysfs, nem há qualquer funcionalidade gráfica visível ao usuário neste estágio. A prioridade é estabilizar a comunicação com o hardware e preparar o ambiente para renderização futura.

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

A equipe da Collabora planeja publicar uma série de blog posts técnicos detalhando o processo de desenvolvimento do Tyr, incluindo:

  • Arquitetura CSF das GPUs ARM Mali;
  • Desafios específicos na comunicação com o firmware;
  • Organização do código Rust em drivers kernel;
  • Uso de IGT (Intel Graphics Test Suite) para validação funcional;
  • Perspectivas de integração futura com PanVK (driver Vulkan que interage com Panfrost e Panthor).

Essas publicações irão ajudar engenheiros interessados a entender as escolhas de design, obstáculos técnicos e como colaborar com o projeto.

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

O Tyr é mais do que um driver em Rust. Ele é um catalisador para a adoção de novas práticas de desenvolvimento de drivers no Kernel Linux, especialmente em ambientes de alta complexidade como o de GPUs.

Ao reunir Collabora, ARM e Google em uma frente comum, o projeto não apenas amplia o suporte para GPUs ARM Mali, como também serve de laboratório para consolidar Rust como uma linguagem de primeira classe dentro do kernel.

Seu impacto vai além da renderização gráfica: inspira confiança, segurança e inovação na base do sistema operacional mais utilizado do mundo em servidores, dispositivos móveis e embarcados.

Nota: Atualizamos este post em 14/07/2025 às 21:06 para corrigir algumas informações e melhorar a clareza de algumas informações.

Compartilhe este artigo