public inbox for drm-ai-reviews@public-inbox.freedesktop.org
 help / color / mirror / Atom feed
From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
To: Rob Clark <robin.clark@oss.qualcomm.com>,
	Dmitry Baryshkov <lumag@kernel.org>,
	Abhinav Kumar <abhinav.kumar@linux.dev>,
	Jessica Zhang <jesszhan0024@gmail.com>,
	Sean Paul <sean@poorly.run>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Akhil P Oommen <akhilpo@oss.qualcomm.com>
Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
	freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Subject: [PATCH v5 21/28] drm/msm/dpu: invert the order of UBWC checks
Date: Wed, 20 May 2026 17:51:28 +0300	[thread overview]
Message-ID: <20260520-ubwc-rework-v5-21-72f2749bc807@oss.qualcomm.com> (raw)
In-Reply-To: <20260520-ubwc-rework-v5-0-72f2749bc807@oss.qualcomm.com>

Unlike other drivers, the DPU driver checks for exact UBWC version,
making it hard to add minor versions if necessary. Invert the order of
UBWC checks, letting the DPU driver handle new minors transparently.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c | 36 ++++++++++++++---------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c
index 6089a58074ac..b5e50fc1916f 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.c
@@ -310,35 +310,35 @@ void dpu_hw_setup_format_impl(struct dpu_sw_pipe *pipe, const struct msm_format
 
 	if (fmt->fetch_mode != MDP_FETCH_LINEAR) {
 		u32 hbb = ctx->ubwc->highest_bank_bit - 13;
-		u32 ctrl_val;
+		u32 ctrl_val = 0;
 
 		if (MSM_FORMAT_IS_UBWC(fmt))
 			opmode |= MDSS_MDP_OP_BWC_EN;
 		src_format |= (fmt->fetch_mode & 3) << 30; /*FRAME_FORMAT */
 
-		if (ctx->ubwc->ubwc_enc_version == UBWC_1_0) {
+		if (ctx->ubwc->ubwc_enc_version > UBWC_6_0) {
+			DRM_WARN_ONCE("Unsupported UBWC version %x\n", ctx->ubwc->ubwc_enc_version);
+		} else if (ctx->ubwc->ubwc_enc_version >= UBWC_5_0) {
+			if (!MSM_FORMAT_IS_YUV(fmt)) {
+				ctrl_val = BIT(30);
+				if (!MSM_FORMAT_IS_DX(fmt)) /* and not FP16, but it's unsupported */
+					ctrl_val |= BIT(31);
+			}
+			/* SDE also sets bits for lossy formats, but we don't support them yet */
+		} else if (ctx->ubwc->ubwc_enc_version >= UBWC_4_0) {
+			ctrl_val = MSM_FORMAT_IS_YUV(fmt) ? 0 : BIT(30);
+		} else if (ctx->ubwc->ubwc_enc_version >= UBWC_3_0) {
+			ctrl_val = BIT(30) | qcom_ubwc_swizzle(ctx->ubwc) | (hbb << 4);
+		} else if (ctx->ubwc->ubwc_enc_version >= UBWC_2_0) {
+			fast_clear = fmt->alpha_enable ? BIT(31) : 0;
+			ctrl_val = fast_clear | qcom_ubwc_swizzle(ctx->ubwc) | (hbb << 4);
+		} else if (ctx->ubwc->ubwc_enc_version >= UBWC_1_0) {
 			fast_clear = fmt->alpha_enable ? BIT(31) : 0;
 			ctrl_val = fast_clear |
 				(qcom_ubwc_swizzle(ctx->ubwc) & UBWC_SWIZZLE_ENABLE_LVL1) |
 				BIT(8) | (hbb << 4);
-		} else if (ctx->ubwc->ubwc_enc_version == UBWC_2_0) {
-			fast_clear = fmt->alpha_enable ? BIT(31) : 0;
-			ctrl_val = fast_clear | qcom_ubwc_swizzle(ctx->ubwc) | (hbb << 4);
-		} else if (ctx->ubwc->ubwc_enc_version == UBWC_3_0) {
-			ctrl_val = BIT(30) | qcom_ubwc_swizzle(ctx->ubwc) | (hbb << 4);
-		} else if (ctx->ubwc->ubwc_enc_version == UBWC_4_0) {
-			ctrl_val = MSM_FORMAT_IS_YUV(fmt) ? 0 : BIT(30);
-		} else if (ctx->ubwc->ubwc_enc_version <= UBWC_6_0) {
-			if (MSM_FORMAT_IS_YUV(fmt))
-				ctrl_val = 0;
-			else if (MSM_FORMAT_IS_DX(fmt)) /* or FP16, but it's unsupported */
-				ctrl_val = BIT(30);
-			else
-				ctrl_val = BIT(30) | BIT(31);
-			/* SDE also sets bits for lossy formats, but we don't support them yet */
 		} else {
 			DRM_WARN_ONCE("Unsupported UBWC version %x\n", ctx->ubwc->ubwc_enc_version);
-			ctrl_val = 0;
 		}
 
 		DPU_REG_WRITE(c, ubwc_ctrl_off, ctrl_val);

-- 
2.47.3


  parent reply	other threads:[~2026-05-20 14:52 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-20 14:51 [PATCH v5 00/28] soc/qcom/ubwc: rework UBWC configuration database Dmitry Baryshkov
2026-05-20 14:51 ` [PATCH v5 01/28] soc: qcom: ubwc: define UBWC 3.1 Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 02/28] soc: qcom: ubwc: define helper for MDSS and Adreno drivers Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 03/28] soc: qcom: ubwc: add helper controlling AMSBC enablement Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 04/28] drm/msm/adreno: Trust the SSoT UBWC config Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 05/28] drm/msm/adreno: use qcom_ubwc_version_tag() helper Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 06/28] drm/msm/mdss: " Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 07/28] drm/msm/adreno: use new helper to set min_acc length Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 08/28] drm/msm/mdss: " Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 09/28] drm/msm/adreno: use new helper to set macrotile_mode Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 10/28] drm/msm/mdss: " Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 11/28] drm/msm/mdss: use new helper to set UBWC bank spreading Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 12/28] drm/msm/adreno: use new helper to set ubwc_swizzle Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 13/28] drm/msm/dpu: " Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 14/28] drm/msm/mdss: " Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 15/28] drm/msm/adreno: write reserved UBWC-related bits Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 16/28] drm/msm/adreno: set fp16compoptdis for UBWC 3.0 formats Dmitry Baryshkov
2026-05-25 11:41   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 17/28] drm/msm/adreno: use new helper to set amsbc Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 18/28] drm/msm/adreno: use version ranges in A8xx UBWC code Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 19/28] drm/msm/mdss: use new helper to set amsbc Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 20/28] drm/msm/dpu: drop ubwc_dec_version Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` Dmitry Baryshkov [this message]
2026-05-25 11:42   ` Claude review: drm/msm/dpu: invert the order of UBWC checks Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 22/28] soc: qcom: ubwc: set min_acc length to 64 for all UBWC 1.0 targets Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 23/28] soc: qcom: ubwc: drop ubwc_dec_version Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 24/28] soc: qcom: ubwc: drop ubwc_bank_spread Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 25/28] soc: qcom: ubwc: drop macrotile_mode from the database Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 26/28] soc: qcom: ubwc: use fixed values for UBWC swizzle for UBWC < 4.0 Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 27/28] soc: qcom: ubwc: sort out the rest of the UBWC swizzle settings Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-20 14:51 ` [PATCH v5 28/28] soc: qcom: ubwc: deduplicate UBWC configuration data Dmitry Baryshkov
2026-05-25 11:42   ` Claude review: " Claude Code Review Bot
2026-05-25 11:41 ` Claude review: soc/qcom/ubwc: rework UBWC configuration database Claude Code Review Bot

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=20260520-ubwc-rework-v5-21-72f2749bc807@oss.qualcomm.com \
    --to=dmitry.baryshkov@oss.qualcomm.com \
    --cc=abhinav.kumar@linux.dev \
    --cc=airlied@gmail.com \
    --cc=akhilpo@oss.qualcomm.com \
    --cc=andersson@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=jesszhan0024@gmail.com \
    --cc=konrad.dybcio@oss.qualcomm.com \
    --cc=konradybcio@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lumag@kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=robin.clark@oss.qualcomm.com \
    --cc=sean@poorly.run \
    --cc=simona@ffwll.ch \
    /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