Code Monkey home page Code Monkey logo

Comments (2)

XinfengZhang avatar XinfengZhang commented on June 2, 2024

libva does not select the device by itself, it get the device from application or other components.
lets use drm as the example:
application call fd =open("/dev/dri/renderXXX",...) , then call vaGetDisplayDRM(fd), then call vaInitialize()
so, all is controlled in upper layer.

maybe you want a priority list in libva-utils?

from libva.

denji avatar denji commented on June 2, 2024

@XinfengZhang It seems to be causing the driver to crash https://github.com/intel/libva-utils/blob/2.19.0/common/va_display_drm.c#L49-L51

$ google-chrome-stable
libva error: vaGetDriverNames() failed with unknown libva error
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
libva error: /usr/lib/dri/iHD_drv_video.so init failed
$ vainfo
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
libva error: /usr/lib/dri/iHD_drv_video.so init failed
vaInitialize failed with error code 18 (invalid parameter),exit

$ env LIBVA_DRIVER_NAME=iHD vainfo
Trying display: wayland
Trying display: x11
libva error: vaGetDriverNames() failed with unknown libva error
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
libva error: /usr/lib/dri/iHD_drv_video.so init failed
vaInitialize failed with error code 18 (invalid parameter),exit

$ env LIBVA_DRIVER_NAME=nvidia vainfo
Trying display: wayland
Trying display: x11
libva error: vaGetDriverNames() failed with unknown libva error
vainfo: VA-API version: 1.20 (libva 2.19.0)
vainfo: Driver version: VA-API NVDEC driver [egl backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

$ env LIBVA_DRIVER_NAME=nvidia vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
vainfo: VA-API version: 1.20 (libva 2.19.0)
vainfo: Driver version: VA-API NVDEC driver [egl backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

$ env LIBVA_DRIVER_NAME=nvidia vainfo --display drm --device /dev/dri/renderD129
Trying display: drm
libva error: /usr/lib/dri/nvidia_drv_video.so init failed
vaInitialize failed with error code 1 (operation failed),exit

$ env LIBVA_DRIVER_NAME=iHD vainfo --display drm --device /dev/dri/renderD129
Trying display: drm
vainfo: VA-API version: 1.20 (libva 2.19.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.3.1 ()
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
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

$ env LIBVA_DRIVER_NAME=iHD vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
DRM_IOCTL_VERSION, unsupported drm device by media driver: nvid
libva error: /usr/lib/dri/iHD_drv_video.so init failed
vaInitialize failed with error code 18 (invalid parameter),exit

/dev/dri/renderD128 - NVIDIA RTX A6000 (/usr/lib/dri/nvidia_drv_video.so) https://github.com/elFarto/nvidia-vaapi-driver/tree/cd54d4029490d6703de5a9080f1475e40efc242a
/dev/dri/renderD129 - Intel HD Graphic (/usr/lib/dri/iHD_drv_video.so) https://github.com/intel/media-driver/releases/tag/intel-media-23.3.1

$ pacman -Q|grep -E 'libva|media-driver'
intel-media-driver 23.3.1-1
libva 2.20.0-1
libva-intel-driver 2.4.1-2
libva-nvidia-driver-git
libva-utils 2.19.0-1

# https://wiki.archlinux.org/title/intel_graphics#Enable_GuC_/_HuC_firmware_loading
$ grep -vE '^(#|\S*$)' /etc/modprobe.d/i915.conf 
options i915 enable_fbc=1 enable_guc=2 enable_fbc=2 disable_display=1

$ grep -vE '^(#|\S*$)' /etc/modprobe.d/nvidia.conf 
options nvidia NVreg_UsePageAttributeTable=1 NVreg_EnablePCIeGen3=1 NVreg_EnableGpuFirmware=1 NVreg_EnableResizableBar=1 NVreg_OpenRmEnableUnsupportedGpus=1

$ grep -vE '^(#|\s*$)' /etc/environment
VDPAU_DRIVER=nvidia
LIBVA_DRIVER_NAME=iHD

$ sudo dmesg|grep i915|grep -v hdcp
[   20.934354] i915 0000:00:02.0: enabling device (0000 -> 0003)
[   20.954990] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[   21.364296] i915 0000:00:02.0: [drm] [ENCODER:94:DDI A/PHY A] failed to retrieve link info, disabling eDP
[   21.373905] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/kbl_guc_70.1.1.bin version 70.1.1
[   21.373910] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/kbl_huc_4.0.0.bin version 4.0.0
[   21.397008] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[   21.397013] i915 0000:00:02.0: [drm] GT0: GUC: submission disabled
[   21.397014] i915 0000:00:02.0: [drm] GT0: GUC: SLPC disabled
[   21.399199] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 1
[   21.399719] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[   21.400447] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[   21.401021] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes

$ sudo cat /sys/kernel/debug/dri/1/gt0/uc/guc_info
GuC firmware: i915/kbl_guc_70.1.1.bin
        status: RUNNING
        version: found 70.1.1
        uCode: 206592 bytes
        RSA: 256 bytes
GuC status 0x8003f0ec:
        Bootrom status = 0x76
        uKernel status = 0xf0
        MIA Core status = 0x3
Scratch registers:
         0:     0xf0000000
         1:     0x1
         2:     0x1000
         3:     0x0
         4:     0x40
         5:     0x3ae
         6:     0x59120004
         7:     0x0
         8:     0x0
         9:     0x0
        10:     0x0
        11:     0x0
        12:     0x0
        13:     0x0
        14:     0x0
        15:     0x0

GuC logging stats:
        Relay full count: 0
        DEBUG:  flush count          0, overflow count          0
        CRASH:  flush count          0, overflow count          0
        CAPTURE:        flush count          0, overflow count          0

$ sudo cat /sys/kernel/debug/dri/1/gt0/uc/huc_info
HuC firmware: i915/kbl_huc_4.0.0.bin
        status: RUNNING
        version: found 4.0.0
        uCode: 225664 bytes
        RSA: 256 bytes
HuC status: 0x00006080


Is there a problem with the driver name output https://forums.gentoo.org/viewtopic-p-8801559.html#8801559

DRM_IOCTL_VERSION, unsupported drm device by media driver: amdg
Instead of amdg it should be amdgpu, instead of nvid it should be nvidia.

DRM_IOCTL_VERSION, unsupported drm device by media driver: amdg
DRM_IOCTL_VERSION, unsupported drm device by media driver: amdg
[AVHWDeviceContext @ 0x564440780b80] libva: /usr/lib64/va/drivers/iHD_drv_video.so init failed
[AVHWDeviceContext @ 0x564440780b80] Failed to initialise VAAPI connection: 18 (invalid parameter).

from libva.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.