[Cin] How to access a second Intel iGPU in a workstation with additional discrete Nvidia GPU?

Terje J. Hanssen terjejhanssen at gmail.com
Sat Aug 31 00:58:45 CEST 2024


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?

Details as follows:

inxi -CGMSz
System:
   Kernel: 6.10.5-1-default arch: x86_64 bits: 64
   Desktop: GNOME v: 46.3.1 Distro: openSUSE Tumbleweed-Slowroll 20240803
Machine:
   Type: Desktop Mobo: MSI model: Z170-A PRO (MS-7971) v: 1.0
     serial: <superuser required> UEFI: American Megatrends v: 1.K0
     date: 07/10/2018
CPU:
   Info: quad core model: Intel Core i7-6700K bits: 64 type: MT MCP cache:
     L2: 1024 KiB
   Speed (MHz): avg: 800 min/max: 800/4200 cores: 1: 800 2: 800 3: 800 
4: 800
     5: 800 6: 800 7: 800 8: 800
Graphics:
   Device-1: Intel HD Graphics 530 driver: i915 v: kernel
   Device-2: NVIDIA GM206 [GeForce GTX 960] driver: nvidia v: 550.100
   Display: wayland server: X.org v: 1.21.1.12 with: Xwayland v: 24.1.1
     compositor: gnome-shell driver: X: loaded: modesetting unloaded: 
fbdev,vesa
     gpu: nvidia,nvidia-nvswitch resolution: 1920x1080~60Hz
   API: OpenGL v: 4.6.0 vendor: nvidia v: 550.100 renderer: NVIDIA GeForce
     GTX 960/PCIe/SSE2
   API: Vulkan v: 1.3.290 drivers: N/A surfaces: xcb,xlib,wayland
   API: EGL Message: EGL data requires eglinfo. Check --recommends.


lspci -k | grep -EA3 'VGA|3D|Display'
00:02.0 Display controller: Intel Corporation HD Graphics 530 (rev 06)
     DeviceName:  Onboard IGD
     Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7971
     Kernel driver in use: i915
--
01:00.0 VGA compatible controller: NVIDIA Corporation GM206 [GeForce GTX 
960] (rev a1)
     Subsystem: Micro-Star International Co., Ltd. [MSI] Device 3201
     Kernel driver in use: nvidia
     Kernel modules: nouveau, nvidia_drm, nvidia

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

Trying to test QSV via FFmpeg benchmark similar like this Vulkan code
ffmpeg -init_hw_device "vulkan=vk:0" -hwaccel vulkan 
-hwaccel_output_format vulkan -i INPUT -f null - -benchmark
https://trac.ffmpeg.org/wiki/HWAccelIntro#Vulkan

cause an output error which reports: "device type qsv needed".
Intel Skylake with HD 530 graphics gen 9, should be capable to decode 
and encode MPEG-2/H.264/H.265 according to
https://trac.ffmpeg.org/wiki/Hardware/QuickSync#HardwareSupport

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


I have tried to define and add a qsv device according to the last 
section here
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). One example on Linux (more details please see 
​https://trac.ffmpeg.org/ticket/7649 <https://trac.ffmpeg.org/ticket/7649>)

ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD128 -c:v h264_qsv -i 
input.mp4 -c:v h264_qsv output.mp4

and also had a look at this answer
https://stackoverflow.com/questions/44747381/i-cant-use-hw-encoder-of-qsv-by-ffmpeg#47145215 


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

Other HWA verification info:

vulkaninfo | egrep 'GPU|driver'
     VK_LUNARG_direct_driver_loading        : extension revision 1
         GPU id = 0 (Intel(R) HD Graphics 530 (SKL GT2))
         GPU id = 1 (NVIDIA GeForce GTX 960)
         GPU id = 0 (Intel(R) HD Graphics 530 (SKL GT2))
         GPU id = 1 (NVIDIA GeForce GTX 960)
GPU id : 0 (Intel(R) HD Graphics 530 (SKL GT2)):
GPU id : 1 (NVIDIA GeForce GTX 960):
GPU id : 0 (Intel(R) HD Graphics 530 (SKL GT2)):
GPU id : 1 (NVIDIA GeForce GTX 960):
GPU0:
     driverVersion     = 24.1.5 (100667397)
     deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
     driverUUID                        = 
cc628f46-3d02-8624-0c8a-e98e0420c4f6
     driverID                                             = 
DRIVER_ID_INTEL_OPEN_SOURCE_MESA
     driverName                                           = Intel 
open-source Mesa driver
     driverInfo                                           = Mesa 24.1.5
     VK_KHR_driver_properties                      : extension revision 1
GPU1:
     driverVersion     = 550.100.0.0 (2308505600)
     deviceType        = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
     driverUUID                        = 
63390c76-60ef-5529-a6ac-99167eb42a9c
     driverID                                             = 
DRIVER_ID_NVIDIA_PROPRIETARY
     driverName                                           = NVIDIA
     driverInfo                                           = 550.100
     VK_KHR_driver_properties                      : extension revision 1

-----------

Verifying VA-API

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

-------

Verifying VDPAU

vdpauinfo | egrep 'Driver|GPU'
Information string: NVIDIA VDPAU Driver Shared Library  550.100 Thu Jun 
27 18:11:42 UTC 2024

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











-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20240831/bbfd50de/attachment-0001.htm>


More information about the Cin mailing list