mbox series

[00/12] Add writeback block support for DPU

Message ID 1644009445-17320-1-git-send-email-quic_abhinavk@quicinc.com
Headers show
Series Add writeback block support for DPU | expand

Message

Abhinav Kumar Feb. 4, 2022, 9:17 p.m. UTC
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@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@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.

Abhinav Kumar (12):
  drm/msm/dpu: add writeback blocks to the sm8250 DPU catalog
  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: 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

 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        | 241 +++++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h        |  25 +
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h   |  50 ++
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c   |   3 +-
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c   |   6 +-
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c    | 825 +++++++++++++++++++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c     |  73 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h     |  66 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c         |  65 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h         |  27 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c          | 267 +++++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.h          | 145 ++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c            |  67 ++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h            |   2 +
 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c             |  71 ++
 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h             |   2 +
 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c      |  71 ++
 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.h      |  27 +
 20 files changed, 2007 insertions(+), 38 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

Comments

Stephen Boyd March 3, 2022, 10:46 p.m. UTC | #1
Quoting Abhinav Kumar (2022-02-04 13:17:13)
> 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.

Is this series going to be resent?
Abhinav Kumar March 3, 2022, 11:40 p.m. UTC | #2
Hi Stephen

There is some discussion going on about the base dependency of the change:

https://patchwork.kernel.org/project/dri-devel/patch/20220202085429.22261-6-suraj.kandpal@intel.com/

I will resend this with comments addressed once the dependency is sorted 
out among intel, QC and laurent.

Thanks

Abhinav
On 3/3/2022 2:46 PM, Stephen Boyd wrote:
> Quoting Abhinav Kumar (2022-02-04 13:17:13)
>> 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.
> 
> Is this series going to be resent?