[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