public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/21] drm/msm/dpu: Add Concurrent Writeback Support for DPU 10.x+
@ 2024-08-29 20:48 Jessica Zhang
  2024-08-29 20:48 ` [PATCH 01/21] drm: add clone mode check for CRTC Jessica Zhang
                   ` (20 more replies)
  0 siblings, 21 replies; 59+ messages in thread
From: Jessica Zhang @ 2024-08-29 20:48 UTC (permalink / raw)
  To: Rob Clark, Dmitry Baryshkov, quic_abhinavk, Sean Paul,
	Marijn Suijten, David Airlie, Daniel Vetter, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann
  Cc: quic_ebharadw, linux-arm-msm, dri-devel, freedreno, linux-kernel,
	Rob Clark, Jessica Zhang

DPU supports a single writeback session running concurrently with primary
display when the CWB mux is configured properly. This series enables
clone mode for DPU driver and adds support for programming the CWB mux
in cases where the hardware has dedicated CWB pingpong blocks. Currently,
the CWB hardware blocks have only been added to the SM8650
hardware catalog.

This changes are split into two parts:

The first part of the series will pull in Dmitry's patches to refactor
the DPU resource manager to be based off of CRTC instead of encoder.
This includes some changes (noted in the relevant commits) by me and
Abhinav to fix some issues with getting the global state and refactoring
the CDM allocation to work with Dmitry's changes.

The second part of the series will add support for CWB by doing the
following:

1) Add a DRM helper to detect if the current CRTC state is in clone mode
   and add an "in_clone_mode" entry to the atomic state print
2) Add the CWB mux to the hardware catalog and clarify the pingpong
   block index enum to specifiy which pingpong blocks are dedicated to
   CWB only and which ones are general use pingpong blocks
3) Add CWB as part of the devcoredump
4) Add support for configuring the CWB mux via dpu_hw_wb ops
5) Add pending flush support for CWB
6) Add support for validating clone mode in the DPU CRTC and setting up
   CWB within the encoder
7) Adjust the encoder trigger flush, trigger start, and kickoff order to
   accomodate clone mode
8) Adjust when the frame done timer is started for clone mode
9) Define the possible clones for DPU encoders so that 

The feature was tested on SM8650 using IGT's kms_writeback test with the
following change [1] and dumping the writeback framebuffer when in clone
mode. I haven't gotten the chance to test it on DP yet, but I've
validated both single and dual LM on DSI.

To test CWB with IGT, you'll need to apply this series [1] and run
the following command:

IGT_FRAME_DUMP_PATH=<dump path> FRAME_PNG_FILE_NAME=<file name> \
./build/tests/kms_writeback [--run-subtest dump-valid-clones] \
-dc <primary display mode>

[1] https://patchwork.freedesktop.org/series/137933/

---
Dmitry Baryshkov (4):
      drm/msm/dpu: get rid of struct dpu_rm_requirements
      drm/msm/dpu: switch RM to use crtc_id rather than enc_id for allocation
      drm/msm/dpu: move resource allocation to CRTC
      drm/msm/dpu: fill CRTC resources in dpu_crtc.c

Esha Bharadwaj (3):
      drm/msm/dpu: add CWB entry to catalog for SM8650
      drm/msm/dpu: add devcoredumps for cwb registers
      drm/msm/dpu: add CWB support to dpu_hw_wb

Jessica Zhang (14):
      drm: add clone mode check for CRTC
      drm: print clone mode status in atomic state
      drm/msm/dpu: Check CRTC encoders are valid clones
      drm/msm/dpu: Add RM support for allocating CWB
      drm/msm/dpu: Add CWB to msm_display_topology
      drm/msm/dpu: Require modeset if clone mode status changes
      drm/msm/dpu: Reserve resources for CWB
      drm/msm/dpu: Configure CWB in writeback encoder
      drm/msm/dpu: Program hw_ctl to support CWB
      drm/msm/dpu: Adjust writeback phys encoder setup for CWB
      drm/msm/dpu: Start frame done timer after encoder kickoff
      drm/msm/dpu: Skip trigger flush and start for CWB
      drm/msm/dpu: Reorder encoder kickoff for CWB
      drm/msm/dpu: Set possible clones for all encoders

 drivers/gpu/drm/drm_atomic.c                       |   1 +
 .../drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h    |  29 +-
 .../gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h |   4 +-
 .../gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h |   4 +-
 .../drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h   |   4 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c           | 253 ++++++++++++++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c        | 358 ++++++++++++---------
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h        |  36 ++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h   |  18 +-
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c    |  67 +++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h     |  13 +
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c         |  30 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h         |  14 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h        |  14 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.c          |  69 +++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_wb.h          |  34 ++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c            |  12 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h            |  12 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c             | 351 ++++++++++++--------
 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h             |  14 +-
 drivers/gpu/drm/msm/msm_drv.h                      |   2 +
 include/drm/drm_crtc.h                             |   7 +
 22 files changed, 994 insertions(+), 352 deletions(-)
