Uma importante atualização no driver Vulkan da Intel para Linux está prestes a corrigir uma longa lista de problemas relacionados à decodificação de vídeo acelerada por hardware. Para usuários de GPUs Intel no Linux, isso se traduz em uma reprodução de vídeo mais estável, eficiente e com menor consumo de CPU para formatos modernos como H.265 e AV1 em aplicações que utilizam a moderna API Vulkan, como players de vídeo e navegadores.
No cerne desta mudança está uma solução inteligente para um problema complexo: como organizar na memória da GPU os múltiplos frames que um vídeo precisa para ser decodificado. A resposta veio de uma reinterpretação criativa de um conceito de longa data nos gráficos: as layered surfaces, ou texturas em array.
Uma solução inteligente de layout de memória
Imagine que você precisa armazenar vários quadros de vídeo de referência para decodificar corretamente o frame atual. O padrão Vulkan video exige que esses múltiplos frames—esse “buffer de decodificação”—sejam agrupados em um único objeto de memória da GPU, uma layered surface. O problema? O motor de mídia das GPUs Intel tem requisitos muito específicos de como ele consegue acessar essa memória.
A solução, como descrita pelo desenvolvedor no merge request para o projeto Mesa, foi “abusar” criativamente de parâmetros de layout de superfície que já existiam. Eles manipularam o pitch (a largura de uma linha de pixels em memória) e o array pitch (o espaço entre as camadas do array) para forçar o alinhamento de cada “fatia” de vídeo em um boundary de tile que o motor de mídia consegue acessar.
Para formatos multi-plano como YUV (onde os dados de luminância e crominância são armazenados separadamente), a engenharia foi ainda mais astuta. Eles pegaram os planos, aumentaram o array pitch para o comprimento combinado de todas as fatias e então entrelaçaram os arrays na memória. O resultado final são superfícies que ocupam faixas de memória sobrepostas, permitindo que o motor de vídeo acesse o plano de croma relativo ao plano de luma de maneira eficiente e—o mais importante—compatível com o hardware.
É uma daquelas soluções de baixo nível que soa complexa para quem está de fora, mas que é incrivelmente elegante para um engenheiro de drivers. E o melhor: ela não é nova. O desenvolvedor afirma que a técnica “deveria funcionar teoricamente em todo hardware desde o GFX 8“, o que significa que GPUs Intel desde a 8ª geração (Broadwell) podem se beneficiar deste avanço.
O impacto na prática: Dezenas de testes corrigidos
O que isso significa na vida real? Conformidade. O verdadeiro teste para qualquer implementação de API gráfica é o conjunto de testes de conformidade dEQP-VK. Antes desta mudança, o driver ANV (o driver Vulkan de código aberto da Intel) falhava em dezenas desses testes específicos para decodificação de vídeo.
Após a implementação do novo layout de memória para layered surfaces, uma vasta gama de testes de decodificação para H.264, H.265 e AV1, que antes falhavam, agora passam com sucesso, demonstrando a eficácia da nova implementação. A lista é extensa—mais de 40 testes—e cobre cenários críticos como decodificação com frames de referência intercalados, mudança de resolução dinâmica durante a playback e queries de status de operação.
Este é muito mais do que uma simples correção de bug; é um salto significativo em direção à implementação completa e robusta do padrão Vulkan video no ecossistema de código aberto. Para o usuário final, é a garantia de que a pilha gráfica que ele usa no Linux está se tornando mais madura, capaz e pronta para lidar com as demandas de vídeo moderno.