Hi Maxime and Dave, Thank you for the patch. On Mon, Feb 07, 2022 at 05:34:59PM +0100, Maxime Ripard wrote: > From: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > > The drm_plane_create_zpos_property() function asks for an initial value, > and will set the associated plane state variable with that value if a > state is present. > > However, that function is usually called at a time where there's no > state yet. Since the drm_plane_state reset helper doesn't take care of > reading that value when it's called, it means that in most cases the > initial value will be 0, or the drivers will have to work around it. > > Let's add some code in __drm_atomic_helper_plane_state_reset() to get > the initial zpos value if the property has been attached in order to fix > this. > > Signed-off-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> Looks reasonable. Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_atomic_state_helper.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c > index ddcf5c2c8e6a..1412cee404ca 100644 > --- a/drivers/gpu/drm/drm_atomic_state_helper.c > +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > @@ -243,11 +243,22 @@ EXPORT_SYMBOL(drm_atomic_helper_crtc_destroy_state); > void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *plane_state, > struct drm_plane *plane) > { > + u64 val; > + > plane_state->plane = plane; > plane_state->rotation = DRM_MODE_ROTATE_0; > > plane_state->alpha = DRM_BLEND_ALPHA_OPAQUE; > plane_state->pixel_blend_mode = DRM_MODE_BLEND_PREMULTI; > + > + if (plane->zpos_property) { > + if (!drm_object_property_get_default_value(&plane->base, > + plane->zpos_property, > + &val)) { > + plane_state->zpos = val; > + plane_state->normalized_zpos = val; > + } > + } > } > EXPORT_SYMBOL(__drm_atomic_helper_plane_state_reset); > -- Regards, Laurent Pinchart