Skip to content

VA-API not using the GPU renderer set in adapter_name config #4555

@JamesLowther

Description

@JamesLowther

Is there an existing issue for this?

  • I have searched the existing issues

Is your issue described in the documentation?

  • I have read the documentation

Is your issue present in the latest beta/pre-release?

This issue is present in the latest pre-release

Describe the Bug

When I set adapter_name = /dev/dri/renderD128 in sunshine.conf, the logs indicate that VA-API is using a different GPU than the one I specified. It's only when I also set output_name that it uses the correct GPU, indicating that adapter_name is not working as expected.

GPU rendering devices

$ ls /dev/dri/renderD*
/dev/dri/renderD128  /dev/dri/renderD129

vainfo /dev/dri/renderD128

$ vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
libva info: VA-API version 1.23.0
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.23 (libva 2.23.0)
vainfo: Driver version: Mesa Gallium driver 25.3.1 for AMD Radeon RX 9070 XT (radeonsi, gfx1201, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
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
      VAProfileAV1Profile0            :	VAEntrypointEncSlice
      VAProfileNone                   :	VAEntrypointVideoProc

vainfo /dev/dri/renderD129

$ vainfo --display drm --device /dev/dri/renderD129
Trying display: drm
libva info: VA-API version 1.23.0
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.23 (libva 2.23.0)
vainfo: Driver version: Mesa Gallium driver 25.3.1 for AMD Ryzen 7 9800X3D 8-Core Processor (radeonsi, raphael_mendocino, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
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

Notice that /dev/dri/renderD128 is AMD Radeon RX 9070 XT. If I set adapter_name = /dev/dri/renderD128 and restart sunshine, in the logs I will see the following:

[2026-01-01 15:29:00.729]: Info: config: 'adapter_name' = /dev/dri/renderD128
...
[2026-01-01 15:29:01.377]: Info: vaapi vendor: Mesa Gallium driver 25.3.1 for AMD Ryzen 7 9800X3D 8-Core Processor (radeonsi, raphael_mendocino, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
...
[2026-01-01 15:47:51.216]: Error: Could not open codec [av1_vaapi]: Function not implemented

This is indicating that even though the RX 9070 XT is specified as the renderer, it is still trying to use the iGPU for the AMD Ryzen 7 9800X3D. I can confirm this, because AV1 is not available to the client, even though the RX 9070 XT supports it.

I've found that setting output_name = 1 is a workaround. When setting this, AV1 becomes available and I see the following in the logs instead:

[2026-01-01 15:29:00.729]: Info: config: 'adapter_name' = /dev/dri/renderD128
[2026-01-01 15:29:00.729]: Info: config: 'output_name' = 1
...
[2026-01-01 15:31:48.933]: Info: vaapi vendor: Mesa Gallium driver 25.3.1 for AMD Radeon RX 9070 XT (radeonsi, gfx1201, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
...
[2026-01-01 15:31:49.017]: Info: Creating encoder [av1_vaapi]

It appears that adapter_name is not having any affect in choosing with GPU VA-API uses. It is only when explicitly selecting an output that is plugged in to the GPU that is encodes with the correct one.

My setup is non-standard. See Additional Context for more info.

Expected Behavior

Setting 'adapter_name' = /dev/dri/renderD128 will make VA-API use the /dev/dri/renderD128 GPU for encoding regardless of what output is selected.

Additional Context

In order to support custom resolutions, I am creating a virtual display with an edid firmware binary.

AMD RX 9070 XT

  • DP-1 -> Physical monitor
  • DP-2 -> Physical monitor
  • DP-3 -> Nothing plugged in
    • Reserved for virtual display
  • HDMI-A-1 -> Physical monitor

Ryzen 7 9800X3D

  • HDMI-A-2 -> Physical monitor
    • Plugged in to motherboard's HDMI port

To create the virtual display, I have the following kernel arguments (following this post):

firmware_class.path=/usr/local/lib/firmware drm.edid_firmware=DP-3:edid/virtual-display.bin video=DP-3:e

In my sunshine apps, my Do Command runs a script that disables all monitors except for DP-3 using kscreen-doctor. The script looks like the following:

#!/bin/bash

PRIMARY_DISPLAY='DP-3'
MODE="${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}@${SUNSHINE_CLIENT_FPS}"

kscreen-doctor output.${PRIMARY_DISPLAY}.enable \
    output.${PRIMARY_DISPLAY}.mode.${MODE} \
    output.${PRIMARY_DISPLAY}.brightness.100 \
    output.${PRIMARY_DISPLAY}.priority.1 \
    output.DP-1.disable \
    output.HDMI-A-2.disable \
    output.DP-2.disable \
    output.HDMI-A-1.disable

My Undo Command essentially does the reverse of this, disabling the virtual display and re-enabling the physical displays.

Host Operating System

Linux

Operating System Version

https://github.com/ublue-os/bazzite/releases/tag/43.20251231.1

Architecture

amd64/x86_64

Sunshine commit or version

Sunshine version: 2025.1230.11628 commit: 2e68762

Package

Linux - Fedora Copr

GPU Type

AMD

GPU Model

AMD RX 9070 XT and AMD Ryzen 7 9800X3D

GPU Driver/Mesa Version

Mesa Gallium driver 25.3.1

Capture Method

None

Config

adapter_name = /dev/dri/renderD128
origin_web_ui_allowed = pc

Apps

{
    "apps": [
        {
            "auto-detach": true,
            "exclude-global-prep-cmd": false,
            "exit-timeout": 5,
            "image-path": "desktop.png",
            "name": "Desktop",
            "prep-cmd": [
                {
                    "do": "/home/james/bazzite-scripts/display-modes/sunshine.sh",
                    "undo": "/home/james/bazzite-scripts/display-modes/default.sh"
                }
            ],
            "wait-all": true
        },
        {
            "auto-detach": true,
            "detached": [
                "setsid steam steam://open/bigpicture"
            ],
            "exclude-global-prep-cmd": false,
            "exit-timeout": 5,
            "image-path": "steam.png",
            "name": "Steam Big Picture",
            "prep-cmd": [
                {
                    "do": "",
                    "undo": "setsid steam steam://close/bigpicture"
                },
                {
                    "do": "/home/james/bazzite-scripts/display-modes/sunshine.sh",
                    "undo": "/home/james/bazzite-scripts/display-modes/default.sh"
                }
            ],
            "wait-all": true
        }
    ],
    "env": {
        "PATH": "$(PATH):$(HOME)/.local/bin"
    }
}

Relevant log output

[2026-01-01 15:47:50.599]: Info: Sunshine version: 2025.1230.11628 commit: 2e68762e3659033f455a129405046995f4e3303a
[2026-01-01 15:47:50.599]: Info: Package Publisher: LizardByte
[2026-01-01 15:47:50.599]: Info: Publisher Website: https://app.lizardbyte.dev
[2026-01-01 15:47:50.599]: Info: Get support: https://app.lizardbyte.dev/support
[2026-01-01 15:47:50.599]: Info: config: 'adapter_name' = /dev/dri/renderD128
[2026-01-01 15:47:50.599]: Info: config: 'origin_web_ui_allowed' = pc
[2026-01-01 15:47:50.599]: Error: Couldn't load cuda: -1
[2026-01-01 15:47:50.599]: Info: Found display [wayland-0]
[2026-01-01 15:47:50.600]: Info: Found interface: zxdg_output_manager_v1(31) version 3
[2026-01-01 15:47:50.600]: Info: Found interface: zwp_linux_dmabuf_v1(58) version 5
[2026-01-01 15:47:50.600]: Info: Found interface: wl_output(98) version 4
[2026-01-01 15:47:50.600]: Info: Found interface: wl_output(100) version 4
[2026-01-01 15:47:50.600]: Info: Found interface: wl_output(101) version 4
[2026-01-01 15:47:50.600]: Info: Found interface: wl_output(109) version 4
[2026-01-01 15:47:50.600]: Warning: Missing Wayland wire for wlr-export-dmabuf
[2026-01-01 15:47:50.600]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:50.601]: Info: /dev/dri/card1 -> amdgpu
[2026-01-01 15:47:50.601]: Info: Found display [wayland-0]
[2026-01-01 15:47:50.601]: Info: Found display [wayland-0]
[2026-01-01 15:47:50.601]: Info: Found interface: zxdg_output_manager_v1(31) version 3
[2026-01-01 15:47:50.601]: Info: Found interface: zwp_linux_dmabuf_v1(58) version 5
[2026-01-01 15:47:50.601]: Info: Found interface: wl_output(98) version 4
[2026-01-01 15:47:50.601]: Info: Found interface: wl_output(100) version 4
[2026-01-01 15:47:50.601]: Info: Found interface: wl_output(101) version 4
[2026-01-01 15:47:50.601]: Info: Found interface: wl_output(109) version 4
[2026-01-01 15:47:50.601]: Info: Resolution: 1920x1080
[2026-01-01 15:47:50.601]: Info: Resolution: 2560x1440
[2026-01-01 15:47:50.601]: Info: Resolution: 3840x2160
[2026-01-01 15:47:50.601]: Info: Resolution: 2560x1440
[2026-01-01 15:47:50.601]: Info: Offset: 0x240
[2026-01-01 15:47:50.601]: Info: Logical size: 1080x1920
[2026-01-01 15:47:50.601]: Info: Name: DP-2
[2026-01-01 15:47:50.601]: Info: Found monitor: HP Inc. HP E243
[2026-01-01 15:47:50.601]: Info: Offset: 1080x431
[2026-01-01 15:47:50.601]: Info: Logical size: 2560x1440
[2026-01-01 15:47:50.601]: Info: Name: DP-1
[2026-01-01 15:47:50.601]: Info: Found monitor: GIGA-BYTE TECHNOLOGY CO., LTD. G27Q
[2026-01-01 15:47:50.601]: Info: Offset: 6200x0
[2026-01-01 15:47:50.601]: Info: Logical size: 3840x2160
[2026-01-01 15:47:50.601]: Info: Name: HDMI-A-1
[2026-01-01 15:47:50.601]: Info: Found monitor: LG Electronics LG TV SSCR2
[2026-01-01 15:47:50.601]: Info: Offset: 3640x431
[2026-01-01 15:47:50.601]: Info: Logical size: 2560x1440
[2026-01-01 15:47:50.601]: Info: Name: HDMI-A-2
[2026-01-01 15:47:50.601]: Info: Found monitor: GIGA-BYTE TECHNOLOGY CO., LTD. G27Q
[2026-01-01 15:47:50.601]: Info: -------- Start of KMS monitor list --------
[2026-01-01 15:47:50.601]: Warning: Mismatch on expected Resolution compared to actual resolution: 0x0 vs 2560x1440
[2026-01-01 15:47:50.601]: Info: Monitor 0 is DP-1: GIGA-BYTE TECHNOLOGY CO., LTD. G27Q
[2026-01-01 15:47:50.601]: Warning: Mismatch on expected Resolution compared to actual resolution: 2560x1440 vs 3840x2160
[2026-01-01 15:47:50.601]: Info: Monitor 0 is HDMI-A-1: LG Electronics LG TV SSCR2
[2026-01-01 15:47:50.601]: Warning: Mismatch on expected Resolution compared to actual resolution: 3840x2160 vs 2560x1440
[2026-01-01 15:47:50.601]: Info: Monitor 1 is HDMI-A-2: GIGA-BYTE TECHNOLOGY CO., LTD. G27Q
[2026-01-01 15:47:50.601]: Info: --------- End of KMS monitor list ---------
[2026-01-01 15:47:50.672]: Info: // Testing for available encoders, this may generate errors. You can safely ignore those errors. //
[2026-01-01 15:47:50.672]: Info: Trying encoder [nvenc]
[2026-01-01 15:47:50.672]: Info: Screencasting with KMS
[2026-01-01 15:47:50.672]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:50.673]: Info: /dev/dri/card1 -> amdgpu
[2026-01-01 15:47:50.673]: Error: Couldn't find monitor [0]
[2026-01-01 15:47:50.673]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:50.673]: Info: /dev/dri/card1 -> amdgpu
[2026-01-01 15:47:50.673]: Error: Couldn't find monitor [0]
[2026-01-01 15:47:50.873]: Info: Screencasting with KMS
[2026-01-01 15:47:50.873]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:50.874]: Info: /dev/dri/card1 -> amdgpu
[2026-01-01 15:47:50.874]: Error: Couldn't find monitor [0]
[2026-01-01 15:47:50.874]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:50.874]: Info: /dev/dri/card1 -> amdgpu
[2026-01-01 15:47:50.874]: Error: Couldn't find monitor [0]
[2026-01-01 15:47:51.075]: Info: Encoder [nvenc] failed
[2026-01-01 15:47:51.075]: Info: Trying encoder [vaapi]
[2026-01-01 15:47:51.075]: Info: Screencasting with KMS
[2026-01-01 15:47:51.075]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:51.075]: Info: Found monitor for DRM screencasting
[2026-01-01 15:47:51.075]: Info: Found connector ID [108]
[2026-01-01 15:47:51.075]: Info: Found cursor plane [91]
[2026-01-01 15:47:51.095]: Info: Creating encoder [h264_vaapi]
[2026-01-01 15:47:51.095]: Info: Color coding: SDR (Rec. 601)
[2026-01-01 15:47:51.095]: Info: Color depth: 8-bit
[2026-01-01 15:47:51.095]: Info: Color range: JPEG
[2026-01-01 15:47:51.108]: Info: vaapi vendor: Mesa Gallium driver 25.3.1 for AMD Ryzen 7 9800X3D 8-Core Processor (radeonsi, raphael_mendocino, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
[2026-01-01 15:47:51.109]: Info: Streaming bitrate is 1000000
[2026-01-01 15:47:51.109]: Info: Using normal encoding mode
[2026-01-01 15:47:51.109]: Info: Using default rate control
[2026-01-01 15:47:51.144]: Info: Creating encoder [hevc_vaapi]
[2026-01-01 15:47:51.144]: Info: Color coding: SDR (Rec. 601)
[2026-01-01 15:47:51.144]: Info: Color depth: 8-bit
[2026-01-01 15:47:51.144]: Info: Color range: JPEG
[2026-01-01 15:47:51.157]: Info: vaapi vendor: Mesa Gallium driver 25.3.1 for AMD Ryzen 7 9800X3D 8-Core Processor (radeonsi, raphael_mendocino, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
[2026-01-01 15:47:51.157]: Info: Streaming bitrate is 1000000
[2026-01-01 15:47:51.157]: Info: Using normal encoding mode
[2026-01-01 15:47:51.157]: Info: Using default rate control
[2026-01-01 15:47:51.201]: Info: Creating encoder [av1_vaapi]
[2026-01-01 15:47:51.201]: Info: Color coding: SDR (Rec. 601)
[2026-01-01 15:47:51.201]: Info: Color depth: 8-bit
[2026-01-01 15:47:51.201]: Info: Color range: JPEG
[2026-01-01 15:47:51.213]: Info: vaapi vendor: Mesa Gallium driver 25.3.1 for AMD Ryzen 7 9800X3D 8-Core Processor (radeonsi, raphael_mendocino, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
[2026-01-01 15:47:51.213]: Info: Streaming bitrate is 1000000
[2026-01-01 15:47:51.213]: Error: [av1_vaapi @ 0xce49100] No usable encoding entrypoint found for profile VAProfileAV1Profile0 (32).
[2026-01-01 15:47:51.216]: Error: Could not open codec [av1_vaapi]: Function not implemented
[2026-01-01 15:47:51.236]: Info: Screencasting with KMS
[2026-01-01 15:47:51.237]: Info: /dev/dri/card2 -> amdgpu
[2026-01-01 15:47:51.237]: Info: Found monitor for DRM screencasting
[2026-01-01 15:47:51.237]: Info: Found connector ID [108]
[2026-01-01 15:47:51.237]: Info: Found cursor plane [91]
[2026-01-01 15:47:51.253]: Info: Creating encoder [hevc_vaapi]
[2026-01-01 15:47:51.253]: Info: Color coding: SDR (Rec. 709)
[2026-01-01 15:47:51.253]: Info: Color depth: 10-bit
[2026-01-01 15:47:51.253]: Info: Color range: JPEG
[2026-01-01 15:47:51.266]: Info: vaapi vendor: Mesa Gallium driver 25.3.1 for AMD Ryzen 7 9800X3D 8-Core Processor (radeonsi, raphael_mendocino, LLVM 21.1.7, DRM 3.64, 6.17.7-ba22.fc43.x86_64)
[2026-01-01 15:47:51.266]: Info: Streaming bitrate is 1000000
[2026-01-01 15:47:51.266]: Info: Using normal encoding mode
[2026-01-01 15:47:51.266]: Info: Using default rate control
[2026-01-01 15:47:51.299]: Info: 
[2026-01-01 15:47:51.299]: Info: // Ignore any errors mentioned above, they are not relevant. //
[2026-01-01 15:47:51.299]: Info: 
[2026-01-01 15:47:51.299]: Info: Found H.264 encoder: h264_vaapi [vaapi]
[2026-01-01 15:47:51.299]: Info: Found HEVC encoder: hevc_vaapi [vaapi]
[2026-01-01 15:47:51.300]: Info: Starting system tray
[2026-01-01 15:47:51.301]: Info: Adding avahi service bazzite
[2026-01-01 15:47:51.302]: Info: Configuration UI available at [https://localhost:47990]
[2026-01-01 15:47:51.364]: Info: System tray created
[2026-01-01 15:47:51.364]: Info: Starting main loop
[2026-01-01 15:47:52.206]: Info: Avahi service bazzite successfully established.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions