本文将首先介绍 Virgl 的基本概念和架构,主要从全局的角度分析虚拟机请求到物理机上的处理流程。
1. Virgl图形软件栈
如图所示,详细地展示了virgl技术图形软件栈。从整体来看可以分为两个层次:Guest端和Host端,接下来将分别介绍每一层涉及的概念。
2. Guest端
2.1 Mesa驱动
-
在本文中,我们讨论的“Guest”端,指的是基于 QEMU 启动的 Linux 虚拟机。在这个虚拟机环境中,应用程序在执行过程中会调用相应的用户层驱动。例如,
OpenGL
应用会利用Virgl
驱动,Vulkan
应用则会调用Venus
驱动,而OpenCL
应用会依赖VCL
驱动。这些驱动都是在 Mesa 中专门为支持 Virgl 技术而开发的开源用户态驱动。 -
这些用户态驱动的核心功能是将虚拟机中的应用程序对硬件的请求 API 进行指令翻译。以 Virgl 驱动为例,它将 OpenGL 指令转换为对应的 Virgl 指令,从而实现高效的图形渲染和处理。这种翻译机制不仅优化了虚拟化环境中的性能,还确保了应用程序能够