Vdpau issues after switch from gtx1070 to rx7900xtx

Hi. This weekend I switched from Nvidia GTX 1070 to AMD RX 7900 XTX without much knowledge about what I’m doing and miraculously everything seems to work fine (games, benchmarks, movies, youtube) but these 2 things:

  1. obs shows only software encoder in settings and there should be AV1 hardware encoder available (I think):

  2. I think it’s for the same reason vdpauinfo says no encoding is supported, not even HEVC:

    vdpauinfo output
    display: :0   screen: 0
    API version: 1
    Information string: G3DVL VDPAU Driver Shared Library version 1.0
    
    Video surface:
    
    name   width height types
    -------------------------------------------
    420    16384 16384  NV12 YV12 
    422    16384 16384  UYVY YUYV 
    444    16384 16384  Y8U8V8A8 V8U8Y8A8 
    420_16 16384 16384  
    422_16 16384 16384  
    444_16 16384 16384  
    
    Decoder capabilities:
    
    name                        level macbs width height
    ----------------------------------------------------
    MPEG1                          --- not supported ---
    MPEG2_SIMPLE                   --- not supported ---
    MPEG2_MAIN                     --- not supported ---
    H264_BASELINE                  --- not supported ---
    H264_MAIN                      --- not supported ---
    H264_HIGH                      --- not supported ---
    VC1_SIMPLE                     --- not supported ---
    VC1_MAIN                       --- not supported ---
    VC1_ADVANCED                   --- not supported ---
    MPEG4_PART2_SP                 --- not supported ---
    MPEG4_PART2_ASP                --- not supported ---
    DIVX4_QMOBILE                  --- not supported ---
    DIVX4_MOBILE                   --- not supported ---
    DIVX4_HOME_THEATER             --- not supported ---
    DIVX4_HD_1080P                 --- not supported ---
    DIVX5_QMOBILE                  --- not supported ---
    DIVX5_MOBILE                   --- not supported ---
    DIVX5_HOME_THEATER             --- not supported ---
    DIVX5_HD_1080P                 --- not supported ---
    H264_CONSTRAINED_BASELINE      --- not supported ---
    H264_EXTENDED                  --- not supported ---
    H264_PROGRESSIVE_HIGH          --- not supported ---
    H264_CONSTRAINED_HIGH          --- not supported ---
    H264_HIGH_444_PREDICTIVE       --- not supported ---
    VP9_PROFILE_0                  --- not supported ---
    VP9_PROFILE_1                  --- not supported ---
    VP9_PROFILE_2                  --- not supported ---
    VP9_PROFILE_3                  --- not supported ---
    HEVC_MAIN                      --- not supported ---
    HEVC_MAIN_10                   --- not supported ---
    HEVC_MAIN_STILL                --- not supported ---
    HEVC_MAIN_12                   --- not supported ---
    HEVC_MAIN_444                  --- not supported ---
    HEVC_MAIN_444_10               --- not supported ---
    HEVC_MAIN_444_12               --- not supported ---
    AV1_MAIN                       --- not supported ---
    AV1_HIGH                       --- not supported ---
    AV1_PROFESSIONAL               --- not supported ---
    
    Output surface:
    
    name              width height nat types
    ----------------------------------------------------
    B8G8R8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
    R8G8B8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
    R10G10B10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
    B10G10R10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 P010 P016 A8I8 I8A8 
    
    Bitmap surface:
    
    name              width height
    ------------------------------
    B8G8R8A8         16384 16384
    R8G8B8A8         16384 16384
    R10G10B10A2      16384 16384
    B10G10R10A2      16384 16384
    A8               16384 16384
    
    Video mixer:
    
    feature name                    sup
    ------------------------------------
    DEINTERLACE_TEMPORAL             y
    DEINTERLACE_TEMPORAL_SPATIAL     -
    INVERSE_TELECINE                 -
    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        48     4096
    VIDEO_SURFACE_HEIGHT             y        48     4096
    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
    
    vainfo output
    Trying display: wayland
    Trying display: x11
    vainfo: VA-API version: 1.20 (libva 2.19.0)
    vainfo: Driver version: Mesa Gallium driver 23.1.7-1 for AMD Radeon RX 7900 XTX (gfx1100, LLVM 16.0.6, DRM 3.49, 6.1.51-1-MANJARO)
    vainfo: Supported profile and entrypoints
          VAProfileJPEGBaseline           :	VAEntrypointVLD
          VAProfileVP9Profile0            :	VAEntrypointVLD
          VAProfileVP9Profile2            :	VAEntrypointVLD
          VAProfileAV1Profile0            :	VAEntrypointVLD
          VAProfileNone                   :	VAEntrypointVideoProc
    
    

