On Wed, Feb 28, 2018 at 09:26:26AM -0500, Alex Deucher wrote:
> + dri-devel
> 
> 
> On Wed, Feb 28, 2018 at 4:33 AM, S, Shirish <shiris...@amd.com> wrote:
> > From: Shirish S <shiris...@amd.com>
> >
> > Add reverse iterator "for_each_oldnew_plane_in_state_reverse" to
> > complement "for_each_oldnew_plane_in_state" way of reading plane
> > states.
> >
> > The plane states are required to be read in reverse order for
> > amdgpu, as the z order convention followed in linux is
> > opposite to how the planes are supposed to be presented to DC
> > engine, which is in common to both windows and linux.
> >
> > Signed-off-by: Shirish S <shiris...@amd.com>
> > Signed-off-by: Pratik Vishwakarma <pratik.vishwaka...@amd.com>

Makes sense.
> > ---
> >  include/drm/drm_atomic.h | 22 ++++++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> >
> > diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
> > index cf13842..b947930 100644
> > --- a/include/drm/drm_atomic.h
> > +++ b/include/drm/drm_atomic.h
> > @@ -754,6 +754,28 @@ void drm_state_dump(struct drm_device *dev, struct 
> > drm_printer *p);
> >                               (new_plane_state) = 
> > (__state)->planes[__i].new_state, 1))
> >
> >  /**
> > + * for_each_oldnew_plane_in_state_reverse - iterate over all planes in an 
> > atomic
> > + * update in reverse order

Are you sure this renders correctly in kernel-doc? Iirc you have to indent
the continuation line.

Assuming this is fixed:

Reviewed-by: Daniel Vetter <daniel.vet...@ffwll.ch>

> > + * @__state: &struct drm_atomic_state pointer
> > + * @plane: &struct drm_plane iteration cursor
> > + * @old_plane_state: &struct drm_plane_state iteration cursor for the old 
> > state
> > + * @new_plane_state: &struct drm_plane_state iteration cursor for the new 
> > state
> > + * @__i: int iteration cursor, for macro-internal use
> > + *
> > + * This iterates over all planes in an atomic update in reverse order,
> > + * tracking both old and  new state. This is useful in places where the
> > + * state delta needs to be considered, for example in atomic check 
> > functions.
> > + */
> > +#define for_each_oldnew_plane_in_state_reverse(__state, plane, 
> > old_plane_state, new_plane_state, __i) \
> > +       (for ((__i) = ((__state)->dev->mode_config.num_total_plane - 1);    
> >     \
> > +            (__i) >= 0;                                                \
> > +            (__i)--)                                                   \
> > +               for_each_if ((__state)->planes[__i].ptr &&              \
> > +                            ((plane) = (__state)->planes[__i].ptr,     \
> > +                             (old_plane_state) = 
> > (__state)->planes[__i].old_state,\
> > +                             (new_plane_state) = 
> > (__state)->planes[__i].new_state, 1)))
> > +
> > +/**
> >   * for_each_old_plane_in_state - iterate over all planes in an atomic 
> > update
> >   * @__state: &struct drm_atomic_state pointer
> >   * @plane: &struct drm_plane iteration cursor
> > --
> > 2.7.4
> >
> > _______________________________________________
> > amd-gfx mailing list
> > amd-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> dri-devel mailing list
> dri-de...@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to