va: Add support for libva-win32
Since libva 2.17 there's a new VAAPI display "libva-win32" that allows VA acceleration on Windows OS. Similarly, Mesa 22.3 released vaon12_drv_video.dll
, a VA driver for Windows, which is based on D3D12 Video APIs and implements the following entrypoints (where hardware/drivers support is available) on Windows OS:
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
Enhancing/extending gstreamer with the VAAPI VADisplay
initialization code using the new vaGetDisplayWin32
function would allow the vaapi* related plugins to work on Windows. Using it together with the vaon12
mesa driver, it'd allow for access to a (layered via libva) D3D12 video support on gstreamer for decode, encode and some video processing as well on any device supporting D3D12 Video APIs. Please note the vaapi* plugins are already working via libd3d12.so
and the d3d12_drv_video.so
mesa driver in Windows Subsystem for Linux
via the existing VAAPI DRM/X11 initialization paths.