虚拟化SIG最新技术成果:VirtIO-GPU硬件视频加速获国际社区认可!
目前,该技术相关补丁已经合入到mesa、virglrenderer上游开源项目,填补了上游国际开源社区虚拟显卡视频硬件解码领域技术空白,并获得国际开源社区认可。
openKylin Virtualization SIG目前使用的虚拟GPU优化方案采用了基于API转发的VirtIO-GPU虚拟化技术,并借助virglrenderer组件实现了3D硬件加速,大幅的提升了虚拟机的图形性能(可达60%以上),也大幅提高了用户在网页浏览、文件办公和游戏等场景下使用体验。虽然3D性能得到了显著优化,但是虚拟GPU不支持硬件解码的弊端却导致软件解码CPU占用率过高、画面不流畅,甚至丢帧等现象。
所以针对此类问题,openKylin Virtualization SIG为VirtIO-GPU创建了一套采用前后端架构的硬件视频加速机制,为其增加硬件编解码功能。其前端为“VirtIO-GPU视频驱动”,后端为“VirtIO-GPU视频服务程序”。前后端之间采用“VirtIO-GPU视频协议”进行通信,该协议主要定义了编解码相关的一些命令,如创建编解码器、创建视频缓冲区、解码比特流等。
VirtIO-GPU硬件视频加速机制整体框架
在虚拟机内使用MPV播放器分别播放不同编码标准和清晰度的视频文件,可以发现,使用VirtIO-GPU硬件解码时的CPU占有率明显低于软件编解码,在X86_64架构上降幅超过70%,在ARM架构上降幅则超过90%!大幅提高了用户的使用体验。
另外,使用Firefox浏览器进行4K在线视频的播放测试,结果表明使用VirtIO-GPU硬件解码时Firefox解码进程的CPU占用率相较于软件解码降低了95%以上,同时画面清晰流畅。
目前,VirtIO-GPU硬件视频加速机制已经实现了H.264和H.265的硬件解码功能,后续将逐步支持其它视频规范及编码功能,待openKylin新的版本发布后,大家即可体验。
同时,上游合入后Virtualization SIG也同AMD开源团队开展了相关技术交流探讨后续开发计划,欢迎有志伙伴加入openKylin社区Virtualization SIG,与大家一起交流、共同开发、共同演进,构建openKylin社区系统虚拟化技术。
https://gitee.com/openkylin/community/tree/master/sig/Virtualization Mesa项目补丁: Virglrenderer项目补丁: https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/838