Thomas Zimmermann <tzimmerm...@suse.de> writes: > The vblank timer simulates a vblank interrupt for hardware without > support. Rate-limits the display update frequency. > > DRM drivers for hardware without vblank support apply display updates > ASAP. A vblank event informs DRM clients of the completed update. > > Userspace compositors immediately schedule the next update, which > creates significant load on virtualization outputs. Display updates > are usually fast on virtualization outputs, as their framebuffers are > in regular system memory and there's no hardware vblank interrupt to > throttle the update rate. > > The vblank timer is a HR timer that signals the vblank in software. > It limits the update frequency of a DRM driver similar to a hardware > vblank interrupt. The timer is not synchronized to the actual vblank > interval of the display. > > The code has been adopted from vkms, which added the funtionality > in commit 3a0709928b17 ("drm/vkms: Add vblank events simulated by > hrtimers"). > > The new implementation is part of the existing vblank support, > which sets up the timer automatically. Drivers only have to start > and cancel the vblank timer as part of enabling and disabling the > CRTC. The new vblank helper library provides callbacks for struct > drm_crtc_funcs. > > The standard way for handling vblank is to call drm_crtc_handle_vblank(). > Drivers that require additional processing, such as vkms, can init > handle_vblank_timeout in struct drm_crtc_helper_funcs to refer to > their timeout handler. > > v2: > - implement vblank timer entirely in vblank helpers > - downgrade overrun warning to debug > - fix docs > > Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de> > Tested-by: Louis Chauvet <louis.chau...@bootlin.com> > Reviewed-by: Louis Chauvet <louis.chau...@bootlin.com> > ---
Reviewed-by: Javier Martinez Canillas <javi...@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat