-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
Bug: Samsung Smart TV (M50D) flickers on interaction — works fine under Sway
System Info
- Hyprland: 0.53.3-2
- Aquamarine: 0.10.0-2
- Kernel: 6.18.9-arch1-2
- GPU: Intel Raptor Lake-P Iris Xe Graphics (i915)
- Display: Samsung Smart M50D (32", 1920x1080@60Hz) via HDMI
- Secondary: Laptop eDP-1 (1920x1200@60Hz)
- Distro: Arch Linux
Description
Samsung Smart M50D connected via HDMI produces brief black flashes (screen blanks for ~0.2s then recovers) on any mouse click or window interaction. The issue is Hyprland-specific — the same hardware works perfectly under Sway 1.11 and in TTY (fbcon).
Reproduction
- Connect Samsung Smart M50D via HDMI to Intel Iris Xe
- Launch Hyprland
- Click anywhere on the Samsung display — screen briefly goes black and recovers
The flicker occurs on every click/interaction. It also happens when Samsung is the sole display (laptop screen disabled).
Key finding: Sway does not flicker
| Environment | Flickers? |
|---|---|
| TTY (fbcon) | No |
| Sway 1.11 | No |
| Hyprland 0.53.3 | Yes |
Same kernel, same driver, same cable, same HDMI port. The only variable is the compositor.
What was ruled out
Extensive testing was done to isolate the cause:
Hyprland settings (all tested at runtime, none helped):
decoration:blur:enabled falseanimations:enabled falsecursor:no_hardware_cursors truedebug:damage_tracking 0render:cm_enabled falserender:direct_scanout falsemisc:vfr false(persisted in config)misc:vrr 0
Aquamarine env vars (require restart, none helped):
AQ_NO_ATOMIC=1AQ_NO_MODIFIERS=1
Refresh rates tested: 60Hz, 59.94Hz, 50Hz — all flicker
Multi-monitor: Flickers even as the sole display (eDP-1 disabled)
EDID overrides (custom firmware EDID):
- Stripped deep color, ALLM, HDR10/PQ EOTF, BT2020 colorimetry, game content type flag, static metadata
- None of these resolved the flicker (expected, since Sway works with unmodified EDID)
Kernel params already set:
i915.enable_psr=0 i915.enable_fbc=0 i915.enable_dc=0
HDCP: Content Protection = Undesired (0), not active
Hardware: Different HDMI cables, different HDMI ports on the TV — same result. A different monitor (Xiaomi) works fine on the same setup with Hyprland.
DRM atomic trace
Enabled drm.debug=0x10 during a click. The atomic commits look normal — no errors, no unexpected modesets (ms 0):
drm_atomic_get_plane_state Added [PLANE:90:plane 1B] state
drm_atomic_get_crtc_state Added [CRTC:145:pipe B] state
drm_atomic_set_fb_for_plane Set [FB:307] for [PLANE:90:plane 1B]
drm_atomic_get_connector_state Added [CONNECTOR:271:HDMI-A-1] state
drm_atomic_helper_check_modeset Updating routing for [CONNECTOR:271:HDMI-A-1]
[CONNECTOR:271:HDMI-A-1] keeps [ENCODER:270:DDI B/PHY B], now on [CRTC:145:pipe B]
intel_plane_atomic_check_with_state [CRTC:145:pipe B] with [PLANE:90:plane 1B] visible 1 -> 1, off 0, on 0, ms 0
drm_atomic_nonblocking_commit committing nonblocking
Notable: connector state is included in every page-flip commit, triggering drm_atomic_helper_check_modeset every frame. Unclear if Sway/wlroots does the same.
Hyprland log during interaction
No errors during clicks — only cursor buffer imports and input debounce:
drm: Cursor buffer imported into KMS with id 292
drm: Cursor buffer imported into KMS with id 289
[libinput] Plugin:button-debounce - debounce state: ...
Startup log shows repeated Cannot commit when a page-flip is awaiting errors during initial modeset:
ERR from aquamarine ]: drm: Cannot commit when a page-flip is awaiting
DRM connector properties (via modetest)
Broadcast RGB: Automatic (0)
content type: Graphics (1)
Content Protection: Undesired (0)
max bpc: 8
Colorspace: Default (0)
HDR_OUTPUT_METADATA: (empty)
Hypothesis
The issue is likely in how Aquamarine handles DRM output for this Samsung TV compared to wlroots. Possible causes:
- Connector state or properties (e.g.,
content_type) included in atomic commits differently than wlroots - Different buffer/plane management triggering Samsung TV signal processing
- AVI InfoFrame differences that cause the TV to briefly re-negotiate
Monitor config
monitor=eDP-1,1920x1200@60,0x0,1.5
monitor=HDMI-A-1,1920x1080@60,1280x0,1