快轉到主要內容

WSL Docker的GPU硬體加速:virglrenderer

Linux系統 虛擬機與容器技術 VirGL Windows Subsystem for Linux Docker
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字

註解:本文僅是一個概念驗證,WSL已經有自己更好的硬體加速做法( WSLg環境變數)

WSL支援硬體加速,登入WSL後啟動Linux圖形程式,可以用Windows的顯示卡渲染。

但是若在WSL裡面跑Docker容器是吃不到顯示卡加速的。OpenGL圖形效能低落。

這個時候可以採用virglrenderer的方法。

virglrenderer在真正的Linux系統上可以做到給QEMU/KVM虛擬機GPU加速的效果。例如Ubuntu跑Fedora虛擬機,在同一個畫面操作的時候,Fedora虛擬機的視窗可以吃到virglrenderer的硬體加速,讓畫面更流暢。

那麼我們只要在有硬體加速的WSL跑virgl server,容器裡的程式就吃得到硬體加速了。

  1. 登入WSL Ubuntu 22.04
wsl
  1. 安裝virglrenderer
sudo apt install libvirglrenderer-dev libvirglrenderer1 virgl-server
  1. 啟動virglrednerer伺服器
virgl_test_server --use-egl-surfaceless &
  1. 進入Docker容器shell。例如我這裡是用 Distrobox安裝的Fedora
distrobox enter fedora
  1. 安裝virglrenderer、Firefox
sudo dnf install virglrenderer firefox
  1. 使用GALLIUM_DRIVER=virpie firefox啟動Firefox

  2. 並在about:config強制啟用WebGL,即可看見硬體加速成效。

不過GALIIUM_DRIVER=virpipe glxinfo無法讀取顯卡裝置。

參考資料

相關文章

讓WSL Docker的OpenGL程式可以使用Windows GPU硬體加速
Linux系統 虛擬機與容器技術 Nvidia Windows Subsystem for Linux Docker
ReDroid,在Windows電腦架設Android雲手機的方法
Linux系統 虛擬機與容器技術 ReDroid Docker Android Windows Subsystem for Linux Scrcpy
如何在Windows 11安裝WSL2子系統 (Ubuntu)
Linux系統 虛擬機與容器技術 Windows Subsystem for Linux Docker Ubuntu

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。