问题
WSL2的OpenGL使用llvmpipe进行渲染,未识别或使用GPU进行渲染。
环境
WSL2 + Ubuntu24.04 + win11
经历
问题最初发生在使用mujoco viewer渲染模型时,电脑CPU占用拉满,但并无弹窗出现。
最初认为问题出现在使用mujoco viewer渲染的模型过于复杂,使用简单的渲染后发现问题依旧。后逐步定位发现是OpenGL渲染的问题,发现OpenGL一直在使用CPU即llvmpipe进行渲染工作。于是进入下一步围绕OpenGL使用渲染设备进行问题排查。
使用
nvidia-smi
能够发现正常的3060显卡。但使用
ubuntu-drivers devices
则未发现3060显卡。使用
glxinfo | grep "OpenGL renderer"
得到OpenGL renderer string: llvmpipe (LLVM 20.1.2, 256 bits)。
进度陷入停滞,互联网排查找到一些近似问题,
1:https://github.com/microsoft/WSL/issues/11086
2:https://github.com/microsoft/WSL/issues/7507
3:https://forums.developer.nvidia.com/t/wsl2-ubuntu-uses-llvmpipe-instead-of-nvidia-gpu-3090/319022/4
其中比较有启发性的是文章4:https://bbs.archlinux.org/viewtopic.php?id=270378。
同时,为排查win方面的原因,排查了显卡驱动,并使用Ubuntu22.04进行相似操作,glxinfo | grep "OpenGL render"后得到OpenGL renderer string: D3D12 (Intel(R) UHD Graphics)。可以看到,虽然使用的是核显,但依旧成功启用了D3D12,结合文章4中的回答,顺利排除其他问题。于是问题聚焦到Ubuntu24.04及其软件包是否进行了什么诡异的升级导致的适配问题,导致我没有启动D3D12。于是尝试进行版本回退操作,当前mesa版本为25.0.7,经过apt list -a libgl1-mesa-dri查询得到
Listing... Done libgl1-mesa-dri/noble-updates,now 25.0.7-0ubuntu0.24.04.2 amd64 [installed] libgl1-mesa-dri/noble 24.0.5-1ubuntu1 amd64
于是尝试回退到版本24.0.5。使用指令
sudo apt install --allow-downgrades \
libgl1-mesa-dri=24.0.5-1ubuntu1 \
libglx-mesa0=24.0.5-1ubuntu1 \
mesa-vulkan-drivers=24.0.5-1ubuntu1 \
libglapi-mesa=24.0.5-1ubuntu1
回退版本后成功得到OpenGL renderer string: D3D12 (Intel(R) UHD Graphics),同时使用
sudo apt-mark hold libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers libglapi-mesa
进行版本锁定。最后结合文章5:https://zhuanlan.zhihu.com/p/683481102使用命令
export MESA_D3D12_DEFAULT_ADAPTER_NAME=NVIDIA
成功得到
OpenGL renderer string: D3D12 (NVIDIA GeForce RTX 3060 Laptop GPU)
依据当前推测,问题可能出现在mesa的25版本对D3D12的兼容性上😅😅😅
同时文章6:https://www.reddit.com/r/linuxquestions/comments/1kxr6ij/mesa_25_breakes_everything_it_freezes_crashes_etc/使我认为可能性提升了一些。
由于Ubuntu24.04默认安装的mesa版本就是25.0.7😫,所以还需多多多注意。

697

被折叠的 条评论
为什么被折叠?