I’m on X11. I installed the driver like so and mhwd -li output looks OK:

❯ sudo mhwd -a pci nonfree 0300
mhwd -li output
❯ mhwd -li
> Installed PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
           video-linux            2018.05.04                true            PCI


Warning: No installed USB configs!

However when I try to check if GPU settings are fine:

❯ sudo mhwd-gpu --check     # nothing
❯ sudo mhwd-gpu --status
:: status
warning: could not find '/etc/X11/xorg.conf.d/90-mhwd.conf'!

I tried mhwd-gpu --setmod catalyst (although I’m not sure what it does but help says [nvidia/catalyst]) but it didn’t solve anything.

I tried to follow some 2022 tutorial to fix OBS and it led me to install:

yay -S lib32-vulkan-amdgpu-pro vulkan-amdgpu-pro amf-amdgpu-pro obs-streamfx-git obs-vkcapture

It was supposed to bring AMF H.265/HEVC encoder if I run OBS with env variables:

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_pro_icd64.json:/usr/share/vulkan/icd.d/amd_pro_icd32.json OBS_USE_EGL=1 obs

These files exist but it didn’t fix anything and I noticed OBS showing some errors when I run it in terminal:

OBS output
debug: Found portal inhibitor
debug: Attempted path: share/obs/obs-studio/locale/en-US.ini
debug: Attempted path: /usr/share/obs/obs-studio/locale/en-US.ini
debug: Attempted path: share/obs/obs-studio/locale.ini
debug: Attempted path: /usr/share/obs/obs-studio/locale.ini
debug: Attempted path: share/obs/obs-studio/locale/en-GB.ini
debug: Attempted path: /usr/share/obs/obs-studio/locale/en-GB.ini
info: Using preferred locale 'en-GB'
debug: Attempted path: share/obs/obs-studio/themes/Yami.qss
debug: Attempted path: /usr/share/obs/obs-studio/themes/Yami.qss
info: Using EGL/X11
info: CPU Name: Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
info: CPU Speed: 3602.615MHz
info: Physical Cores: 4, Logical Cores: 4
info: Physical Memory: 15958MB Total, 1089MB Free
info: Kernel Version: Linux 6.1.51-1-MANJARO
info: Distribution: "Manjaro Linux" Unknown
info: Desktop Environment: i3 (i3)
info: Session Type: x11
info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.21.1
info: Qt Version: 6.5.2 (runtime), 6.5.1 (compiled)
info: Portable mode: false
info: OBS 29.1.3-1 (linux)
info: ---------------------------------
info: ---------------------------------
info: audio settings reset:
	samples per sec: 44100
	speakers:        2
	max buffering:   1044 milliseconds
	buffering type:  dynamically increasing
info: ---------------------------------
info: Initializing OpenGL...
info: Loading up OpenGL on adapter AMD AMD Radeon RX 7900 XTX (gfx1100, LLVM 16.0.6, DRM 3.49, 6.1.51-1-MANJARO)
info: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 23.1.7-1, shading language 4.60
info: ---------------------------------
info: video settings reset:
	base resolution:   3840x2160
	output resolution: 3840x2160
	downscale filter:  Area
	fps:               60/1
	format:            NV12
	YUV mode:          Rec. 709/Partial
info: NV12 texture support not available
info: P010 texture support not available
info: Audio monitoring device:
	name: Default
	id: default
