Skip to content

[ARM64 / Qualcomm Adreno 680] GPU acceleration unavailable in WSL2 — /dev/dri/renderD128 not created by dxgkrnl, Mesa falls back to llvmpipe #1470

Description

@dorepi

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:

  1. Run WSL2 on a Windows ARM64 machine with Qualcomm Adreno 680 GPU
  2. Install mesa-utils and mesa-vulkan-drivers in the WSL2 distro
  3. Run: glxinfo | grep "OpenGL renderer"
    → llvmpipe (LLVM 21.1.8, 128 bits)
  4. Run: GALLIUM_DRIVER=d3d12 glxinfo | grep "OpenGL renderer"
    → glx: failed to create drisw screen
  5. Run: vulkaninfo 2>&1 | grep deviceName
    → llvmpipe (LLVM 21.1.8, 128 bits)
  6. 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions