Trying to get hardware acceleration to work with intel arc a380 - iif2fo - 2024-08-27
Hello, I'm trying to get hardware acceleration to work with my media server. But, I'm getting "Playback failed due to a fatal player error." when I try playing any videos. (Playback works if I disable hardware acceleration.)
Here's my server hardware.
Code: $ sudo lshw -c display
*-display
description: VGA compatible controller
product: DG2 [Arc A380]
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:03:00.0
version: 05
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:148 memory:91000000-91ffffff memory:80000000-8fffffff memory:92000000-921fffff
*-display
description: VGA compatible controller
product: ASPEED Graphics Family
vendor: ASPEED Technology, Inc.
physical id: 0
bus info: pci@0000:09:00.0
logical name: /dev/fb0
version: 41
width: 32 bits
clock: 33MHz
capabilities: pm msi vga_controller cap_list rom fb
configuration: depth=32 driver=ast latency=0 resolution=1024,768
resources: irq:17 memory:93000000-93ffffff memory:94000000-9401ffff ioport:3000(size=128) memory:c0000-dffff
$ sudo lshw -C processor
*-cpu
description: CPU
product: Intel(R) Core(TM) i3-9300 CPU @ 3.70GHz
vendor: Intel Corp.
physical id: 29
bus info: cpu@0
version: 6.158.11
serial: To Be Filled By O.E.M.
slot: CPU
size: 4276MHz
capacity: 4300MHz
width: 64 bits
clock: 100MHz
capabilities: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx pdpe1gb rdtscp x86-64 constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cp
l vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_
fault epb pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt i
ntel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilities cpufreq
configuration: cores=4 enabledcores=4 microcode=244 threads=4
(I have this Supermicro motherboard https://www.supermicro.com/en/products/motherboard/X11SCL-IF)
I'm on plain Debian, no Docker.
Code: $ uname -a
Linux debian 6.9.7+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.9.7-1~bpo12+1 (2024-07-03) x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
I followed the steps here: https://jellyfin.org/docs/general/administration/hardware-acceleration/intel#linux-setups
Code: # Installed jellyfin-ffmpeg6
$ apt policy jellyfin-ffmpeg6
jellyfin-ffmpeg6:
Installed: 6.0.1-8-bookworm
Candidate: 6.0.1-8-bookworm
Version table:
*** 6.0.1-8-bookworm 500
500 https://nyc1.mirror.jellyfin.org/debian bookworm/main amd64 Packages
100 /var/lib/dpkg/status
# Installed intel-opencl-icd
$ apt policy intel-opencl-icd
intel-opencl-icd:
Installed: 24.26.30049.6
Candidate: 24.26.30049.6
Version table:
*** 24.26.30049.6 100
100 /var/lib/dpkg/status
22.43.24595.41-1 500
500 http://deb.debian.org/debian bookworm/main amd64 Packages
To install intel-opencl-icd, I went here https://github.com/intel/compute-runtime/releases and followed the instructions to download the debs with wget and install the debs manually.
At least one renderD device exists.
Code: $ ls -l /dev/dri
total 0
drwxr-xr-x 2 root root 100 Aug 26 16:22 by-path
crw-rw---- 1 root video 226, 0 Aug 26 16:22 card0
crw-rw---- 1 root video 226, 1 Aug 26 16:22 card1
crw-rw---- 1 root render 226, 128 Aug 26 16:22 renderD128
Then I tried doing step 7: "Check the supported QSV / VA-API codecs"
Code: $ sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.2.5 (12561f6)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
I see iHD, so I'm guessing "iHD driver indicates support for the QSV and VA-API interfaces." applies to me? Not sure...
But, then I feel like this is where things really go off the rails. It says "Failed to get number of OpenCL platforms".
Code: $ sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl@va
ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable
-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromap
rint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enabl
e-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --
enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --ena
ble-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
[AVHWDeviceContext @ 0x555ef97db480] libva: VA-API version 1.22.0
[AVHWDeviceContext @ 0x555ef97db480] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x555ef97db480] libva: Found init function __vaDriverInit_1_22
[AVHWDeviceContext @ 0x555ef97db480] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x555ef97db480] Initialised VAAPI connection: version 1.22
[AVHWDeviceContext @ 0x555ef97db480] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 24.2.5 (12561f6).
[AVHWDeviceContext @ 0x555ef97db480] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x555ef980a080] Failed to get number of OpenCL platforms: -1001.
Device creation failed: -19.
Failed to set value 'opencl@va' for option 'init_hw_device': No such device
Error parsing global options: No such device
And then when I try clinfo, I get this.
Code: $ sudo clinfo
Number of platforms 0
ICD loader properties
ICD loader Name OpenCL ICD Loader
ICD loader Vendor OCL Icd free software
ICD loader Version 2.3.1
ICD loader Profile OpenCL 3.0
I also found this thread to try to fix the opencl no platforms error: https://forum.jellyfin.org/t-solved-archlinux-intel-arc-transcoding
I added this:
Code: (Service)
Environment="NEOReadDebugKeys=1"
Environment="OverrideGpuAddressSpace=48"
via sudo systemctl edit jellyfin.service, but it didn't seem to do anything.
Nevertheless, I decided to try enabling hardware acceleration in Jellyfin.
I went to dashboard/playback/transcoding and enabled:
Hardware acceleration: Video Acceleration API (VAAPI)
VA-API Device: /dev/dri/renderD128
Enable hardware decoding for: H264, VC1, HEVC 10bit, VP910bit
Hardware encoding options: Enable hardware encoding
Encoding format options: Allow encoding in HEVC format, Allow encoding in AV1 format, Enable VPP Tone mapping, Enable Tone mapping
And then when I try to play anything, I get "Playback failed due to a fatal player error.".
I also attached some logs. The logs start from when I press play and go until I get the fatal player error message.
Maybe the most interesting part of the logs is this.
Code: Aug 26 17:08:14 jellyfin[970]: [17:08:14] [INF] /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -noautorotate -i file:"/data/jellyfin/global/shows/silicon-valley_2014/season-01/silicon-valley_s01e01.mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 av1_vaapi -rc_mode VBR -b:v 5446614 -maxrate 5446614 -bufsize 10893228 -force_key_frames:0 "expr:gte(t,n_forced*3)" -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\,ih*a)\,min(1920\,1080*a))/2)*2:trunc(min(max(iw/a\,ih)\,min(1920/a\,1080))/2)*2,format=nv12,hwupload_vaapi" -codec:a:0 libfdk_aac -ac 2 -vbr:a 5 -af "volume=2" -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename "9ace91e7131ce94ddcfcffc9ec0969c2-1.mp4" -start_number 0 -hls_segment_filename "/var/cache/jellyfin/transcodes/9ace91e7131ce94ddcfcffc9ec0969c2%d.mp4" -hls_playlist_type vod -hls_list_size 0 -y "/var/cache/jellyfin/transcodes/9ace91e7131ce94ddcfcffc9ec0969c2.m3u8"
Aug 26 17:08:14 jellyfin[970]: [17:08:14] [ERR] FFmpeg exited with code 1
Aug 26 17:08:14 jellyfin[970]: [17:08:14] [ERR] Error processing request. URL GET /videos/216f7c3b-e3e1-8902-4e55-9896e7b234e8/hls1/main/-1.mp4.
Aug 26 17:08:14 jellyfin[970]: MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
RE: Trying to get hardware acceleration to work with intel arc a380 - TheDreadPirate - 2024-08-27
Do you have another GPU in the system? Even an iGPU? If it is an iGPU, you will have to disable it in the BIOS.
RE: Trying to get hardware acceleration to work with intel arc a380 - iif2fo - 2024-08-27
My Supermicro X11SCL-iF motherboard has a Intel C242 chipset and does come with onboard video. I actually truncated the original output from lshw. I have now updated the original post to correctly reflect that there were two entries for the lshw command.
After disabling the onboard video, this is the full output of lshw.
Code: $ sudo lshw -c display
*-display
description: VGA compatible controller
product: DG2 [Arc A380]
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:03:00.0
version: 05
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:148 memory:91000000-91ffffff memory:80000000-8fffffff memory:c0000-dffff
Now there is only 1 display entry in total.
I disabled the onboard video for my motherboard by following these instructions: https://www.supermicro.com/support/faqs/faq.cfm?faq=21023
Quote:(a) BIOS settings >> Advanced >> PCI settings >> changed VGA priorities to “Off Board”, save and then exit. (b) Change JPG1 Jumper from Pin1-2 {Enable} to Pin2-3 {Disable}.
(This also had the side effect of disabling the terminal video in the motherboard management console.)
After disabling the video onboard, I tried playing a file again. However, I'm still seeing the same error: "Playback failed due to a fatal player error"
I found this error in the logs during the playback attempt. (Same as before.)
Code: Aug 26 19:11:50 jellyfin[613]: [19:11:50] [INF] /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -noautorotate -i file:"/data/jellyfin/global/shows/silicon-valley_2014/season-01/silicon-valley_s01e01.mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 av1_vaapi -rc_mode VBR -b:v 5446614 -maxrate 5446614 -bufsize 10893228 -force_key_frames:0 "expr:gte(t,n_forced*3)" -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\,ih*a)\,min(1920\,1080*a))/2)*2:trunc(min(max(iw/a\,ih)\,min(1920/a\,1080))/2)*2,format=nv12,hwupload_vaapi" -codec:a:0 libfdk_aac -ac 2 -vbr:a 5 -af "volume=2" -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename "20af5c47b352e69bd2d97ac0caf343dc-1.mp4" -start_number 0 -hls_segment_filename "/var/cache/jellyfin/transcodes/20af5c47b352e69bd2d97ac0caf343dc%d.mp4" -hls_playlist_type vod -hls_list_size 0 -y "/var/cache/jellyfin/transcodes/20af5c47b352e69bd2d97ac0caf343dc.m3u8"
Aug 26 19:11:50 jellyfin[613]: [19:11:50] [ERR] FFmpeg exited with code 1
Aug 26 19:11:50 jellyfin[613]: [19:11:50] [ERR] Error processing request. URL GET /videos/216f7c3b-e3e1-8902-4e55-9896e7b234e8/hls1/main/-1.mp4.
RE: Trying to get hardware acceleration to work with intel arc a380 - TheDreadPirate - 2024-08-27
Can you share the ffmpeg logs in full via pastebin?
It will be in the same directory and the file name will start with FFmpeg.Transcode.
RE: Trying to get hardware acceleration to work with intel arc a380 - iif2fo - 2024-08-27
OK, I grabbed the log file from the /var/log/jellyfin directory. I made sure to first try playback and grabbed the latest log created from that failed attempt. The file is called FFmpeg.Transcode-2024-08-26_21-40-02_216f7c3be3e189024e559896e7b234e8_ab653dba.log.
Here's the pastebin link: https://pastebin.com/ejweC4nS
Here's the error just at the end of the logs.
Code: [libfdk_aac @ 0x56136e405180] Note, the VBR setting is unsupported and only works with some parameter combinations
[av1_vaapi @ 0x56136e407200] No usable encoding profile found.
[vost#0:0/av1_vaapi @ 0x56136e3c2100] Error initializing output stream: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
[libfdk_aac @ 0x56136e405180] 2 frames left in the queue on closing
Conversion failed!
I also attached a screenshot of what my transcoding page looks like.
Also, I guess my vainfo shouldn't say this, huh. Did I just buy the wrong GPU?
Code: vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
Here's the GPU I have: https://www.newegg.com/asrock-low-profile-a380-lp-6g-intel-arc-a380-6gb-gddr6/p/N82E16814930110R
Here's the CPU I have: https://www.intel.com/content/www/us/en/products/sku/134886/intel-core-i39300-processor-8m-cache-up-to-4-30-ghz/specifications.html
RE: Trying to get hardware acceleration to work with intel arc a380 - iif2fo - 2024-08-27
Oops, I forgot to install necessary packages.
The Debian wiki helped. https://wiki.debian.org/HardwareVideoAcceleration
I added this to my /etc/apt/sources.list file.
Code: deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
Then I installed these packages.
Code: $ sudo apt update
$ sudo apt install intel-media-va-driver
$ sudo apt install intel-media-va-driver-non-free
$ sudo apt install firmware-misc-nonfree
I also added i915.enable_guc=2 to my kernel parameters.
I updated /etc/default/grub to add:
Code: GRUB_CMDLINE_LINUX_DEFAULT="quiet i915.enable_guc=2"
Then I updated grub and rebooted.
Code: $ sudo update-grub
$ sudo reboot
Now my vainfo, looks better!
Code: $ sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.2.5 (12561f6)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointVLD
VAProfileHEVCMain12 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain422_12 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_10 : VAEntrypointVLD
VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_12 : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointEncSliceLP
VAProfileHEVCSccMain10 : VAEntrypointVLD
VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444 : VAEntrypointVLD
VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444_10 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP
AND my ffmpeg opencl command looks good.
Code: $ sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl@va
ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
[AVHWDeviceContext @ 0x5647c6f23480] libva: VA-API version 1.22.0
[AVHWDeviceContext @ 0x5647c6f23480] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x5647c6f23480] libva: Found init function __vaDriverInit_1_22
[AVHWDeviceContext @ 0x5647c6f23480] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x5647c6f23480] Initialised VAAPI connection: version 1.22
[AVHWDeviceContext @ 0x5647c6f23480] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 24.2.5 (12561f6).
[AVHWDeviceContext @ 0x5647c6f23480] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x5647c6f54fc0] 0.0: Intel(R) OpenCL Graphics / Intel(R) Arc(TM) A380 Graphics
[AVHWDeviceContext @ 0x5647c6f54fc0] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[AVHWDeviceContext @ 0x5647c6f54fc0] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[AVHWDeviceContext @ 0x5647c6f54fc0] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
Unfortunately, playback still fails... 😭
Here's the new pastebin: https://pastebin.com/ePdfHQ7G
Code: [av1_vaapi @ 0x5640619dcb00] Failed to create encode pipeline context: 2 (resource allocation failed).
[vost#0:0/av1_vaapi @ 0x5640619caf00] Error initializing output stream: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
RE: Trying to get hardware acceleration to work with intel arc a380 - nyanmisaka - 2024-08-27
https://wiki.debian.org/HardwareVideoAcceleration#Installation
This doc is wrong for 12th Gen+ Intel iGPUs and Arc dGPUs. Either keep enable_guc unset, or set them to enable_guc=3 .
See also https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-and-verify-lp-mode-on-linux
If the problem persists, please attach the output of sudo dmesg | grep i915 .
RE: Trying to get hardware acceleration to work with intel arc a380 - iif2fo - 2024-08-27
I tried playback with i915.enable_guc=3 and without it in the kernel parameters. Both ways gave me "Playback failed due to a fatal player error".
With i915.enable_guc=3
Code: $ sudo dmesg | grep i915
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.9.7+bpo-amd64 root=UUID=d32981a3-b49d-424c-aa78-ea43b2daa336 ro quiet i915.enable_guc=3
[ 0.017292] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.9.7+bpo-amd64 root=UUID=d32981a3-b49d-424c-aa78-ea43b2daa336 ro quiet i915.enable_guc=3
[ 2.896045] i915 0000:03:00.0: [drm] VT-d active for gfx access
[ 2.896222] i915 0000:03:00.0: vgaarb: deactivate vga console
[ 2.896230] i915 0000:03:00.0: [drm] Can't resize LMEM BAR - platform support is missing
[ 2.896240] i915 0000:03:00.0: [drm] Using a reduced BAR size of 256MiB. Consider enabling 'Resizable BAR' or similar, if available in the BIOS.
[ 2.912825] i915 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 2.916213] i915 0000:03:00.0: [drm] Finished loading DMC firmware i915/dg2_dmc_ver2_08.bin (v2.8)
[ 3.170277] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin (70.12.1) is recommended, but only i915/dg2_guc_70.bin (70.5.1) was found
[ 3.170282] i915 0000:03:00.0: [drm] GT0: Consider updating your linux-firmware pkg or downloading from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[ 3.170677] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[ 3.170761] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[ 3.170763] i915 0000:03:00.0: [drm] *ERROR* GT0: HuC firmware i915/dg2_huc_gsc.bin: fetch failed -ENOENT
[ 3.170769] i915 0000:03:00.0: [drm] GT0: HuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[ 3.174841] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 70.5.1
[ 3.188274] i915 0000:03:00.0: [drm] GT0: GUC: submission enabled
[ 3.188279] i915 0000:03:00.0: [drm] GT0: GUC: SLPC enabled
[ 3.188533] i915 0000:03:00.0: [drm] GT0: GUC: RC enabled
[ 3.225835] [drm] Initialized i915 1.6.0 20230929 for 0000:03:00.0 on minor 0
[ 3.272471] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[ 3.272588] snd_hda_intel 0000:04:00.0: bound 0000:03:00.0 (ops i915_audio_component_bind_ops [i915])
[ 3.288076] mei i915.mei-gscfi.768-46e0c1fb-a546-414f-9170-b7f46d57b4ad: Could not read FW version ret = -19
[ 3.288080] mei i915.mei-gscfi.768-46e0c1fb-a546-414f-9170-b7f46d57b4ad: FW version command failed -5
[ 3.296478] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
Without guc.
Code: $ sudo dmesg | grep i915
[ 2.609512] i915 0000:03:00.0: [drm] VT-d active for gfx access
[ 2.616628] i915 0000:03:00.0: vgaarb: deactivate vga console
[ 2.616927] i915 0000:03:00.0: [drm] Can't resize LMEM BAR - platform support is missing
[ 2.616939] i915 0000:03:00.0: [drm] Using a reduced BAR size of 256MiB. Consider enabling 'Resizable BAR' or similar, if available in the BIOS.
[ 2.632133] i915 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 2.635220] i915 0000:03:00.0: [drm] Finished loading DMC firmware i915/dg2_dmc_ver2_08.bin (v2.8)
[ 2.890739] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin (70.12.1) is recommended, but only i915/dg2_guc_70.bin (70.5.1) was found
[ 2.890744] i915 0000:03:00.0: [drm] GT0: Consider updating your linux-firmware pkg or downloading from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[ 2.891139] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[ 2.891223] i915 0000:03:00.0: firmware: failed to load i915/dg2_huc_gsc.bin (-2)
[ 2.891225] i915 0000:03:00.0: [drm] *ERROR* GT0: HuC firmware i915/dg2_huc_gsc.bin: fetch failed -ENOENT
[ 2.891232] i915 0000:03:00.0: [drm] GT0: HuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[ 2.895164] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 70.5.1
[ 2.907766] i915 0000:03:00.0: [drm] GT0: GUC: submission enabled
[ 2.907769] i915 0000:03:00.0: [drm] GT0: GUC: SLPC enabled
[ 2.908008] i915 0000:03:00.0: [drm] GT0: GUC: RC enabled
[ 2.945846] [drm] Initialized i915 1.6.0 20230929 for 0000:03:00.0 on minor 0
[ 2.968522] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[ 2.979634] mei_gsc i915.mei-gscfi.768: cl:host=01 me=33 fw disconnect request received
[ 2.979663] mei i915.mei-gscfi.768-e2c2afa2-3817-4d19-9d95-06b16b588a5d: Could not read FW version ret = -19
[ 2.979664] mei i915.mei-gscfi.768-e2c2afa2-3817-4d19-9d95-06b16b588a5d: FW version command failed -5
[ 2.982840] mei i915.mei-gscfi.768-46e0c1fb-a546-414f-9170-b7f46d57b4ad: Could not read FW version ret = -19
[ 2.982842] mei i915.mei-gscfi.768-46e0c1fb-a546-414f-9170-b7f46d57b4ad: FW version command failed -5
[ 2.992516] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[ 3.016511] snd_hda_intel 0000:04:00.0: bound 0000:03:00.0 (ops i915_audio_component_bind_ops [i915])
[ 3.040456] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
The transcode fails with:
Code: [av1_vaapi @ 0x55be95d2ec80] Failed to map output buffers: 24 (internal encoding error).
[av1_vaapi @ 0x55be95d2ec80] Output failed: -5.
[vost#0:0/av1_vaapi @ 0x55be95d3bec0] Error submitting video frame to the encoder
Pastebin: https://pastebin.com/a0Bc5y7M
I figure maybe it's easier to try to configure hardware acceleration without i915.enable_guc=3 since I don't really need Low-Power Encoding... yet.
RE: Trying to get hardware acceleration to work with intel arc a380 - nyanmisaka - 2024-08-27
Apparently the linux firmware (i915/dg2*.bin) on Debian bookworm is outdated or missing. Please follow this tutorial to get them.
https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-and-verify-lp-mode-on-linux
Arc GPU only support low-power encoding. So these firmware is a must have.
RE: Trying to get hardware acceleration to work with intel arc a380 - iif2fo - 2024-08-27
Huh, I just noticed I installed "firmware-misc-nonfree" previously. I have not
installed "firmware-linux-nonfree", as per the LE instructions.
https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-and-verify-lp-mode-on-linux
I tried that first.
Code: sudo apt install firmware-linux-nonfree
Then I added i915.enable_guc=3 back in my kernel parameters in /etc/default/grub.
Code: GRUB_CMDLINE_LINUX_DEFAULT="quiet i915.enable_guc=3"
and then sudo update-grub and rebooted.
Still got the message about the old GuC firmware.
I wasn't sure if firmware-misc-nonfree or firmware-linux-nonfree installed i915
firmware. I didn't want to overwrite the files when I did the git clone later.
This dpkg command gives me an empty result, so I think I'm ok on that front.
Code: $ dpkg -L firmware-misc-nonfree | grep "/usr/lib/firmware"
$ dpkg -L firmware-linux-nonfree | grep "/usr/lib/firmware"
Next, I downloaded the firmware.
Code: git clone --depth=1 git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
Since I already had a /usr/lib/firmware/i915 directory, I decided to back that
up first because I noticed the new firmware files are different from my
existing files.
Code: # backup current
sudo cp -r /usr/lib/firmware/i915/ ./i915-bak
# delete current
sudo rm -rf /usr/lib/firmware/i915/
# install new
sudo cp -r linux-firmware/i915/ /usr/lib/firmware/
Next I ran
Code: sudo update-initramfs -u
sudo update-grub
sudo reboot
Cool, output looks good.
Code: $ grep "i915" dmesg-07-47.txt
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.9.7+bpo-amd64 root=UUID=d32981a3-b49d-424c-aa78-ea43b2daa336 ro quiet i915.enable_guc=3
[ 0.017325] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.9.7+bpo-amd64 root=UUID=d32981a3-b49d-424c-aa78-ea43b2daa336 ro quiet i915.enable_guc=3
[ 2.610689] i915 0000:03:00.0: [drm] VT-d active for gfx access
[ 2.610855] i915 0000:03:00.0: vgaarb: deactivate vga console
[ 2.610863] i915 0000:03:00.0: [drm] Can't resize LMEM BAR - platform support is missing
[ 2.610874] i915 0000:03:00.0: [drm] Using a reduced BAR size of 256MiB. Consider enabling 'Resizable BAR' or similar, if available in the BIOS.
[ 2.625674] i915 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 2.628553] i915 0000:03:00.0: [drm] Finished loading DMC firmware i915/dg2_dmc_ver2_08.bin (v2.8)
[ 2.894668] i915 0000:03:00.0: [drm] GT0: GuC firmware i915/dg2_guc_70.bin version 70.29.2
[ 2.894672] i915 0000:03:00.0: [drm] GT0: HuC firmware i915/dg2_huc_gsc.bin version 7.10.16
[ 2.903743] i915 0000:03:00.0: [drm] GT0: GUC: submission enabled
[ 2.903757] i915 0000:03:00.0: [drm] GT0: GUC: SLPC enabled
[ 2.903963] i915 0000:03:00.0: [drm] GT0: GUC: RC enabled
[ 2.941522] [drm] Initialized i915 1.6.0 20230929 for 0000:03:00.0 on minor 0
[ 2.988526] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[ 2.988570] snd_hda_intel 0000:04:00.0: bound 0000:03:00.0 (ops i915_audio_component_bind_ops [i915])
[ 3.004904] mei i915.mei-gscfi.768-46e0c1fb-a546-414f-9170-b7f46d57b4ad: Could not read FW version ret = -19
[ 3.004907] mei i915.mei-gscfi.768-46e0c1fb-a546-414f-9170-b7f46d57b4ad: FW version command failed -5
[ 3.016486] i915 0000:03:00.0: [drm] Cannot find any crtc or sizes
[ 3.684665] i915 0000:03:00.0: [drm] GT0: HuC: authenticated for all workloads
[ 3.684671] mei_pxp i915.mei-gsc.768-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:03:00.0 (ops i915_pxp_tee_component_ops [i915])
I found the guc and huc info files!
Code: sudo ls /sys/kernel/debug/dri/0000:03:00.0/gt0/uc/guc_info
sudo ls /sys/kernel/debug/dri/0000:03:00.0/gt0/uc/huc_info
I went to the dashboard transcoding page, /dashboard/playback/transcoding.
And enabled these Hardware encoding options
Code: Enable hardware encoding
Enable Intel Low-Power H.264 hardware encoder
Enable Intel Low-Power HEVC hardware encoder
And now playback works! 🙌 Huzzah! Thanks, TheDreadPirate and nyanmisaka!
|