[Freedreno] [PATCH v5 00/19] Add writeback block support for DPU
Abhinav Kumar
quic_abhinavk at quicinc.com
Mon Apr 25 00:31:51 UTC 2022
This series adds support for writeback block on DPU. Writeback
block is extremely useful to validate boards having no physical displays
in addition to many other use-cases where we want to get the output
of the display pipeline to examine whether issue is with the display
pipeline or with the panel.
These changes have been validated on SM8250 RB5 boards with IGT KMS
writeback test-suite thereby further increasing the IGT test coverage
for DPU. I am sharing the test results below.
root at linaro-developer:~/igt_repo/igt-gpu-tools/build/tests# ./kms_writeback
[ 35.066157] Console: switching to colour dummy device 80x25
[ 35.071964] [IGT] kms_writeback: executing
IGT-Version: 1.26-gae2eb9e1 (aarch64) (Linux: 5.16.0-rc2-62171-g132577e2697b aarch64)
[ 35.611418] [IGT] kms_writeback: starting subtest writeback-pixel-formats
Starting subtest: writeback-pixel-formats
[ 35.618528] [IGT] kms_writeback: starting subtest writeback-invalid-parameters
Subtest writeback-pixel-formats: SUCCESS (0.000s)
Starting subtest: writeback-invalid-parameters
Subtest writeback-invalid-parameters: SUCCESS (0.028s) 35.657437] [IGT] kms_writeback: starting subtest writeback-fb-id
Starting subtest: writeback-fb-id
Subtest writeback-fb-id: SUCCESS (0.030s)
[ 35.698957] [IGT] kms_writeback: starting subtest writeback-check-output
Starting subtest: writeback-check-output
[ 35.852834] [IGT] kms_writeback: exiting, ret=0
Subtest writeback-check-output: SUCCESS (0.142s)
[ 35.861291] Console: switching to colour frame buffer device 240x67
root at linaro-developer:~/igt_repo/igt-gpu-tools/build/tests#
The changes can easily be extended to support any other chipset using
the DPU driver by adding the support in the catalog.
Writeback block supports various formats and features. The support
for all of them can be incrementally added on top of this framework when
validation is improved and the test frameworks are extended to validate
them.
changes in v5:
- fix drm_writeback_connector_init_with_encoder() API doc as
suggested by Laurent
- fix encoder doc as suggested by Laurent
- drop https://patchwork.freedesktop.org/patch/483118/?series=99724&rev=4
and let individual drivers manage the encoder
Abhinav Kumar (19):
drm: allow passing possible_crtcs to drm_writeback_connector_init()
drm: introduce drm_writeback_connector_init_with_encoder() API
drm/msm/dpu: add writeback blocks to the sm8250 DPU catalog
drm/msm/dpu: add reset_intf_cfg operation for dpu_hw_ctl
drm/msm/dpu: rename dpu_hw_pipe_cdp_cfg to dpu_hw_cdp_cfg
drm/msm/dpu: add dpu_hw_wb abstraction for writeback blocks
drm/msm/dpu: add writeback blocks to DPU RM
drm/msm/dpu: add changes to support writeback in hw_ctl
drm/msm/dpu: add an API to reset the encoder related hw blocks
drm/msm/dpu: make changes to dpu_encoder to support virtual encoder
drm/msm/dpu: add encoder operations to prepare/cleanup wb job
drm/msm/dpu: move _dpu_plane_get_qos_lut to dpu_hw_util file
drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback
drm/msm/dpu: add the writeback connector layer
drm/msm/dpu: initialize dpu encoder and connector for writeback
drm/msm/dpu: gracefully handle null fb commits for writeback
drm/msm/dpu: add writeback blocks to the display snapshot
drm/msm/dpu: add wb_idx to existing DRM prints in dpu_encoder
drm/msm/dpu: add wb_idx to DRM traces in dpu_encoder
.../drm/arm/display/komeda/komeda_wb_connector.c | 4 +-
drivers/gpu/drm/arm/malidp_mw.c | 4 +-
drivers/gpu/drm/drm_writeback.c | 73 +-
drivers/gpu/drm/msm/Makefile | 3 +
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 9 +
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 306 +++++++--
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 22 +
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h | 50 ++
.../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 763 +++++++++++++++++++++
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 72 ++
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 66 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 82 ++-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 21 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c | 2 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.h | 18 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c | 25 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h | 19 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c | 279 ++++++++
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.h | 115 ++++
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 66 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 31 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 22 +
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 12 +
drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h | 26 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 76 ++
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h | 31 +
drivers/gpu/drm/rcar-du/rcar_du_writeback.c | 4 +-
drivers/gpu/drm/vc4/vc4_txp.c | 3 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 4 +-
include/drm/drm_writeback.h | 11 +-
30 files changed, 2091 insertions(+), 128 deletions(-)
create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c
create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.h
create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
create mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h
--
2.7.4
More information about the Freedreno
mailing list