Public bug reported:
Summary
In the RDP handover daemon (gnome-remote-desktop-daemon --handover), the EGL
thread fails to start, so neither VA-API nor Vulkan hardware acceleration is
ever attempted. All AVC encoding falls back to software and costs about one
full CPU core.
With EGL debug logging and a tracing shim, the failing sequence is:
eglGetPlatformDisplayEXT(EGL_PLATFORM_WAYLAND_EXT, NULL, NULL) returns a valid
display and eglInitialize succeeds (EGL 1.5).
eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT, EGL_NO_DEVICE_EXT /* NULL */,
NULL) returns EGL_NO_DISPLAY with EGL_BAD_PARAMETER. Mesa logs EGL user error
0x300c (EGL_BAD_PARAMETER) in eglGetPlatformDisplay.
The daemon logs Failed to create EGL thread: Failed to get EGL display.
The daemon never calls eglQueryDevicesEXT, so the NULL device does not come
from a failed device enumeration. It is passed to the DEVICE platform as NULL,
which Mesa rejects.
A standalone test in the same user session does not fail. It creates the
Wayland-platform display, queries EGL_DEVICE_EXT on it (valid device
returned), and calls the DEVICE platform with that device (works). So
Mesa can provide the device in this session. I do not know why the
daemon ends up with NULL.
Environment
Item Value
OS Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic
GNOME gnome-shell 50.1-0ubuntu1.3, mutter-common 50.1-0ubuntu2.4
gnome-remote-desktop 50.2-0ubuntu0.1
FreeRDP libfreerdp3 3.32.0
Mesa 26.0.8-1ubuntu0.3 (libegl-mesa0, libgl1-mesa-dri, mesa-libgallium)
libepoxy / libglvnd 1.5.10-2build1 / 1.7.0-3
GPU AMD Radeon RX 550 (Polaris12), PCI 1002:699f, radeonsi, RADV
Session Wayland, RDP remote login via the system daemon, handover to the user
session (gnome-remote-desktop-handover.service)
RDP client Remmina (FreeRDP), AVC444 and AVC420 tried
The GPU meets the requirements the daemon checks:
VA-API (H.264 High, EncSlice): YUV420, CQP, all packed headers, EncMaxRefFrames
l0=1.
Vulkan (RADV, API 1.4): timestampComputeAndGraphics,
shaderZeroInitializeWorkgroupMemory, a compute+transfer queue family,
external_memory_dma_buf, queue_family_foreign, and physical_device_drm.
Steps to reproduce
Enable RDP system-wide remote login with gnome-remote-desktop.
Connect with an RDP client (the user must not be logged in locally).
Read the handover daemon log: journalctl --user -u
gnome-remote-desktop-handover.service
Starting the daemon with G_MESSAGES_DEBUG=all EGL_LOG_LEVEL=debug gives this
log:
libEGL debug: using driver amdgpu for 11
libEGL debug: pci id for fd 11: 1002:699f, driver radeonsi
libEGL debug: No DRI config supports native format PIPE_FORMAT_R10G10B10X2_UNORM
(... same message for 9 more formats ...)
libEGL debug: EGL user error 0x300c (EGL_BAD_PARAMETER) in eglGetPlatformDisplay
gnome-remote-desktop-daemon: Failed to create EGL thread: Failed to get EGL
display
Trace of the EGL calls (from a small LD_PRELOAD shim that wraps
eglGetPlatformDisplayEXT and eglInitialize):
eglGetPlatformDisplayEXT platform=0x31d8 (WAYLAND) native=(nil) ->
0x760f2c070550 err=0x3000
eglInitialize dpy=0x760f2c070550 -> 1 (1.5) err=0x3000
eglGetPlatformDisplayEXT platform=0x313f (DEVICE) native=(nil) -> (nil)
err=0x300c
Expected behavior
The EGL thread starts, then [HWAccel.Vulkan] and [HWAccel.VAAPI] initialize
(the 50.2 NEWS says amdgpu hardware acceleration was fixed and enabled), and
encoding runs on the GPU.
Actual behavior
No [HWAccel.*] line is ever logged.
The process has no /dev/dri/* fd left open, and radeonsi_drv_video and
libvulkan_radeon are never loaded.
The daemon uses about 1.15 to 1.9 CPU cores for usr time (software encoding) on
a mostly idle desktop.
Other observations
Across my runs, one handover daemon (started during the login) did not log the
EGL error. Every daemon I restarted manually with systemctl --user restart
gnome-remote-desktop-handover.service did. I did not find what differs between
the two.
Remote (seat-less) sessions do not get a logind ACL on /dev/dri/card1, only on
renderD128. Running eglinfo -p gbm in that session printed libEGL warning:
failed to open /dev/dri/card1: Permission denied. Giving my user read access to
card1 did not fix the daemon failure, so I treat this as a separate observation.
grdctl and gsettings expose no option to enable or disable hardware
acceleration.
What I could not determine
Why the DEVICE platform call receives a NULL device. I did not read the daemon
source and did not find which call produces the NULL between step 1 and step 2.
Whether this is a gnome-remote-desktop issue, a Mesa issue, or an interaction
between them on Polaris.
Files available on request
Full journal log with debug enabled.
The standalone EGL test (egltest2.c, about 20 lines) that works in the same
session.
The LD_PRELOAD tracing shim.
ProblemType: Bug
DistroRelease: Ubuntu 26.04
Package: gnome-remote-desktop 50.2-0ubuntu0.1
ProcVersionSignature: Ubuntu 7.0.0-38.38-generic 7.0.14
Uname: Linux 7.0.0-38-generic x86_64
ApportVersion: 2.34.1-0ubuntu0.1
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Tue Oct 6 19:57:13 2026
InstallationDate: Installed on 2026-06-01 (127 days ago)
InstallationMedia: Ubuntu 26.04 "Resolute Raccoon" - Release amd64 (20260423.1)
ProcEnviron:
LANG=pt_BR.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=xterm-256color
XDG_RUNTIME_DIR=<set>
SourcePackage: gnome-remote-desktop
UpgradeStatus: No upgrade log present (probably fresh install)
** Affects: gnome-remote-desktop (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug resolute wayland-session
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2169775
Title:
gnome-remote-desktop 50.2: "Failed to create EGL thread: Failed to get
EGL display" on AMD Polaris (RX 550), hardware acceleration never
initializes
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gnome-remote-desktop/+bug/2169775/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs