diff mbox series

[v1] drm/i915/display: implement wa_14022269668

Message ID 20250330180554.729353-1-vinod.govindapillai@intel.com (mailing list archive)
State New
Headers show
Series [v1] drm/i915/display: implement wa_14022269668 | expand

Commit Message

Govindapillai, Vinod March 30, 2025, 6:05 p.m. UTC
Woraround recommend programming the fbc_stride for bmg always.
Display driver handles the need to program the fbc stride using
the override stride. So ensure that we always get the override
stride in case of bmg

Bspec: 74212
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Saarinen, Jani March 31, 2025, 7:31 a.m. UTC | #1
Hi, 

> -----Original Message-----
> From: Govindapillai, Vinod <vinod.govindapillai@intel.com>
> Sent: Sunday, 30 March 2025 21.06
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Govindapillai, Vinod <vinod.govindapillai@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Saarinen, Jani <jani.saarinen@intel.com>
> Subject: [PATCH v1] drm/i915/display: implement wa_14022269668
> 
Typo on Workaround...

> Woraround recommend programming the fbc_stride for bmg always.
> Display driver handles the need to program the fbc stride using the override
> stride. So ensure that we always get the override stride in case of bmg
> 
> Bspec: 74212
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index e89cee323d8b..970f8c96cc85 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -252,9 +252,12 @@ static u16 intel_fbc_override_cfb_stride(const struct
> intel_plane_state *plane_s
>  	 * Gen9 hw miscalculates cfb stride for linear as
>  	 * PLANE_STRIDE*512 instead of PLANE_STRIDE*64, so
>  	 * we always need to use the override there.
> +	 *
> +	 * wa_14022269668 For bmg, always program the FBC_STRIDE before
> fbc
> +enable
>  	 */
>  	if (stride != stride_aligned ||
> -	    (DISPLAY_VER(display) == 9 && fb->modifier ==
> DRM_FORMAT_MOD_LINEAR))
> +	    (DISPLAY_VER(display) == 9 && fb->modifier ==
> DRM_FORMAT_MOD_LINEAR) ||
> +	    display->platform.battlemage)
>  		return stride_aligned * 4 / 64;
> 
>  	return 0;
> --
> 2.43.0
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index e89cee323d8b..970f8c96cc85 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -252,9 +252,12 @@  static u16 intel_fbc_override_cfb_stride(const struct intel_plane_state *plane_s
 	 * Gen9 hw miscalculates cfb stride for linear as
 	 * PLANE_STRIDE*512 instead of PLANE_STRIDE*64, so
 	 * we always need to use the override there.
+	 *
+	 * wa_14022269668 For bmg, always program the FBC_STRIDE before fbc enable
 	 */
 	if (stride != stride_aligned ||
-	    (DISPLAY_VER(display) == 9 && fb->modifier == DRM_FORMAT_MOD_LINEAR))
+	    (DISPLAY_VER(display) == 9 && fb->modifier == DRM_FORMAT_MOD_LINEAR) ||
+	    display->platform.battlemage)
 		return stride_aligned * 4 / 64;
 
 	return 0;