drm/cirrus: Enable damage clipping on primary plane
authorThomas Zimmermann <tzimmermann@suse.de>
Wed, 15 Feb 2023 16:15:09 +0000 (17:15 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 13 Mar 2023 09:36:24 +0000 (10:36 +0100)
commit03e7ac67e743195633455d7ecb4f7327e3797986
treee2215d1fdeb18fe90b7a179355a8165580c59f6f
parentd99c028941b37c412f1de35c59d96ae547be2d0f
drm/cirrus: Enable damage clipping on primary plane

Enable damage clipping on the primary plane and iterate over small
areas of reported framebuffer damage. Avoid the overhead of permanent
full-screen updates that cirrus currently implements.

This problem is indicated by the warning

  drm_plane_enable_fb_damage_clips() not called

in the kernel's log. Without damage clipping, drivers do full updates
of the screen area. This is costly as many screen updates, such as
cursor movement or command-line input, only change a small portion
of the output. Damage clipping allows renderers to inform drivers about
the changed areas.

With the damage information known, cirrus now iterates over a list of
change areas and only flushes those to the hardware's scanout buffer.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230215161517.5113-10-tzimmermann@suse.de
drivers/gpu/drm/tiny/cirrus.c