[Intel-gfx] [PATCH 1/9] drm/i915: Reject planar formats when doing async flips
Lisovskiy, Stanislav
stanislav.lisovskiy at intel.com
Wed Oct 27 16:12:52 UTC 2021
On Mon, Oct 18, 2021 at 02:50:22PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Async flips are only capable of changing PLANE_SURF, hence we
> they can't easily be used with planar formats.
>
> Older platforms could require updating AUX_DIST as well, which
> is not possible. We'd have to make sure AUX_DIST doesn't change
> before allowing the async flip through. If we could get async
> flips with CCS then that might be interesting, but since the hw
> doesn't allow async flips with CCS I don't see much point in
> allowing this for planar formats either. No one renders their
> game content in YUV anyway.
>
> icl+ could in theory do this I suppose since each color plane
> has its own PLANE_SURF register, but I don't know if there is
> some magic to guarantee that both the Y and UV plane would
> async flip synchronously if you will. Ie. beyond just a clean
> tear we'd potentially get some kind of weird tear with some
> random mix of luma and chroma from the old and new frames.
>
> So let's just say no to async flips when scanning out planar
> formats.
>
> Cc: Karthik B S <karthik.b.s at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index ce5d6633029a..8bb87e839f4a 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -8884,6 +8884,12 @@ static int intel_atomic_check_async(struct intel_atomic_state *state)
> return -EINVAL;
> }
>
> + if (new_plane_state->hw.fb->format->num_planes > 1) {
> + drm_dbg_kms(&i915->drm,
> + "Planar formats not supported with async flips\n");
> + return -EINVAL;
> + }
> +
> if (old_plane_state->view.color_plane[0].stride !=
> new_plane_state->view.color_plane[0].stride) {
> drm_dbg_kms(&i915->drm, "Stride cannot be changed in async flip\n");
> --
> 2.32.0
>
More information about the Intel-gfx
mailing list