Extensões de vídeo Vulkan para codificação acelerada de H.264 e H.265
As novas extensões Vulkan Video da Khronos para codificação/decodificação por hardware de H.264 e H.265 estão gerando আশা por uma API única e multivendor que possa simplificar a aceleração de vídeo em GPUs e sistemas operacionais, especialmente no Linux. Os comentaristas ponderam o potencial do Vulkan em relação a caminhos já existentes e específicos de sistema operacional e fornecedor, como VA-API, Windows Media Foundation, NVDEC/NVENC e outros, observando lacunas no suporte a drivers, questões de patentes de codecs e fragmentação de plataforma (particularmente no macOS e no Android). Também há interesse no suporte futuro a AV1 e em quão bem os codecs modernos podem ser paralelizados, tanto em blocos de hardware dedicados quanto em decodificadores de software como dav1d.
Escopo e objetivos do Vulkan Video
- Usa blocos de codificação/decodificação de função fixa já existentes em GPUs/SoCs, hardware semelhante ao alvo de VAAPI, NVENC/NVDEC, etc.
- Promovido como uma API de vídeo multiplataforma e multivendor, potencialmente abrangendo Intel, AMD, Nvidia, SoCs móveis e dispositivos pequenos (por exemplo, Raspberry Pi).
- Visto como especialmente promissor para Linux, onde não existe uma API nativa de mídia unificada e a fragmentação de drivers é dolorosa.
Comparação com APIs existentes (VAAPI, DXVA, etc.)
- Vulkan Video e VAAPI abordam o mesmo hardware; as diferenças estão no design da API:
- Vulkan é mais explícito, menos específico de codec e pode se integrar de forma limpa com a renderização Vulkan (mais fácil de fazer zero-copy para texturas).
- VAAPI é amplamente usado no Linux, bem suportado por Intel/AMD e por alguns shims de terceiros para Nvidia, mas não oficialmente pela Nvidia.
- Alguns argumentam que VAAPI já não é “apenas da Intel”; outros enfatizam que ele e VDPAU/NVDEC/AMF continuam específicos de fornecedor/plataforma.
- Céticos dizem que migrar OBS/Firefox de APIs nativas maduras do sistema operacional (DXVA/WMF, VideoToolbox, MediaCodec) adiciona complexidade, especialmente porque macOS e Android não têm Vulkan Video e, no Windows, Vulkan é secundário em relação ao DirectX.
Firefox e decodificação por hardware no Linux
- O Firefox já tem decodificação por hardware no Linux via ffmpeg+VAAPI, inclusive em Intel e AMD; Nvidia continua problemática sem shims não oficiais.
- Usuários podem verificar o uso via a seção Media em about:support ou por ferramentas específicas da GPU.
- O Mesa desativa codecs sujeitos a patentes por padrão; muitas distribuições mantêm isso desligado para evitar risco legal, então H.264/H.265 podem exigir etapas extras, enquanto AV1 geralmente funciona imediatamente.
Implantação de drivers e problemas de usabilidade
- No Windows, drivers fornecidos por OEMs/Microsoft frequentemente são instalados sem um runtime Vulkan funcional por padrão; DirectX funciona, mas o Vulkan pode falhar até que os usuários instalem um runtime extra, o que é aceitável para jogos, mas problemático para aplicativos gerais.
Hardware e paralelismo em codecs
- “Decodificação por software” significa baseada em CPU; “decodificação por hardware” usa unidades de função fixa ligadas a GPUs/iGPUs (por exemplo, Quick Sync), não núcleos gerais da GPU.
- A decodificação de vídeo é em parte inerentemente serial (por exemplo, decodificação de entropia, cadeias de predição de movimento), mas codecs modernos (H.265, AV1) fornecem tiles/slices para paralelismo, trocando alguma eficiência de compressão por decodificação/codificação multithread.