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 <[email protected]>
---
 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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to