Corrupt vblank timestamps on HDMI 2.1 DSC output (4K@240) — frame scheduling breaks under niri

Open
#1,474 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
30/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
c, linux

Research direction

Start by locating the driver's vblank timestamp generation paths for HDMI 2.1 DSC and non-standard display timings; the issue does not name specific files or tests. Compare reported vblank intervals with the expected refresh intervals for the affected outputs, then check whether the eDP control case remains unaffected. Done means timestamps match the refresh interval and the reported tearing and scheduling warnings no longer occur.

Written by the indexing model from the issue text.

Description

System

  • GPU: RTX 4080 Laptop (open kernel modules 595.104.02)
  • Machine: MSI Vector 16 HX A13VHG
  • OS: NixOS, kernel 6.18.57
  • Compositor: niri 26.04 / niri-unstable-20261022 (both reproduce)

Symptom

On HDMI-A-3 (Microstep MPG272UX OLED, 3840x2160@240, DSC dual-slice), vblank timestamps reported to userspace are wildly incorrect — compositor observes vblank deltas of 1-4ms against an expected 4.166ms interval. Visual result: bottom half of screen shows stale/torn frames (scanline flicker).

Reproduction

  1. Connect 4K OLED via HDMI 2.1 at 240Hz (DSC engaged)
  2. Launch niri → niri::utils::vblank_throttle warnings appear within seconds:
    HDMI-A-3: expected refresh 4.166ms, got vblank after 1.562ms
    DP-4 ([email protected], non-standard timing): expected 8.333ms, got vblank after 2.713ms
    
  3. Drop HDMI-A-3 to [email protected] → warnings stop, picture clean

Notes

  • Same class of corruption on a [email protected] (non-standard CVT timing) DisplayPort output — expected 8.33ms, got 2.7ms.
  • Internal eDP-1 2560x1600@240 never affected.
  • Suspect DSC and/or non-standard timing paths in the driver's vblank timestamp generation.

Cross-filed at niri-wm/niri#4724 for compositor-side handling.

Dominant language
C
Stars
17.5k
Forks
1.9k
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from NVIDIA/open-gpu-kernel-modules

All issues in NVIDIA/open-gpu-kernel-modules

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.