diff mbox series

[8/9] drm/i915: Relocate xe AUX hack

Message ID 20241009182207.22900-9-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: Async flip + compression, and some plane cleanups | expand

Commit Message

Ville Syrjala Oct. 9, 2024, 6:22 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Move the xe AUX neutering out from skl_get_plane_caps() into the
caller so that it'll be easier to refactor skl_get_plane_caps()
into a more readable shape. This isn't really hardware specific
anyway, and just some kind of bug/misfeature of xe.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 .../gpu/drm/i915/display/skl_universal_plane.c    | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Comments

Hogander, Jouni Oct. 24, 2024, 10:52 a.m. UTC | #1
On Wed, 2024-10-09 at 21:22 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Move the xe AUX neutering out from skl_get_plane_caps() into the
> caller so that it'll be easier to refactor skl_get_plane_caps()
> into a more readable shape. This isn't really hardware specific
> anyway, and just some kind of bug/misfeature of xe.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  .../gpu/drm/i915/display/skl_universal_plane.c    | 15 ++++++++++---
> --
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index c85bb1fea92f..bcb48d8932d2 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -2598,9 +2598,6 @@ static u8 skl_get_plane_caps(struct
> drm_i915_private *i915,
>         if (HAS_4TILE(i915))
>                 caps |= INTEL_PLANE_CAP_TILING_4;
>  
> -       if (!IS_ENABLED(I915) && !HAS_FLAT_CCS(i915))
> -               return caps;
> -
>         if (skl_plane_has_rc_ccs(i915, pipe, plane_id)) {
>                 caps |= INTEL_PLANE_CAP_CCS_RC;
>                 if (DISPLAY_VER(i915) >= 12)
> @@ -2629,6 +2626,7 @@ skl_universal_plane_create(struct
> drm_i915_private *dev_priv,
>         const u32 *formats;
>         int num_formats;
>         int ret;
> +       u8 caps;
>  
>         plane = intel_plane_alloc();
>         if (IS_ERR(plane))
> @@ -2716,8 +2714,15 @@ skl_universal_plane_create(struct
> drm_i915_private *dev_priv,
>         else
>                 plane_type = DRM_PLANE_TYPE_OVERLAY;
>  
> -       modifiers = intel_fb_plane_get_modifiers(dev_priv,
> -                                               
> skl_get_plane_caps(dev_priv, pipe, plane_id));
> +       caps = skl_get_plane_caps(dev_priv, pipe, plane_id);
> +
> +       /* FIXME: xe has problems with AUX */
> +       if (!IS_ENABLED(I915) && !HAS_FLAT_CCS(dev_priv))
> +               caps &= ~(INTEL_PLANE_CAP_CCS_RC |
> +                         INTEL_PLANE_CAP_CCS_RC_CC |
> +                         INTEL_PLANE_CAP_CCS_MC);
> +
> +       modifiers = intel_fb_plane_get_modifiers(dev_priv, caps);
>  
>         ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
>                                        0, plane_funcs,
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index c85bb1fea92f..bcb48d8932d2 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2598,9 +2598,6 @@  static u8 skl_get_plane_caps(struct drm_i915_private *i915,
 	if (HAS_4TILE(i915))
 		caps |= INTEL_PLANE_CAP_TILING_4;
 
-	if (!IS_ENABLED(I915) && !HAS_FLAT_CCS(i915))
-		return caps;
-
 	if (skl_plane_has_rc_ccs(i915, pipe, plane_id)) {
 		caps |= INTEL_PLANE_CAP_CCS_RC;
 		if (DISPLAY_VER(i915) >= 12)
@@ -2629,6 +2626,7 @@  skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	const u32 *formats;
 	int num_formats;
 	int ret;
+	u8 caps;
 
 	plane = intel_plane_alloc();
 	if (IS_ERR(plane))
@@ -2716,8 +2714,15 @@  skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	else
 		plane_type = DRM_PLANE_TYPE_OVERLAY;
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv,
-						 skl_get_plane_caps(dev_priv, pipe, plane_id));
+	caps = skl_get_plane_caps(dev_priv, pipe, plane_id);
+
+	/* FIXME: xe has problems with AUX */
+	if (!IS_ENABLED(I915) && !HAS_FLAT_CCS(dev_priv))
+		caps &= ~(INTEL_PLANE_CAP_CCS_RC |
+			  INTEL_PLANE_CAP_CCS_RC_CC |
+			  INTEL_PLANE_CAP_CCS_MC);
+
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, caps);
 
 	ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
 				       0, plane_funcs,