> -----Original Message-----
> From: dri-devel [mailto:[email protected]] On Behalf
> Of Daniel Vetter
> Sent: Monday, January 23, 2017 3:55 AM
> To: Grodzovsky, Andrey <[email protected]>
> Cc: Deucher, Alexander <[email protected]>;
> [email protected]; [email protected]; dri-
> [email protected]; [email protected]
> Subject: Re: [PATCH 1/4] drm/atomic: Save flip flags in drm_plane_state
>
> On Mon, Jan 16, 2017 at 10:44:55AM -0500, Andrey Grodzovsky wrote:
> > Allows using atomic flip helpers for drivers using ASYNC flip.
> > Remove ASYNC_FLIP restriction in helpers and caches the page flip
> > flags in drm_plane_state to be used in the low level drivers.
> >
> > Signed-off-by: Andrey Grodzovsky <[email protected]>
>
> It's mostly guesswork, but I think we should have the flip flags in the crtc,
> not
> in each plane. Similar to how we move the event from planes to crtc.
> -Daniel
What does ASYNC flip mean? HW flip as soon as possible and result in tearing
on screen? If so I could imaging some use case where you have some UI
control/menu overlay on top, and some game running on a underlay plane, and the
game want to be able to flip as soon as possible. Or Daniel do you think ASYNC
property will apply to all planes in CRTC?
>
> > ---
> > drivers/gpu/drm/drm_atomic_helper.c | 10 +++-------
> > include/drm/drm_plane.h | 8 ++++++++
> > 2 files changed, 11 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_atomic_helper.c
> > b/drivers/gpu/drm/drm_atomic_helper.c
> > index a4e5477..f83dc43 100644
> > --- a/drivers/gpu/drm/drm_atomic_helper.c
> > +++ b/drivers/gpu/drm/drm_atomic_helper.c
> > @@ -2737,7 +2737,8 @@ static int page_flip_common(
> > struct drm_atomic_state *state,
> > struct drm_crtc *crtc,
> > struct drm_framebuffer *fb,
> > - struct drm_pending_vblank_event *event)
> > + struct drm_pending_vblank_event *event,
> > + uint32_t flags)
> > {
> > struct drm_plane *plane = crtc->primary;
> > struct drm_plane_state *plane_state; @@ -2754,6 +2755,7 @@ static
> > int page_flip_common(
> > if (IS_ERR(plane_state))
> > return PTR_ERR(plane_state);
> >
> > + plane_state->pflip_flags = flags;
> >
> > ret = drm_atomic_set_crtc_for_plane(plane_state, crtc);
> > if (ret != 0)
> > @@ -2800,9 +2802,6 @@ int drm_atomic_helper_page_flip(struct drm_crtc
> *crtc,
> > struct drm_atomic_state *state;
> > int ret = 0;
> >
> > - if (flags & DRM_MODE_PAGE_FLIP_ASYNC)
> > - return -EINVAL;
> > -
> > state = drm_atomic_state_alloc(plane->dev);
> > if (!state)
> > return -ENOMEM;
> > @@ -2865,9 +2864,6 @@ int drm_atomic_helper_page_flip_target(
> > struct drm_crtc_state *crtc_state;
> > int ret = 0;
> >
> > - if (flags & DRM_MODE_PAGE_FLIP_ASYNC)
> > - return -EINVAL;
> > -
> > state = drm_atomic_state_alloc(plane->dev);
> > if (!state)
> > return -ENOMEM;
> > diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index
> > db3bbde..86d8ffc 100644
> > --- a/include/drm/drm_plane.h
> > +++ b/include/drm/drm_plane.h
> > @@ -122,6 +122,14 @@ struct drm_plane_state {
> > */
> > bool visible;
> >
> > +
> > + /**
> > + * @pflip_flags:
> > + *
> > + * Flip related config options
> > + */
> > + u32 pflip_flags;
> > +
> > struct drm_atomic_state *state;
> > };
> >
> > --
> > 1.9.1
> >
> > _______________________________________________
> > dri-devel mailing list
> > [email protected]
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
> _______________________________________________
> dri-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel