Spice 服务器

Spice服务器基于libspice(一个虚拟设备接口可插拔库)。VDI提供了一个通过软件组件来发布虚拟设备接口的标准方式,使得软件组件能够与虚拟设备交互。一方面,服务器可以使用Spice协议与客户端交互。另一方面,它也与VDI主机程序(如QEMU)交互。

为了远程显示目的,服务器维护一个命令队列和一棵树来管理当前对象依赖和隐藏。QXL命令被处理和转化为Spice协议命令发送到客户端。

Spice尽可能尝试把渲染的任务交给客户端,因此利用了客户端的硬件加速能力。在客户机上用软件或者GPU进行渲染作为最后的选择。Spice服务器保存组成当前图像的客户机图像命令.只有当某个命令被其他命令完全覆盖并且没有其他对象依赖它的时候,或者我们需要渲染这个命令到帧缓冲区的时候,它会被服务器释放。

触发重绘帧缓冲区的两个原因:

  • 资源耗尽
  • 客户机读取帧缓冲区