主机

主机

我已经设法在 QEMU/KVM 中运行 virgl 3D 加速,现在我想看看我是否可以在多个显示器上运行它。但是,当我向视频设备添加更多头时,无论我如何设置,显示器 1 都会镜像到其他显示器上,而不是扩展。有人知道如何让它工作吗?我无法进行 GPU 直通,因为我的 CPU 没有集成显卡,而且我没有空间或预算来安装另一个 GPU。

主机

操作系统
桌面 桌面环境
显示服务器 x11
中央处理器 AMD 锐龙 7 5800X3D
图形处理器 NVIDIA GeForce RTX 4090
内存 64GB

客机

操作系统 大Linux
桌面 桌面环境
显示服务器 x11

我如何让 virgl 与 NVIDIA 合作

  1. 我通过 virt-manager 的向导正常设置了 VM。
  2. 我安装了 ISO,然后在已安装的系统上加载桌面后关闭了 VM。
  3. 在详细信息视图中,在 virt-manager 中启用 XML 编辑:
    1. Video VirtioI下启用3D加速。
    2. 在下,Display Spice我将其设置Listen type为并且NoneOpenGL选中。(我发现保留也可以,但是我遵循的教程和启用 OpenGL 时出现的警告都告诉我将其保留为,所以我保留了 )Listen typeAddressNone
    3. OverviewI 下切换到 XML 选项卡
      1. 如果存在的话,我会<gl/>从现有设备中删除。<graphics/>
      2. 在现有<graphics/>设备下方我添加以下内容:
    <graphics type="egl-headless">
      <gl rendernode="/dev/dri/renderD128"/>
    </graphics>

现在,当我启动虚拟机时,我打开 Lutris 并在“首选项”下检查硬件信息,它显示 virgl 正在运行并列出了我的 GPU。

我为虚拟机添加了更多显示器

  1. 按照上述步骤启用 virgl 后,我关闭了虚拟机。
  2. 我转到“详细信息”,在Video Virtio“XML”选项卡下将heads值更改为3,因为我想要 3 个显示。
  3. 将虚拟机启动到桌面后,我virt-viewer -a在主机上输入终端以在连接模式下启动它。(Listen type设置为后,Address我可以选择正常启动它或改用远程查看器)
  4. 为了初始化额外的显示器,从第一个显示窗口(应该初始化)我选中并取消选中其中一个附加显示器。

有关这些步骤结果的奇怪细节

显示器自动排列在侧面,但我看到的是其他显示器上显示器 1 的不完美镜像 - 其他显示器似乎只有在发生变化时才会更新,而且并非总是如此。尽管显示显示器 1,但其他显示器至少表现得像我希望的那样,位于显示内容的后面;我可以通过在主机上将显示窗口彼此相邻排列、在客户机上的显示器之间拖动窗口,然后拖动标题栏在额外显示器上的位置来测试这一点。

相关内容