Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
21030 Discussions

Hardware acceleration on Intel Core Ultra CPUs

aniketor
Novice
516 Views

I'm trying to use the graphics processor for some video encoding and decoding, below is my Hardware configuration:

- CPU model name : Intel(R) Core(TM) Ultra 7 155H
- GPU: Intel Meteorlake (Gen12) @ /dev/dri/card0

Drivers and host OS configuration:
- OS: Debian GNU/Linux 12 (bookworm)
- Kernel: 6.7.12+bpo-amd64
- vainfo:

 

libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.17 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSliceLP
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSliceLP
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      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

 


I'm using Gstreamer to process  my video and below is a sample Gstreamer pipeline I tried.


gst-launch-1.0 filesrc location=big_buck_bunny.mov ! parsebin ! vah264dec ! autovideosink

 

I got following error:

 

root@DEB-83D2-YX09T60P:~# GST_DEBUG=va*:3 gst-launch-1.0 filesrc location=./big_buck_bunny_720p_h264.mov ! parsebin ! vah264dec ! autovideosink
0:00:00.023626124 1270055 0x555d1df52ad0 ERROR               vafilter gstvafilter.c:380:gst_va_filter_open:<vafilter0> vaCreateContext: resource allocation failed
0:00:00.023642460 1270055 0x555d1df52ad0 WARN                      va plugin.c:234:plugin_register_vpp: Failed open VA filter
Setting pipeline to PAUSED ...
MESA: warning: Driver does not support the 0x7d55 PCI ID.
MESA: warning: Driver does not support the 0x7d55 PCI ID.
Pipeline is PREROLLING ...
Got context from element 'autovideosink0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayGBM\)\ gldisplaygbm0";
Got context from element 'vah264dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\ iHD\ driver\ for\ Intel\(R\)\ Gen\ Graphics\ -\ 23.1.1\ \(\)", path=(string)/dev/dri/renderD128;
Redistribute latency...
Redistribute latency...
0:00:00.104860846 1270055 0x7f645c0024c0 ERROR              vadecoder gstvadecoder.c:331:gst_va_decoder_set_frame_size_with_surfaces:<vadecoder0> vaDestroyConfig: resource allocation failed
0:00:00.104875507 1270055 0x7f645c0024c0 ERROR              vah264dec gstvabasedec.c:1112:gst_va_base_dec_prepare_output_frame:<vah264dec0> Failed to negotiate with downstream
0:00:00.104880793 1270055 0x7f645c0024c0 WARN               vah264dec gstvah264dec.c:496:gst_va_h264_dec_new_picture:<vah264dec0> Failed to allocated output buffer, return not-negotiated
ERROR: from element /GstPipeline:pipeline0/GstParseBin:parsebin0/GstQTDemux:qtdemux0: Internal data stream error.
Additional debug info:
../gst/isomp4/qtdemux.c(6937): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstParseBin:parsebin0/GstQTDemux:qtdemux0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

 

 Is there any problem with my drivers? Any suggestions would be appreciated.

0 Kudos
1 Solution
aniketor
Novice
289 Views

Thanks for the suggestion. I resolved the issue by getting pre-built firmware binaries for Debian from http://http.us.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/ . Specifically the below ones.

- firmware-intel-graphics_20230625-3~exp3_all.deb
- firmware-misc-nonfree_20230625-3~exp3_all.deb
- firmware-ti-connectivity_20230625-3~exp3_all.deb

View solution in original post

0 Kudos
5 Replies
Stefan3D
Honored Contributor II
470 Views

MESA 23.1.1 is out-of-date

 

Stable version 24.1.3 has been released this week.

0 Kudos
aniketor
Novice
357 Views

Thanks for the reply! I tried upgrading Mesa but however could not build it from source as there were lot of dependencies not supporting it. Even on the latest Ubuntu 24.04 (Noble).
Furthermore one interesting log I found in system bus when I ran `dmesg` was failure message to load the GuC firmware. Could this be the reason of the issue?

0 Kudos
aniketor
Novice
356 Views

Based on the last message, I found that mtl_guc_70.bin, mtl_huc_gsc.bin and some other files were missing.  I downloaded latest firmware from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915 and placed it in as /lib/firmware/i915 and rebooted the device. However, now the firmware files were detected but another error was shown as below in the screenshot.

aniketor_0-1720602064938.png

 

0 Kudos
Stefan3D
Honored Contributor II
332 Views

Get pre-built binaries from

https://launchpad.net/~kisak/+archive/ubuntu/kisak-mesa

 

Besides native drivers this repo even supports DZN on WSL

0 Kudos
aniketor
Novice
290 Views

Thanks for the suggestion. I resolved the issue by getting pre-built firmware binaries for Debian from http://http.us.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/ . Specifically the below ones.

- firmware-intel-graphics_20230625-3~exp3_all.deb
- firmware-misc-nonfree_20230625-3~exp3_all.deb
- firmware-ti-connectivity_20230625-3~exp3_all.deb

0 Kudos
Reply