註解:本文僅是一個概念驗證,WSL已經有自己更好的硬體加速做法( WSLg環境變數)
WSL支援硬體加速,登入WSL後啟動Linux圖形程式,可以用Windows的顯示卡渲染。
但是若在WSL裡面跑Docker容器是吃不到顯示卡加速的。OpenGL圖形效能低落。
這個時候可以採用virglrenderer的方法。
virglrenderer在真正的Linux系統上可以做到給QEMU/KVM虛擬機GPU加速的效果。例如Ubuntu跑Fedora虛擬機,在同一個畫面操作的時候,Fedora虛擬機的視窗可以吃到virglrenderer的硬體加速,讓畫面更流暢。
那麼我們只要在有硬體加速的WSL跑virgl server,容器裡的程式就吃得到硬體加速了。
- 登入WSL Ubuntu 22.04
wsl
- 安裝virglrenderer
sudo apt install libvirglrenderer-dev libvirglrenderer1 virgl-server
- 啟動virglrednerer伺服器
virgl_test_server --use-egl-surfaceless &
- 進入Docker容器shell。例如我這裡是用 Distrobox安裝的Fedora
distrobox enter fedora
- 安裝virglrenderer、Firefox
sudo dnf install virglrenderer firefox
使用
GALLIUM_DRIVER=virpie firefox
啟動Firefox並在
about:config
強制啟用WebGL,即可看見硬體加速成效。
不過GALIIUM_DRIVER=virpipe glxinfo
無法讀取顯卡裝置。
參考資料