Open bmegli opened 4 years ago
On 19.04 and m3-8100Y
uname -a
Linux GPDWIN2 5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
vainfo --display drm --device /dev/dri/renderD128
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Kaby Lake - 2.3.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSlice
VAProfileVP9Profile2 : VAEntrypointVLD
Actually 20.04 has both drivers iHD and i965.
It is possible to force i965, and everything seems to work with m3-8100Y through i965 (needs more testing to be certain)
LIBVA_DRIVER_NAME=i965 vainfo --display drm --device /dev/dri/renderD128
libva info: VA-API version 1.6.0
libva info: User environment variable requested driver 'i965'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_6
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.6 (libva 2.6.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Kaby Lake - 2.4.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSlice
VAProfileVP9Profile2 : VAEntrypointVLD
Also HEVC Main10 encoding through HVE works this way (by setting environment variable)
LIBVA_DRIVER_NAME=i965 ./hve-encode-raw-hevc10 10 /dev/dri/renderD128
In general, for Intel there are two drivers:
Driver | Generation | Repository |
---|---|---|
i965 driver | gen5 to gen9.5 | https://github.com/intel/intel-vaapi-driver |
iHD driver | gen8+ | https://github.com/intel/media-driver |
For i965 support for version/generation may be found in intel-vaapi-driver NEWS
For iHD see this table noting that:
Full Feature Build
(closed source)Free Kernel Build
(fully open source with limited functionality)Free Kernel Build
encoding support generally comes later (generation wise)Some devices (between gen8 and gen9.5) are supported by both drivers which means at least 3 possibilities (i965 and two builds of iHD), not counting other factors like GuC/HuC and low power encoding.
Tested with i5-1035G7. Seems to work only with iHD driver.
HEVC Main10 encoding required Full Feature Build to work.
sudo apt install intel-media-va-driver-non-free
Maybe it would also work by loading GuC/HuC.
HEVC Main10 decoding:
Update:
The situation is quite complex.
Support depends on:
KabyLake (7th gen)
The library is tested with KabyLake on 18.04, everything works here.
AmberLake Y (8th gen)
Here the situation is funny. VAAPI:
but without profiles for HEVC and HEVC Main10 encodingwith both iHD and i965 drivers, with iHD HEVC and HEVC Main10 encoding ~is not supported~ may also depend on driver build (full featured vs free kernel)Also from what I remember in 18.04 and 19.04 it uses i965 and in 20.04 iHD dirver by default.
18.04
By default VAAPI doesn't work in the OS. Through 965_drv_video.so.
Needs more investigation.
19.04
I used it on m3-8100Y with GPD Win2, worked out of the box with: Ubuntu MATE 19.04 for GPD Pocket 2 & GPD WIN 2
H264 and HEVC Main10 worked however I had doubts whether bitrate control worked correctly. Didn't seem so.
20.04 (daily build 18.03.20)
VAAPI works through iHD_drv_video.so however there are no entry points for encoding HEVC and HEVC Main10 (only decoding).
Edit:
it is possible that HEVC would work with Full Feature iHD build (I haven't tried with AmberfLake-Y yet)
Edit: