From: Archit Taneja <architt@codeaurora.org>
To: robdclark@gmail.com
Cc: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
Archit Taneja <architt@codeaurora.org>
Subject: [PATCH 00/24] drm/msm/mdp5: Mixer virtualization and 4K plane support
Date: Thu, 23 Mar 2017 15:57:53 +0530 [thread overview]
Message-ID: <20170323102817.15017-1-architt@codeaurora.org> (raw)
This patchset enables dynamic assignment of Layer Mixer blocks to CRTCs
in order to support wide resolution modes and planes.
The approach is similar to what was done for decoupling MDP5 planes from
the hwpipes (SSPPs). We go further by letting a CRTC comprise of 2 Layer
Mixers, one to scanout the left half of the image, and other the right
half. The same thing is then done for drm_planes. I.e, a plane can be
tied to 2 hwpipes.
Doing this enables us to support wide planes, and support wider modes
(like HDMI 4K modes).
Here's a quick description of what the patches do:
Patches #1 to #7 do mostly preparation/clean-ups to decouple CRTCs and
Layer Mixers.
Patch #8 subclasses CRTC state so that we can add our custom state to
our CRTCs.
Patch #9 adds the method to assign a mixer to a CRTC. We add a global
atomic state object that tracks which mixers are assigned to which
CRTCs.
Patches #10 to #13 moves more things to CRTC state rather than being
assigned to mdp5_crtc.
Patches #14 and #15 update the mdp5_crtc.c and mdp5_ctl.c code to work
with 2 Layer Mixers, but without the support of wide planes.
Patches #16 to #18 updates mdp5_plane so that a drm_plane can comprise
comprise of 2 hwpipes.
Patches #19 to #21 complete the CRTC code to let 2 LMs stage 2 hwpipes.
Patch #22 updates the mixer assignment code so that a CRTC can be assigned
2 LMs.
Patches #23 and #24 make some updates in mdp5_ctl to let a display
pipeline comprise of 2 LMs.
A 4.11 branch on which we can try out the changes on a DB820c:
https://github.com/boddob/linux/tree/mixer_virt_v1_4.11
Archit Taneja (24):
drm/msm/mdp5: Bring back pipe_lock to mdp5_plane struct
drm/msm/mdp5: describe LM instances in mdp5_cfg
drm/msm/mdp5: Add structs for hw Layer Mixers
drm/msm/mdp5: Start using mdp5_hw_mixer
drm/msm/mdp5: Simplify LM <-> PP mapping
drm/msm/mdp5: Clean up interface assignment
drm/msm/mdp5: Remove the pipeline stuff in mdp5_ctl
drm/msm/mdp5: subclass CRTC state
drm/msm/mdp5: Prepare for dynamic assignment of mixers
drm/msm/mdp5: Assign INTF and CTL in encoder's atomic_check()
drm/msm/mdp5: Add more stuff to CRTC state
drm/msm/mdp5: Start using parameters from CRTC state
drm/msm/mdp5: Remove mixer/intf pointers from mdp5_ctl
drm/msm/mdp5: Add a CAP for Source Split
drm/msm/mdp5: Add optional 'right' Layer Mixer in CRTC state
drm/msm/mdp5: Create mdp5_hwpipe_mode_set
drm/msm/mdp5: Assign a 'right hwpipe' to plane state
drm/msm/mdp5: Configure 'right' hwpipe
drm/msm/mdp5: Prepare Layer Mixers for source split
drm/msm/mdp5: Stage right side hwpipes on Right-side Layer Mixer
drm/msm/mdp5: Stage border out on base stage if CRTC has 2 LMs
drm/msm/mdp5: Assign 'right' mixer to CRTC state
drm/msm/mdp5: Reset CTL blend registers before configuring them
drm/msm/mdp5: Enable 3D mux in mdp5_ctl
drivers/gpu/drm/msm/Makefile | 1 +
drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c | 81 +++++
drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h | 8 +
drivers/gpu/drm/msm/mdp/mdp5/mdp5_cmd_encoder.c | 30 +-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 454 +++++++++++++++++++-----
drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c | 192 ++++++----
drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.h | 21 +-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c | 66 ++--
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 121 +++++--
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 53 ++-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.c | 172 +++++++++
drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.h | 47 +++
drivers/gpu/drm/msm/mdp/mdp5/mdp5_pipe.c | 2 -
drivers/gpu/drm/msm/mdp/mdp5/mdp5_pipe.h | 1 -
drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 340 ++++++++++++------
drivers/gpu/drm/msm/mdp/mdp_kms.h | 6 +
16 files changed, 1256 insertions(+), 339 deletions(-)
create mode 100644 drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.c
create mode 100644 drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.h
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
next reply other threads:[~2017-03-23 10:28 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-23 10:27 Archit Taneja [this message]
2017-03-23 10:27 ` [PATCH 01/24] drm/msm/mdp5: Bring back pipe_lock to mdp5_plane struct Archit Taneja
2017-03-23 10:27 ` [PATCH 02/24] drm/msm/mdp5: describe LM instances in mdp5_cfg Archit Taneja
2017-03-23 10:27 ` [PATCH 03/24] drm/msm/mdp5: Add structs for hw Layer Mixers Archit Taneja
2017-03-23 10:27 ` [PATCH 04/24] drm/msm/mdp5: Start using mdp5_hw_mixer Archit Taneja
2017-03-23 10:27 ` [PATCH 05/24] drm/msm/mdp5: Simplify LM <-> PP mapping Archit Taneja
2017-03-23 10:27 ` [PATCH 06/24] drm/msm/mdp5: Clean up interface assignment Archit Taneja
2017-03-23 10:28 ` [PATCH 07/24] drm/msm/mdp5: Remove the pipeline stuff in mdp5_ctl Archit Taneja
2017-03-23 10:28 ` [PATCH 08/24] drm/msm/mdp5: subclass CRTC state Archit Taneja
2017-03-23 10:28 ` [PATCH 09/24] drm/msm/mdp5: Prepare for dynamic assignment of mixers Archit Taneja
2017-03-23 10:28 ` [PATCH 10/24] drm/msm/mdp5: Assign INTF and CTL in encoder's atomic_check() Archit Taneja
2017-03-23 10:28 ` [PATCH 11/24] drm/msm/mdp5: Add more stuff to CRTC state Archit Taneja
2017-03-23 10:28 ` [PATCH 12/24] drm/msm/mdp5: Start using parameters from " Archit Taneja
2017-03-23 10:28 ` [PATCH 13/24] drm/msm/mdp5: Remove mixer/intf pointers from mdp5_ctl Archit Taneja
2017-03-23 10:28 ` [PATCH 14/24] drm/msm/mdp5: Add a CAP for Source Split Archit Taneja
2017-03-23 10:28 ` [PATCH 15/24] drm/msm/mdp5: Add optional 'right' Layer Mixer in CRTC state Archit Taneja
2017-03-23 10:28 ` [PATCH 16/24] drm/msm/mdp5: Create mdp5_hwpipe_mode_set Archit Taneja
2017-03-23 10:28 ` [PATCH 17/24] drm/msm/mdp5: Assign a 'right hwpipe' to plane state Archit Taneja
2017-03-23 10:28 ` [PATCH 18/24] drm/msm/mdp5: Configure 'right' hwpipe Archit Taneja
2017-03-23 10:28 ` [PATCH 19/24] drm/msm/mdp5: Prepare Layer Mixers for source split Archit Taneja
2017-03-23 10:28 ` [PATCH 20/24] drm/msm/mdp5: Stage right side hwpipes on Right-side Layer Mixer Archit Taneja
2017-03-23 10:28 ` [PATCH 21/24] drm/msm/mdp5: Stage border out on base stage if CRTC has 2 LMs Archit Taneja
2017-03-23 10:28 ` [PATCH 22/24] drm/msm/mdp5: Assign 'right' mixer to CRTC state Archit Taneja
2017-03-23 10:28 ` [PATCH 23/24] drm/msm/mdp5: Reset CTL blend registers before configuring them Archit Taneja
2017-03-23 10:28 ` [PATCH 24/24] drm/msm/mdp5: Enable 3D mux in mdp5_ctl Archit Taneja
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170323102817.15017-1-architt@codeaurora.org \
--to=architt@codeaurora.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=robdclark@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).