diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c index 51ccc6bd5f21..b93c86197b4a 100644 --- a/drivers/gpu/drm/i915/display/i9xx_plane.c +++ b/drivers/gpu/drm/i915/display/i9xx_plane.c @@ -819,7 +819,7 @@ unsigned int vlv_plane_min_alignment(struct intel_plane *plane, { struct intel_display *display = to_intel_display(plane); - if (intel_plane_can_async_flip(plane, fb->format->format, fb->modifier)) + if (intel_plane_can_async_flip(plane, fb->format, fb->modifier)) return 256 * 1024; /* FIXME undocumented so not sure what's actually needed */ @@ -843,7 +843,7 @@ static unsigned int g4x_primary_min_alignment(struct intel_plane *plane, { struct intel_display *display = to_intel_display(plane); - if (intel_plane_can_async_flip(plane, fb->format->format, fb->modifier)) + if (intel_plane_can_async_flip(plane, fb->format, fb->modifier)) return 256 * 1024; if (intel_scanout_needs_vtd_wa(display)) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 04f5c488f399..e5ce47efc809 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -6115,7 +6115,7 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct in if (!plane->async_flip) continue; - if (!intel_plane_can_async_flip(plane, new_plane_state->hw.fb->format->format, + if (!intel_plane_can_async_flip(plane, new_plane_state->hw.fb->format, new_plane_state->hw.fb->modifier)) { drm_dbg_kms(display->drm, "[PLANE:%d:%s] pixel format %p4cc / modifier 0x%llx does not support async flip\n", diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c index d1df4f1c0bc1..7b7619d59251 100644 --- a/drivers/gpu/drm/i915/display/intel_plane.c +++ b/drivers/gpu/drm/i915/display/intel_plane.c @@ -178,25 +178,29 @@ bool intel_plane_needs_physical(struct intel_plane *plane) DISPLAY_INFO(display)->cursor_needs_physical; } -bool intel_plane_can_async_flip(struct intel_plane *plane, u32 format, +bool intel_plane_can_async_flip(struct intel_plane *plane, + const struct drm_format_info *info, u64 modifier) { - if (intel_format_info_is_yuv_semiplanar(drm_format_info(format), modifier) || - format == DRM_FORMAT_C8) + if (intel_format_info_is_yuv_semiplanar(info, modifier) || + info->format == DRM_FORMAT_C8) return false; return plane->can_async_flip && plane->can_async_flip(modifier); } -bool intel_plane_format_mod_supported_async(struct drm_plane *plane, - u32 format, - u64 modifier) +bool intel_plane_format_mod_supported_async(struct drm_plane *_plane, + u32 format, u64 modifier) { - if (!plane->funcs->format_mod_supported(plane, format, modifier)) + struct intel_plane *plane = to_intel_plane(_plane); + const struct drm_format_info *info; + + if (!plane->base.funcs->format_mod_supported(&plane->base, format, modifier)) return false; - return intel_plane_can_async_flip(to_intel_plane(plane), - format, modifier); + info = drm_get_format_info(plane->base.dev, format, modifier); + + return intel_plane_can_async_flip(plane, info, modifier); } unsigned int intel_adjusted_rate(const struct drm_rect *src, diff --git a/drivers/gpu/drm/i915/display/intel_plane.h b/drivers/gpu/drm/i915/display/intel_plane.h index 4e99df9de3e8..5a8f2f3baab5 100644 --- a/drivers/gpu/drm/i915/display/intel_plane.h +++ b/drivers/gpu/drm/i915/display/intel_plane.h @@ -8,6 +8,7 @@ #include +struct drm_format_info; struct drm_plane; struct drm_property; struct drm_rect; @@ -21,7 +22,8 @@ enum plane_id; struct intel_plane * intel_crtc_get_plane(struct intel_crtc *crtc, enum plane_id plane_id); -bool intel_plane_can_async_flip(struct intel_plane *plane, u32 format, +bool intel_plane_can_async_flip(struct intel_plane *plane, + const struct drm_format_info *info, u64 modifier); unsigned int intel_adjusted_rate(const struct drm_rect *src, const struct drm_rect *dst, diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c index 89c8003ccfe7..921b2f73d27a 100644 --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c @@ -595,7 +595,7 @@ static u32 tgl_plane_min_alignment(struct intel_plane *plane, * Figure out what's going on here... */ if (display->platform.alderlake_p && - intel_plane_can_async_flip(plane, fb->format->format, fb->modifier)) + intel_plane_can_async_flip(plane, fb->format, fb->modifier)) return mult * 16 * 1024; switch (fb->modifier) {