Virtualization SIG负责构建openKylin社区系统虚拟化技术,打造面向端、边、云的全场景虚拟化解决方案。近期,SIG小组在虚拟GPU优化方向取得了不错成果,率先实现VirtIO-GPU支持硬件视频加速技术,解放系统CPU占用。
目前,该技术相关补丁已经合入到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社区系统虚拟化技术。
创新永无止境,科技引领未来,openKylin作为我国首个桌面操作系统根社区,将加速科技协同创新,持续参与国际开源社区交流与合作,进一步提升在国际开源技术社区的影响力,构建技术话语权。
审核:openKylin
投稿作者 | 作者网站 |
---|---|
微信捐赠 | 支付宝捐赠 |
---|---|