On Fri, 8 Dec 2023 at 19:40, Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx> wrote: > > > > On 12/8/2023 4:14 AM, Dmitry Baryshkov wrote: > > On Fri, 8 Dec 2023 at 07:06, Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx> 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