<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <br>
    <br>
    <div class="moz-cite-prefix">Den 31.08.2024 00:58, skrev Terje J.
      Hanssen:<br>
    </div>
    <blockquote type="cite"
      cite="mid:90edfb4b-7102-44ee-a0b8-55bd5ab0e6c4@gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      I am stuck how to configure 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 idea and code modification below?<br>
      <br>
      Details as follows:<br>
      <br>
      <font face="monospace">inxi -CGMSz<br>
        System:<br>
          Kernel: 6.10.5-1-default arch: x86_64 bits: 64<br>
          Desktop: GNOME v: 46.3.1 Distro: openSUSE Tumbleweed-Slowroll
        20240803<br>
        Machine:<br>
          Type: Desktop Mobo: MSI model: Z170-A PRO (MS-7971) v: 1.0<br>
            serial: <superuser required> UEFI: American Megatrends
        v: 1.K0<br>
            date: 07/10/2018<br>
        CPU:<br>
          Info: quad core model: Intel Core i7-6700K bits: 64 type: MT
        MCP cache:<br>
            L2: 1024 KiB<br>
          Speed (MHz): avg: 800 min/max: 800/4200 cores: 1: 800 2: 800
        3: 800 4: 800<br>
            5: 800 6: 800 7: 800 8: 800<br>
        Graphics:<br>
          Device-1: Intel HD Graphics 530 driver: i915 v: kernel<br>
          Device-2: NVIDIA GM206 [GeForce GTX 960] driver: nvidia v:
        550.100<br>
          Display: wayland server: X.org v: 1.21.1.12 with: Xwayland v:
        24.1.1<br>
            compositor: gnome-shell driver: X: loaded: modesetting
        unloaded: fbdev,vesa<br>
            gpu: nvidia,nvidia-nvswitch resolution: 1920x1080~60Hz<br>
          API: OpenGL v: 4.6.0 vendor: nvidia v: 550.100 renderer:
        NVIDIA GeForce<br>
            GTX 960/PCIe/SSE2<br>
          API: Vulkan v: 1.3.290 drivers: N/A surfaces: xcb,xlib,wayland<br>
          API: EGL Message: EGL data requires eglinfo. Check
        --recommends.<br>
        <br>
        <br>
        lspci -k | grep -EA3 'VGA|3D|Display'<br>
        00:02.0 Display controller: Intel Corporation HD Graphics 530
        (rev 06)<br>
            DeviceName:  Onboard IGD<br>
            Subsystem: Micro-Star International Co., Ltd. [MSI] Device
        7971<br>
            Kernel driver in use: i915<br>
        --<br>
        01:00.0 VGA compatible controller: NVIDIA Corporation GM206
        [GeForce GTX 960] (rev a1)<br>
            Subsystem: Micro-Star International Co., Ltd. [MSI] Device
        3201<br>
            Kernel driver in use: nvidia<br>
            Kernel modules: nouveau, nvidia_drm, nvidia<br>
        <br>
=====================================================================<br>
        <br>
      </font><font face="Courier New, Courier, monospace">Trying to test
        QSV via FFmpeg benchmark similar like this Vulkan code<br>
        ffmpeg -init_hw_device "vulkan=vk:0" -hwaccel vulkan
        -hwaccel_output_format vulkan -i INPUT -f null - -benchmark<br>
        <a class="moz-txt-link-freetext"
          href="https://trac.ffmpeg.org/wiki/HWAccelIntro#Vulkan"
          moz-do-not-send="true">https://trac.ffmpeg.org/wiki/HWAccelIntro#Vulkan</a><br>
        <br>
        cause an output error which reports: "device type qsv needed".<br>
        Intel Skylake with HD 530 graphics gen 9, should be capable to
        decode and encode MPEG-2/H.264/H.265 according to<br>
        <a class="moz-txt-link-freetext"
