KVM Virglアクセラレーションは特定のゲストにのみ提供されますか?

KVM Virglアクセラレーションは特定のゲストにのみ提供されますか?

KVMゲストには次のグラフィック設定を使用しています。

...
<graphics type="spice">
  <listen type="none"/>
  <image compression="off"/>
  <gl enable="yes" rendernode="/dev/dri/by-path/pci-0000:69:00.0-render"/>
</graphics>
...
<video>
  <model type="virtio" heads="1" primary="yes">
    <acceleration accel3d="yes"/>
  </model>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>
...

Fedora(32/33)とUbuntu(20.04)では非常にうまく動作しますが、これまでは他のディストリビューションでは機能しません。 Fedoraでもenable="yes"インストール後に開いて()動作します(ライブCDでは機能しません)。しかし、その後はすぐに動作します。

マンジャロで同じ操作をしようとすると、メニューすら停止してgrub使用できなくなります。私もsystemd-bootそれを試しました。ただし、実行すると画面が黒くなります(黒い画面にもかかわらず、マウスの統合は引き続き機能するため、正しく機能しているようです)。

修正する: これは最終的にカーネルの問題ではないようです。自動ログインが有効になっていてこれを見逃しましたが、lightdmでは正常に表示しました。実際に私に黒い画面を与えたのはDE(XFCE)でした。 WaylandとXorgのGnomeはうまくいきます。ただし、GRUBメニューはまだ機能しません。これはvirglとGRUB間の互換性の問題のようです。そしてXFCE。おそらくEFIなしで再試行しますが、元の問題はほとんど解決されました。

今、私はFedora / Ubuntuに何があるのか​​知りたいです。たとえば、manjaroが抜けていますか?これが欠けているカーネルオプションですか、それともいくつかのドライバパッケージですか?

Manjaroゲストにインストールしようとしましたが、virglrenderer役に立ちませんでした(ゲストに適しているかどうかはわかりません)。

修正する:

黒い画面を持つManjaroゲストでSSHを使用すると、次の結果が表示されます。

dmesg | grep drm
[    0.836414] [drm] pci: virtio-vga detected at 0000:00:01.0
[    0.836420] fb0: switching to virtiodrmfb from EFI VGA
[    0.836526] [drm] virgl 3d acceleration enabled
[    0.836527] [drm] EDID support available.
[    0.837182] [drm] number of scanouts: 1
[    0.837186] [drm] number of cap sets: 2
[    0.845823] [drm] cap set 0: id 1, max-version 1, max-size 308
[    0.845964] [drm] cap set 1: id 2, max-version 2, max-size 688
[    0.846341] [drm] Initialized virtio_gpu 0.1.0 0 for virtio0 on minor 0
[    0.848777] virtio_gpu virtio0: fb0: virtio_gpudrmfb frame buffer device
[    2.095162] systemd[1]: Condition check resulted in Load Kernel Module drm being skipped.

Fedoraのゲストもいます:

dmesg | grep drm
[    2.164964] [drm] pci: virtio-vga detected at 0000:00:01.0
[    2.177043] [drm] features: +virgl +edid
[    2.177652] [drm] number of scanouts: 1
[    2.177658] [drm] number of cap sets: 2
[    2.193509] [drm] cap set 0: id 1, max-version 1, max-size 308
[    2.193596] [drm] cap set 1: id 2, max-version 2, max-size 688
[    2.193840] [drm] Initialized virtio_gpu 0.1.0 0 for virtio0 on minor 0
[    2.217427] virtio_gpu virtio0: [drm] fb0: virtio_gpudrmfb frame buffer device
[    3.552834] systemd[1]: Condition check resulted in Load Kernel Module drm being skipped.

ホストマシン(作業中のVMの出力は同じですが動作します):

qemu-system-x86_64 \
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2/ovmf/OVMF_CODE.fd \
-drive if=pflash,format=raw,readonly,file=/path/to/qemu/nvram/manjaro_VARS.fd \
-drive file=/path/to/manjaro.qcow2 \
-m 8192 -enable-kvm -M q35 -cpu host -smp 16,sockets=1,cores=16,threads=1 \
-vga virtio -display gtk,gl=on \
-usb -device usb-tablet \
-net user,hostfwd=tcp::10022-:22 -net nic

gl_version 46 - core profile enabled
vrend_renderer_fill_caps: Entering with stale GL error: 1280
GLSL feature level 430

答え1

問題は、Xfwmの組み込みシンセサイザとvirglが一緒にうまく機能しないことです。

回避策:virgl = off(ビデオデバイス上)またはgl = off(モニター上)でVMを起動し、VMでxfwm4-tweaks-settingsを実行し、Compositorタブを選択して、Enable display compositing ""の選択を解除します。します。仮想マシンを終了し、virglを再度有効にします。

PicomはXfwmで動作し、同じ問題がないようです。したがって、シンセサイザが必要な場合は、Xfwmの内蔵シンセサイザを使用する代わりに、VMにpicomをインストール/使用してください。https://wiki.archlinux.org/index.php/Picom

答え2

メモ:これは単なる概要です。それは何をしてどれだけ効果的ですか?- ATMがなぜこれが起こるのか分からない。

Manjaroゲストはvirglを使用できますが、XFCEに問題があるようです。たとえば、GnomeまたはXはWaylandで動作します。

Manjaroゲストにインストールしましたspice-gtkqemu-guest-agent(彼らがそれを機能させる責任があるかどうかは確認していません。)

ただし、グラフィックvtが応答してもコンソールttyに切り替えると応答速度が非常に遅くなります(Fedoraも同様)。

関連情報