On Mon Mar 16, 2026 at 8:54 PM CET, Dmitry Baryshkov wrote:
> On Mon, Mar 16, 2026 at 10:08:47AM +0100, Luca Weiss wrote:
>> Hi Dmitry,
>>
>> On Fri Mar 13, 2026 at 6:14 PM CET, Dmitry Baryshkov wrote:
>> > On Fri, Mar 13, 2026 at 09:33:18AM +0100, Luca Weiss wrote:
>> >> Hi Mahadevan,
>> >>
>> >> On Thu Jan 1, 2026 at 6:04 AM CET, Mahadevan P wrote:
>> >> > On SC7280 targets, display modes with a width greater than the
>> >> > max_mixer_width (2400) are rejected during mode validation when
>> >> > merge3d is disabled. This limitation exists because, without a
>> >> > 3D merge block, two layer mixers cannot be combined(non-DSC interface),
>> >> > preventing large layers from being split across mixers. As a result,
>> >> > higher resolution modes cannot be supported.
>> >> >
>> >> > Enable merge3d support on SC7280 to allow combining streams from
>> >> > two layer mixers into a single non-DSC interface. This capability
>> >> > removes the width restriction and enables buffer sizes beyond the
>> >> > 2400-pixel limit.
>> >> >
>> >> > Fixes: 591e34a091d1 ("drm/msm/disp/dpu1: add support for display for
>> >> > SC7280 target")
>> >> > Signed-off-by: Mahadevan P <[email protected]>
>> >>
>> >> This patch is causing display regression on QCM6490 fairphone-fp5.
>> >>
>> >> With this patch in 7.0-rc3 (or 6.18.16) there's just pink noise on the
>> >> screen. When reverting this patch everything becomes working again.
>> >>
>> >> See also
>> >> https://salsa.debian.org/Mobian-team/devices/kernels/qcom-linux/-/issues/41
>> >>
>> >> @Dmitry: Can we revert this for later 7.0-rc, in case it's not fixed
>> >> quickly?
>> >
>> > Could you please provide the resource allocation parts of
>> > debugfs/dri/0/state for both working and non-working cases?
>>
>> Broken (with the patch)
>
>> resource mapping:
>> pingpong=# # 68 68 - - - - - - - - -
>> mixer=# - 68 68 - - - -
>> ctl=68 # # # - - - -
>> dspp=# - - - - - - -
>> dsc=68 - - - - - - -
>> cdm=#
>> sspp=# - - - - - - - # # # - - - - -
>> cwb=- - - -
>
> I see. It tries to use two mixers with a single DSC. What about someting
> as simple as:
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index 0f4921b1a892..cbb7caa194c1 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -1410,7 +1410,8 @@ static struct msm_display_topology
> dpu_crtc_get_topology(
> topology.num_lm = 2;
> else if (topology.num_dsc == 2)
> topology.num_lm = 2;
> - else if (dpu_kms->catalog->caps->has_3d_merge)
> + else if (dpu_kms->catalog->caps->has_3d_merge &&
> + topology.num_dsc == 0)
> topology.num_lm = (mode->hdisplay > MAX_HDISPLAY_SPLIT) ? 2 : 1;
> else
> topology.num_lm = 1;
Thanks Dmitry, this also resolves the issue!
Tested-by: Luca Weiss <[email protected]> # qcm6490-fairphone-fp5
Regards
Luca