[Intel-gfx] [PATCH 12/19] drm/msm: Use new atomic iterator macros
Ville Syrjälä
ville.syrjala at linux.intel.com
Thu Nov 3 16:37:06 UTC 2016
On Mon, Oct 17, 2016 at 02:37:11PM +0200, Maarten Lankhorst wrote:
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> ---
> drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 4 ++--
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 6 +++---
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 3 ++-
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 4 ++--
> drivers/gpu/drm/msm/msm_atomic.c | 16 ++++++++--------
> 5 files changed, 17 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c
> index 571a91ee9607..d18d0a0e0a35 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c
> +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c
> @@ -113,7 +113,7 @@ static void mdp4_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *st
> mdp4_enable(mdp4_kms);
>
> /* see 119ecb7fd */
> - for_each_crtc_in_state(state, crtc, crtc_state, i)
> + for_each_new_crtc_in_state(state, crtc, crtc_state, i)
> drm_crtc_vblank_get(crtc);
> }
>
> @@ -125,7 +125,7 @@ static void mdp4_complete_commit(struct msm_kms *kms, struct drm_atomic_state *s
> struct drm_crtc_state *crtc_state;
>
> /* see 119ecb7fd */
> - for_each_crtc_in_state(state, crtc, crtc_state, i)
> + for_each_new_crtc_in_state(state, crtc, crtc_state, i)
> drm_crtc_vblank_put(crtc);
post-swap, but crtc_state not used in either. So lgtm.
I wonder if you should go all in and try to rename all the foo_state variables
as new_foo_state and old_foo_state to make sure you didn't miss any uses which
might not agree with your new choice if iterator macro? Eg. if in this
case crtc_state was actually used but you failed notice it you would have
just broken something by using the _new_ iterator.
>
> mdp4_disable(mdp4_kms);
> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
> index ed7143d35b25..7cfeb0455039 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
> @@ -82,10 +82,10 @@ static void mdp5_complete_commit(struct msm_kms *kms, struct drm_atomic_state *s
> int i;
> struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> struct drm_plane *plane;
> - struct drm_plane_state *plane_state;
> + struct drm_plane_state *old_state, *new_state;
>
> - for_each_plane_in_state(state, plane, plane_state, i)
> - mdp5_plane_complete_commit(plane, plane_state);
> + for_each_oldnew_plane_in_state(state, plane, old_state, new_state, i)
> + mdp5_plane_complete_commit(plane, old_state, new_state);
>
> mdp5_disable(mdp5_kms);
> }
> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
> index 03738927be10..90e80619fc54 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
> @@ -198,7 +198,8 @@ void mdp5_irq_domain_fini(struct mdp5_kms *mdp5_kms);
> uint32_t mdp5_plane_get_flush(struct drm_plane *plane);
> void mdp5_plane_complete_flip(struct drm_plane *plane);
> void mdp5_plane_complete_commit(struct drm_plane *plane,
> - struct drm_plane_state *state);
> + struct drm_plane_state *old_state,
> + struct drm_plane_state *new_state);
> enum mdp5_pipe mdp5_plane_pipe(struct drm_plane *plane);
> struct drm_plane *mdp5_plane_init(struct drm_device *dev,
> enum mdp5_pipe pipe, bool private_plane,
> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> index 951c002b05df..19c44b968f4e 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> @@ -859,13 +859,13 @@ uint32_t mdp5_plane_get_flush(struct drm_plane *plane)
>
> /* called after vsync in thread context */
> void mdp5_plane_complete_commit(struct drm_plane *plane,
> - struct drm_plane_state *state)
> + struct drm_plane_state *old_state, struct drm_plane_state *new_state)
> {
> struct mdp5_kms *mdp5_kms = get_kms(plane);
> struct mdp5_plane *mdp5_plane = to_mdp5_plane(plane);
> enum mdp5_pipe pipe = mdp5_plane->pipe;
>
> - if (!plane_enabled(plane->state) && mdp5_kms->smp) {
> + if (!plane_enabled(new_state) && mdp5_kms->smp) {
> DBG("%s: free SMP", mdp5_plane->name);
> mdp5_smp_release(mdp5_kms->smp, pipe);
> }
Doesn't look like this guy actually needs the old state. Not sure why it
was getting passed in. The replacement for plane->state looks correct
nonetheless.
> diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c
> index db193f835298..333c379e6561 100644
> --- a/drivers/gpu/drm/msm/msm_atomic.c
> +++ b/drivers/gpu/drm/msm/msm_atomic.c
> @@ -89,8 +89,8 @@ static void msm_atomic_wait_for_commit_done(struct drm_device *dev,
> struct msm_kms *kms = priv->kms;
> int i;
>
> - for_each_crtc_in_state(old_state, crtc, crtc_state, i) {
> - if (!crtc->state->enable)
> + for_each_new_crtc_in_state(old_state, crtc, crtc_state, i) {
> + if (!crtc_state->enable)
> continue;
post-swap, lgtm.
>
> /* Legacy cursor ioctls are completely unsynced, and userspace
> @@ -191,7 +191,7 @@ int msm_atomic_commit(struct drm_device *dev,
> struct drm_crtc *crtc;
> struct drm_crtc_state *crtc_state;
> struct drm_plane *plane;
> - struct drm_plane_state *plane_state;
> + struct drm_plane_state *new_plane_state, *old_plane_state;
> int i, ret;
>
> ret = drm_atomic_helper_prepare_planes(dev, state);
> @@ -207,18 +207,18 @@ int msm_atomic_commit(struct drm_device *dev,
> /*
> * Figure out what crtcs we have:
> */
> - for_each_crtc_in_state(state, crtc, crtc_state, i)
> + for_each_new_crtc_in_state(state, crtc, crtc_state, i)
> c->crtc_mask |= drm_crtc_mask(crtc);
>
> /*
> * Figure out what fence to wait for:
> */
> - for_each_plane_in_state(state, plane, plane_state, i) {
> - if ((plane->state->fb != plane_state->fb) && plane_state->fb) {
> - struct drm_gem_object *obj = msm_framebuffer_bo(plane_state->fb, 0);
> + for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) {
> + if (old_plane_state->fb != new_plane_state->fb && new_plane_state->fb) {
> + struct drm_gem_object *obj = msm_framebuffer_bo(new_plane_state->fb, 0);
> struct msm_gem_object *msm_obj = to_msm_bo(obj);
>
> - plane_state->fence = reservation_object_get_excl_rcu(msm_obj->resv);
> + new_plane_state->fence = reservation_object_get_excl_rcu(msm_obj->resv);
> }
pre-swap, lgtm.
Patches 08-12
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> }
>
> --
> 2.7.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list