On Sat, Nov 14, 2020 at 12:03:36AM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > When doing the plane state copy from the UV plane to the Y plane > let's just copy the hw state directly instead of using the original > uapi state. The UV plane has already had its uapi state copied into > its hw state, so this extra detour via the uapi state for the Y plane > is pointless. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_atomic_plane.c | 12 ++++++++++++ > drivers/gpu/drm/i915/display/intel_atomic_plane.h | 2 ++ > drivers/gpu/drm/i915/display/intel_display.c | 2 +- > 3 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c > index 3334ff253600..f47558efb3c2 100644 > --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c > +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c > @@ -265,6 +265,18 @@ void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state *plane_state, > plane_state->hw.scaling_filter = from_plane_state->uapi.scaling_filter; > } > > +void intel_plane_copy_hw_state(struct intel_plane_state *plane_state, > + const struct intel_plane_state *from_plane_state) > +{ > + intel_plane_clear_hw_state(plane_state); > + > + memcpy(&plane_state->hw, &from_plane_state->hw, > + sizeof(plane_state->hw)); > + > + if (plane_state->hw.fb) > + drm_framebuffer_get(plane_state->hw.fb); > +} > + > void intel_plane_set_invisible(struct intel_crtc_state *crtc_state, > struct intel_plane_state *plane_state) > { > diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.h b/drivers/gpu/drm/i915/display/intel_atomic_plane.h > index 59dd1fbb02ea..24a3a148aa62 100644 > --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.h > +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.h > @@ -25,6 +25,8 @@ unsigned int intel_plane_data_rate(const struct intel_crtc_state *crtc_state, > const struct intel_plane_state *plane_state); > void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state *plane_state, > const struct intel_plane_state *from_plane_state); > +void intel_plane_copy_hw_state(struct intel_plane_state *plane_state, > + const struct intel_plane_state *from_plane_state); > void intel_update_plane(struct intel_plane *plane, > const struct intel_crtc_state *crtc_state, > const struct intel_plane_state *plane_state); > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 03577ee5d9b7..62d96e6946e6 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -12754,7 +12754,7 @@ static int icl_check_nv12_planes(struct intel_crtc_state *crtc_state) > memcpy(linked_state->color_plane, plane_state->color_plane, > sizeof(linked_state->color_plane)); > > - intel_plane_copy_uapi_to_hw_state(linked_state, plane_state); > + intel_plane_copy_hw_state(linked_state, plane_state); > linked_state->uapi.src = plane_state->uapi.src; > linked_state->uapi.dst = plane_state->uapi.dst; > > -- > 2.26.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx