Open sikhness opened 1 month ago
If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'. Otherwise please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.
Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!
Note: You can give me feedback by thumbs upping or thumbs downing this comment.
@sikhness latest WSL releases support kernel modules, however vgem
is not automatically loaded. Run sudo modprobe vgem
to load the Virtual GEM provider and you'll notice [drm] Initialized vgem 1.0.0 20120112 for vgem on minor 0
in the dmesg
output.
elsaco@toto:~$ LIBVA_DRIVER_NAME=d3d12 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 info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 24.0.9-0ubuntu0.1 for D3D12 (NVIDIA RTX A4000)
vainfo: Supported profile and entrypoints
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
Host info:
elsaco@toto:~$ hostnamectl
Static hostname: toto
Icon name: computer-container
Chassis: container
Machine ID: 494d2cccd1fa4b159c1887257a896535
Boot ID: bf92a5c45b214cbc8515c8811cf1abc6
Virtualization: wsl
Operating System: Ubuntu 24.04 LTS
Kernel: Linux 6.6.36.3-microsoft-standard-WSL2
Architecture: x86-64
Hi @elsaco, thanks for your comment! I think you meant to reply with your comment in my other issue however, which is specific around the VGEM module. My point there was just that VGEM might want to be turned on automatically for WSL2 without having to manually load it everytime for VA-API use cases.
For this issue however, I'm referring to the fact that in Ubuntu 24.04 with VGEM already loaded, the default mesa drivers (24.0.9), don't seem to work with WSL2 and D3D12 and throw those weird errors as mentioned in the ticket above. If I manually downgrade the mesa drivers to 23.2.1 (the default one from Ubuntu 22.04), it all starts working again.
So there seems to be a bug either in the mesa drivers or something within WSL2 that needs to be fixed for the latest drivers to work. Basically Ubuntu 24.04 will not work with WSL2 VA-API by default otherwise it seems.
Hi @sikhness, I was able to repro this issue on the latest mesa/main source, the problem is that PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE
was removed as supported by VAAPI on d3d12 which produced gstreamer to fail negotiating the pipeline caps when asking for support for that profile.
This mesa pull request fixes that and now the gstreamer command line works again. Please let me know if you still see the issue after applying the patch.
I have try the new version mesa24.2 in ubuntu22.04;
Now I can use st-launch-1.0 -v videotestsrc num-buffers=250 ! video/x-raw,width=1920,height=1200 ! vaapipostproc ! vaapih264enc ! filesink location=~/wsl_test.h264 ;
But Notice : use the ppa below
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
some people use oibaf ppa to use the newest version of mesa , but actualy newest version is mesa24.3 , this version don't accept the fixed patch ; And kisak-mesa support mesa24.2 , update on 2024 08 14 , it accept the patch ;
sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update
I try the new version becaues some application need opengl4.3 4.4 4.5 . But ubuntu22.04 's initial mesa version support opengl4.3 ...
Windows Version
Microsoft Windows [Version 10.0.20348.2582] (Windows Server 2022)
WSL Version
2.2.4.0
Are you using WSL 1 or WSL 2?
Kernel Version
6.6.36.3-microsoft-standard-WSL2
Distro Version
Ubuntu 24.04
Other Software
No response
Repro Steps
/dev/dri
to show up in Ubuntu 24.04 (when using the new 6.6 Kernel)sudo apt install vainfo mesa-va-drivers ffmpeg gstreamer1.0-plugins-bad gstreamer1.0-tools gstreamer1.0-vaapi
export LIBVA_DRIVER_NAME=d3d12
gst-launch-1.0 -v videotestsrc num-buffers=250 ! video/x-raw,width=1920,height=1200 ! vaapipostproc ! vaapih264enc ! filesink location=~/wsl_test.h264
Expected Behavior
You should see an increasing progress indicator at the bottom of a sample video file being generated using the GPU through VA-API.
Actual Behavior
What actually happens is the EXACT same issue as what is reported here.
Workaround
In order for me to workaround this issue, I took inspiration from the other issue that posted the same error.
I realized that Ubuntu 24.04 by default has Mesa at
24.0.9
as shown by the output ofvainfo --display drm
:I then proceeded to add all of Ubuntu Jammy (22.04) older repositories into my Ubuntu 24.04:
Then I downgraded
mesa-va-driver
to version23.2.1
which is the default one available for Ubuntu 22.04 usingsudo apt install mesa-va-drivers=23.2.1-1ubuntu3.1~22.04.2
, as shown in the new output ofvainfo --display drm
:After this change, the same example I initially ran started to work again! It seems like there is a problem with the way WSL2 interacts with the new Mesa version that is default in Ubuntu 24.04.
Diagnostic Logs
No response