All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Subject: [Intel-gfx] [PATCH v3 3/4] drm/i915/fbc: Implement Wa_16011863758 for icl+
Date: Tue, 21 Sep 2021 21:12:45 +0300	[thread overview]
Message-ID: <20210921181245.15091-1-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20210921152517.803-4-ville.syrjala@linux.intel.com>

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

There's some kind of weird corner cases in FBC which requires
FBC segments to be separated by at least one extra cacheline.
Make sure that is present.

v2: Respin to fit in with skl_fbc_min_cfb_stride()
v3: Make it build

Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> #v1
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index ff05eb83e204..2df6a4e115a1 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -84,7 +84,8 @@ static unsigned int _intel_fbc_cfb_stride(const struct intel_fbc_state_cache *ca
 }
 
 /* minimum acceptable cfb stride in bytes, assuming 1:1 compression limit */
-static unsigned int skl_fbc_min_cfb_stride(const struct intel_fbc_state_cache *cache)
+static unsigned int skl_fbc_min_cfb_stride(struct drm_i915_private *i915,
+					   const struct intel_fbc_state_cache *cache)
 {
 	unsigned int limit = 4; /* 1:4 compression limit is the worst case */
 	unsigned int cpp = 4; /* FBC always 4 bytes per pixel */
@@ -94,6 +95,13 @@ static unsigned int skl_fbc_min_cfb_stride(const struct intel_fbc_state_cache *c
 	/* minimum segment stride we can use */
 	stride = cache->plane.src_w * cpp * height / limit;
 
+	/*
+	 * Wa_16011863758: icl+
+	 * Avoid some hardware segment address miscalculation.
+	 */
+	if (DISPLAY_VER(i915) >= 11)
+		stride += 64;
+
 	/*
 	 * At least some of the platforms require each 4 line segment to
 	 * be 512 byte aligned. Just do it always for simplicity.
@@ -116,7 +124,7 @@ static unsigned int intel_fbc_cfb_stride(struct drm_i915_private *i915,
 	 * that regardless of the compression limit we choose later.
 	 */
 	if (DISPLAY_VER(i915) >= 9)
-		return max(ALIGN(stride, 512), skl_fbc_min_cfb_stride(cache));
+		return max(ALIGN(stride, 512), skl_fbc_min_cfb_stride(i915, cache));
 	else
 		return stride;
 }
-- 
2.32.0


  reply	other threads:[~2021-09-21 18:12 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-21 15:25 [Intel-gfx] [PATCH v2 0/4] drm/i915/fbc: Rework CFB stride/size calculations Ville Syrjala
2021-09-21 15:25 ` [Intel-gfx] [PATCH v2 1/4] drm/i915/fbc: Rework cfb " Ville Syrjala
2021-09-22 18:26   ` Shankar, Uma
2021-09-23  4:21   ` [Intel-gfx] [PATCH v3 " Ville Syrjala
2021-09-21 15:25 ` [Intel-gfx] [PATCH v2 2/4] drm/i915/fbc: Align FBC segments to 512B on glk+ Ville Syrjala
2021-09-21 15:25 ` [Intel-gfx] [PATCH v2 3/4] drm/i915/fbc: Implement Wa_16011863758 for icl+ Ville Syrjala
2021-09-21 18:12   ` Ville Syrjala [this message]
2021-09-21 15:25 ` [Intel-gfx] [PATCH v2 4/4] drm/i915/fbc: Allow higher compression limits on FBC1 Ville Syrjala
2021-09-21 17:27 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/fbc: Rework CFB stride/size calculations (rev3) Patchwork
2021-09-21 21:04 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/fbc: Rework CFB stride/size calculations (rev4) Patchwork
2021-09-21 21:34 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2021-09-21 22:29 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/fbc: Rework CFB stride/size calculations (rev5) Patchwork
2021-09-21 22:58 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-09-22  0:56 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2021-09-22 19:03 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/fbc: Rework CFB stride/size calculations (rev6) Patchwork
2021-09-22 19:31 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-09-22 21:23 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2021-09-23  4:48 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/fbc: Rework CFB stride/size calculations (rev7) Patchwork
2021-09-23  5:15 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-09-23  7:46 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

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=20210921181245.15091-1-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=juhapekka.heikkila@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.