]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
drm/atomic: Filter out redundant DPMS calls
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 19 Feb 2025 16:02:39 +0000 (18:02 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:31:52 +0000 (14:31 +0200)
commit70b8c6f7b061b4a362775cc7a724eee83175918b
treeca5c13420b518caf07b0c30225d3186c4dd9faee
parent18b5d857c6496b78ead2fd10001b81ae32d30cac
drm/atomic: Filter out redundant DPMS calls

commit de93ddf88088f7624b589d0ff3af9effb87e8f3b upstream.

Video players (eg. mpv) do periodic XResetScreenSaver() calls to
keep the screen on while the video playing. The modesetting ddx
plumbs these straight through into the kernel as DPMS setproperty
ioctls, without any filtering whatsoever. When implemented via
atomic these end up as empty commits on the crtc (which will
nonetheless take one full frame), which leads to a dropped
frame every time XResetScreenSaver() is called.

Let's just filter out redundant DPMS property changes in the
kernel to avoid this issue.

v2: Explain the resulting commits a bit better (Sima)
    Document the behaviour in uapi docs (Sima)

Cc: stable@vger.kernel.org
Testcase: igt/kms_flip/flip-vs-dpms-on-nop
Reviewed-by: Simona Vetter <simona.vetter@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250219160239.17502-1-ville.syrjala@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/drm_atomic_uapi.c
drivers/gpu/drm/drm_connector.c