diff mbox series

drm/i915/display: Disable AuxCCS framebuffers if built for Xe

Message ID 20240226203651.818678-1-juhapekka.heikkila@gmail.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/display: Disable AuxCCS framebuffers if built for Xe | expand

Commit Message

Juha-Pekka Heikkila Feb. 26, 2024, 8:36 p.m. UTC
AuxCCS framebuffers don't work on Xe driver hence disable them
from plane capabilities until they are fixed. FlatCCS framebuffers
work and they are left enabled. CCS is left untouched for i915
driver.

Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/933
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
Let's try adding those ifdefs as IS_ENABLED(I915) will result in
warnings from checkpatch and there was wishes not to break
universal plane into smaller parts. IS_ENABLED(CONFIG_I915) is
always true when building both Xe and i915.

 .../gpu/drm/i915/display/skl_universal_plane.c  | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Jani Nikula Feb. 27, 2024, 8:57 a.m. UTC | #1
On Mon, 26 Feb 2024, Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> wrote:
> AuxCCS framebuffers don't work on Xe driver hence disable them
> from plane capabilities until they are fixed. FlatCCS framebuffers
> work and they are left enabled. CCS is left untouched for i915
> driver.
>
> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/933
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> Let's try adding those ifdefs as IS_ENABLED(I915) will result in
> warnings from checkpatch and there was wishes not to break
> universal plane into smaller parts. IS_ENABLED(CONFIG_I915) is
> always true when building both Xe and i915.

Please ignore the checkpatch warning in this case.

BR,
Jani.

>
>  .../gpu/drm/i915/display/skl_universal_plane.c  | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index e941e2e4fd14..7e0a7283d01d 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -2283,6 +2283,15 @@ static bool gen12_plane_has_mc_ccs(struct drm_i915_private *i915,
>  	return plane_id < PLANE_SPRITE4;
>  }
>  
> +static bool running_on_i915(void)
> +{
> +#ifdef I915
> +	return true;
> +#else
> +	return false;
> +#endif
> +}
> +
>  static u8 skl_get_plane_caps(struct drm_i915_private *i915,
>  			     enum pipe pipe, enum plane_id plane_id)
>  {
> @@ -2295,6 +2304,14 @@ static u8 skl_get_plane_caps(struct drm_i915_private *i915,
>  	if (HAS_4TILE(i915))
>  		caps |= INTEL_PLANE_CAP_TILING_4;
>  
> +	/*
> +	 * FIXME: Below if(running_on_i915()..) is because Xe driver
> +	 * can't use AuxCCS framebuffers. Once they are fixed this need to be
> +	 * removed.
> +	 */
> +	if (!running_on_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)
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 e941e2e4fd14..7e0a7283d01d 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2283,6 +2283,15 @@  static bool gen12_plane_has_mc_ccs(struct drm_i915_private *i915,
 	return plane_id < PLANE_SPRITE4;
 }
 
+static bool running_on_i915(void)
+{
+#ifdef I915
+	return true;
+#else
+	return false;
+#endif
+}
+
 static u8 skl_get_plane_caps(struct drm_i915_private *i915,
 			     enum pipe pipe, enum plane_id plane_id)
 {
@@ -2295,6 +2304,14 @@  static u8 skl_get_plane_caps(struct drm_i915_private *i915,
 	if (HAS_4TILE(i915))
 		caps |= INTEL_PLANE_CAP_TILING_4;
 
+	/*
+	 * FIXME: Below if(running_on_i915()..) is because Xe driver
+	 * can't use AuxCCS framebuffers. Once they are fixed this need to be
+	 * removed.
+	 */
+	if (!running_on_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)