Categorias
Tecnologia

Microsoft amplia aceleração de vídeo D3D12 do Mesa para oferecer suporte a efeitos baseados em mecanismo de vídeo

Desde o ano passado, a Microsoft vem trabalhando na aceleração de vídeo Direct3D 12 para Mesa para que o Windows Subsystem para Linux possa executar aplicativos comuns direcionados à API de aceleração de vídeo VA-API e, finalmente, aproveitar a aceleração de vídeo baseada em GPU por meio do Direct3D 12. Assim, a Microsoft amplia aceleração de vídeo D3D12 do Mesa para oferecer suporte a efeitos baseados em mecanismo de vídeo.

Após o vídeo inicial o suporte de codificação/decodificação para D3D12 foi incorporado ao Mesa no início deste ano, a mais recente contribuição da Microsoft agora é lidar com efeitos baseados em mecanismos de vídeo.

Mesclado ao Mesa 22.2 com o código Direct3D 12 agora está lidando com efeitos baseados em mecanismo de vídeo, como rotação, inversão, mistura alfa, corte e dimensionamento. Esses recursos são canalizados para o front-end VA-API Gallium3D e os engenheiros da Microsoft, por sua vez, testaram FFmpeg e GStreamer no Windows Subsystem for Linux (WSL2) e viram que esses efeitos de vídeo agora acabam funcionando muito bem.

Microsoft amplia aceleração de vídeo D3D12 do Mesa para oferecer suporte a efeitos baseados em mecanismo de vídeo

Os engenheiros da Microsoft continuam contribuindo com o Mesa para aprimorar o OpenGL, OpenCL, Vulkan, VA-API em cima do Direct3D para benefício principalmente do WSL.

As solicitações de mesclagem a seguir implementam as alterações necessárias para adicionar suporte a d3d12 gálio para efeitos baseados em Video Engine (sem sombreadores): rotação, inversão, mistura alfa, corte, dimensionamento e canalização até o front-end VAAPI. A mudança acontece em várias camadas:

  • pipe: Adiciona process_frame o método ao objeto de vídeo, que recebe novas estruturas especificando as regiões de entrada/saída, espelhamento de rotação e parâmetros de mistura alfa global, bem como novos limites de tubulação para estes. va: Observe que, se o driver de gálio não suportar get_video_param(..., PIPE_VIDEO_PROFILE_UNKNOWN, PIPE_VIDEO_ENTRYPOINT_UNKNOWN, PIPE_VIDEO_CAP_SUPPORTED, o comportamento será compatível com versões anteriores e a solução de sombreador existente será usada.
  • Adiciona suporte para tampas VA: VA_BLEND_GLOBAL_ALPHA, VA_MIRROR_HORIZONTAL, VA_MIRROR_VERTICAL, VA_ROTATION_90, VA_ROTATION_180, VA_ROTATION_270 através das novas tampas de tubo.
  • Integra o process_frame método recém-adicionado para NV12 em postproc.c.
  • Pequenas alterações em vlVaCreateContext, vlVaBeginPicture, vlVaEndPicture para dar suporte a pipe_video_codec baseado em VPP. (Compatível com versões anteriores se o driver não suportar as novas tampas como antes dessa alteração)

d3d12: Implementa pipe_video_codec::process_frame usando ID3D12VideoProcessor e limpando algum código.

Mais detalhes sobre este suporte de efeitos de vídeo D3D12 para Mesa 22.2 por meio desta mesclagem. Então, confira as principais novidades.

Por Claylson Martins

Jornalista com pós graduações em Economia, Jornalismo Digital e Radiodifusão. Nas horas não muito vagas, professor, fotógrafo, apaixonado por rádio e natureza.

Sair da versão mobile