On 9/2/24 07:01, Wang, Fei W wrote:
On Sun, 2024-09-01 at 10:53 +0200, Terje J. Hanssen wrote:
I have not succeeded yet to configure ffmpeg QSV access to an enabled
iGPU onboard  an Intel Core i7-6700K (Skylake). This is a legacy,
rebuilt workstation with additional, discrete Nvidia GeForce GTX 960
GPU
on a MSI-Z170-A Pro mobo.

Any suggestions how to solve this?
You can use vainfo to find the Intel gpu device correctly:
"vainfo --display drm --device /dev/dri/renderD12X"

Then specify device in ffmpeg cmdline with "-qsv_device
/dev/dri/renderD12X"

BTW, for legacy platforms, suggest to use libvpl with Media SDK for the
runtime implementation:
https://github.com/intel/libvpl
https://github.com/Intel-Media-SDK/MediaSDK

Thanks
Fei

@Fei, thanks for your suggestion that hopefully will probe me in the right direction. Right now, I will be absent from my Skylake workstation a week or two, before I can test more directly on it. But I did preserve some more output I will add and refer to below.

In the meantime I also can do a bit indirectly tests on my available Kaby Lake XPS-13 with UHD 620 iGPU and a similar system installation:

    vainfo --display drm --device /dev/dri/renderD12X
    Trying display: drm
    Failed to open the given device!

As this don't find any device on Kaby Lake, I expect I rather have to put in a number "8" instead of "X" as found on Kaby Lake(?)

    ls /dev/dri
    by-path  card1  renderD128

When I try

   vainfo --display drm --device /dev/dri/renderD12*

or

   vainfo --display drm --device /dev/dri/renderD128

This simingly output just the same as "vainfo" alone on KabyLake.

And I have the latter preserved also from Skylake as follows:

   vainfo
   Trying display: wayland
   libva info: VA-API version 1.22.0
   libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
   libva info: Found init function __vaDriverInit_1_21
   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.1.5 ()
   vainfo: Supported profile and entrypoints
          VAProfileNone                   : VAEntrypointVideoProc
          VAProfileNone                   : VAEntrypointStats
          VAProfileMPEG2Simple            : VAEntrypointVLD
          VAProfileMPEG2Simple            : VAEntrypointEncSlice
          VAProfileMPEG2Main              : VAEntrypointVLD
          VAProfileMPEG2Main              : VAEntrypointEncSlice
          VAProfileH264Main               : VAEntrypointVLD
          VAProfileH264Main               : VAEntrypointEncSlice
          VAProfileH264Main               : VAEntrypointFEI
          VAProfileH264Main               : VAEntrypointEncSliceLP
          VAProfileH264High               : VAEntrypointVLD
          VAProfileH264High               : VAEntrypointEncSlice
          VAProfileH264High               : VAEntrypointFEI
          VAProfileH264High               : VAEntrypointEncSliceLP
          VAProfileVC1Simple              : VAEntrypointVLD
          VAProfileVC1Main                : VAEntrypointVLD
          VAProfileVC1Advanced            : VAEntrypointVLD
          VAProfileJPEGBaseline           : VAEntrypointVLD
          VAProfileJPEGBaseline           : VAEntrypointEncPicture
          VAProfileH264ConstrainedBaseline: VAEntrypointVLD
          VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
          VAProfileH264ConstrainedBaseline: VAEntrypointFEI
          VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
          VAProfileVP8Version0_3          : VAEntrypointVLD
          VAProfileVP8Version0_3          : VAEntrypointEncSlice
          VAProfileHEVCMain               : VAEntrypointVLD
          VAProfileHEVCMain               : VAEntrypointEncSlice
          VAProfileHEVCMain               : VAEntrypointFEI

---------------

