steam-for-linux icon indicating copy to clipboard operation
steam-for-linux copied to clipboard

No Hardware-Encoding with Nvidia RTX 2060S

Open h-2 opened this issue 5 years ago • 3 comments

Your system information

  • Steam client version (build number or date): Apr 04, 2020
  • Distribution (e.g. Ubuntu): Devuan Unstable (Debian without SystemD)
  • Opted into Steam client beta?: Tried both.
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

Video encoding happens in software instead of hardware as can be seen by slight delay when playing and the log file:

"CaptureDescriptionID"		"Desktop OpenGL NV12 + libx264 main (4 threads)"

It is activated in the Advanced Host Options, i tried with NVFBC turned on and off (no difference).

This is the list of installed Nvidia packages:

ii  glx-alternative-nvidia                        1.1.0                              amd64        allows the selection of NVIDIA as GLX provider
ii  libegl-nvidia0:amd64                          440.64-2                           amd64        NVIDIA binary EGL library
ii  libegl-nvidia0:i386                           440.64-2                           i386         NVIDIA binary EGL library
ii  libgl1-nvidia-glvnd-glx:amd64                 440.64-2                           amd64        NVIDIA binary OpenGL/GLX library (GLVND variant)
ii  libgl1-nvidia-glvnd-glx:i386                  440.64-2                           i386         NVIDIA binary OpenGL/GLX library (GLVND variant)
ii  libgles-nvidia1:amd64                         440.64-2                           amd64        NVIDIA binary OpenGL|ES 1.x library
ii  libgles-nvidia1:i386                          440.64-2                           i386         NVIDIA binary OpenGL|ES 1.x library
ii  libgles-nvidia2:amd64                         440.64-2                           amd64        NVIDIA binary OpenGL|ES 2.x library
ii  libgles-nvidia2:i386                          440.64-2                           i386         NVIDIA binary OpenGL|ES 2.x library
ii  libglx-nvidia0:amd64                          440.64-2                           amd64        NVIDIA binary GLX library
ii  libglx-nvidia0:i386                           440.64-2                           i386         NVIDIA binary GLX library
ii  libnvidia-cbl:amd64                           440.64-2                           amd64        NVIDIA binary Vulkan ray tracing (cbl) library
ii  libnvidia-cfg1:amd64                          440.64-2                           amd64        NVIDIA binary OpenGL/GLX configuration library
ii  libnvidia-eglcore:amd64                       440.64-2                           amd64        NVIDIA binary EGL core libraries
ii  libnvidia-eglcore:i386                        440.64-2                           i386         NVIDIA binary EGL core libraries
ii  libnvidia-encode1:amd64                       440.64-2                           amd64        NVENC Video Encoding runtime library
ii  libnvidia-fatbinaryloader:amd64               440.64-2                           amd64        NVIDIA FAT binary loader
ii  libnvidia-fatbinaryloader:i386                440.64-2                           i386         NVIDIA FAT binary loader
ii  libnvidia-glcore:amd64                        440.64-2                           amd64        NVIDIA binary OpenGL/GLX core libraries
ii  libnvidia-glcore:i386                         440.64-2                           i386         NVIDIA binary OpenGL/GLX core libraries
ii  libnvidia-glvkspirv:amd64                     440.64-2                           amd64        NVIDIA binary Vulkan Spir-V compiler library
ii  libnvidia-glvkspirv:i386                      440.64-2                           i386         NVIDIA binary Vulkan Spir-V compiler library
ii  libnvidia-ml1:amd64                           440.64-2                           amd64        NVIDIA Management Library (NVML) runtime library
ii  libnvidia-ptxjitcompiler1:amd64               440.64-2                           amd64        NVIDIA PTX JIT Compiler
ii  libnvidia-ptxjitcompiler1:i386                440.64-2                           i386         NVIDIA PTX JIT Compiler
ii  libnvidia-rtcore:amd64                        440.64-2                           amd64        NVIDIA binary Vulkan ray tracing (rtcore) library
rc  libxvmcnvidia1:amd64                          304.125-1                          amd64        NVIDIA binary XvMC library
ii  nvidia-alternative                            440.64-2                           amd64        allows the selection of NVIDIA as GLX provider
ii  nvidia-driver                                 440.64-2                           amd64        NVIDIA metapackage
ii  nvidia-driver-bin                             440.64-2                           amd64        NVIDIA driver support binaries
ii  nvidia-driver-libs:amd64                      440.64-2                           amd64        NVIDIA metapackage (OpenGL/GLX/EGL/GLES libraries)
ii  nvidia-driver-libs:i386                       440.64-2                           i386         NVIDIA metapackage (OpenGL/GLX/EGL/GLES libraries)
ii  nvidia-driver-libs-i386:i386                  440.64-2                           i386         NVIDIA metapackage (OpenGL/GLX/EGL/GLES 32-bit libraries)
ii  nvidia-egl-common                             440.64-1                           amd64        NVIDIA binary EGL driver - common files
ii  nvidia-egl-icd:amd64                          440.64-2                           amd64        NVIDIA EGL installable client driver (ICD)
ii  nvidia-egl-icd:i386                           440.64-2                           i386         NVIDIA EGL installable client driver (ICD)
ii  nvidia-installer-cleanup                      20151021+11                        amd64        cleanup after driver installation with the nvidia-installer
rc  nvidia-kernel-3.16.0-4-amd64                  340.96+1+1+3.16.7-ckt20-1          amd64        NVIDIA binary kernel module for Linux 3.16.0-4-amd64
rc  nvidia-kernel-3.2.0-4-amd64                   304.131+1+1+3.2.73-2               amd64        NVIDIA binary kernel module for Linux 3.2.0-4-amd64
ii  nvidia-kernel-common                          20151021+11                        amd64        NVIDIA binary kernel module support files
ii  nvidia-kernel-dkms                            440.64-1                           amd64        NVIDIA binary kernel module DKMS source
ii  nvidia-kernel-support                         440.64-2                           amd64        NVIDIA binary kernel module support files
rc  nvidia-legacy-390xx-alternative               390.87-1                           amd64        allows the selection of NVIDIA as GLX provider (390xx legacy version)
ii  nvidia-legacy-check                           440.64-1                           amd64        check for NVIDIA GPUs requiring a legacy driver
ii  nvidia-modprobe                               440.44-1                           amd64        utility to load NVIDIA kernel modules and create device nodes
ii  nvidia-persistenced                           440.44-1                           amd64        daemon to maintain persistent software state in the NVIDIA driver
ii  nvidia-settings                               440.64-1                           amd64        tool for configuring the NVIDIA graphics driver
ii  nvidia-smi                                    440.64-2                           amd64        NVIDIA System Management Interface
ii  nvidia-support                                20151021+11                        amd64        NVIDIA binary graphics driver support files
ii  nvidia-vdpau-driver:amd64                     440.64-2                           amd64        Video Decode and Presentation API for Unix - NVIDIA driver
ii  nvidia-vulkan-common                          440.64-1                           amd64        NVIDIA Vulkan driver - common files
ii  nvidia-vulkan-icd:amd64                       440.64-2                           amd64        NVIDIA Vulkan installable client driver (ICD)
ii  nvidia-vulkan-icd:i386                        440.64-2                           i386         NVIDIA Vulkan installable client driver (ICD)
ii  xserver-xorg-video-nvidia                     440.64-2                           amd64        NVIDIA binary Xorg driver

