A Collabora anunciou suporte principal do Linux para decodificação de vídeo em hardware H.264 e H.265 em sistemas-on-chip Rockchip RK3588 e RK3576. Este desenvolvimento encerra a dependência de kernels BSP específicos do fornecedor para estes recursos. A atualização inclui novos controlos de API e correções para problemas de hardware.
Os SoC Rockchip RK3588 e RK3576, juntamente com variantes como o RK3588S e RK3576J, incorporam decodificadores de vídeo VDPU381 e VDPU383, respetivamente. Até agora, a decodificação de hardware dos formatos H.264 (AVC) e H.265 (HEVC) requeria o kernel BSP da Rockchip. O trabalho recente da Collabora introduz suporte upstream no Linux através de uma série de 17 patches que adiciona funcionalidade de decodificador, bindings de device tree e nós. As melhorias principais incluem novos controlos de API de espaço de utilizador V4L2 HEVC para gerir conjuntos de imagens de referência de curto e longo prazo (RPS). Estes controlos são essenciais para os decodificadores VDPU381 e VDPU383, ao contrário de outros que os podem contornar. As aplicações de espaço de utilizador devem agora fornecer tabelas RPS completas ao kernel. O suporte para estes controlos foi adicionado ao GStreamer 1.28, com integração preliminar no FFmpeg, e facilita a compatibilidade com Vulkan Video Decode. O driver Virtual Stateless Decoder (visl) também foi atualizado para rastrear todos os parâmetros de controlo. Uma correção notável aborda um problema de restauração IOMMU: como o IOMMU está incorporado nos decodificadores, os resets limpam as mapeações de endereços, mas o kernel tratava-os anteriormente como válidos. O patch restaura as mapeações em cache após o reset, afetando outros blocos IP da Rockchip como o acelerador gráfico 2D RGA. Para programação de registos, os engenheiros adotaram um modelo baseado em estruturas C em vez de escritas ad hoc para garantir que todos os registos sejam definidos na ordem correta, prevenindo inconsistências mesmo com valores predefinidos. Esta abordagem promove a completude e prepara para uso multi-core. Espera-se que os patches sejam fundidos no Linux 7.1, cerca de três meses após o lançamento do Linux 6.19 em fevereiro. Os esforços futuros da Collabora incluem decodificação multi-core no RK3588, suporte AV1 para o RK3576, VP9 para o RK3588 e compatibilidade VDPU346 para SoC RK356X. Um resumo detalhado está disponível no site da Collabora.