* Tomi Valkeinen tomi.valkeinen@ti.com [191119 05:42]:
On 19/11/2019 01:05, Tony Lindgren wrote:
- Sebastian Reichel sebastian.reichel@collabora.com [191117 07:11]:
We can simply use the atomic helper for handling the dirtyfb callback.
...
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c -void omap_crtc_flush(struct drm_crtc *crtc) +static void omap_crtc_flush(struct drm_crtc *crtc) { struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
- struct omap_crtc_state *omap_state = to_omap_crtc_state(crtc->state);
- if (!omap_state->manually_updated)
if (!delayed_work_pending(&omap_crtc->update_work)) schedule_delayed_work(&omap_crtc->update_work, 0);return;
It would be nice if omap_crtc_flush() would become just some generic void function with no need to pass it a crtc. I guess for that it should know what panels are in manual command mode to refresh them.
Proably still cannot be a void function, but seems like we need to call something outside omap_crtc.c.
The reason I'm bringing this up is because it looks like we need to also flush DSI command mode panels from omap_gem_op_finish() for gles and the gem code probably should not need to know anything about crtc, right?
We haven't had omap_gem_op_finish() in the kernel for some years now...
Shouldn't a normal page flip, or if doing single-buffering, using the dirtyfb ioctl, do the job?
It does not seem to happen with the old pvr-omap4 related patches and whatever gles related tests at least. If you have some idea where it should get called I can take a look at some point.
Regards,
Tony