[Intel-gfx] [PATCH 01/23] drm/i915: Copy the plane hw state directly for Y planes
Lisovskiy, Stanislav
stanislav.lisovskiy at intel.com
Tue Nov 17 09:19:00 UTC 2020
On Sat, Nov 14, 2020 at 12:03:36AM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 at linux.intel.com>
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy at intel.com>
> ---
> 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list