info: ---------------------------------
warning: Failed to load 'en-US' text for module: 'decklink-captions.so'
warning: Failed to load 'en-US' text for module: 'decklink-output-ui.so'
libDeckLinkAPI.so: cannot open shared object file: No such file or directory
warning: A DeckLink iterator could not be created.  The DeckLink drivers may not be installed
warning: Failed to initialize module 'decklink.so'
warning: Failed to load 'en-GB' text for module: 'frontend-tools.so'
warning: Failed to load 'en-GB' text for module: 'linux-alsa.so'
warning: Failed to load 'en-GB' text for module: 'linux-capture.so'
warning: Failed to load 'en-GB' text for module: 'linux-jack.so'
warning: Failed to load 'en-GB' text for module: 'linux-pipewire.so'
info: [pipewire] No captures available
warning: Failed to load 'en-GB' text for module: 'linux-pulseaudio.so'
warning: v4l2loopback not installed, virtual camera disabled
warning: Failed to load 'en-GB' text for module: 'linux-vkcapture.so'
info: [linux-vkcapture] plugin loaded successfully (version 1.4.3)
info: VAAPI: API version 1.20
info: FFmpeg VAAPI H264 encoding not supported
info: FFmpeg VAAPI HEVC encoding not supported
warning: Failed to load 'en-GB' text for module: 'obs-libfdk.so'
warning: Failed to load 'en-GB' text for module: 'obs-vst.so'
warning: Failed to load 'en-GB' text for module: 'rtmp-services.so'
info: [StreamFX] Loading Version 0.12.0b316-g3d3aef47
info: [StreamFX] <gfx::opengl> Version 4.6 initialized.
info: [StreamFX] Loaded Version 0.12.0b316-g3d3aef47
info: ---------------------------------
info:   Loaded Modules:
info:     text-freetype2.so
info:     StreamFX.so
info:     rtmp-services.so
info:     obs-x264.so
info:     obs-vst.so
info:     obs-transitions.so
info:     obs-outputs.so
info:     obs-libfdk.so
info:     obs-filters.so
info:     obs-ffmpeg.so
info:     linux-vkcapture.so
info:     linux-v4l2.so
info:     linux-pulseaudio.so
info:     linux-pipewire.so
info:     linux-jack.so
info:     linux-capture.so
info:     linux-alsa.so
info:     image-source.so
info:     frontend-tools.so
info:     decklink-output-ui.so
info:     decklink-captions.so
info: ---------------------------------
info: ==== Startup complete ===============================================
info: All scene data cleared
info: ------------------------------------------------
info: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.79) 15.0.0'
error: pulse-input: An error occurred while getting the source info!
info: [Loaded global audio device]: 'Desktop Audio'
info:     - filter: 'Gain' (gain_filter)
info: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.79) 15.0.0'
error: pulse-input: An error occurred while getting the source info!
info: [Loaded global audio device]: 'Mic/Aux'
info:     - filter: 'Noise Suppression' (noise_suppress_filter)
info:     - filter: 'Compressor' (compressor_filter)
info: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.79) 15.0.0'
info: pulse-input: Audio format: s16le, 16000 Hz, 2 channels
info: pulse-input: Started recording from 'alsa_input.usb-SunplusIT_Inc_USB_2.0_Camera_J20210928-02.3.analog-stereo' (default)
info: [window-capture: 'Steam Window'] update settings:
	title: Steam
	class: steamwebhelper

error: xcb_composite_name_window_pixmap failed
info: xshm-input: Geometry 3840x2160 @ 0,0
info: v4l2-input: Start capture from /dev/video0
info: v4l2-input: Input: 0
info: v4l2-input: Resolution: 640x480
info: v4l2-input: Pixelformat: YU12
info: v4l2-input: Linesize: 640 Bytes
info: v4l2-input: Framerate: 30.00 fps
info: v4l2-input: /dev/video0: select timeout set to 166666 (5x frame periods)
info: Switched to scene 'Game'
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Pause':
info:     - source: 'Steam Please Stand By' (image_source)
info: - scene 'Game':
info:     - source: 'Facecam' (scene)
info:         - filter: 'Crop/Pad' (crop_filter)
info:         - filter: 'Scaling/Aspect Ratio' (scale_filter)
info:     - source: 'Screen Capture (XSHM)' (xshm_input)
info:     - source: 'Desktop Audio' (pulse_output_capture)
info:         - filter: 'Gain' (gain_filter)
info:     - source: 'Microphone' (pulse_input_capture)
info:         - filter: 'Noise Suppression' (noise_suppress_filter_v2)
info:         - filter: 'Compressor' (compressor_filter)
info: - scene 'Steam':
info:     - source: 'Steam Window' (xcomposite_input)
info:     - source: 'Microphone' (pulse_input_capture)
info:         - filter: 'Noise Suppression' (noise_suppress_filter_v2)
info:         - filter: 'Compressor' (compressor_filter)
info: - scene 'Facecam':
info:     - source: 'Webcam' (v4l2_input)
info:     - filter: 'Crop/Pad' (crop_filter)
info:     - filter: 'Scaling/Aspect Ratio' (scale_filter)
info: ------------------------------------------------
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
error: v4l2-input: /dev/video0: select timed out
error: v4l2-input: /dev/video0: failed to log status
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
error: v4l2-input: /dev/video0: select timed out
error: v4l2-input: /dev/video0: failed to log status
info: adding 69 milliseconds of audio buffering, total audio buffering is now 69 milliseconds (source: Microphone)

