[Freedreno] [DPU PATCH v2 2/2] drm/msm: remove partial update support

Sean Paul seanpaul at chromium.org
Thu Mar 1 15:48:11 UTC 2018


On Tue, Feb 27, 2018 at 06:55:11PM -0800, Jeykumar Sankaran wrote:
> Implementation of partial update in DPU DRM is heavily
> dependent on custom properties and dsi hooks. Removing the
> support for now. We may need to revisit the support in the
> future.
> 
> Change-Id: Idd87272fe4d4c0a26fcb405154c0605af1edf1ba

Same comments regarding the commit message.

> Signed-off-by: Jeykumar Sankaran <jsanka at codeaurora.org>
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_connector.c  | 139 +------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_connector.h  |   7 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c       | 544 +------------------------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h       |  18 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c    | 277 ++++---------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c |   2 +
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h        |   8 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c  |  42 --
>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c      |  13 -
>  drivers/gpu/drm/msm/msm_drv.h                  |  56 ---
>  10 files changed, 89 insertions(+), 1017 deletions(-)
> 

<snip>

> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> index 289b9ff..bade72e 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
> @@ -2013,6 +2013,7 @@ static int dpu_dspp_parse_dt(struct device_node *np,
>  	if (rc)
>  		goto end;
>  
> +#ifdef CONFIG_DPU_AD4

This seems unrelated to the change?

Let's try to avoid introducing new "CONFIG_" values, unless we actually intend
on adding them to the Kconfig. If you want to remove something, just submit a
new patch to delete it (along with the bindings and everything else relating to
it). We can always reintroduce it as a new patch later.

Thanks!

Sean

>  	/* Parse AD dtsi entries */
>  	ad_prop_value = kcalloc(AD_PROP_MAX,
>  			sizeof(struct dpu_prop_value), GFP_KERNEL);
> @@ -2028,6 +2029,7 @@ static int dpu_dspp_parse_dt(struct device_node *np,
>  		ad_prop_exists, ad_prop_value);
>  	if (rc)
>  		goto end;
> +#endif
>  
>  	/* get DSPP feature dt properties if they exist */
>  	snp = of_get_child_by_name(np, dspp_prop[DSPP_BLOCKS].prop_name);
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
> index 62e7c5c..d11fb1d 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
> @@ -454,14 +454,6 @@ void dpu_kms_rect_intersect(const struct dpu_rect *r1,
>  		struct dpu_rect *result);
>  
>  /**
> - * dpu_kms_rect_merge_rectangles - merge a rectangle list into one rect
> - * @rois: pointer to the list of rois
> - * @result: output rectangle, all 0 on error
> - */
> -void dpu_kms_rect_merge_rectangles(const struct msm_roi_list *rois,
> -		struct dpu_rect *result);
> -
> -/**
>   * dpu_kms_rect_is_equal - compares two rects
>   * @r1: rect value to compare
>   * @r2: rect value to compare
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c
> index 006d7ad..40e0162 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c
> @@ -176,45 +176,3 @@ void dpu_kms_rect_intersect(const struct dpu_rect *r1,
>  	}
>  }
>  
> -void dpu_kms_rect_merge_rectangles(const struct msm_roi_list *rois,
> -		struct dpu_rect *result)
> -{
> -	struct drm_clip_rect clip;
> -	const struct drm_clip_rect *roi_rect;
> -	int i;
> -
> -	if (!rois || !result)
> -		return;
> -
> -	memset(result, 0, sizeof(*result));
> -
> -	/* init to invalid range maxes */
> -	clip.x1 = ~0;
> -	clip.y1 = ~0;
> -	clip.x2 = 0;
> -	clip.y2 = 0;
> -
> -	/* aggregate all clipping rectangles together for overall roi */
> -	for (i = 0; i < rois->num_rects; i++) {
> -		roi_rect = &rois->roi[i];
> -
> -		clip.x1 = min(clip.x1, roi_rect->x1);
> -		clip.y1 = min(clip.y1, roi_rect->y1);
> -		clip.x2 = max(clip.x2, roi_rect->x2);
> -		clip.y2 = max(clip.y2, roi_rect->y2);
> -
> -		DPU_DEBUG("roi%d (%d,%d),(%d,%d) -> crtc (%d,%d),(%d,%d)\n", i,
> -				roi_rect->x1, roi_rect->y1,
> -				roi_rect->x2, roi_rect->y2,
> -				clip.x1, clip.y1,
> -				clip.x2, clip.y2);
> -	}
> -
> -	if (clip.x2  && clip.y2) {
> -		result->x = clip.x1;
> -		result->y = clip.y1;
> -		result->w = clip.x2 - clip.x1;
> -		result->h = clip.y2 - clip.y1;
> -	}
> -}
> -
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> index 834dcc0..9e9c9d2 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> @@ -3243,7 +3243,6 @@ static int dpu_plane_sspp_atomic_update(struct drm_plane *plane,
>  	struct drm_crtc *crtc;
>  	struct drm_framebuffer *fb;
>  	struct dpu_rect src, dst;
> -	const struct dpu_rect *crtc_roi;
>  	bool q16_data = true;
>  	int idx;
>  
> @@ -3357,11 +3356,6 @@ static int dpu_plane_sspp_atomic_update(struct drm_plane *plane,
>  	_dpu_plane_sspp_atomic_check_mode_changed(pdpu, state,
>  								old_state);
>  
> -	/* re-program the output rects always in the case of partial update */
> -	dpu_crtc_get_crtc_roi(crtc->state, &crtc_roi);
> -	if (!dpu_kms_rect_is_null(crtc_roi))
> -		pstate->dirty |= DPU_PLANE_DIRTY_RECTS;
> -
>  	if (pstate->dirty & DPU_PLANE_DIRTY_RECTS)
>  		memset(&(pdpu->pipe_cfg), 0, sizeof(struct dpu_hw_pipe_cfg));
>  
> @@ -3399,13 +3393,6 @@ static int dpu_plane_sspp_atomic_update(struct drm_plane *plane,
>  			src.y &= ~0x1;
>  		}
>  
> -		/*
> -		 * adjust layer mixer position of the sspp in the presence
> -		 * of a partial update to the active lm origin
> -		 */
> -		dst.x -= crtc_roi->x;
> -		dst.y -= crtc_roi->y;
> -
>  		pdpu->pipe_cfg.src_rect = src;
>  		pdpu->pipe_cfg.dst_rect = dst;
>  
> diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
> index d8e090f..8574f30 100644
> --- a/drivers/gpu/drm/msm/msm_drv.h
> +++ b/drivers/gpu/drm/msm/msm_drv.h
> @@ -144,7 +144,6 @@ enum msm_mdp_crtc_property {
>  	CRTC_PROP_DRAM_IB,
>  	CRTC_PROP_ROT_PREFILL_BW,
>  	CRTC_PROP_ROT_CLK,
> -	CRTC_PROP_ROI_V1,
>  	CRTC_PROP_IDLE_TIMEOUT,
>  	CRTC_PROP_DEST_SCALER,
>  
> @@ -168,7 +167,6 @@ enum msm_mdp_conn_property {
>  	CONNECTOR_PROP_DST_Y,
>  	CONNECTOR_PROP_DST_W,
>  	CONNECTOR_PROP_DST_H,
> -	CONNECTOR_PROP_ROI_V1,
>  	CONNECTOR_PROP_BL_SCALE,
>  	CONNECTOR_PROP_AD_BL_SCALE,
>  
> @@ -228,38 +226,6 @@ enum msm_event_wait {
>  };
>  
>  /**
> - * struct msm_roi_alignment - region of interest alignment restrictions
> - * @xstart_pix_align: left x offset alignment restriction
> - * @width_pix_align: width alignment restriction
> - * @ystart_pix_align: top y offset alignment restriction
> - * @height_pix_align: height alignment restriction
> - * @min_width: minimum width restriction
> - * @min_height: minimum height restriction
> - */
> -struct msm_roi_alignment {
> -	uint32_t xstart_pix_align;
> -	uint32_t width_pix_align;
> -	uint32_t ystart_pix_align;
> -	uint32_t height_pix_align;
> -	uint32_t min_width;
> -	uint32_t min_height;
> -};
> -
> -/**
> - * struct msm_roi_caps - display's region of interest capabilities
> - * @enabled: true if some region of interest is supported
> - * @merge_rois: merge rois before sending to display
> - * @num_roi: maximum number of rois supported
> - * @align: roi alignment restrictions
> - */
> -struct msm_roi_caps {
> -	bool enabled;
> -	bool merge_rois;
> -	uint32_t num_roi;
> -	struct msm_roi_alignment align;
> -};
> -
> -/**
>   * struct msm_display_dsc_info - defines dsc configuration
>   * @version:                 DSC version.
>   * @scr_rev:                 DSC revision.
> @@ -427,7 +393,6 @@ struct msm_mode_info {
>   * @is_primary:         Set to true if display is primary display
>   * @is_te_using_watchdog_timer:  Boolean to indicate watchdog TE is
>   *				 used instead of panel TE in cmd mode panels
> - * @roi_caps:           Region of interest capability info
>   */
>  struct msm_display_info {
>  	int intf_type;
> @@ -446,27 +411,6 @@ struct msm_display_info {
>  
>  	bool is_primary;
>  	bool is_te_using_watchdog_timer;
> -	struct msm_roi_caps roi_caps;
> -};
> -
> -#define MSM_MAX_ROI	4
> -
> -/**
> - * struct msm_roi_list - list of regions of interest for a drm object
> - * @num_rects: number of valid rectangles in the roi array
> - * @roi: list of roi rectangles
> - */
> -struct msm_roi_list {
> -	uint32_t num_rects;
> -	struct drm_clip_rect roi[MSM_MAX_ROI];
> -};
> -
> -/**
> - * struct - msm_display_kickoff_params - info for display features at kickoff
> - * @rois: Regions of interest structure for mapping CRTC to Connector output
> - */
> -struct msm_display_kickoff_params {
> -	struct msm_roi_list *rois;
>  };
>  
>  /**
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS


More information about the Freedreno mailing list