Skip to content

Video/animated wallpapers render black or crash plasmashell on hybrid NVIDIA+AMD Wayland setup #290

Description

@Pesqually

Video/animated wallpapers render black or crash plasmashell on hybrid NVIDIA+AMD Wayland setup

Environment

  • Distro: CachyOS Linux
  • Kernel: 7.1.8-1-cachyos
  • Plasma: 6.7.4 (plasmashell 6.7.4, kwin_wayland 6.7.4), Wayland session
  • GPU: NVIDIA GeForce RTX 5070 Ti (driver 610.57.04, nvidia-open kernel modules) + AMD Ryzen 7 9700X iGPU (amdgpu) — hybrid GPU / PRIME setup
  • Plugin: Smart Video Wallpaper Reborn v2.13.0 (luisbocanegra.smart.video.wallpaper.reborn)

Summary

Video-based Plasma wallpapers stopped rendering after a suspend/resume cycle and have not worked since, across two independent wallpaper plugins. The pattern points at a shared root cause in how decoded video frames are imported as GPU textures into KWin's Wayland compositor scene graph on this hybrid NVIDIA+AMD setup, rather than a bug in either individual plugin.

Primary issue: Smart Video Wallpaper Reborn renders solid black

  • Was working correctly for weeks with a local 4K AV1 video file.
  • Broke immediately after a suspend/resume cycle — wallpaper area has rendered solid black ever since, with no crash and no errors surfaced to the user.
  • Confirmed the video file itself decodes fine standalone: manually tested with gst-launch-1.0 using NVDEC hardware decode — works, so this is not a codec/decode problem.
  • Switched Qt Multimedia backend from FFmpeg (default) to GStreamer via QT_MEDIA_BACKEND=gstreamer — no change in behavior. (Reverted this after testing since it didn't help.)
  • Full system package update + reboot — no change.
  • NVIDIA driver confirmed already at latest available version (610.57.04) at time of testing.
  • Cleared all GPU-related shader/pipeline caches (~/.cache/nvidia, ~/.cache/mesa_shader_cache, ~/.cache/qtshadercache-*) in case a stale cache entry from the original crash was the cause, followed by full reboot — no change.
  • KWIN_EXPLICIT_SYNC=0 was tested as a possible workaround but had to be reverted — it broke monitor EDID negotiation/resolution detection on this system.
  • Confirmed via qdbus6 org.kde.KWin /KWin supportInformation and journalctl -t kwin_wayland that the compositor itself is healthy during wallpaper playback — no pageflip errors, no context-loss errors, no GL/EGL errors logged while the black wallpaper is displayed.
  • Known secondary/cosmetic bug also present: contents/ui/tools/gdbus_get_signal.sh is missing its execute bit in the installed package, producing repeated "Permission denied" errors in the user journal (unrelated to the black-screen issue, but worth fixing alongside).

Working theory: video decode succeeds, but the resulting frame is never successfully imported as a texture into the QML/KWin scene graph on this hybrid GPU (NVIDIA discrete + AMD iGPU) Wayland configuration — likely a DMA-BUF/EGL texture-import failure that fails silently rather than erroring.

Secondary data point: same symptom on a second, independent plugin

To rule out a plugin-specific bug, also installed plasma6-wallpapers-wallpaper-engine-git (native C++ Wallpaper Engine integration for Plasma 6, unrelated codebase to the plugin above) and tested with genuine Steam Workshop Wallpaper Engine content (owned via Steam).

  • First attempt (bundled default scene razer_vortex) crashed plasmashell outright with SIGSEGV, immediately and repeatedly (hit systemd's start-limit-hit after a few auto-restarts, taking the whole panel/shell down with it). Journal showed a JSON.parse: Parse error immediately before each crash, while loading .../wallpaper_engine/projects/defaultprojects/razer_vortex/scene.json.
  • Second attempt with a different, real subscribed Workshop wallpaper (item id 3509243656, not the bundled demo) — crashed plasmashell the same way, SIGSEGV on every startup attempt until the wallpaper config was reverted.
  • Both crashes were recovered the same way: edit ~/.config/plasma-org.kde.plasma.desktop-appletsrc to set the affected containments' wallpaperplugin back to org.kde.image, then systemctl --user reset-failed plasma-plasmashell.service && systemctl --user start plasma-plasmashell.service. Without this, plasmashell stays permanently crash-looped (systemd start-limit-hit) since it re-attempts loading the same broken wallpaper config on every restart.

This plugin did not just fail to render (like Smart Video Wallpaper Reborn) — it reliably crashed the entire Plasma shell (panel, desktop, everything) on every scene tested, whether a bundled demo or genuine Workshop content. Two independently-developed plugins, doing the same fundamental thing (decode/render a video or animated scene, then composite it as the desktop background), both fail on this system in ways consistent with a GPU texture import/composite problem rather than either plugin's own logic — strengthening the theory that this is an NVIDIA-Wayland-hybrid-GPU compositor issue rather than an application bug. Filing here since Smart Video Wallpaper Reborn is the plugin actually in daily use and where the most diagnostic work was done; happy to cross-post/link to the Wallpaper Engine KDE plugin repo (com.github.catsout.wallpaperEngineKde) separately given the severity of that crash.

What would help

  • Any known compatibility issue with nvidia-open hybrid GPU (PRIME) setups importing decoded video frames as Wayland/EGL textures.
  • Whether there's a KWin or Qt env var / config workaround (other than KWIN_EXPLICIT_SYNC=0, which is not viable here due to EDID/resolution side effects) for forcing a different texture import path.
  • Confirmation of whether this is more likely an upstream NVIDIA driver bug, a KWin bug, or something plugin-fixable — willing to gather more logs/traces if pointed at the right diagnostic.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions