[PATCH v2 00/16] Add CDM support for MSM writeback

Dmitry Baryshkov dmitry.baryshkov at linaro.org
Fri Dec 8 20:49:48 UTC 2023


On Fri, 8 Dec 2023 at 19:40, Abhinav Kumar <quic_abhinavk at quicinc.com> wrote:
>
>
>
> On 12/8/2023 4:14 AM, Dmitry Baryshkov wrote:
> > On Fri, 8 Dec 2023 at 07:06, Abhinav Kumar <quic_abhinavk at quicinc.com> wrote:
> >>
> >> Chroma Down Sampling (CDM) block is a hardware block in the DPU pipeline
> >> which among other things has a CSC block that can convert RGB input
> >> from the DPU to YUV data.
> >
> > This block is more or less standard between all hw versions. I do not
> > expect any faults and/or issues with any of the platforms.
> >  From what I can see, from the platforms that we do not support, it is
> > not available only on sm6115/qcs4290, qcm2290 and sm6375. Can we
> > please enable it for all the other platforms?
> >
>
> Its just a validation criteria. I have only enabled it on devices which
> I have tested on and do not want to take responsibilty of the bugs
> reported on untested chipsets.
>
> I am open to the approach of publishing a follow-up RFT for the other
> devices like you did for WB on some of the chipsets.

Sure, why not. We will be able to test it on most of the high-end platforms.
Maybe after validating it on the majority of the platforms, we can
enable it on the rest of the platforms 'by extension'. I mean, unlike
WB or VIG blocks I don't see drastic changes for CDM.

>
> >>
> >> This block can be used with either HDMI, DP or writeback interface.
> >>
> >> In this series, lets first add the support for CDM block to be used
> >> with writeback and then follow-up with support for other interfaces such
> >> as DP.
> >>
> >> This was validated by adding support to pass custom output format to the
> >> IGT's kms_writeback test-case, specifically only for the output dump
> >> test-case [1].
> >>
> >> The usage for this is:
> >>
> >> ./kms_writeback -d -f <name of the DRM YUV fmt from igt_fb>
> >>
> >> So for NV12, this can be verified with the below command:
> >>
> >> ./kms_writeback -d -f NV12
> >>
> >> [1] : https://patchwork.freedesktop.org/series/122125/
> >>
> >> changes in v2:
> >>          - rebased on top of current msm-next-lumag
> >>          - fix commit text of some of the patches
> >>          - move csc matrices to dpu_hw_util as they span across DPU
> >>          - move cdm blk define to dpu_hw_catalog as its common across chipsets
> >>          - remove bit magic in dpu_hw_cdm with relevant defines
> >>          - use drmm_kzalloc instead of kzalloc/free
> >>          - protect bind_pingpong_blk with core_rev check
> >>          - drop setup_csc_data() and setup_cdwn() ops as they
> >>            are merged into enable()
> >>          - protect bind_pingpong_blk with core_rev check
> >>          - drop setup_csc_data() and setup_cdwn() ops as they
> >>            are merged into enable()
> >>          - move needs_cdm to topology struct
> >>          - call update_pending_flush_cdm even when bind_pingpong_blk
> >>            is not present
> >>          - drop usage of setup_csc_data() and setup_cdwn() cdm ops
> >>            as they both have been merged into enable()
> >>          - drop reduntant hw_cdm and hw_pp checks
> >>          - drop fb related checks from dpu_encoder::atomic_mode_set()
> >>          - introduce separate wb2_format arrays for rgb and yuv
> >>
> >> Abhinav Kumar (16):
> >>    drm/msm/dpu: add formats check for writeback encoder
> >>    drm/msm/dpu: rename dpu_encoder_phys_wb_setup_cdp to match its
> >>      functionality
> >>    drm/msm/dpu: fix writeback programming for YUV cases
> >>    drm/msm/dpu: move csc matrices to dpu_hw_util
> >>    drm/msm/dpu: add cdm blocks to sc7280 dpu_hw_catalog
> >>    drm/msm/dpu: add cdm blocks to sm8250 dpu_hw_catalog
> >>    drm/msm/dpu: add dpu_hw_cdm abstraction for CDM block
> >>    drm/msm/dpu: add cdm blocks to RM
> >>    drm/msm/dpu: add support to allocate CDM from RM
> >>    drm/msm/dpu: add CDM related logic to dpu_hw_ctl layer
> >>    drm/msm/dpu: add support to disable CDM block during encoder cleanup
> >>    drm/msm/dpu: add an API to setup the CDM block for writeback
> >>    drm/msm/dpu: plug-in the cdm related bits to writeback setup
> >>    drm/msm/dpu: reserve cdm blocks for writeback in case of YUV output
> >>    drm/msm/dpu: introduce separate wb2_format arrays for rgb and yuv
> >>    drm/msm/dpu: add cdm blocks to dpu snapshot
> >>
> >>   drivers/gpu/drm/msm/Makefile                  |   1 +
> >>   .../msm/disp/dpu1/catalog/dpu_10_0_sm8650.h   |   4 +-
> >>   .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h    |   5 +-
> >>   .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h    |   4 +-
> >>   .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h    |   5 +-
> >>   .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h    |   4 +-
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c   |  37 +++
> >>   .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h  |   5 +
> >>   .../drm/msm/disp/dpu1/dpu_encoder_phys_wb.c   | 117 +++++++-
> >>   .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c    |  47 ++-
> >>   .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h    |  13 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c    | 276 ++++++++++++++++++
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h    | 114 ++++++++
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c    |  35 +++
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h    |  12 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h   |   7 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c   |  71 +++++
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h   |   8 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c     |   3 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c       |   4 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h       |   1 +
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     |  39 +--
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c        |  51 +++-
> >>   drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h        |   2 +
> >>   drivers/gpu/drm/msm/msm_drv.h                 |   2 +
> >>   25 files changed, 815 insertions(+), 52 deletions(-)
> >>   create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c
> >>   create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h

-- 
With best wishes
Dmitry


More information about the Freedreno mailing list