From: Ville Syrjälä <[email protected]>

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.

Reviewed-by: Jouni Högander <[email protected]>
Signed-off-by: Ville Syrjälä <[email protected]>
---
 .../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 57e8e536ee1f..b06dc106305e 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2626,9 +2626,6 @@ static u8 skl_get_plane_caps(struct drm_i915_private 
*i915,
        if (HAS_4TILE(display))
                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(display) >= 12)
@@ -2657,6 +2654,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))
@@ -2748,8 +2746,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,
-- 
2.45.2

Reply via email to