diff mbox series

drm/msm/dpu: limit wb modes based on max_mixer_width

Message ID 1655407606-21760-1-git-send-email-quic_abhinavk@quicinc.com (mailing list archive)
State New, archived
Headers show
Series drm/msm/dpu: limit wb modes based on max_mixer_width | expand

Commit Message

Abhinav Kumar June 16, 2022, 7:26 p.m. UTC
As explained in [1], using max_linewidth to limit the modes
does not seem to remove 4K modes on chipsets such as
sm8250 where the max_linewidth actually supports 4k.

This would have been alright if dual SSPP support was
present but otherwise fails the per SSPP bandwidth check.

The ideal way to implement this would be to filter out
the modes which will exceed the bandwidth check by computing
it.

But this would be an exhaustive solution till we have
dual SSPP support.

Let's instead use max_mixer_width to limit the modes.

max_mixer_width still remains 2560 on sm8250 so even if
the max_linewidth is 4096, the only way 4k modes could have
been supported is to have source split enabled on the SSPP.

Since source split support is not enabled yet in DPU driver,
enforce max_mixer_width as the upper limit on the modes.

[1] https://patchwork.freedesktop.org/patch/489662/

Fixes: e67dcecda06f ("drm/msm/dpu: limit writeback modes according to max_linewidth")
Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Dmitry Baryshkov June 17, 2022, 5:58 p.m. UTC | #1
On 16/06/2022 22:26, Abhinav Kumar wrote:
> As explained in [1], using max_linewidth to limit the modes
> does not seem to remove 4K modes on chipsets such as
> sm8250 where the max_linewidth actually supports 4k.
> 
> This would have been alright if dual SSPP support was
> present but otherwise fails the per SSPP bandwidth check.
> 
> The ideal way to implement this would be to filter out
> the modes which will exceed the bandwidth check by computing
> it.
> 
> But this would be an exhaustive solution till we have
> dual SSPP support.
> 
> Let's instead use max_mixer_width to limit the modes.
> 
> max_mixer_width still remains 2560 on sm8250 so even if
> the max_linewidth is 4096, the only way 4k modes could have
> been supported is to have source split enabled on the SSPP.
> 
> Since source split support is not enabled yet in DPU driver,
> enforce max_mixer_width as the upper limit on the modes.
> 
> [1] https://patchwork.freedesktop.org/patch/489662/
> 
> Fixes: e67dcecda06f ("drm/msm/dpu: limit writeback modes according to max_linewidth")
> Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
index 399115e4e217..2fd787079f9b 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
@@ -11,7 +11,14 @@  static int dpu_wb_conn_get_modes(struct drm_connector *connector)
 	struct msm_drm_private *priv = dev->dev_private;
 	struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
 
-	return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_linewidth,
+	/*
+	 * We should ideally be limiting the modes only to the maxlinewidth but
+	 * on some chipsets this will allow even 4k modes to be added which will
+	 * fail the per SSPP bandwidth checks. So, till we have dual-SSPP support
+	 * and source split support added lets limit the modes based on max_mixer_width
+	 * as 4K modes can then be supported.
+	 */
+	return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_mixer_width,
 			dev->mode_config.max_height);
 }