A NVIDIA está intensificando seus esforços para melhorar o suporte ao hardware de Mux dinâmico de displays em laptops com combinações de iGPU/dGPU no Linux. Durante o XDC 2024, realizado em Montreal, os engenheiros da empresa, como Daniel Dadap, apresentaram os desafios enfrentados e suas propostas para otimizar essa tecnologia em sistemas que utilizam GPUs integradas e dedicadas.
Desafios e soluções para o mux dinâmico no linux
Atualmente, o suporte ao mux dinâmico, que permite alternar entre GPUs de forma automática ou controlada pelo usuário enquanto o sistema está em uso, apresenta diversas dificuldades. A solução vigente, que envolve o uso do VGA_Switcheroo, introduz limitações sérias, como a dependência do DebugFS e suporte restrito a apenas uma mux com dois conectores. Além disso, o processo de alternância requer a suspensão da sessão do desktop, causando perda de estado.
A NVIDIA propôs uma solução que supera essas limitações ao estender a API DRM/KMS, possibilitando uma integração mais eficiente e adaptada ao hardware moderno. Essa nova arquitetura elimina a dependência de design obsoleto, oferece suporte para múltiplos muxes e conectores muxados, e não faz suposições sobre os tipos de GPU, tornando-a mais flexível e robusta. A proposta foi originalmente apresentada pela NVIDIA em 2022, e agora conta com o suporte de empresas como a AMD, que também defende o uso de uma abordagem semelhante.
Arquitetura mux da NVIDIA no Linux
O principal benefício do uso do mux dinâmico está na sua capacidade de evitar a necessidade de offload de renderização e display, economizando energia e melhorando o desempenho. Com essa nova arquitetura, a alternância entre GPUs se torna muito mais fluida, com a possibilidade de realizar a troca de forma dinâmica, sem a necessidade de interromper o uso ou perder o estado do sistema. A tecnologia também se integra ao recurso de Panel Self Refresh (PSR), o que permite que a tela mantenha sua imagem atual enquanto a troca entre as GPUs é realizada.
Outro ponto importante dessa abordagem é a maneira como o DRM-KMS coordena a alternância do mux. O processo envolve a preparação dos drivers das GPUs, a utilização do PSR para garantir a continuidade da imagem durante a troca, e a ativação da nova GPU, que precisa ajustar o modo de exibição após a mudança.
Integração com compositores Wayland
No cenário atual, o Wayland tem se consolidado como o padrão para servidores gráficos no Linux, e os compositores Wayland são os responsáveis por gerenciar a política de alternância do mux. Eles têm uma visão completa de todas as janelas de todas as GPUs, o que lhes dá o contexto necessário para tomar decisões em situações mais complicadas, como troca de janelas via alt-tab ou notificações de desktop.
Com isso, os compositores também precisam melhorar o suporte a múltiplas GPUs, possibilitando a alternância direta entre GPUs, sem a necessidade de renderização e offload. Além disso, essa flexibilidade se estende a sistemas sem mux, onde displays distintos estão conectados permanentemente a diferentes GPUs.
A apresentação da NVIDIA no XDC 2024 explora todos esses aspectos da arquitetura do mux dinâmico no Linux. Para aqueles interessados em mais detalhes técnicos, a apresentação e o PDF com os slides estão disponíveis para consulta pública.