virgl: add support for hardware video acceleration
This function is implemented based on libva and currently supports H.264 and H.265 decoding, and will gradually support encoding and other profiles in the future.
Mesa on the guest side: mesa/mesa!17157 (merged)
I played the following files using MPV player(--hwdec=auto/no):
File | Desc. |
---|---|
bbb_sunflower_1080p_60fps_normal.mp4 | H.264+AC3+MP3, 1920x1080, 60fps, 339MB |
bbb_sunflower_2160p_60fps_normal.mp4 | H.264+AC3+MP3, 3840x2160, 60fps, 642MB |
caminandes_llamigos_1080p_hevc.mp4 | H.265+AAC, 1920x1080, 24fps, 27MB |
Here are the test results(use mesa-20.0.8):
On x86_64 (Intel i5-9500 + AMD Radeon RX550), the CPU usage:
software decoding | hardware decoding | |
---|---|---|
H.264/1080p@60fps | 65.0% | 17.3% |
H.264/4K@60fps | 108.0% | 17.6% |
H.265/1080p@24fps | 42.6% | 9.5% |
On aarch64 (Kunpeng-920 + AMD Radeon RX550), the CPU usage:
software decoding | hardware decoding | |
---|---|---|
H.264/1080p@60fps | 76.0% | 6.7% |
H.264/4K@60fps | 321.0% | 8.4% |
H.265/1080p@24fps | 63.7% | 4.1% |
Signed-off-by: Feng Jiang jiangfeng@kylinos.cn
Edited by Feng Jiang