[PATCH v2 00/16] Add CDM support for MSM writeback
Abhinav Kumar
quic_abhinavk at quicinc.com
Fri Dec 8 17:40:02 UTC 2023
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.
>>
>> 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
>>
>> --
>> 2.40.1
>>
>
>
More information about the dri-devel
mailing list