[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