Support added only for async flips on primary plane. If flip is requested on any other plane, reject it. Signed-off-by: Karthik B S <karthik.b.s@xxxxxxxxx> --- drivers/gpu/drm/i915/display/intel_display.c | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 25fad5d01e67..a8de08c3773e 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -14732,6 +14732,31 @@ static bool intel_cpu_transcoders_need_modeset(struct intel_atomic_state *state, return false; } +static int intel_atomic_check_async(struct intel_atomic_state *state) +{ + struct drm_plane *plane; + struct drm_plane_state *plane_state; + struct intel_crtc_state *crtc_state; + struct intel_crtc *crtc; + int i, j; + + /*FIXME: Async flip is only supported for primary plane currently + * Support for overlays to be added. + */ + for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) { + if (crtc_state->uapi.async_flip) { + for_each_new_plane_in_state(&state->base, + plane, plane_state, j) { + if (plane->type != DRM_PLANE_TYPE_PRIMARY) { + DRM_ERROR("Async flips is NOT supported for non-primary plane\n"); + return -EINVAL; + } + } + } + } + return 0; +} + /** * intel_atomic_check - validate state object * @dev: drm device @@ -14760,6 +14785,10 @@ static int intel_atomic_check(struct drm_device *dev, if (ret) goto fail; + ret = intel_atomic_check_async(state); + if (ret) + goto fail; + for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { if (!needs_modeset(new_crtc_state)) { -- 2.22.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx