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 02407CA0FE7 for ; Mon, 25 Aug 2025 12:49:39 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B7AF810E45C; Mon, 25 Aug 2025 12:49:38 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="SLCV2yKW"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id CCB2510E45B; Mon, 25 Aug 2025 12:49:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1756126176; x=1787662176; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PlHbBS2t78JF6uCY1KmGQnjXoyHa76RjXLrBsHyx8ac=; b=SLCV2yKWhB6oyCShpTzv1EJvXd9OuXyA7/XJEtI1IljT4K4gncVpleCR yHSuj5S4rBqU0rGc6DhTq3kUBVCiQNf7uQkDj2vfhQP2AHPac8JPHEUtT vnLieBg7pOugPTgnNrmJpHvjFiSYevqMAcwQ51PnU7IOJPuazdMWEBUxz UzfgV/GLwOrb8YoASE670fMUHP3J2HWDjrVpmLDS3MNhE1MaGcxBvN5e6 2YmS+pIAHWmriK8GIKI9t6UGacJaz4oeJBm6KKnPn9sKAwgBWDMFHq3eA eOIj4XG2W/FbJqQNyYROMOLZLbenewyhBqQOfu4LSIjKO2f6Wd/IBV/UW w==; X-CSE-ConnectionGUID: 9f+s7rKaTyaUZGI9opNtpg== X-CSE-MsgGUID: o2aFCaARRrimbVkgtk71OQ== X-IronPort-AV: E=McAfee;i="6800,10657,11531"; a="62164115" X-IronPort-AV: E=Sophos;i="6.17,312,1747724400"; d="scan'208";a="62164115" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Aug 2025 05:49:36 -0700 X-CSE-ConnectionGUID: u8KCVXTBSpSdtx9moBCOGQ== X-CSE-MsgGUID: U3E/+oIHSNOEFybKYICPyQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.18,213,1751266800"; d="scan'208";a="200229906" Received: from srr4-3-linux-103-aknautiy.iind.intel.com ([10.223.34.160]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Aug 2025 05:49:34 -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, 25 Aug 2025 18:05:38 +0530 Message-ID: <20250825123548.3022474-3-ankit.k.nautiyal@intel.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250825123548.3022474-1-ankit.k.nautiyal@intel.com> References: <20250825123548.3022474-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 a803e028e1ba..e3c45a998e37 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