Hardware encoding not work with AMD GPU on HP T620 and Linux Mint 21.3

Forum / NoMachine for Linux / Hardware encoding not work with AMD GPU on HP T620 and Linux Mint 21.3

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #53936
    kermu
    Participant

    Hello,

    I’m using NoMachine on an HP T620 thin client running Linux Mint 21.3 with kernel version 5.15.0-144-generic. I’ve noticed that hardware encoding is not working — the server always falls back to software encoding.

    I’ve reviewed the article [AR02U01190](https://kb.nomachine.com/AR02U01190), which suggests installing AMD GPU drivers from the official AMD repository (https://repo.radeon.com/amdgpu/).

    Currently, I’m using the open-source drivers provided by the distribution:

    `bash
    $ dpkg -l | grep -i xorg | grep -i radeon
    ii  xserver-xorg-video-radeon  1:19.1.0-2ubuntu1  amd64  X.Org X server — AMD/ATI Radeon display driver
    `

    Could you please confirm whether the proprietary AMD GPU drivers from repo.radeon.com are still required to enable hardware-accelerated encoding in NoMachine on AMD GPUs? Or is hardware encoding expected to work with the open-source radeon or amdgpu drivers from the distribution?

    Thanks in advance for your support!

    Best regards,
    Krzysztof

    #53960
    Britgirl
    Keymaster

    Hi, it is preferable to always use proprietary drivers. Those are what we base our tests on. Thanks for bringing this to our attention, though, we’ll take a look at the open source ones to see if we can reproduce the same behaviour.

    #53970
    Britgirl
    Keymaster

    Update: we checked the open source drivers and can reproduce it. So stick to the proprietary ones as recommended in the article https://kb.nomachine.com/AR02U01190 🙂

    #53998
    kermu
    Participant

    [b]Re: Hardware encoding not work with AMD GPU on HP T620 and Linux Mint 21.3[/b]

    Hi everyone,

    I’d like to contribute to this thread with my own detailed testing on an identical platform (HP T620, AMD GX-415GA, VCE 2.0). Hardware video encoding works via VAAPI, but NoMachine never activates it.

    [b]System summary:[/b] [list] []OS: Linux Mint 21.3 (based on Ubuntu 22.04) []Kernel: 5.15.0-144-generic []GPU: Radeon HD 8330E (Kabini) with UVD 4.2 / VCE 2.0 []Driver: AMDGPU-PRO 6.4.60402 (with amf-amdgpu-pro + VAAPI libraries) [*]NoMachine: nxserver running as system service, user “nx”[/list]

    [b]VCE & VAAPI encoder tested working[/b] VAAPI confirmed inside NoMachine session using: [code]ffmpeg -vaapi_device /dev/dri/renderD128 -f lavfi -i testsrc=size=640×480:rate=30
    -vf ‘format=nv12,hwupload’ -c:v h264_vaapi -b:v 2M -t 30 test.mp4[/code]

    [b]vainfo output:[/b] [code]vainfo: VA-API version: 1.14 (libva 2.12.0) Driver version: Mesa Gallium driver 23.2.1 for AMD Radeon Graphics (kabini) VAProfileH264High : VAEntrypointEncSlice[/code]

    [b]Yet NoMachine still reports:[/b] [quote]SW encoding, codec H.264[/quote]

    [b]Relevant logs:[/b] [u]dmesg | grep -iE ‘vce|uvd|amdgpu|radeon'[/u] [code][drm] Found UVD firmware Version: 1.64 Family ID: 9 [drm] Found VCE firmware Version: 50.10 Binary ID: 2 [drm] UVD initialized successfully. [drm] VCE initialized successfully. [drm:amdgpu_device_ip_set_powergating_state] ERROR set_powergating_state of IP block <vce_v2_0> failed -22[/code]

    [u]lsmod | grep -i amdgpu[/u] [code]amdgpu 17444864 4 amddrm_ttm_helper 16384 1 amdgpu amdttm 94208 2 amdgpu,amddrm_ttm_helper amdxcp 16384 1 amdgpu amddrm_buddy 20480 1 amdgpu amd_sched 53248 1 amdgpu amdkcl 45056 3 amd_sched,amdttm,amdgpu i2c_algo_bit 16384 1 amdgpu drm_kms_helper 315392 3 amdgpu,amdkcl drm 622592 10 drm_kms_helper,amdgpu[/code]

    [u]dpkg -l | grep -i amdgpu | awk ‘{print $1, $2, $3}'[/u] [code]ii amdgpu-core 1:6.4.60402-2187269.22.04 ii amdgpu-dkms 1:6.12.12.60402-2187269.22.04 ii amdgpu-dkms-firmware 1:6.12.12.60402-2187269.22.04 ii amdgpu-install 6.4.60402-2187269.22.04 ii amdgpu-pro-core 25.10-2187634.22.04 ii amf-amdgpu-pro:amd64 1.4.37-2187634.22.04 ii libamdenc-amdgpu-pro:amd64 25.10-2187634.22.04 ii libdrm-amdgpu-amdgpu1:amd64 1:2.4.124.60402-2187269.22.04 [ii libdrm-amdgpu-common 1.0.0.60402-2187269.22.04 [ii libdrm-amdgpu1:amd64 2.4.113-2~ubuntu0.22.04.1 ii libdrm2-amdgpu:amd64 1:2.4.124.60402-2187269.22.04 ii xserver-xorg-video-amdgpu 22.0.0-1ubuntu0.2[/code]

    [u]strace_nxnode.log | grep -i render[/u] [code]openat(AT_FDCWD, “/sys/class/drm/renderD128/device/vendor”, O_RDONLY) = 3 → returns: “0x1002” (AMD) → BUT: No open to /dev/dri/renderD128 afterwards[/code]

    [b]Summary:[/b] [list] []VCE works []Permissions are correct (user nx ∈ render) []VAAPI encoder tested and working via ffmpeg []NoMachine detects vendor but does NOT enable hardware encoding [/list]

    I suspect NoMachine filters based on VAAPI driver name, VCE generation (v2.0), or hardcodes GPU IDs.

    Any confirmation from the dev team whether this GPU (Kabini / VCE 2.0) is blocked/unsupported would be helpful.

    Thanks! 🙂

    #54022
    kermu
    Participant

    Continuing this thread, in relation to the information below, I have a few questions

    Current Setup and Issue:
    – Hardware: HP T620, AMD GX-217GA with Radeon HD 8330E.
    – OS: Linux Mint 21.3 (Ubuntu 22.04 base).
    – Drivers: AMDGPU-Pro 23.20 (amdgpu-install_5.7.00.48.50700-1666569.22.04, amf-amdgpu-pro_1.4.31, vulkan-amdgpu-pro_23.20.00.48).
    – NoMachine: Latest version 9.1.24-6.
    – Issue: Hardware encoding fails, using VCE initialisation via AMF:

    Test with ffmpeg supported AMF

    [h264_amf] AMFDeviceVulkanImpl: Error: ../../../../../runtime/src/core/DeviceVulkanImpl.cpp(1114):Assertion failed:vkCreateDevice() failed, Error=-8

    vulkaninfo also fails with:

    ERROR at ./vulkaninfo/vulkaninfo.h:649:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER

    – Logs: dmesg confirms VCE 2.0 initialization (Found VCE firmware Version: 50.10 Binary ID: 2, VCE initialized successfully). lsmod shows amdgpu loaded.

    Background:
    According to [AR02U01190](https://kb.nomachine.com/AR02U01190), NoMachine requires amf-amdgpu-pro and vulkan-amdgpu-pro for HW encoding with AMD GPUs. However, my Radeon HD 8330E seems to have limited support in AMDGPU-Pro 23.20’s Vulkan driver, causing the above errors. Previous vulkaninfo output with Mesa radv showed partial Vulkan support (AMD Radeon Graphics (RADV KABINI)), but radv doesn’t support AMF.

    From my research, newer AMDGPU-Pro versions (22.20 and later) rely on Vulkan for AMF to initialize VCE, which fails on my GPU. Older drivers (e.g., 19.20 or 20.40) may use OpenCL or other APIs for AMF-VCE communication, potentially bypassing Vulkan.

    Questions:
    1. If I install older AMDGPU-Pro drivers (e.g., 19.20 or 20.40) that don’t require vulkan-amdgpu-pro for AMF to initialize VCE, will the latest NoMachine version support hardware encoding (H.264) on my Radeon HD 8330E?
    2. If the latest NoMachine version is incompatible with these older drivers, what is the latest NoMachine version that supports HW encoding with AMDGPU-Pro 19.20 or 20.40 for my GPU?
    3. Are there specific configuration steps (e.g., in /usr/NX/etc/node.cfg) or workarounds (e.g., using VAAPI) to enable HW encoding with my setup?

    Any guidance on compatible driver versions, NoMachine versions, or alternative approaches (e.g., VAAPI, software encoding) would be greatly appreciated. Thank you!

    Best regards,
    Krzysztof Szwaba

    #54070
    Britgirl
    Keymaster

    Hi, thanks for the follow-up. AR02U01190 does not mention Vulkan so I am not sure which article you are referring to. That article indicates amf-amdgpu-pro with the exact steps to follow.

    1. If I install older AMDGPU-Pro drivers (e.g., 19.20 or 20.40) that don’t require vulkan-amdgpu-pro for AMF to initialize VCE, will the latest NoMachine version support hardware encoding (H.264) on my Radeon HD 8330E?

    Please install only amf-amdgpu-pro (not vulkan-amdgpu-pro) and follow the steps in the article. I just updated it because AMD website’s link is now different.

    2. If the latest NoMachine version is incompatible with these older drivers, what is the latest NoMachine version that supports HW encoding with AMDGPU-Pro 19.20 or 20.40 for my GPU?

    It’s not a question of NoMachine version being incompatible. NoMachine v8 and v9 support GPU-accelerated H.264 encoding provided by AMD’s Video Coding Engine (VCE) that uses AMF (Advanced Media Framework) SDK API on the Linux machines having a graphics card that support it, using official drivers from the provider. There are so many system configurations that we’re not able to test, and with all different cards available. We are checking with the latest Ubuntu to see if we can reproduce your issue.

    3. Are there specific configuration steps (e.g., in /usr/NX/etc/node.cfg) or workarounds (e.g., using VAAPI) to enable HW encoding with my setup?

    No, there aren’t any specific configuration options.

    Any guidance on compatible driver versions, NoMachine versions, or alternative approaches (e.g., VAAPI, software encoding) would be greatly appreciated.

    There’s not much we can add. As I mentioned earlier, it’s not about which specific NoMachine build. HW encoding on Linux in general is like a lottery and more than often it’s about finding the Linux distro version which works with your video card and the specific driver version. We’re checking in our own set-ups as I said and will come back to you.

    #54074
    kermu
    Participant

    Please install only amf-amdgpu-pro (not vulkan-amdgpu-pro) and follow the steps in the article. I just updated it because AMD website’s link is now different.

    In current AMDGPU-Pro releases, amf-amdgpu-pro has a hard dependency on vulkan-amdgpu-pro:

    apt depends amf-amdgpu-pro | grep vulkan
    Depends: vulkan-amdgpu-pro

    It is possible to forcibly remove it:

    apt depends amf-amdgpu-pro | grep vulkan
    Depends: vulkan-amdgpu-pro

    but this causes package inconsistency and does not resolve the potential runtime requirement for libvulkan* libraries during AMF VCE initialization.

    Even if vulkan-amdgpu-pro is removed, current AMF behavior indicates that libvulkan.so is still attempted to be loaded at runtime. If missing, this results in VCE initialization failure and NoMachine falling back to CPU encoding.

    [VulkanImportTable] amf_load_library() failed to load vulkan dll!
    [AMFDeviceVulkanImpl] AMF_FAIL: LoadFunctionsTable() failed
    [AMFContextImpl] AMF_FAIL: pDeviceVulkan->Init(...)
    VCE: WARNING! Failed to init device.
    VCE: WARNING! Failed to create encoder.
    Info: Using H.264 software encoder.

    This means NoMachine not trying to ignore vulkan and force initialisation VCE or other available hardware encoding methods (e.g., VA-API) but falls back to a CPU encoder.

    My question is: if Vulkan isn’t initialized properly, is it possible to use a hardware encoder ? AMD doesn’t provide Vulkan support for this (Radeon HD 8330E) GPU in its vulkan-amdgpu-pro, and its working open source implementation can’t be used in this case.

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic. Please login .