All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paloma Arellano <quic_parellan@quicinc.com>
To: <freedreno@lists.freedesktop.org>
Cc: Paloma Arellano <quic_parellan@quicinc.com>,
	<linux-arm-msm@vger.kernel.org>,
	<dri-devel@lists.freedesktop.org>, <robdclark@gmail.com>,
	<seanpaul@chromium.org>, <swboyd@chromium.org>,
	<dmitry.baryshkov@linaro.org>, <quic_abhinavk@quicinc.com>,
	<quic_jesszhan@quicinc.com>, <quic_khsieh@quicinc.com>,
	<marijn.suijten@somainline.org>, <neil.armstrong@linaro.org>
Subject: [PATCH 16/17] drm/msm/dpu: reserve CDM blocks for DP if mode is YUV420
Date: Thu, 25 Jan 2024 11:38:25 -0800	[thread overview]
Message-ID: <20240125193834.7065-17-quic_parellan@quicinc.com> (raw)
In-Reply-To: <20240125193834.7065-1-quic_parellan@quicinc.com>

Reserve CDM blocks for DP if the mode format is YUV420. Currently this
reservation only works for writeback and DP if the format is YUV420. But
this can be easily extented to other YUV formats for DP.

Signed-off-by: Paloma Arellano <quic_parellan@quicinc.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 99ec53446ad21..c7dcda3d54ae6 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -613,6 +613,7 @@ static int dpu_encoder_virt_atomic_check(
 	struct dpu_kms *dpu_kms;
 	struct drm_display_mode *adj_mode;
 	struct msm_display_topology topology;
+	struct msm_display_info *disp_info;
 	struct dpu_global_state *global_state;
 	struct drm_framebuffer *fb;
 	struct drm_dsc_config *dsc;
@@ -629,6 +630,7 @@ static int dpu_encoder_virt_atomic_check(
 	DPU_DEBUG_ENC(dpu_enc, "\n");
 
 	priv = drm_enc->dev->dev_private;
+	disp_info = &dpu_enc->disp_info;
 	dpu_kms = to_dpu_kms(priv->kms);
 	adj_mode = &crtc_state->adjusted_mode;
 	global_state = dpu_kms_get_global_state(crtc_state->state);
@@ -656,8 +658,8 @@ static int dpu_encoder_virt_atomic_check(
 	topology = dpu_encoder_get_topology(dpu_enc, dpu_kms, adj_mode, crtc_state, dsc);
 
 	/*
-	 * Use CDM only for writeback at the moment as other interfaces cannot handle it.
-	 * if writeback itself cannot handle cdm for some reason it will fail in its atomic_check()
+	 * Use CDM only for writeback or DP at the moment as other interfaces cannot handle it.
+	 * If writeback itself cannot handle cdm for some reason it will fail in its atomic_check()
 	 * earlier.
 	 */
 	if (dpu_enc->disp_info.intf_type == INTF_WB && conn_state->writeback_job) {
@@ -665,12 +667,15 @@ static int dpu_encoder_virt_atomic_check(
 
 		if (fb && DPU_FORMAT_IS_YUV(to_dpu_format(msm_framebuffer_format(fb))))
 			topology.needs_cdm = true;
-		if (topology.needs_cdm && !dpu_enc->cur_master->hw_cdm)
-			crtc_state->mode_changed = true;
-		else if (!topology.needs_cdm && dpu_enc->cur_master->hw_cdm)
-			crtc_state->mode_changed = true;
+	} else if (dpu_enc->disp_info.intf_type == INTF_DP) {
+		if (msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], adj_mode))
+			topology.needs_cdm = true;
 	}
 
+	if (topology.needs_cdm && !dpu_enc->cur_master->hw_cdm)
+		crtc_state->mode_changed = true;
+	else if (!topology.needs_cdm && dpu_enc->cur_master->hw_cdm)
+		crtc_state->mode_changed = true;
 	/*
 	 * Release and Allocate resources on every modeset
 	 * Dont allocate when active is false.
@@ -1111,7 +1116,8 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc,
 
 	dpu_enc->dsc_mask = dsc_mask;
 
-	if (dpu_enc->disp_info.intf_type == INTF_WB && conn_state->writeback_job) {
+	if ((dpu_enc->disp_info.intf_type == INTF_WB && conn_state->writeback_job) ||
+	    dpu_enc->disp_info.intf_type == INTF_DP) {
 		struct dpu_hw_blk *hw_cdm = NULL;
 
 		dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state,
-- 
2.39.2


WARNING: multiple messages have this Message-ID (diff)
From: Paloma Arellano <quic_parellan@quicinc.com>
To: <freedreno@lists.freedesktop.org>
Cc: neil.armstrong@linaro.org, marijn.suijten@somainline.org,
	linux-arm-msm@vger.kernel.org, quic_abhinavk@quicinc.com,
	dri-devel@lists.freedesktop.org, swboyd@chromium.org,
	seanpaul@chromium.org, quic_jesszhan@quicinc.com,
	dmitry.baryshkov@linaro.org,
	Paloma Arellano <quic_parellan@quicinc.com>,
	quic_khsieh@quicinc.com
Subject: [PATCH 16/17] drm/msm/dpu: reserve CDM blocks for DP if mode is YUV420
Date: Thu, 25 Jan 2024 11:38:25 -0800	[thread overview]
Message-ID: <20240125193834.7065-17-quic_parellan@quicinc.com> (raw)
In-Reply-To: <20240125193834.7065-1-quic_parellan@quicinc.com>

Reserve CDM blocks for DP if the mode format is YUV420. Currently this
reservation only works for writeback and DP if the format is YUV420. But
this can be easily extented to other YUV formats for DP.

Signed-off-by: Paloma Arellano <quic_parellan@quicinc.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 99ec53446ad21..c7dcda3d54ae6 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -613,6 +613,7 @@ static int dpu_encoder_virt_atomic_check(
 	struct dpu_kms *dpu_kms;
 	struct drm_display_mode *adj_mode;
 	struct msm_display_topology topology;
+	struct msm_display_info *disp_info;
 	struct dpu_global_state *global_state;
 	struct drm_framebuffer *fb;
 	struct drm_dsc_config *dsc;
@@ -629,6 +630,7 @@ static int dpu_encoder_virt_atomic_check(
 	DPU_DEBUG_ENC(dpu_enc, "\n");
 
 	priv = drm_enc->dev->dev_private;
+	disp_info = &dpu_enc->disp_info;
 	dpu_kms = to_dpu_kms(priv->kms);
 	adj_mode = &crtc_state->adjusted_mode;
 	global_state = dpu_kms_get_global_state(crtc_state->state);
@@ -656,8 +658,8 @@ static int dpu_encoder_virt_atomic_check(
 	topology = dpu_encoder_get_topology(dpu_enc, dpu_kms, adj_mode, crtc_state, dsc);
 
 	/*
-	 * Use CDM only for writeback at the moment as other interfaces cannot handle it.
-	 * if writeback itself cannot handle cdm for some reason it will fail in its atomic_check()
+	 * Use CDM only for writeback or DP at the moment as other interfaces cannot handle it.
+	 * If writeback itself cannot handle cdm for some reason it will fail in its atomic_check()
 	 * earlier.
 	 */
 	if (dpu_enc->disp_info.intf_type == INTF_WB && conn_state->writeback_job) {
@@ -665,12 +667,15 @@ static int dpu_encoder_virt_atomic_check(
 
 		if (fb && DPU_FORMAT_IS_YUV(to_dpu_format(msm_framebuffer_format(fb))))
 			topology.needs_cdm = true;
-		if (topology.needs_cdm && !dpu_enc->cur_master->hw_cdm)
-			crtc_state->mode_changed = true;
-		else if (!topology.needs_cdm && dpu_enc->cur_master->hw_cdm)
-			crtc_state->mode_changed = true;
+	} else if (dpu_enc->disp_info.intf_type == INTF_DP) {
+		if (msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], adj_mode))
+			topology.needs_cdm = true;
 	}
 
+	if (topology.needs_cdm && !dpu_enc->cur_master->hw_cdm)
+		crtc_state->mode_changed = true;
+	else if (!topology.needs_cdm && dpu_enc->cur_master->hw_cdm)
+		crtc_state->mode_changed = true;
 	/*
 	 * Release and Allocate resources on every modeset
 	 * Dont allocate when active is false.
@@ -1111,7 +1116,8 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc,
 
 	dpu_enc->dsc_mask = dsc_mask;
 
-	if (dpu_enc->disp_info.intf_type == INTF_WB && conn_state->writeback_job) {
+	if ((dpu_enc->disp_info.intf_type == INTF_WB && conn_state->writeback_job) ||
+	    dpu_enc->disp_info.intf_type == INTF_DP) {
 		struct dpu_hw_blk *hw_cdm = NULL;
 
 		dpu_rm_get_assigned_resources(&dpu_kms->rm, global_state,
-- 
2.39.2


  parent reply	other threads:[~2024-01-25 19:39 UTC|newest]

Thread overview: 186+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-25 19:38 [PATCH 00/17] Add support for CDM over DP Paloma Arellano
2024-01-25 19:38 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 01/17] drm/msm/dpu: allow dpu_encoder_helper_phys_setup_cdm to work for DP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:14   ` Dmitry Baryshkov
2024-01-25 21:14     ` Dmitry Baryshkov
2024-01-27  0:39     ` Paloma Arellano
2024-01-27  0:39       ` Paloma Arellano
2024-01-29  3:06       ` Abhinav Kumar
2024-01-29  3:06         ` Abhinav Kumar
2024-01-29  3:23         ` Dmitry Baryshkov
2024-01-29  3:23           ` Dmitry Baryshkov
2024-01-29  4:00           ` Abhinav Kumar
2024-01-29  4:00             ` Abhinav Kumar
2024-01-29  4:12             ` Dmitry Baryshkov
2024-01-29  4:12               ` Dmitry Baryshkov
2024-01-29  4:33               ` Abhinav Kumar
2024-01-29  4:33                 ` Abhinav Kumar
2024-01-29  5:12                 ` Dmitry Baryshkov
2024-01-29  5:12                   ` Dmitry Baryshkov
2024-01-29 23:06                   ` Paloma Arellano
2024-01-29 23:06                     ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 02/17] drm/msm/dpu: move dpu_encoder_helper_phys_setup_cdm to dpu_encoder Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:16   ` Dmitry Baryshkov
2024-01-25 21:16     ` Dmitry Baryshkov
2024-01-27  0:43     ` Paloma Arellano
2024-01-27  0:43       ` Paloma Arellano
2024-01-27  2:26       ` Dmitry Baryshkov
2024-01-27  2:26         ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 03/17] drm/msm/dp: rename wide_bus_en to wide_bus_supported Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:17   ` Dmitry Baryshkov
2024-01-25 21:17     ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 04/17] drm/msm/dp: store mode YUV420 information to be used by rest of DP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:20   ` Dmitry Baryshkov
2024-01-25 21:20     ` Dmitry Baryshkov
2024-01-27  0:48     ` Paloma Arellano
2024-01-27  0:48       ` Paloma Arellano
2024-01-27  2:29       ` Dmitry Baryshkov
2024-01-27  2:29         ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 05/17] drm/msm/dp: add an API to indicate if sink supports VSC SDP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:23   ` Dmitry Baryshkov
2024-01-25 21:23     ` Dmitry Baryshkov
2024-01-27  0:58     ` Paloma Arellano
2024-01-27  0:58       ` Paloma Arellano
2024-01-27  2:40       ` Dmitry Baryshkov
2024-01-27  2:40         ` Dmitry Baryshkov
2024-01-27  3:57         ` Abhinav Kumar
2024-01-27  3:57           ` Abhinav Kumar
2024-01-27  5:31           ` Dmitry Baryshkov
2024-01-27  5:31             ` Dmitry Baryshkov
2024-01-29 23:20         ` Paloma Arellano
2024-01-29 23:20           ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 06/17] drm/msm/dpu: move widebus logic to its own API Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:25   ` Dmitry Baryshkov
2024-01-25 21:25     ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 07/17] drm/msm/dpu: disallow widebus en in INTF_CONFIG2 when DP is YUV420 Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:26   ` Dmitry Baryshkov
2024-01-25 21:26     ` Dmitry Baryshkov
2024-01-27  5:42     ` Dmitry Baryshkov
2024-01-27  5:42       ` Dmitry Baryshkov
2024-01-28  5:16     ` Paloma Arellano
2024-01-28  5:16       ` Paloma Arellano
2024-01-28  5:33       ` Dmitry Baryshkov
2024-01-28  5:33         ` Dmitry Baryshkov
2024-01-29 23:51         ` Abhinav Kumar
2024-01-29 23:51           ` Abhinav Kumar
2024-01-30  0:03           ` Dmitry Baryshkov
2024-01-30  0:03             ` Dmitry Baryshkov
2024-01-30  1:07             ` Abhinav Kumar
2024-01-30  1:07               ` Abhinav Kumar
2024-01-30  1:43               ` Dmitry Baryshkov
2024-01-30  1:43                 ` Dmitry Baryshkov
2024-01-30  4:10                 ` Abhinav Kumar
2024-01-30  4:10                   ` Abhinav Kumar
2024-01-30  5:28                   ` Dmitry Baryshkov
2024-01-30  5:28                     ` Dmitry Baryshkov
2024-01-30  6:03                     ` Abhinav Kumar
2024-01-30  6:03                       ` Abhinav Kumar
2024-01-25 19:38 ` [PATCH 08/17] drm/msm/dp: change YUV420 related programming for DP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:29   ` Dmitry Baryshkov
2024-01-25 21:29     ` Dmitry Baryshkov
2024-01-28  5:18     ` Paloma Arellano
2024-01-28  5:18       ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 09/17] drm/msm/dp: move parity calculation to dp_catalog Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:32   ` Dmitry Baryshkov
2024-01-25 21:32     ` Dmitry Baryshkov
2024-01-28  5:18     ` Paloma Arellano
2024-01-28  5:18       ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 10/17] drm/msm/dp: modify dp_catalog_hw_revision to show major and minor val Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 22:07   ` Dmitry Baryshkov
2024-01-25 22:07     ` Dmitry Baryshkov
2024-01-28  5:30     ` Paloma Arellano
2024-01-28  5:30       ` Paloma Arellano
2024-01-28  5:35       ` Dmitry Baryshkov
2024-01-28  5:35         ` Dmitry Baryshkov
2024-01-27 23:43   ` kernel test robot
2024-01-27 23:43     ` kernel test robot
2024-01-28 14:02   ` kernel test robot
2024-01-28 14:02     ` kernel test robot
2024-01-25 19:38 ` [PATCH 11/17] drm/msm/dp: add VSC SDP support for YUV420 over DP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:48   ` Dmitry Baryshkov
2024-01-25 21:48     ` Dmitry Baryshkov
2024-01-28  5:34     ` Paloma Arellano
2024-01-28  5:34       ` Paloma Arellano
2024-01-28  5:39       ` Dmitry Baryshkov
2024-01-28  5:39         ` Dmitry Baryshkov
2024-02-01  1:56         ` Abhinav Kumar
2024-02-01  1:56           ` Abhinav Kumar
2024-02-01  4:36           ` Dmitry Baryshkov
2024-02-01  4:36             ` Dmitry Baryshkov
2024-02-02  6:25             ` Abhinav Kumar
2024-01-25 19:38 ` [PATCH 12/17] drm/msm/dpu: add support of new peripheral flush mechanism Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:49   ` Dmitry Baryshkov
2024-01-25 21:49     ` Dmitry Baryshkov
2024-01-28  5:40     ` Paloma Arellano
2024-01-28  5:40       ` Paloma Arellano
2024-01-28  5:42       ` Dmitry Baryshkov
2024-01-28  5:42         ` Dmitry Baryshkov
2024-02-08 23:09         ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 13/17] drm/msm/dp: enable SDP and SDE periph flush update Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:50   ` Dmitry Baryshkov
2024-01-25 21:50     ` Dmitry Baryshkov
2024-01-28  5:42     ` Paloma Arellano
2024-01-28  5:42       ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 14/17] drm/msm/dpu: modify encoder programming for CDM over DP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:57   ` Dmitry Baryshkov
2024-01-25 21:57     ` Dmitry Baryshkov
2024-01-28  5:48     ` Paloma Arellano
2024-01-28  5:48       ` Paloma Arellano
2024-01-28  5:55       ` Dmitry Baryshkov
2024-01-28  5:55         ` Dmitry Baryshkov
2024-01-29  2:58         ` Abhinav Kumar
2024-01-29  2:58           ` Abhinav Kumar
2024-01-29  3:42           ` Dmitry Baryshkov
2024-01-29  3:42             ` Dmitry Baryshkov
2024-01-29  5:03             ` Abhinav Kumar
2024-01-29  5:03               ` Abhinav Kumar
2024-01-29  6:12               ` Dmitry Baryshkov
2024-01-29  6:12                 ` Dmitry Baryshkov
2024-01-29  7:08                 ` Abhinav Kumar
2024-01-29  7:08                   ` Abhinav Kumar
2024-01-29 23:44                   ` Dmitry Baryshkov
2024-01-29 23:44                     ` Dmitry Baryshkov
2024-02-01  1:30                     ` Abhinav Kumar
2024-02-01  1:30                       ` Abhinav Kumar
2024-02-01  3:17                       ` Dmitry Baryshkov
2024-02-01  3:17                         ` Dmitry Baryshkov
2024-02-01 19:01                         ` Abhinav Kumar
2024-01-25 19:38 ` [PATCH 15/17] drm/msm/dpu: allow certain formats for CDM for DP Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 21:58   ` Dmitry Baryshkov
2024-01-25 21:58     ` Dmitry Baryshkov
2024-02-08 23:19     ` Paloma Arellano
2024-01-25 19:38 ` Paloma Arellano [this message]
2024-01-25 19:38   ` [PATCH 16/17] drm/msm/dpu: reserve CDM blocks for DP if mode is YUV420 Paloma Arellano
2024-01-25 22:01   ` Dmitry Baryshkov
2024-01-25 22:01     ` Dmitry Baryshkov
2024-01-28  5:48     ` Paloma Arellano
2024-01-28  5:48       ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 17/17] drm/msm/dp: allow YUV420 mode for DP connector when VSC SDP supported Paloma Arellano
2024-01-25 19:38   ` Paloma Arellano
2024-01-25 22:05   ` Dmitry Baryshkov
2024-01-25 22:05     ` Dmitry Baryshkov
2024-01-29  3:17     ` Abhinav Kumar
2024-01-29  3:17       ` Abhinav Kumar
2024-01-29  3:52       ` Dmitry Baryshkov
2024-01-29  3:52         ` Dmitry Baryshkov
2024-01-29  4:30         ` Abhinav Kumar
2024-01-29  4:30           ` Abhinav Kumar
2024-01-29  5:05           ` Dmitry Baryshkov
2024-01-29  5:05             ` Dmitry Baryshkov
2024-01-29  5:36             ` Abhinav Kumar
2024-01-29  5:36               ` Abhinav Kumar

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=20240125193834.7065-17-quic_parellan@quicinc.com \
    --to=quic_parellan@quicinc.com \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=neil.armstrong@linaro.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_jesszhan@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=robdclark@gmail.com \
    --cc=seanpaul@chromium.org \
    --cc=swboyd@chromium.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.