On Thu, 2025-11-13 at 01:30 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <[email protected]> > > Since old kernel versions wouldn't expose the IN_FORMATS_ASYNC blob, > userspace can't really use the absence of the blob to determine > that async flips aren't supported. Thus it seems better to always > expose the blob on all planes, whether they support async flips > or not. The blob will simply not indicate any format+modifier > combinations as supported on planes that aren't async flip capable. > > Currently we expose the blob for all skl+ universal planes (even > though we implement async flips only for the first plane on each > pipe), and i9xx primary planes (for ilk+ we have async flips support, > for pre-ilk we do not). Complete the full set by also expsosing > the blob on pre-skl sprite planes, and cursors.
Reviewed-by: Jouni Högander <[email protected]> > > Signed-off-by: Ville Syrjälä <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_cursor.c | 1 + > drivers/gpu/drm/i915/display/intel_sprite.c | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c > b/drivers/gpu/drm/i915/display/intel_cursor.c > index a10b2425b94d..63e6a4767aa9 100644 > --- a/drivers/gpu/drm/i915/display/intel_cursor.c > +++ b/drivers/gpu/drm/i915/display/intel_cursor.c > @@ -974,6 +974,7 @@ static const struct drm_plane_funcs > intel_cursor_plane_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = intel_cursor_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static void intel_cursor_add_size_hints_property(struct intel_plane > *plane) > diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c > b/drivers/gpu/drm/i915/display/intel_sprite.c > index 69b6873a6044..9888a2a43fc5 100644 > --- a/drivers/gpu/drm/i915/display/intel_sprite.c > +++ b/drivers/gpu/drm/i915/display/intel_sprite.c > @@ -1567,6 +1567,7 @@ static const struct drm_plane_funcs > g4x_sprite_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = g4x_sprite_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static const struct drm_plane_funcs snb_sprite_funcs = { > @@ -1576,6 +1577,7 @@ static const struct drm_plane_funcs > snb_sprite_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = snb_sprite_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static const struct drm_plane_funcs vlv_sprite_funcs = { > @@ -1585,6 +1587,7 @@ static const struct drm_plane_funcs > vlv_sprite_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = vlv_sprite_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > struct intel_plane *
