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 959ACCA0EE9 for ; Mon, 18 Aug 2025 07:45:43 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 58F3D10E3E7; Mon, 18 Aug 2025 07:45:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="L2QdxIyV"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id A140E10E3E4; Mon, 18 Aug 2025 07:45:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755503136; x=1787039136; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vFgnIsMKDUb7ZqMCX9M0K0b80cJDSaE4dDHEyqYMQ90=; b=L2QdxIyVrpVDrBSJa6i24ICOPb8NxUm/l1vW4lN2s2wQ5JfHWsi9BawQ WC3mRoZJxn/Y6V4/lPA0QM7wPBFK7BuQom+KKMAA8emMWhthOR/RJ337B oMKlCWSqk/okFh0gvvBpKiZnD33iPxz+0ku6xmoLmflF0HYJAN30G8HXW QZal4kG/bERdeNniW1wpK2MJEoFEeYGP9QmMHWRfOfGD23xYvGQ23AkX+ 56yHPjqSPaX5fhGH1yfaig6KqefAXmQfLO69XQJ02eOhOaNRZoA4M6TaE xU52zSJOThv4H8nwDrkD/2tdOWs9GCCx+rwEMiunUkXp7MJjKJaDzPLcd A==; X-CSE-ConnectionGUID: AxC0qIIPTV+B1B97jRSFbQ== X-CSE-MsgGUID: ohs8FZoTS0u6WRi4fSmzzg== X-IronPort-AV: E=McAfee;i="6800,10657,11524"; a="61347894" X-IronPort-AV: E=Sophos;i="6.17,293,1747724400"; d="scan'208";a="61347894" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Aug 2025 00:45:36 -0700 X-CSE-ConnectionGUID: 8I6xwykuTzyThn+4Bkn3Tw== X-CSE-MsgGUID: FLMDPZUMS9ORNysI9zH7LQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,293,1747724400"; d="scan'208";a="167121934" Received: from srr4-3-linux-103-aknautiy.iind.intel.com ([10.223.34.160]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Aug 2025 00:45:35 -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 02/12] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Date: Mon, 18 Aug 2025 13:01:18 +0530 Message-ID: <20250818073128.2319762-3-ankit.k.nautiyal@intel.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250818073128.2319762-1-ankit.k.nautiyal@intel.com> References: <20250818073128.2319762-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 df586509a742..74ab10a04e83 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