Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp294451pxu; Wed, 25 Nov 2020 03:27:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJzS+tOjQFJ+gTlN7197NaqBQuk4HN3kdCjTDChn7EJXdO3GeYGLF6Krw+EgZE2yz9rvFANP X-Received: by 2002:aa7:da81:: with SMTP id q1mr3012399eds.14.1606303640801; Wed, 25 Nov 2020 03:27:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606303640; cv=none; d=google.com; s=arc-20160816; b=s1G+Fm3+fZHhthAa8ms+EYHWaog1mCgF82Epwwq4Oz9/v2U7aKMnh3KecXe+cSjYfU d2k0U6EUV0WVOKiz8IQqEHxuQSBbhf5WnG/FsoSQK6zEHEN5BNsFxPZ36sJbaEsK7H+d pz3dPlHa0WBHYg7WOR/WV3ZzrSFf6SJ6dUjHnqxwtinpUso5GEAqjuJFBsUqUuSPbMwt RO6t1kHQMpLvJxmndcnNScNY0MRRWJdrlKZKGdLR0vPmcd9qKMu4FjUIC9EpK7oCIjmd apyySi2WknwrWfKGEjX8TkDyG4mKV7V3YYbwfovb7OG3TRTqpwr8l3uvA9YwSKOc/o3Y ofBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=agmpj2HBmWrLN3MVuSVDvn8VNwMgC/NxRRqXNQElq+c=; b=dPA/Vw6clTR1VH/zvFODrqPUw4iVMOeDkVO3kztxFI3qtSmg5wTUd1yidM5x68cyqe YOmgRDujlKP+rXy3vkT4HBqBt6XPxNDhe+QXIhIXWnTg3H4IH4d1AJ8cpfe8QCn4ZCn7 j8U6N0bQ2+djPEtEcnWybs9jE9yAVL+opaDqIWAwkoC5Wkackkaf6SSg3AV1HEUc40oy cH6NUY6MjufPycvQJ8g+zh5SoLLkMrXSvGqJ2VsIF4kQCtVs4FimiQBKAdSTL2PlQSEK 5czlOsAq8WdyaSSm0slqyKgsBvmKkzbpwO//qlBazUYAW5df4w8/eLEvFOaIb4NUvPmN QX3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Xek41Xwp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o10si1089778ejg.80.2020.11.25.03.26.57; Wed, 25 Nov 2020 03:27:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Xek41Xwp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728947AbgKYLYv (ORCPT + 99 others); Wed, 25 Nov 2020 06:24:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726202AbgKYLYu (ORCPT ); Wed, 25 Nov 2020 06:24:50 -0500 Received: from mail-qk1-x742.google.com (mail-qk1-x742.google.com [IPv6:2607:f8b0:4864:20::742]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2A858C0613D6 for ; Wed, 25 Nov 2020 03:24:50 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id l2so3784285qkf.0 for ; Wed, 25 Nov 2020 03:24:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=agmpj2HBmWrLN3MVuSVDvn8VNwMgC/NxRRqXNQElq+c=; b=Xek41XwpQigUAOEeTJBGHWL790+lASvVIv15zxh3iAJ1zijkjfVfs9eVex27OfCuXA kJdW59wrQn1P9fA1QwhwcZG8R3hzDh9VApTT6RicMbfuwQCmYi2DVJmFpe27824jWafL Z+HcAq9jhCmUjGVHK+2nF2Y/jqCEFBtWVYC3vbbXALj0NjPLbNx1snXzCd9TOUOPyQPa TsvhSX5+VzpEoHmFpb834YUk/5gmOhFG8ZSqrIOfyJ2NHQ/nf0TtsQsaTxmrSe24nIZS OyTVn5zFIQ+IEXvHDeNaqtrmH18lXKQrB6Xafri4msJHpPoeH8lbmXm1OqF8yFBOBMB+ hrlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=agmpj2HBmWrLN3MVuSVDvn8VNwMgC/NxRRqXNQElq+c=; b=maE2Evx/NZsfsThghIE0ZL8ewz61U9ZJoMoJEkTOp2X9x59Ze4i+YGFgbGh9Sj9bAk hLY1FY/2DuMTjtoTdABKIxXA1IYKiQZFVpRAHY4NkaSnsk+/LygSzF3xmsRT7atGakDX cu4TnE0QR1mHmOQ1Tlhu6fNZxsQp8YaJliMFTlZd2ckkugVuSuiFgAOfC4ZqUYqJ7gdo bKX2PpYQ1Eq7h3v+ub2r0aA0GfUm28XL9aQKQrtZdMsBLrqCAWkGaIg+U6BGlFiEw343 BLxrTpptso9ZwImPnGSmoTZIO0bErdGSPdh8VolMw0W1Ma3A+zW4jNCAv9cm8NGz1MZo vG+w== X-Gm-Message-State: AOAM530cUyRD083f5jRhjwoPYxbDpSKOwexR+pmh/LTIBaoBFAP1ziAh LZBl6QCXxAOMAgitxH84igFioRi16zV/We4n/f9Zig== X-Received: by 2002:a25:7481:: with SMTP id p123mr3005268ybc.167.1606303489272; Wed, 25 Nov 2020 03:24:49 -0800 (PST) MIME-Version: 1.0 References: <1606298560-3003-1-git-send-email-kalyan_t@codeaurora.org> In-Reply-To: <1606298560-3003-1-git-send-email-kalyan_t@codeaurora.org> From: Amit Pundir Date: Wed, 25 Nov 2020 16:54:13 +0530 Message-ID: Subject: Re: [v1] drm/msm/dpu: consider vertical front porch in the prefill bw calculation To: Kalyan Thota Cc: y@qualcomm.com, dri-devel , linux-arm-msm , freedreno , dt , lkml , Rob Clark , Sean Paul , "Kristian H. Kristensen" , Doug Anderson , Krishna Manikandan , Raviteja Tamatam , nganji@codeaurora.org, Stephen Boyd , abhinavk@codeaurora.org, ddavenport@chromium.org, Sumit Semwal Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 25 Nov 2020 at 15:33, Kalyan Thota wrote: > > In case of panels with low vertical back porch, the prefill bw > requirement will be high as we will have less time(vbp+pw) to > fetch and fill the hw latency buffers before start of first line > in active period. > > For ex: > Say hw_latency_line_buffers = 24, and if blanking vbp+pw = 10 > Here we need to fetch 24 lines of data in 10 line times. > This will increase the bw to the ratio of linebuffers to blanking. > > DPU hw can also fetch data during vertical front porch provided > interface prefetch is enabled. Use vfp in the prefill calculation > as dpu driver enables prefetch if the blanking is not sufficient > to fill the latency lines. Tested on Xiaomi Poco F1 (sdm845). Tested-by: Amit Pundir > > Signed-off-by: Kalyan Thota > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > index 7ea90d2..315b999 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > @@ -151,7 +151,7 @@ static void _dpu_plane_calc_bw(struct drm_plane *plane, > u64 plane_bw; > u32 hw_latency_lines; > u64 scale_factor; > - int vbp, vpw; > + int vbp, vpw, vfp; > > pstate = to_dpu_plane_state(plane->state); > mode = &plane->state->crtc->mode; > @@ -164,6 +164,7 @@ static void _dpu_plane_calc_bw(struct drm_plane *plane, > fps = drm_mode_vrefresh(mode); > vbp = mode->vtotal - mode->vsync_end; > vpw = mode->vsync_end - mode->vsync_start; > + vfp = mode->vsync_start - mode->vdisplay; > hw_latency_lines = dpu_kms->catalog->perf.min_prefill_lines; > scale_factor = src_height > dst_height ? > mult_frac(src_height, 1, dst_height) : 1; > @@ -176,7 +177,13 @@ static void _dpu_plane_calc_bw(struct drm_plane *plane, > src_width * hw_latency_lines * fps * fmt->bpp * > scale_factor * mode->vtotal; > > - do_div(plane_prefill_bw, (vbp+vpw)); > + if ((vbp+vpw) > hw_latency_lines) > + do_div(plane_prefill_bw, (vbp+vpw)); > + else if ((vbp+vpw+vfp) < hw_latency_lines) > + do_div(plane_prefill_bw, (vbp+vpw+vfp)); > + else > + do_div(plane_prefill_bw, hw_latency_lines); > + > > pstate->plane_fetch_bw = max(plane_bw, plane_prefill_bw); > } > -- > 2.7.4 >