This is the output of vdpauinfo:

display: :0.0   screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library  440.64  Fri Feb 21 00:41:34 UTC 2020

Video surface:

name   width height types
-------------------------------------------
420     8192  8192  NV12 YV12 
422     8192  8192  UYVY YUYV 
444     8192  8192  NV24 YV24 

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                           0 65536  4096  4096
MPEG2_SIMPLE                    3 65536  4096  4096
MPEG2_MAIN                      3 65536  4096  4096
H264_BASELINE                  51 65536  4096  4096
H264_MAIN                      51 65536  4096  4096
H264_HIGH                      51 65536  4096  4096
VC1_SIMPLE                      1  8190  2048  2048
VC1_MAIN                        2  8190  2048  2048
VC1_ADVANCED                    4  8190  2048  2048
MPEG4_PART2_SP                  3  8192  2048  2048
MPEG4_PART2_ASP                 5  8192  2048  2048
DIVX4_QMOBILE                   0  8192  2048  2048
DIVX4_MOBILE                    0  8192  2048  2048
DIVX4_HOME_THEATER              0  8192  2048  2048
DIVX4_HD_1080P                  0  8192  2048  2048
DIVX5_QMOBILE                   0  8192  2048  2048
DIVX5_MOBILE                    0  8192  2048  2048
DIVX5_HOME_THEATER              0  8192  2048  2048
DIVX5_HD_1080P                  0  8192  2048  2048
H264_CONSTRAINED_BASELINE      51 65536  4096  4096
H264_EXTENDED                  51 65536  4096  4096
H264_PROGRESSIVE_HIGH          51 65536  4096  4096
H264_CONSTRAINED_HIGH          51 65536  4096  4096
H264_HIGH_444_PREDICTIVE       51 65536  4096  4096
VP9_PROFILE_0                   1 262144  8192  8192
VP9_PROFILE_1                  --- not supported ---
VP9_PROFILE_2                  --- not supported ---
VP9_PROFILE_3                  --- not supported ---
HEVC_MAIN                      153 262144  8192  8192
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  153 262144  8192  8192

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         32768 32768    y  Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8 
R10G10B10A2      32768 32768    y  Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8 

