Message ID | 20211018115030.3547-2-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Split plane updates to noarm+arm phases | expand |
On Mon, Oct 18, 2021 at 02:50:22PM +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@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@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@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 >
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");