O driver AGX”Asahi”Gallium3D da Mesa para fornecer suporte a OpenGL/GLES em SoCs Apple M1/M2 começou a fazer algumas alterações preparatórias iniciais para eventualmente suportar o driver de kernel DRM/KMS em desenvolvimento. O driver do kernel ainda é um trabalho em andamento e não está perto de ser mesclado e a API do espaço do usuário ainda não está definida, mas algumas mudanças iniciais para melhor preparar o driver Mesa para realmente rodar no hardware Apple Silicon no Linux foram mesclados.
Sendo trabalhado simultaneamente para o suporte gráfico Apple Silicon de código aberto no Linux está o driver de kernel DRM/KMS e, em seguida, no espaço do usuário está o driver Mesa. O driver do kernel está sendo escrito em Rust e está progredindo, embora ainda demore um pouco antes de ser mesclado, provavelmente em algum momento depois de 2023, pelo menos. Mas pelo menos Alyssa Rosenzweig começou a fazer os preparativos para usar rapidamente esse driver do kernel quando estiver pronto.
O código mesclado hoje à árvore de desenvolvimento do Mesa 23.0 foi observado por Alyssa:
@asahilina tem trabalhado em uma ramificação que integra o Mesa com seu novo UAPI para executar o driver Asahi no Linux. O projeto de hoje foi limpar aquele galho enquanto eu levava o novo driver para dar uma volta. https://gitlab.freedesktop.org/alyssa/mesa/-/tree/asahi/rebased contém o fruto desse esforço. Infelizmente, não podemos mesclar o código UAPI do Linux até que o código correspondente seja mesclado no kernel upstream do Linux, o que pode levar muito tempo. No interesse de reduzir a dor de rebase nesse meio tempo, esta série contém os bits não UAPI, alguns dos quais serão imediatamente úteis.
Esse código de destino é 576 linhas de novo código e cerca de 123 linhas descartadas. Nesse ínterim, até que o driver DRM esteja na linha principal, há esse trabalho fora da árvore acontecendo e Alyssa continua trabalhando no código AGX Gallium3D no macOS. Ela espera ver o OpenGL 2.1 até o final do ano. O suporte à API Vulkan ainda precisa ser resolvido.