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. 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 * -- 2.49.1
