[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