On Tue Mar 17, 2026 at 6:45 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?
>>
>> Working (patch reverted)
>>
>> resource mapping:
>> pingpong=# # 68 # - - - - - - - - -
>> mixer=# - 68 # - - - -
>> ctl=68 # # # - - - -
>> dspp=# - - - - - - -
>> dsc=68 - - - - - - -
>> cdm=#
>> sspp=# - - - - - - - # # # - - - - -
>> cwb=- - - -
>>
>>
>> Broken (with the patch)
>>
>> resource mapping:
>> pingpong=# # 68 68 - - - - - - - - -
>> mixer=# - 68 68 - - - -
>> ctl=68 # # # - - - -
>> dspp=# - - - - - - -
>> dsc=68 - - - - - - -
>> cdm=#
>> sspp=# - - - - - - - # # # - - - - -
>> cwb=- - - -
>
> As we have identified that the issue is what downstream calls
> DUALPIPE_3DMERGE_DSC topology, could you please also check several
> things (with the broken kernel):
>
> - What is being returned by dpu_encoder_helper_get_3d_blend_mode() (in
> the broken config)?
>
> - If there is any difference in working and broken configs between
> values being passed to (and programmed to the DSC) in
> dpu_encoder_prep_dsc() ?
>
> - The same question for pclk calculation in dsi_host.c
Is this helpful?
Broken:
[ 1.247165] dsi_calc_pclk:649 DBG pclk=111546490, bclk=83659867
[ 1.490559] dpu_encoder_helper_get_3d_blend_mode:309 DBG BLEND_3D_H_ROW_INT
[ 1.491008] dpu_encoder_prep_dsc:2061 DBG dsc_common_mode=0 initial_lines=1
Working:
[ 0.998043] dsi_calc_pclk:649 DBG pclk=111546490, bclk=83659867
[ 1.233836] dpu_encoder_helper_get_3d_blend_mode:313 DBG BLEND_3D_NONE
[ 1.234277] dpu_encoder_prep_dsc:2061 DBG dsc_common_mode=0 initial_lines=1
Or do you need some more things? There's a lot of data being passed into
dpu_encoder_dsc_pipe_cfg() for example so I'm not sure which values are
relevant for this.
Regards
Luca