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 suportarget_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 apipe_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.