---
base-commit: dd482072df04d3c2bb180fc860b0ed0d3c99bdd4
change-id: 20240618-concurrent-wb-97d62387f952

Best regards,
-- 
Jessica Zhang <quic_jesszhan@quicinc.com>


^ permalink raw reply	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2024-09-06 17:59 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-29 20:48 [PATCH 00/21] drm/msm/dpu: Add Concurrent Writeback Support for DPU 10.x+ Jessica Zhang
2024-08-29 20:48 ` [PATCH 01/21] drm: add clone mode check for CRTC Jessica Zhang
2024-08-29 20:48 ` [PATCH 02/21] drm: print clone mode status in atomic state Jessica Zhang
2024-08-30 16:38   ` Dmitry Baryshkov
2024-08-30 19:42     ` Jessica Zhang
2024-08-29 20:48 ` [PATCH 03/21] drm/msm/dpu: get rid of struct dpu_rm_requirements Jessica Zhang
2024-08-29 20:48 ` [PATCH 04/21] drm/msm/dpu: switch RM to use crtc_id rather than enc_id for allocation Jessica Zhang
2024-08-29 20:48 ` [PATCH 05/21] drm/msm/dpu: move resource allocation to CRTC Jessica Zhang
2024-08-30 16:42   ` Dmitry Baryshkov
2024-08-30 17:01     ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 06/21] drm/msm/dpu: fill CRTC resources in dpu_crtc.c Jessica Zhang
2024-08-29 20:48 ` [PATCH 07/21] drm/msm/dpu: Check CRTC encoders are valid clones Jessica Zhang
2024-08-30 17:00   ` Dmitry Baryshkov
2024-09-03 22:18     ` Jessica Zhang
2024-09-04 18:41       ` Dmitry Baryshkov
2024-09-04 19:23         ` Ville Syrjälä
2024-08-29 20:48 ` [PATCH 08/21] drm/msm/dpu: add CWB entry to catalog for SM8650 Jessica Zhang
2024-08-30 17:13   ` Dmitry Baryshkov
2024-09-03 22:20     ` Jessica Zhang
2024-08-29 20:48 ` [PATCH 09/21] drm/msm/dpu: add devcoredumps for cwb registers Jessica Zhang
2024-08-30 17:02   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 10/21] drm/msm/dpu: add CWB support to dpu_hw_wb Jessica Zhang
2024-08-30 17:41   ` Dmitry Baryshkov
2024-09-03 22:22     ` Jessica Zhang
2024-08-29 20:48 ` [PATCH 11/21] drm/msm/dpu: Add RM support for allocating CWB Jessica Zhang
2024-08-30 17:18   ` Dmitry Baryshkov
2024-08-30 19:28     ` Jessica Zhang
2024-08-30 22:16       ` Dmitry Baryshkov
2024-09-04  1:04         ` Jessica Zhang
2024-09-05 13:30           ` Dmitry Baryshkov
2024-09-06 16:53             ` Jessica Zhang
2024-09-06 17:58               ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 12/21] drm/msm/dpu: Add CWB to msm_display_topology Jessica Zhang
2024-08-30 17:21   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 13/21] drm/msm/dpu: Require modeset if clone mode status changes Jessica Zhang
2024-08-30 17:22   ` Dmitry Baryshkov
2024-09-02 13:36   ` Daniel Vetter
2024-09-02 19:20     ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 14/21] drm/msm/dpu: Reserve resources for CWB Jessica Zhang
2024-08-30 17:25   ` Dmitry Baryshkov
2024-08-30 20:28     ` Jessica Zhang
2024-08-30 22:27       ` Dmitry Baryshkov
2024-09-04 22:15         ` Jessica Zhang
2024-08-29 20:48 ` [PATCH 15/21] drm/msm/dpu: Configure CWB in writeback encoder Jessica Zhang
2024-08-30 17:47   ` Dmitry Baryshkov
2024-08-30 20:28     ` Jessica Zhang
2024-08-30 22:57       ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 16/21] drm/msm/dpu: Program hw_ctl to support CWB Jessica Zhang
2024-08-30 17:29   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 17/21] drm/msm/dpu: Adjust writeback phys encoder setup for CWB Jessica Zhang
2024-08-30 17:30   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 18/21] drm/msm/dpu: Start frame done timer after encoder kickoff Jessica Zhang
2024-08-30 17:31   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 19/21] drm/msm/dpu: Skip trigger flush and start for CWB Jessica Zhang
2024-08-30 17:33   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 20/21] drm/msm/dpu: Reorder encoder kickoff " Jessica Zhang
2024-08-30 17:35   ` Dmitry Baryshkov
2024-08-29 20:48 ` [PATCH 21/21] drm/msm/dpu: Set possible clones for all encoders Jessica Zhang
2024-08-30 17:39   ` Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox