Windows build number:
10.0.26220.8680
Your Distribution version:
26.04
Your WSL versions:
GPU acceleration is not available in WSL2 on an ARM64 host with a Qualcomm Adreno 680 GPU. Mesa consistently falls back to llvmpipe (software rendering) regardless of configuration. The WSL bridge libraries are correctly in place: /usr/lib/wsl/lib/ contains libd3d12.so, libd3d12core.so and libdxcore.so, and /dev/dxg is present and accessible (crw-rw-rw-). The Mesa d3d12 Gallium driver (d3d12_dri.so) is also installed. However, /dev/dri/renderD128 is never created by dxgkrnl, which prevents Mesa from initializing the D3D12 backend. Neither OpenGL (glxinfo), Vulkan (vulkaninfo) nor EGL (eglinfo) can access the physical GPU.
Steps to reproduce:
- Run WSL2 on a Windows ARM64 machine with Qualcomm Adreno 680 GPU
- Install mesa-utils and mesa-vulkan-drivers in the WSL2 distro
- Run: glxinfo | grep "OpenGL renderer"
→ llvmpipe (LLVM 21.1.8, 128 bits)
- Run: GALLIUM_DRIVER=d3d12 glxinfo | grep "OpenGL renderer"
→ glx: failed to create drisw screen
- Run: vulkaninfo 2>&1 | grep deviceName
→ llvmpipe (LLVM 21.1.8, 128 bits)
- Run: ls /dev/dri/
→ empty or directory does not exist
WSL logs:
No response
WSL dumps:
No response
Expected behavior:
/dev/dri/renderD128 should be created by dxgkrnl so that Mesa can initialize the D3D12 Gallium backend and route OpenGL/Vulkan/EGL through the Qualcomm Adreno 680 GPU, as already works on x86-64 with NVIDIA, AMD and Intel GPUs.
Actual behavior:
$ ls /usr/lib/wsl/lib/
libd3d12.so libd3d12core.so libdxcore.so
$ ls -la /dev/dxg
crw-rw-rw- 1 root root 10, 259 Jun 13 19:07 /dev/dxg
$ ls /dev/dri/
(empty — /dev/dri/renderD128 never created)
$ ldconfig -p | grep -E "dxcore|d3d12"
libd3d12core.so (libc6,AArch64) => /usr/lib/wsl/lib/libd3d12core.so
libd3d12.so (libc6,AArch64) => /usr/lib/wsl/lib/libd3d12.so
libdxcore.so (libc6,AArch64) => /usr/lib/wsl/lib/libdxcore.so
$ ls /usr/lib/aarch64-linux-gnu/dri/d3d12_dri.so
/usr/lib/aarch64-linux-gnu/dri/d3d12_dri.so ← driver present
$ GALLIUM_DRIVER=d3d12 eglinfo 2>&1 | grep warning
libEGL warning: failed to get driver name for fd -1
libEGL warning: MESA-LOADER: failed to retrieve device information
libEGL warning: egl: failed to create dri2 screen
$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: llvmpipe (LLVM 21.1.8, 128 bits)
Windows build number:
10.0.26220.8680
Your Distribution version:
26.04
Your WSL versions:
GPU acceleration is not available in WSL2 on an ARM64 host with a Qualcomm Adreno 680 GPU. Mesa consistently falls back to llvmpipe (software rendering) regardless of configuration. The WSL bridge libraries are correctly in place: /usr/lib/wsl/lib/ contains libd3d12.so, libd3d12core.so and libdxcore.so, and /dev/dxg is present and accessible (crw-rw-rw-). The Mesa d3d12 Gallium driver (d3d12_dri.so) is also installed. However, /dev/dri/renderD128 is never created by dxgkrnl, which prevents Mesa from initializing the D3D12 backend. Neither OpenGL (glxinfo), Vulkan (vulkaninfo) nor EGL (eglinfo) can access the physical GPU.
Steps to reproduce:
→ llvmpipe (LLVM 21.1.8, 128 bits)
→ glx: failed to create drisw screen
→ llvmpipe (LLVM 21.1.8, 128 bits)
→ empty or directory does not exist
WSL logs:
No response
WSL dumps:
No response
Expected behavior:
/dev/dri/renderD128 should be created by dxgkrnl so that Mesa can initialize the D3D12 Gallium backend and route OpenGL/Vulkan/EGL through the Qualcomm Adreno 680 GPU, as already works on x86-64 with NVIDIA, AMD and Intel GPUs.
Actual behavior:
$ ls /usr/lib/wsl/lib/
libd3d12.so libd3d12core.so libdxcore.so
$ ls -la /dev/dxg
crw-rw-rw- 1 root root 10, 259 Jun 13 19:07 /dev/dxg
$ ls /dev/dri/
(empty — /dev/dri/renderD128 never created)
$ ldconfig -p | grep -E "dxcore|d3d12"
libd3d12core.so (libc6,AArch64) => /usr/lib/wsl/lib/libd3d12core.so
libd3d12.so (libc6,AArch64) => /usr/lib/wsl/lib/libd3d12.so
libdxcore.so (libc6,AArch64) => /usr/lib/wsl/lib/libdxcore.so
$ ls /usr/lib/aarch64-linux-gnu/dri/d3d12_dri.so
/usr/lib/aarch64-linux-gnu/dri/d3d12_dri.so ← driver present
$ GALLIUM_DRIVER=d3d12 eglinfo 2>&1 | grep warning
libEGL warning: failed to get driver name for fd -1
libEGL warning: MESA-LOADER: failed to retrieve device information
libEGL warning: egl: failed to create dri2 screen
$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: llvmpipe (LLVM 21.1.8, 128 bits)