Bitmap surface:

name              width height
------------------------------
B8G8R8A8         32768 32768
R8G8B8A8         32768 32768
R10G10B10A2      32768 32768
B10G10R10A2      32768 32768
A8               32768 32768

Video mixer:

feature name                    sup
------------------------------------
DEINTERLACE_TEMPORAL             y
DEINTERLACE_TEMPORAL_SPATIAL     y
INVERSE_TELECINE                 y
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         y
HIGH QUALITY SCALING - L1        y
HIGH QUALITY SCALING - L2        -
HIGH QUALITY SCALING - L3        -
HIGH QUALITY SCALING - L4        -
HIGH QUALITY SCALING - L5        -
HIGH QUALITY SCALING - L6        -
HIGH QUALITY SCALING - L7        -
HIGH QUALITY SCALING - L8        -
HIGH QUALITY SCALING - L9        -

parameter name                  sup      min      max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH              y         1     8192
VIDEO_SURFACE_HEIGHT             y         1     8192
CHROMA_TYPE                      y  
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y  
CSC_MATRIX                       y  
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y  
LUMA_KEY_MAX_LUMA                y 

This is the output of vainfo:

libva info: VA-API version 1.6.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.6 (libva 2.6.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG4Simple            :	VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    :	VAEntrypointVLD
      <unknown profile>               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD

Thank you for your help!

h-2 avatar Apr 15 '20 19:04 h-2

I have found the problem and a workaround. Apparently steam is using the system's ffmpeg for video-encoding. But for hardware-acceleration only the h264_nvenc encoder is tried (not vdpau or va). NVENC has been removed from Debian, so the system's ffmpeg no longer supports this.

Workaround by me: install ffmpeg from http://www.deb-multimedia.org/ (this is still built with NVENC support).

Workaround by you: ship own ffmpeg. FIX by you: Simply use libva instead?

h-2 avatar Apr 15 '20 20:04 h-2

I am actually not sure whether FFMPEG is the important package, but it is necessary to add the debian multimedia repo and replace the system media libraries with versions from there.

h-2 avatar Apr 20 '20 17:04 h-2

Hello @h-2, are you still experiencing this issue on an up to date system?

kisak-valve avatar Sep 09 '22 20:09 kisak-valve

Closing pending feedback.

kisak-valve avatar Oct 14 '22 15:10 kisak-valve