Skip to content

Video Memory Leak on dGPU while rendering Hyprland on iGPU when external display gets plugged in #171

@Rabcor

Description

@Rabcor

Migrating from hyprwm/Hyprland#10219 (There is a lot more info in there)

I am on a laptop with an amd iGPU and an nvidia dGPU, I am rendering Hyprland on the iGPU but when I plug in an external HDMI monitor the Hyprland process' vram usage increases for the dGPU.

I use nvidia-smi (official utility) to analyze vram usage.

On sway, the sway process uses the same amount of vram on the dgpu before, during and after plugging in the external display.

Before during and after plugging in the display and removing it this number never changes.
Image

On Hyprland, the hyprland process uses more vram after the display is plugged in, and it never releases this vram after it claims it. Plugging and unplugging the monitor more times wil inflate Hyprland's vram usage further each time the display gets plugged in.

After running Hyprland for a few days plugging the monitor in and out multiple times throughout that period this is the current vram usage. It started out at 3MiB on boot.
Image

The way this laptop model is set-up, the HDMI port belongs to the dGPU, but since I'm rendering on the iGPU the display gets passed off to the iGPU after it's plugged in.

inxi snippet
Graphics:
  Device-1: NVIDIA GA104 [Geforce RTX 3070 Ti Laptop GPU] vendor: ASUSTeK
    driver: nvidia v: 570.144 alternate: nouveau,nvidia_drm non-free: 550-570.xx+
    status: current (as of 2025-04; EOL~2026-12-xx) arch: Ampere code: GAxxx
    process: TSMC n7 (7nm) built: 2020-2023 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 8 link-max: gen: 4 speed: 16 GT/s lanes: 16 ports: active: none
    off: HDMI-A-1 empty: DP-1,eDP-1 bus-ID: 01:00.0 chip-ID: 10de:24a0
    class-ID: 0300
  Device-2: Advanced Micro Devices [AMD/ATI] Rembrandt [Radeon 680M]
    vendor: ASUSTeK driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x
    process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s lanes: 16
    ports: active: eDP-2 empty: DP-2, DP-3, DP-4, DP-5, DP-6, Writeback-1
    bus-ID: 06:00.0 chip-ID: 1002:1681 class-ID: 0300 temp: 57.0 C
  Display: wayland server: X.org v: 1.21.1.16 with: Xwayland v: 24.1.6
    compositors: 1: Hyprland v: 0.49.0-4-g60cd5b7a4 2: Sway v: 1.10.1 driver: X:
    loaded: amdgpu dri: radeonsi gpu: amdgpu,nvidia,nvidia-nvswitch
    display-ID: 1
  Monitor-1: HDMI-A-1 model: Sony TV 00 serial: <filter> built: 2019
    res: 3840x2160 dpi: 61 gamma: 1.2 size: 1600x900mm (62.99x35.43")
    diag: 1836mm (72.3") ratio: 16:9 modes: max: 3840x2160 min: 640x480
  Monitor-2: eDP-2 model: BOE Display 0x0a69 built: 2021 res: 2560x1440
    dpi: 171 gamma: 1.2 size: 381x214mm (15x8.43") diag: 437mm (17.2")
    ratio: 16:9 modes: max: 2560x1440 min: 640x480
  API: EGL v: 1.5 hw: drv: nvidia drv: amd radeonsi platforms: device: 0
    drv: nvidia device: 1 drv: radeonsi gbm: drv: kms_swrast surfaceless:
    drv: nvidia wayland: drv: radeonsi x11: drv: radeonsi
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: amd mesa v: 25.0.5-arch1.1
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon 680M (radeonsi rembrandt
    LLVM 19.1.7 DRM 3.61 6.14.6-arch1-1) device-ID: 1002:1681 memory: 500 MiB
    unified: no
  API: Vulkan v: 1.4.313 layers: 12 device: 0 type: integrated-gpu name: AMD
    Radeon 680M (RADV REMBRANDT) driver: mesa radv v: 25.0.5-arch1.1
    device-ID: 1002:1681 surfaces: N/A
  Info: Tools: api: eglinfo, glxinfo, vulkaninfo
    gpu: nvidia-settings,nvidia-smi wl: swaymsg,wdisplays x11: xprop,xrandr

This may have no relevance to the issue at all but I figured I should include that information just in case if it is.

Because of this setup, some vram is always used on the dGPU when a monitor is plugged into this port, even on sway, however the difference between Hyprland and sway is that the sway process consumes none of that vram whereas the Hyprland process consumes somewhere in the range of 100% of that vram (so when a display is plugged in on Hyprland roughly 2x the amount of vram gets used on the dGPU compared to when on sway)

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