In addition also also preserved output on Skylake from two other tools, "drmdevice" and "drm_info" as follows.

   drmdevice
   --- Checking the number of DRM device available ---
   --- Devices reported 2 ---
   --- Retrieving devices information (PCI device revision is ignored) ---
   device[0]
   +-> available_nodes 0x05
   +-> nodes
   |   +-> nodes[0] /dev/dri/card1
   |   +-> nodes[2] /dev/dri/renderD128
   +-> bustype 0000
   |   +-> pci
   |       +-> domain 0000
   |       +-> bus    01
   |       +-> dev    00
   |       +-> func   0
   +-> deviceinfo
        +-> pci
            +-> vendor_id     10de
            +-> device_id     1401
            +-> subvendor_id  1462
            +-> subdevice_id  3201
            +-> revision_id   IGNORED

   --- Opening device node /dev/dri/card1 ---
   --- Retrieving device info, for node /dev/dri/card1 ---
   device[0]
   +-> available_nodes 0x05
   +-> nodes
   |   +-> nodes[0] /dev/dri/card1
   |   +-> nodes[2] /dev/dri/renderD128
   +-> bustype 0000
   |   +-> pci
   |       +-> domain 0000
   |       +-> bus    01
   |       +-> dev    00
   |       +-> func   0
   +-> deviceinfo
        +-> pci
            +-> vendor_id     10de
            +-> device_id     1401
            +-> subvendor_id  1462
            +-> subdevice_id  3201
            +-> revision_id   a1

   --- Opening device node /dev/dri/renderD128 ---
   --- Retrieving device info, for node /dev/dri/renderD128 ---
   device[0]
   +-> available_nodes 0x05
   +-> nodes
   |   +-> nodes[0] /dev/dri/card1
   |   +-> nodes[2] /dev/dri/renderD128
   +-> bustype 0000
   |   +-> pci
   |       +-> domain 0000
   |       +-> bus    01
   |       +-> dev    00
   |       +-> func   0
   +-> deviceinfo
        +-> pci
            +-> vendor_id     10de
            +-> device_id     1401
            +-> subvendor_id  1462
            +-> subdevice_id  3201
            +-> revision_id   a1

   device[1]
   +-> available_nodes 0x05
   +-> nodes
   |   +-> nodes[0] /dev/dri/card2
   |   +-> nodes[2] /dev/dri/renderD129
   +-> bustype 0000
   |   +-> pci
   |       +-> domain 0000
   |       +-> bus    00
   |       +-> dev    02
   |       +-> func   0
   +-> deviceinfo
        +-> pci
            +-> vendor_id     8086
            +-> device_id     1912
            +-> subvendor_id  1462
            +-> subdevice_id  7971
            +-> revision_id   IGNORED

   --- Opening device node /dev/dri/card2 ---
   --- Retrieving device info, for node /dev/dri/card2 ---
   device[1]
   +-> available_nodes 0x05
   +-> nodes
   |   +-> nodes[0] /dev/dri/card2
   |   +-> nodes[2] /dev/dri/renderD129
   +-> bustype 0000
   |   +-> pci
   |       +-> domain 0000
   |       +-> bus    00
   |       +-> dev    02
   |       +-> func   0
   +-> deviceinfo
        +-> pci
            +-> vendor_id     8086
            +-> device_id     1912
            +-> subvendor_id  1462
            +-> subdevice_id  7971
            +-> revision_id   06

   --- Opening device node /dev/dri/renderD129 ---
   --- Retrieving device info, for node /dev/dri/renderD129 ---
   device[1]
   +-> available_nodes 0x05
   +-> nodes
   |   +-> nodes[0] /dev/dri/card2
   |   +-> nodes[2] /dev/dri/renderD129
   +-> bustype 0000
   |   +-> pci
   |       +-> domain 0000
   |       +-> bus    00
   |       +-> dev    02
   |       +-> func   0
   +-> deviceinfo
        +-> pci
            +-> vendor_id     8086
            +-> device_id     1912
            +-> subvendor_id  1462
            +-> subdevice_id  7971
            +-> revision_id   06

   =====================================

   drm_info | grep Driver
   ├───Driver: nvidia-drm (NVIDIA DRM driver) version 0.0.0 (20160202)
   ├───Driver: i915 (Intel Graphics) version 1.6.0 (20230929)



