1733952468
2024-12-11 20:48:00
最新の reales qemu には Venus パッチが追加され、virtio-gpu が vulkan の venus カプセル化をサポートするようになりました。これは、Vulkan の完全サポートに向けたパズルのもう 1 ピースです。
に関する古いブログ投稿 クロールラボラ は 2021 年に、ローカル開発環境で VirtIO-GPU 用の Venus 実験用 Vulkan ドライバーを使用して、QEMU で Vulkan アプリケーションの 3D アクセラレーションを有効にする方法について説明しました。時代遅れの記事をフォローアップし、今日はこのように書きました。
投稿で言及されているプロジェクトの簡単な説明から始めて、それを拡張しましょう。
- QEMU はマシンエミュレータです
- VirGL は、Mesa で利用可能な VirtIO-GPU 用の OpenGL ドライバーです。
- Venus は、VirtIO-GPU 用の実験的な Vulkan ドライバーであり、Mesa でも利用できます。
- Virglrenderer は、VM ゲストへのハードウェア アクセラレーションを可能にし、先ほど述べた 2 つのドライバーからのコマンドを OpenGL または Vulkan に効果的に変換するライブラリです。
- libvirt はプラットフォーム仮想化を管理するための API です
- virt-manager は、libvirt を通じて仮想マシンを管理するためのデスクトップ ユーザー インターフェイスです。
マージされたパッチ:
進行中の作業:
ホストに適切なバージョンがインストールされていることを確認してください。
- CONFIG_UDMABUF でビルドされた Linux カーネル >= 6.13
- Vulkan と KVM のセットアップが動作する
- qemu >= 9.2.0
これは次のように確認できます。
$ uname -r
6.13.0
$ ls /dev/udmabuf
/dev/udmabuf
$ ls /dev/kvm
/dev/kvm
$ qemu-system-x86_64 --version
QEMU emulator version 9.2.0
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
Vulkan が動作するには、グラフィック カードに適切なドライバーがインストールされている必要があります。セットアップを確認するには、インストールします vulkan-tools:
$ vulkaninfo --summary
==========
VULKANINFO
==========
Vulkan Instance Version: ...
...
$ vkcube
Selected GPU x: ..., type: ...
ディストリビューションが (まだ) qemu の更新バージョンを出荷していない場合は、ソースから自分でビルドできます。
wget https://download.qemu.org/qemu-9.2.0.tar.xz
tar xvJf qemu-9.2.0.tar.xz
cd qemu-9.2.0
mkdir build && cd build
../configure --target-list=x86_64-softmmu
--enable-kvm
--enable-opengl
--enable-virglrenderer
--enable-gtk
--enable-sdl
make -j4
パッケージが見つからない場合、構成ステップでエラーが発生します。何をインストールするかについての詳細は、qemu wiki を確認してください。 https://wiki.qemu.org/Hosts/Linux
イメージを作成し、選択したディストリビューションを取得します。
ISO=ubuntu-24.10-desktop-amd64.iso
wget https://releases.ubuntu.com/oracular/ubuntu-24.10-desktop-amd64.iso
IMG=ubuntu-24-10.qcow2
qemu-img create -f qcow2 $IMG 16G
ライブバージョンを実行するか、ディストリビューションをインストールします
qemu-system-x86_64
-enable-kvm
-M q35
-smp 4
-m 4G
-cpu host
-net nic,model=virtio
-net user,hostfwd=tcp::2222-:22
-device virtio-vga-gl,hostmem=4G,blob=true,venus=true
-vga none
-display gtk,gl=on,show-cursor=on
-usb -device usb-tablet
-object memory-backend-memfd,id=mem1,size=4G
-machine memory-backend=mem1
-hda $IMG
-cdrom $ISO
それに応じてパラメータを調整します。
- smp: CPUコアの数
- m: RAM
- ホストメモリ、サイズ: VRAM
インストール mesa-utilites そして vulkan-tools セットアップをテストするには:
$ glxinfo -B
$ vkcube
Selected GPU x: ..., type: ...
デバイスが llvmpipe 何かが間違っています。デバイスは次のとおりである必要があります virgl (...)。
- (ホスト) 追加
-d guest_errorsゲストからのエラーメッセージを表示するには - (ゲスト) vulkan virtio ドライバーと mesa をインストールしてみる
- オリジナルをチェックする ブログ投稿
— 作業中 —
現在、これは進行中の作業であるため、virt-manager に vulkan サポートを追加するオプションはありません。これを設定するフィールドはありません。また、libvirt もこれらのオプションを認識しないため、xml は機能しません。そのため、xml 検証は失敗します。ただし、次のオプションがあります QEMU コマンドライン パススルー これは検証をバイパスします。
4G のメモリを備えたデフォルトのマシンをセットアップする場合は、次のことができます。
qemu:commandline>
qemu:arg value="-device"/>
qemu:arg value="virtio-vga-gl,hostmem=4G,blob=true,venus=true"/>
qemu:arg value="-object"/>
qemu:arg value="memory-backend-memfd,id=mem1,size=4G"/>
qemu:arg value="-machine"/>
qemu:arg value="memory-backend=mem1"/>
qemu:arg value="-vga"/>
qemu:arg value="none"/>
qemu:commandline>
これにより、次のエラーが発生します。
qemu-system-x86_64: virgl could not be initialized: -1
番号を 4G から 4194304k (メモリと同じ) に変更すると、次のエラーが発生しました。
qemu-system-x86_64: Spice: ../spice-0.15.2/server/red-qxl.cpp:435:spice_qxl_gl_scanout: condition `qxl_state->gl_draw_cookie == GL_DRAW_COOKIE_INVALID' failed
さらに調査される予定です。
#VirtIO #GPU #Vulkan #サポートを備えた #QEMU #GitHub