WSL2无痛将OpenGL升级成4.4以上版本(D3D12方法)
显然易证_BQ
2024年10月11日 14:59
收录于文集
共2篇

问题描述

RuntimeError: OpenGL 4.4 or later is required

先说结论:在 Win11 WSL2 上,使用 D3D12,我们即可升级到 OpenGL 4.5

github精选回答(可供尝试)

基本上搜集了全网的资料,关于这个问题,一部分人可以通过apt更新解决,更多一部认为是gpu驱动和mesa版本的共同问题。我遇到的是后者。

先给出个人的电脑环境配置:Nvidia 4060ti , NVIDIA-SMI 551.61 , wsl2 , Ubuntu 22.04

🔗:https://github.com/microsoft/WSL/issues/9753

第一条:(手动安装mesa 22.3.6版本)

这个安装流程有点繁琐,这里给出安装mesa的全套版本安装地址:

🔗:https://archive.mesa3d.org/

🔗mesa 22.3.6:https://archive.mesa3d.org/mesa-22.3.6.tar.xz

第二条:(使用微软d3d12的方式强制将OpenGL升级至4.5版本)

还有一张截图:

这里简单介绍一下d3d12(博主不是做图形学的)

🔗:https://devblogs.microsoft.com/directx/directx-heart-linux/

完整可行的解决方案

在wsl终端输入glxinfo -B,查看当前的Mesa版本为23.2.1比OpenGL4.4所需的Mesa22.3.6版本更高(应该不是Mesa版本不够的问题)

所以采用回答二的方案。

首先,要对d3d12进行安装。

可以参考如下安装教程:

🔗:https://devblogs.microsoft.com/commandline/d3d12-gpu-video-acceleration-in-the-windows-subsystem-for-linux-now-available/

首先如下组件是已经安装的:

  • 适用于Linux的Windows子系统(版本1.1.0或者更新版本)

  • 安装类似于Ubuntu 22.04.1 LTS的发行版

  • 在WSL中启用systemd

  • 安装高于或指定版本的GPU驱动程序

关于包管理器存储库,我们采用选项二:

首先,在具有apt的发行版中,可以使用以下命令检查存储库中最新可用版本。

sudo apt-get update

apt list mesa-va-drivers -a

在 Ubuntu 22.04 及更新版本中,您可以添加这个第三方存储库,以便使用以下命令从mesa/main构建的前沿/不稳定的每日 mesa 包。

sudo add-apt-repository ppa:oibaf/graphics-drivers

sudo apt-get update && sudo apt-get upgrade

然后,在WSLg中设置视频加速。

  1. 确保安装了最新的更新 sudo apt-get update && sudo apt-get upgrade

  2. 安装vainfo(和libva依赖项) sudo apt-get install vainfo

  3. *安装 mesa 库*(没有安装成功也不影响后续操作) sudo apt-get mesa-va-drivers

  4. 配置 libva 环境。您可能需要将其添加到~/.bashrc文件中,因为每个新的 WSL 控制台会话都需要它 export LIBVA_DRIVER_NAME=d3d12

  5. 列举当前硬件的 libva 功能 vainfo --display drm --device /dev/dri/card0

如果上述可以显示如下结果,则说明安装成功。

vainfo 实用程序将指示 已安装的libva 和 mesa版本 ,并列出硬件支持的入口点和配置文件的子集。

运行 LIBGL_ALWAYS_SOFTWARE=true glxinfo -B ,查看当前的OpenGL版本,下图解决:

题外

我看到有这种解决方案:

把报错位置中的dr.RasterizeGLContext() 修改为dr.RasterizeCudaContext()

但不建议。一方面,因为dr.RasterizeCudaContext()也会报错(sad),另一方面,因为 修改为 cuda 渲染效果是不如 OpenGL 硬件加速光栅化渲染效果的。