If  /dev/dri/card2 and /dev/dri/renderD129 refer to the Skylake HD 530 iGPU
(and /dev/dri/card1 and /dev/dri/renderD128 refer to  the Nvidia GPU),
I cannot understand why the initial, second ffmpeg command in section 2) below did report  errors?

Possibly syntax error or something else?

My tested ffmpeg code lines and system information below.

1) Tested first this simple ffmpeg decode bencmark code line from
https://trac.ffmpeg.org/wiki/Hardware/QuickSync#Decode-only
This works fine on single GPU Caby Lake/UHD 620 and on Alder Lake/Arc
A750, but on Skylake with dual iGPU HD 530 and a Nvidia GeForce GTX
960
card, these errors are reported:

     ffmpeg -hide_banner -hwaccel qsv -hwaccel_output_format qsv -i
     h264_8bit_yuv420p.mp4 -f null -
     ....
     [AVHWDeviceContext @ 0x55bed1a7c500] Error creating a MFX
session: -9.
     Device creation failed: -1313558101.
     [vist#0:0/h264 @ 0x55bed1a656c0] [dec:h264_qsv @ 0x55bed1a64300]
No
     device available for decoder: device type qsv needed for codec
h264_qsv.
     [vist#0:0/h264 @ 0x55bed1a656c0] [dec:h264_qsv @ 0x55bed1a64300]
     Hardware device setup failed for decoder: Unknown error occurred
     [vost#0:0/wrapped_avframe @ 0x55bed1a63740] Error initializing a
     simple filtergraph
     Error opening output file -.
     Error opening output files: Unknown error occurred
     bench: maxrss=59076KiB



2) Additional tests where I experimented to apply suggestions from
https://trac.ffmpeg.org/wiki/Hardware/QuickSync#Transcode

       -qsv_device is an qsv customized option can be used to specify
a
     hardware device and avoid the default device initialization
failure
     when multiple devices usable (eg: an Intel integrated GPU and an
     AMD/Nvidia discrete graphics card).


     ffmpeg -hide_banner -hwaccel qsv -qsv_device /dev/dri/renderD128
-i
     h264_8bit_yuv420p.mp4 -f null -
     DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
     DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
     [AVHWDeviceContext @ 0x56330da80dc0] libva:
     /usr/lib64/dri/iHD_drv_video.so init failed
     [AVHWDeviceContext @ 0x56330da80dc0] Failed to initialise VAAPI
     connection: 18 (invalid parameter).
     Device creation failed: -5.
     Failed to set value '/dev/dri/renderD128' for option
'qsv_device':
     Input/output error
     Error parsing global options: Input/output error


     ffmpeg -hide_banner -hwaccel qsv -qsv_device /dev/dri/renderD129
-i
     h264_8bit_yuv420p.mp4 -f null -
     [AVHWDeviceContext @ 0x55deafcbcec0] Error creating a MFX
session: -9.
     Device creation failed: -1313558101.
     Failed to set value '/dev/dri/renderD129' for option
'qsv_device':
     Unknown error occurred
     Error parsing global options: Unknown error occurred


     ffmpeg -hide_banner -init_hw_device qsv=hw -filter_hw_device hw
     -hwaccel_output_format qsv -hwaccel qsv -qsv_device
     /dev/dri/renderD128 -i h264_8bit_yuv420p.mp4 -f null -
     [AVHWDeviceContext @ 0x563f568e7e00] Error creating a MFX
session: -9.
     Device creation failed: -1313558101.
     Failed to set value 'qsv=hw' for option 'init_hw_device': Unknown
     error occurred
     Error parsing global options: Unknown error occurred



_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to