Description
The following proof-of-concept commit replaces the timer-based capturing of screen data with using the VBLANK interrupt to trigger the update. It patches the a64_linux
kernel to never disable the interrupt and adds a specific lx_emul function (lX_emul_framebuffer_vblank()
) that is executed in the interrupt handler. The handler is called every ~26ms.
This was also reproduced with the pc_intel_fb_drv
where the interrupt occurred every ~16ms when only one display was used and at varying intervals when multiple displays were connected.
So for less invasive (and properly accounting for mutiple displays) vblank handling we could look at how to profit from the drm_crtc_handle_vblank()
call and how to enable the interrupt from the user's side of things.