From: Ville Syrj?l? <ville.syrj...@linux.intel.com>

If the update_plane() operation succeeds, make a copy of the requested
src and crtc coordinates, so that the the plane may be reclipped if the
display mode changed later.

Signed-off-by: Ville Syrj?l? <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/drm_crtc.c |    8 ++++++++
 include/drm/drm_crtc.h     |    4 ++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index d981fe2..6dafb99 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -1793,6 +1793,14 @@ int drm_mode_setplane(struct drm_device *dev, void *data,
        if (!ret) {
                plane->crtc = crtc;
                plane->fb = fb;
+               plane->crtc_x = plane_req->crtc_x;
+               plane->crtc_y = plane_req->crtc_y;
+               plane->crtc_w = plane_req->crtc_w;
+               plane->crtc_h = plane_req->crtc_h;
+               plane->src_x = plane_req->src_x;
+               plane->src_y = plane_req->src_y;
+               plane->src_w = plane_req->src_w;
+               plane->src_h = plane_req->src_h;
        }

 out:
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 8a17cce..3261492 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -657,6 +657,10 @@ struct drm_plane {
        void *helper_private;

        struct drm_object_properties properties;
+
+       uint32_t src_x, src_y, src_w, src_h;
+       int32_t crtc_x, crtc_y;
+       uint32_t crtc_w, crtc_h;
 };

 /**
-- 
1.7.3.4

Reply via email to