[RFCv1 33/42] drm/omap: dsi: use atomic helper for dirtyfb

Tony Lindgren tony at atomide.com
Tue Nov 19 14:32:43 UTC 2019


* Tomi Valkeinen <tomi.valkeinen at ti.com> [191119 05:42]:
> On 19/11/2019 01:05, Tony Lindgren wrote:
> > * Sebastian Reichel <sebastian.reichel at 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)
> > > -		return;
> > >   	if (!delayed_work_pending(&omap_crtc->update_work))
> > >   		schedule_delayed_work(&omap_crtc->update_work, 0);
> > 
> > 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


More information about the dri-devel mailing list