日本語版
最新ニュース
科学&テクノロジー

VirtIO GPU Vulkan サポートを備えた QEMU · GitHub

最新の reales qemu には Venus パッチが追加され、virtio-gpu が vulkan の venus カプセル化をサポートするようになりました。これは、Vulkan の完全サポートに向けたパズルのもう 1 ピースです。 に関する古いブログ投稿 クロールラボラ は 2021 年に、ローカル開発環境で VirtIO-GPU 用の Venus 実験用 Vulkan ドライバーを使用して、QEMU で Vulkan アプリケーションの 3D アクセラレーションを有効にする方法について説明しました。時代遅れの記事をフォローアップし、今日はこのように書きました。 投稿で言及されているプロジェクトの簡単な説明から始めて、それを拡張しましょう。 QEMU はマシンエミュレータです VirGL は、Mesa で利用可能な VirtIO-GPU 用の…

VirtIO GPU Vulkan サポートを備えた QEMU · GitHub

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

QEMU のイメージを作成して実行する

イメージを作成し、選択したディストリビューションを取得します。

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

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。