From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 376B8CAC585 for ; Sun, 7 Sep 2025 07:46:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EFE1610E18C; Sun, 7 Sep 2025 07:46:29 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="ZHph+jsn"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6028C10E037; Sun, 7 Sep 2025 07:46:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1757231188; x=1788767188; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WtVqd16yNYmK7L8lRhvTyXlGt4c9hzq1FiS0rs5MtqU=; b=ZHph+jsnGeo6bIqyAf98rwsoiCRd5O+MobaOyUF78gR8sTHaDDgtm01I F4j07sLpHmVzr9+fHZ/FUPuyW5AZSsWldF16Tfiu//92r511HMHD5CN55 ixZ6jkmfTqwJXDEGcjh+jIakEq7KJkzUliI7xZVH3T+fL7ufDJzbEXR1z trKCV2drS9dLFT5Va6Xq509uJnw33OQ46RbSFiMMfU/QxrcHtnRZ+MveM G//txenFtMtFrVHsQELzTEaBnwVHN43SlPWJI6SYQC0ruRpEXoqnCv60V GHcVwwTiTyt5FuQsyUWg75RyRuf3Wu57hh+iPIs2sgusFUUHSW88wWQNS Q==; X-CSE-ConnectionGUID: ih9MNWDETMW1vJWOvjQy5A== X-CSE-MsgGUID: YjWM/DQKQ1uhrzNJKxKOIg== X-IronPort-AV: E=McAfee;i="6800,10657,11545"; a="70220286" X-IronPort-AV: E=Sophos;i="6.18,246,1751266800"; d="scan'208";a="70220286" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Sep 2025 00:46:21 -0700 X-CSE-ConnectionGUID: R7LTLYh5TzaJan1KH+fZ4w== X-CSE-MsgGUID: 0OlvmsUBRbqmc4b2SDfKRw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.18,246,1751266800"; d="scan'208";a="176873968" Received: from srr4-3-linux-103-aknautiy.iind.intel.com ([10.223.34.160]) by fmviesa005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Sep 2025 00:46:19 -0700 From: Ankit Nautiyal To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org Cc: ville.syrjala@linux.intel.com, Ankit Nautiyal , Mitul Golani Subject: [PATCH 03/14] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Date: Sun, 7 Sep 2025 13:02:30 +0530 Message-ID: <20250907073241.19632-4-ankit.k.nautiyal@intel.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250907073241.19632-1-ankit.k.nautiyal@intel.com> References: <20250907073241.19632-1-ankit.k.nautiyal@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" Refactor dsc_prefill_latency and scaler_prefill_latency to take linetime as an explicit parameter instead of computing it internally. This avoids redundant calculations and simplifies scanline conversion logic in skl_is_vblank_too_short(). This change also facilitates future extraction of these helpers for use cases where latencies are computed for an optimized guardband, based on the highest resolution mode, rather than the current mode. Signed-off-by: Ankit Nautiyal Reviewed-by: Mitul Golani --- drivers/gpu/drm/i915/display/skl_watermark.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c index 51548447f4aa..49d424f5b305 100644 --- a/drivers/gpu/drm/i915/display/skl_watermark.c +++ b/drivers/gpu/drm/i915/display/skl_watermark.c @@ -2176,13 +2176,11 @@ cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state) } static int -dsc_prefill_latency(const struct intel_crtc_state *crtc_state) +dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime) { struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state; - int linetime = DIV_ROUND_UP(1000 * crtc_state->hw.adjusted_mode.htotal, - crtc_state->hw.adjusted_mode.clock); int num_scaler_users = hweight32(scaler_state->scaler_users); int chroma_downscaling_factor = crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1; @@ -2206,18 +2204,16 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state) dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state); - return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, dsc_prefill_latency); + return dsc_prefill_latency; } static int -scaler_prefill_latency(const struct intel_crtc_state *crtc_state) +scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime) { const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state; int num_scaler_users = hweight32(scaler_state->scaler_users); int scaler_prefill_latency = 0; - int linetime = DIV_ROUND_UP(1000 * crtc_state->hw.adjusted_mode.htotal, - crtc_state->hw.adjusted_mode.clock); if (!num_scaler_users) return scaler_prefill_latency; @@ -2238,7 +2234,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state) scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state); - return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, scaler_prefill_latency); + return scaler_prefill_latency; } static bool @@ -2247,11 +2243,13 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state, { const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; + int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal, + adjusted_mode->clock); return crtc_state->framestart_delay + intel_usecs_to_scanlines(adjusted_mode, latency) + - scaler_prefill_latency(crtc_state) + - dsc_prefill_latency(crtc_state) + + DIV_ROUND_UP(scaler_prefill_latency(crtc_state, linetime), linetime) + + DIV_ROUND_UP(dsc_prefill_latency(crtc_state, linetime), linetime) + wm0_lines > adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start; } -- 2.45.2