Krijg WSL2 Docker GPU passthrough niet aan de praat

Pagina: 1
Acties:

Vraag


  • OrganicIron
  • Registratie: Juni 2007
  • Laatst online: 20:53
Mijn vraag
Ik heb een Windows 2025 server met docker geïnstalleerd en wil daarin een aantal containers draaien waarin ik de GPU (Embedded Intel UHD Graphics 730 van de CPU) kan gebruiken voor het transcoden van video's (o.a. Plex & Immich). Ik ben er al een tijdje zoet mee en dacht eerst dat het aan de Immich configuratie in de container lag, maar het probleem zit hem al aan de 'host' kant in WSL. Na een standaard installatie van WSL komt /dev/dri niet beschikbaar, hier heb ik inmiddels een fix voor gevonden maar alsnog geeft vainfo errors.

Relevante software en hardware die ik gebruik
Hardware:
#CategorieProduct
1ProcessorsIntel Core i3-13100 Boxed
1MoederbordenASUS PRIME B760M-K D4
Software: Windows 2025 server standard edition (met GUI)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
wsl --version
WSL version: 2.6.1.0
Kernel version: 6.6.87.2-1
WSLg version: 1.0.66
MSRDC version: 1.2.6353
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26100.1-240331-1435.ge-release
Windows version: 10.0.26100.6584

wsl -l -v
  NAME              STATE           VERSION
* Ubuntu            Running         2
  docker-desktop    Running         2


Compose file: PUID/PGID = 1000 (draait voor de time being weer onder admin account)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
plex:
        container_name: plex
        image: lscr.io/linuxserver/plex:latest
        environment:
            - HOSTNAME=DockerPlex
            - PLEX_CLAIM=${PLEX_CLAIM}
            - VERSION=docker
            - PUID=${PUID}
            - PGID=${PGID}
            - TZ=${TZ}
        network_mode: bridge
        #network_mode: host
        ports:
            - 32469:32469/tcp
            - 32400:32400/tcp
            - 8324:8324/udp
            - 1900:1900/udp
            - 32410:32410/udp
            - 32412:32412/udp
            - 32413:32413/udp
            - 32414:32414/udp
        devices:
            - /dev/dri:/dev/dri
            - /dev/dxg:/dev/dxg
            - /dev/dri/card0:/dev/dri/card0
            - /dev/dri/renderD128:/dev/dri/renderD128
        volumes:
            - ${ROOT}/Transcode:/transcode
            - ${ROOT}:/media
            - ${CONFIG}/Configs/Plex:/config
            - /usr/lib/wsl:/usr/lib/wsl
        privileged: true            
        restart: unless-stopped


vgem lijkt na modprobe wel correct geinitialiseerd.
code:
1
2
3
4
5
6
7
8
9
10
11
 modinfo vgem
filename:       /lib/modules/6.6.87.2-microsoft-standard-WSL2/kernel/drivers/gpu/drm/vgem/vgem.ko
license:        GPL and additional rights
description:    Virtual GEM provider
author:         Intel Corporation
author:         Red Hat, Inc.
depends:        drm_shmem_helper
retpoline:      Y
intree:         Y
name:           vgem
vermagic:       6.6.87.2-microsoft-standard-WSL2 SMP preempt mod_unload modversions


Error waar ik nu ben gestopt is info uit wsl bash:
code:
1
2
3
4
5
6
7
8
vainfo --display drm
libva info: VA-API version 1.20.0
libva info: User environment variable requested driver 'd3d12'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/d3d12_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva error: /usr/lib/x86_64-linux-gnu/dri/d3d12_drv_video.so init failed
libva info: va_openDriver() returns 2
vaInitialize failed with error code 2 (resource allocation failed),exit


Wat ik al gevonden of geprobeerd heb
Er is blijkbaar iets aangepast in de standaard WSL distro en in de huidige versies werkt het allemaal niet meer standaard. Na een wsl --install is /dev/dri niet beschikbaar, wat is op te lossen door 'sudo modprobe vgem' te draaien. Daarna zijn is /dev/dri incl submappen beschikbaar en werkt bovenstaande compose file. Echter is de GPU niet daadwerkelijk beschikbaar en werkt transcoden dus ook niet. vainfo geeft bovenstaande foutmelding.

Ik heb veel Github posts doorgenomen, een kleine greep:
VA-API does not work in Ubuntu 24.04
WSL2 with /dev/dri passthrough to Docker container not working
No /dev/dri available on latest Kernel
Corrections to WSL2-Linux-Kernel /README.md
Containerizing GUI applications with WSLg

Het lijkt erop dat voor de meeste melders de modprobe vgem afdoende is, maar ook na het uitvoeren van onderstaande aanvullende stappen krijg ik alleen errors van vainfo en geen lijst met geladen modules.
code:
1
2
3
4
5
6
7
RUN apt update && apt install -y \
    vainfo \
    mesa-va-drivers

ENV LIBVA_DRIVER_NAME=d3d12
ENV LD_LIBRARY_PATH=/usr/lib/wsl/lib
CMD vainfo --display drm --device /dev/dri/card0


Wat zie ik over het hoofd? 8)7

(En de ironie van het verhaal, ik heb eerder steeds vragen gehad waarom in godesnaam een windows server een geen Linux distro. Ik: Ik ben niet zo handig met Linux en heb geen zin om opgesloten te zitten in mijn eigen server... resultaat: Ik zit nu al 2 dagen in WSL en Linux containers te klooien om de boel aan de praat te krijgen. Kan straks direct door naar het installeren van een Linux servertje :+ )

[ Voor 4% gewijzigd door OrganicIron op 19-10-2025 17:17 ]

Alle reacties


  • OrganicIron
  • Registratie: Juni 2007
  • Laatst online: 20:53
Deze net nog gevonden: D3D12 not used unless GALLIUM_DRIVER

Na het uitvoeren van de instructies toont WSL voor het eerst iets dat op mijn iGPU lijkt :)
Helaas werkt het niet vanuit een container en vainfo geeft nog steeds 0 op het rekest.

code:
1
2
3
4
5
administrator@Win2025:/mnt/c/Users/Administrator$ glxinfo -B | grep "OpenGL renderer"
OpenGL renderer string: llvmpipe (LLVM 20.1.2, 256 bits)
administrator@Win2025:/mnt/c/Users/Administrator$ GALLIUM_DRIVER=d3d12 glxinfo -B | grep "OpenGL renderer"
OpenGL renderer string: D3D12 (Intel(R) UHD Graphics 730)
administrator@Win2025:/mnt/c/Users/Administrator$