Relevant packages that are currently installed on my system:

yay -Ss "vulkan|mesa|radeon|amd|vdpau" | grep Installed | cut -d' ' -f1
multilib/lib32-glu
multilib/lib32-mesa-vdpau
multilib/lib32-mesa-demos
multilib/lib32-mesa
multilib/lib32-mangohud
multilib/lib32-libvdpau
multilib/lib32-vulkan-intel
multilib/lib32-libva-vdpau-driver
multilib/lib32-libva-mesa-driver
multilib/lib32-vulkan-radeon
multilib/lib32-vulkan-icd-loader
extra/mhwd-amdgpu
extra/glu
extra/libteam
extra/spirv-tools
extra/mesa
extra/mesa-vdpau
extra/libvdpau
extra/vdpauinfo
extra/xf86-video-amdgpu
extra/mesa-utils
extra/libvdpau-va-gl
extra/libva-vdpau-driver
extra/mangohud
extra/mesa-demos
extra/libva-mesa-driver
extra/vkmark
extra/vulkan-intel
extra/vulkan-extra-layers
extra/vulkan-radeon
extra/vulkan-tools
extra/vulkan-html-docs
extra/vulkan-extra-tools
extra/vulkan-validation-layers
extra/vulkan-icd-loader
extra/vulkan-headers

Finally I tried to install obs-studio-amf and it did help a little, i.e. it seems to be able to use AMD H264 hardware encoder, but it still isn’t AV1 or HEVC.

Please, help?

Hi @cprn,

Not being an AMD user (yet) and having an Nvidia card, I an only recommend having a look see here:

https://forum.manjaro.org/t/behind-the-scene-manjaro-community-mesa-nonfree-codecs/135012

Hope this helps!

Hi. Thank you but link doesn’t seem to work? I get 404.

Seems you are not TL2, a so called Member, here are the links:

In short: h264/h265 was removed from the official repo because of patents. It has to be separated and not included by default to avoid patent lawsuits.

1 Like

This solved at least VDPAU issues, now vdpauinfo says these are supported:

name                        level macbs width height
----------------------------------------------------
H264_BASELINE                  52 65536  4096  4096
H264_MAIN                      52 65536  4096  4096
H264_HIGH                      52 65536  4096  4096
H264_CONSTRAINED_BASELINE       0 65536  4096  4096
HEVC_MAIN                      186 139264  8192  4352
HEVC_MAIN_10                   186 139264  8192  4352

AV1 still show as “not supported” but I think they don’t work on Linux yet?

AV1_MAIN                       --- not supported ---
AV1_HIGH                       --- not supported ---
AV1_PROFESSIONAL               --- not supported ---

About OBS… Vanilla package still only shows software encoder (x264) and AMF version shows software and hardware but both H264. Should I ask about it in different forum section?

Try to use the environment variable for AMDGPU + VDPAU

VDPAU_DRIVER=radeonsi vdpauinfo

The result is exactly the same with and without the variable.

❯ diff <(VDPAU_DRIVER=radeonsi vdpauinfo) <(vdpauinfo)
❯ echo $?
0

what about vainfo after installing non-free mesa?

vainfo is good now, I think :slight_smile: :

❯ vainfo
Trying display: wayland
Trying display: x11
vainfo: VA-API version: 1.20 (libva 2.19.0)
vainfo: Driver version: Mesa Gallium driver 23.1.7-1 for AMD Radeon RX 7900 XTX (gfx1100, LLVM 16.0.6, DRM 3.54, 6.5.3-1-MANJARO)
vainfo: Supported profile and entrypoints
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileAV1Profile0            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc

Also, I noticed OBS sees AV1 and HEVC for recording, it only doesn’t see it for streaming, so it’s something with OBS - all GPU / driver related issues seems solved. Thank you very much!

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.