快轉到主要內容

virtio-gpu,UTM啟用半虛擬化GPU加速,改善Linux虛擬機圖形效能

分類   資訊科技 虛擬機與容器技術
標籤   VirGL QEMU-KVM UTM MacOS IOS
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

UTM安裝的Linux虛擬機是沒有GPU加速的,這會導致圖形界面用起來不愉快。要解決這個問題請使用virtio-gpu。virtio-gpu為QEMU提供的半虛擬化GPU加速技術。

相關文章: Linux QEMU/KVM透過virtio-gpu啟用GPU加速

跟Linux Virt Manager類似,UTM提供了使用者便捷的界面來啟用virtio-gpu。如此一來就可以免GPU直通,給Linux虛擬機啟用GPU加速,改善部份圖形程式的執行效能。

1. virtio-gpu注意事項
#

  • virtio-gpu適用macOS與iOS版的UTM,由Apple Metal或OpenGL提供支援,不論有無Hypervisor皆可使用。
  • 目前virtio-gpu僅支援GNU/Linux虛擬機,Windows虛擬機的patch還在路上。
  • 大部分Linux發行版的核心和Mesa驅動應該都有支援VirGL,無需刻意安裝驅動。
  • 分別用x86_64架構與ARM64架構的Debian測試,得出:無論是ARM架構跑ARM虛擬機,或是ARM跑x86虛擬機,都可以使用virtio-gpu的GPU加速。
  • virtio-gpu僅支援加速OpenGL,Vulkan尚屬實驗性。

2. virtio-gpu啟用方式
#

  1. 安裝Debian虛擬機。

  2. 在UTM設定將算繪後端設定為ANGLE (Metal)

  3. 編輯UTM虛擬機設定 → 顯示器,切換顯示卡,要選哪個呢?

根據QEMU官方文件,virtio-gpu以-gl作結尾的便是使用virglrenderer作為後端。

於是符合條件的顯示卡就是:virtio-gpu-gl-device、virtio-gpu-gl-pci、virtio-ramfb-gl、virtio-vga-gl。

差別在於他們背後模擬顯示卡原理不太一樣,對Debian Linux而言選virtio-gpu-gl-pcivirtio-vga-gl-pci就夠了。請記得勾選「啟用GPU加速」。

3. 測試virtio-gpu加速效果
#

  1. 安裝Debian虛擬機。開機後進入X11工作階段。

  2. 執行sudo dmesg | grep drm指令,檢查virgl是否有載入

  3. 利用glxinfo | grep OpenGL指令,檢查系統是否有抓到VirGL。若VirGL沒有成功載入則會顯示CPU算繪的llvmpipe

可見到宿主機的Apple GPU型號和VirGL,OpenGL ES 2.0

若用OpenGL當算繪後端會看到OpenGL ES 3.0

  1. 不是所有程式都支援VirGL,有時VirGL得手動啟用:
GALLIUM_DRIVER=virgl "執行檔路徑"
  1. 例如,跑glmark跑分程式:
GALLIUM_DRIVER=virgl glmark2

沒有VirGL、純CPU的llvmpipe算繪下,FPS低落

啟用VirGL後FPS變得十分順暢。

  1. 我另外測試了MPV的播放效果,使用指令:GALLIUM_DRIVER=virgl mpv --no-config --vo=gpu --gpu-context=x11egl "影片路徑",只要VirGL圖形加速有起來的話,那麼在虛擬機裡面解碼1080p影片也不是問題了。

參考資料
#

相關文章

Linux QEMU/KVM透過virtio-gpu啟用虛擬機3D加速,免GPU直通
分類   資訊科技 虛擬機與容器技術
標籤   VirGL QEMU-KVM VirtIO
USBFlux,讓macOS Xcode遠端偵錯iOS裝置
分類   資訊科技 虛擬機與容器技術
標籤   MacOS QEMU-KVM Xcode Libimobiledevice
免Mac電腦,OSX-KVM讓你在Linux系統安裝macOS的QEMU虛擬機
分類   資訊科技 虛擬機與容器技術
標籤   MacOS QEMU-KVM Libvirt Xcode

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。