[PATCH] drm/msm/dpu: set preferred mode for writeback connector

Dmitry Baryshkov dmitry.baryshkov at linaro.org
Thu Jun 16 08:36:06 UTC 2022


On 16/06/2022 02:23, Abhinav Kumar wrote:
> After [1] was merged to IGT, we use either the first supported
> mode in the list OR the preferred mode to determine the primary
> plane to use for the sub-test due to the IGT API [2].
> 
> Since writeback does not set any preferred mode, this was
> selecting 4k as that was the first entry in the list.
> 
> We use maxlinewidth to add the list of supported modes for
> the writeback connector which is the right thing to do, however
> since we do not have dual-SSPP support yet for DPU, this fails
> the bandwidth check in dpu_core_perf_crtc_check().
> 
> Till we have dual-SSPP support, workaround this mismatch between
> the list of supported modes and maxlinewidth limited modes by
> marking 640x480 as the preferred mode for DPU writeback because
> kms_writeback tests 640x480 mode only [3].

Telling that we support modes up to 4k, failing to set 4k mode and then 
using the preferred mode to force IGT to lower resolution sounds like a 
hack.

As adding wide dual-SSPP support will take some time. I'd suggest 
dropping support for 4k modes for now and using DEFAULT_DPU_LINE_WIDTH 
instead (or hw_wb->caps->maxlinewidth). A comment in the source code 
that the check should be removed/modified once dual-SSPP is supported 
would be helpful.


> [1]: https://patchwork.freedesktop.org/patch/486441/
> [2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/blob/master/lib/igt_kms.c#L1562
> [3]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/blob/master/tests/kms_writeback.c#L68
> 
> Signed-off-by: Abhinav Kumar <quic_abhinavk at quicinc.com>

Any Fixes tags?

> ---
>   drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
> index 399115e4e217..104cc59d6466 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
> @@ -10,9 +10,14 @@ static int dpu_wb_conn_get_modes(struct drm_connector *connector)
>   	struct drm_device *dev = connector->dev;
>   	struct msm_drm_private *priv = dev->dev_private;
>   	struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
> +	int count;
>   
> -	return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_linewidth,
> +	count = drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_linewidth,
>   			dev->mode_config.max_height);
> +
> +	drm_set_preferred_mode(connector, 640, 480);
> +
> +	return count;
>   }
>   
>   static const struct drm_connector_funcs dpu_wb_conn_funcs = {


-- 
With best wishes
Dmitry


More information about the dri-devel mailing list