href="https://trac.ffmpeg.org/wiki/Hardware/QuickSync#HardwareSupport"
          moz-do-not-send="true">https://trac.ffmpeg.org/wiki/Hardware/QuickSync#HardwareSupport</a><br>
      </font><font face="Courier New, Courier, monospace"><br>
        ffmpeg -hide_banner -hwaccel qsv -hwaccel_output_format qsv -i
        h264_8bit_yuv420p.mp4 -f null - -benchmark<br>
      </font><font face="monospace">[AVHWDeviceContext @ 0x557526873500]
        Error creating a MFX session: -9.<br>
        Device creation failed: -1313558101.<br>
        [vist#0:0/h264 @ 0x55752685c6c0] [dec:h264_qsv @ 0x55752685b300]
        No device available for decoder: device type qsv needed for
        codec h264_qsv.<br>
        [vist#0:0/h264 @ 0x55752685c6c0] [dec:h264_qsv @ 0x55752685b300]
        Hardware device setup failed for decoder: Unknown error occurred<br>
        [vost#0:0/wrapped_avframe @ 0x55752685a740] Error initializing a
        simple filtergraph<br>
        Error opening output file -.<br>
        Error opening output files: Unknown error occurred<br>
        bench: maxrss=67452KiB<br>
        <br>
        <br>
      </font>I have tried to define and add a qsv device according to
      the last section here<br>
      <a class="moz-txt-link-freetext"
        href="https://trac.ffmpeg.org/wiki/Hardware/QuickSync#Transcode"
        moz-do-not-send="true">https://trac.ffmpeg.org/wiki/Hardware/QuickSync#Transcode</a><br>
      <p> <code>-qsv_device</code> 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).
        One example on Linux (more details please see <a
          class="ext-link" href="https://trac.ffmpeg.org/ticket/7649"
          moz-do-not-send="true"><span class="icon">​</span>https://trac.ffmpeg.org/ticket/7649</a>)
        <br>
      </p>
      <p><font face="Courier New, Courier, monospace">ffmpeg -hwaccel
          qsv -qsv_device /dev/dri/renderD128 -c:v h264_qsv -i input.mp4
          -c:v h264_qsv output.mp4</font></p>
      and also had a look at this answer<br>
      <a class="moz-txt-link-freetext"
href="https://stackoverflow.com/questions/44747381/i-cant-use-hw-encoder-of-qsv-by-ffmpeg#47145215"
        moz-do-not-send="true">https://stackoverflow.com/questions/44747381/i-cant-use-hw-encoder-of-qsv-by-ffmpeg#47145215</a>
      <br>
    </blockquote>
    <br>
    ..... snip<br>
    <br>
    <br>
    In the meantime I have also queried this QSV issue on the
    ffmpeg-user mailing list, where I got some hints that helped me to
    solve it.<br>
    So to not leave this as an open issue here, I repost my reply to
    that list:<br>
    <br>
    Yes, now I have verified that "libmfx" runtime was not installed by
    default on the Skylake workstation  (possibly because I enabled its
    iGPU in BIOS afterwards).<br>
    My ffmpeg had "libvpl" enabled, and "libmfx-gen1_2" was installed by
    default. When<br>
    <br>
    When I add-installed "libmfx1", QSV via FFmpeg worked as it should:<br>
    <br>
    <font face="Courier New, Courier, monospace">ffmpeg -hide_banner
      -hwaccel qsv -hwaccel_output_format qsv -i h264_8bit_yuv420p.mp4
      -f null -</font><br>
    <br>
    1) On  Skylake i7-6700K / HD-530 iGPU:<br>
    <font face="Courier New, Courier, monospace">frame= 1780 fps=882
      q=-0.0 Lsize=N/A time=00:01:11.20 bitrate=N/A speed=35.3x </font><br>
    <br>
    2) On KabyLake i7-8550U / UHD-620 iGPU:<br>
    <font face="Courier New, Courier, monospace">frame= 1780 fps=795
      q=-0.0 Lsize=N/A time=00:01:11.20 bitrate=N/A speed=31.8x   </font><br>
    <br>
    3) On AlderLake i7-12700KF + DG2 A750 GPU:<br>
    <font face="Courier New, Courier, monospace">frame= 1780 fps=833
      q=-0.0 Lsize=N/A time=00:01:11.20 bitrate=N/A speed=33.3x   </font><br>
    <br>
    What surprise me here, is that the current most powerful workstation
    3), is not faster here than the legacy 1) and 2)<br>
    <br>
    <br>
    References:<br>
    <a class="moz-txt-link-freetext" href="https://github.com/intel/libvpl?tab=readme-ov-file#architecture">https://github.com/intel/libvpl?tab=readme-ov-file#architecture</a><br>
    <a class="moz-txt-link-freetext" href="https://github.com/Intel-Media-SDK/MediaSDK?tab=readme-ov-file#id10">https://github.com/Intel-Media-SDK/MediaSDK?tab=readme-ov-file#id10</a><br>
    <a class="moz-txt-link-freetext" href="https://wiki.archlinux.org/title/FFmpeg#Intel_QuickSync_(QSV)">https://wiki.archlinux.org/title/FFmpeg#Intel_QuickSync_(QSV)</a><br>
    <br>
    And as orientation for possibly other QSV interested in reading more
    of this thread at ffmpeg-user, here is the url:<br>
    <a class="moz-txt-link-freetext" href="https://ffmpeg.org/pipermail/ffmpeg-user/2024-September/058677.html">https://ffmpeg.org/pipermail/ffmpeg-user/2024-September/058677.html</a><br>
    <br>
  </body>
</html>