Hi Jesse,
I hope the function of snb_update_plane can handle crtx_x<0 or crtc_y<0 just 
like my patch.
What do you think about it? 
Thanks and best regards.

Hai Lan


>From 160c899739e7d07f273de889cc889316837d0790 Mon Sep 17 00:00:00 2001
From: Hai Lan <hai....@intel.com>
Date: Tue, 1 Nov 2011 21:30:08 -0400
Subject: [PATCH] drm/i915:add overlay support for crtc_x < 0 or crtc_y < 0

Signed-off-by: Hai Lan <hai....@intel.com>
---
 drivers/gpu/drm/i915/intel_overlay2.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_overlay2.c 
b/drivers/gpu/drm/i915/intel_overlay2.c
index ff9f0ea..7eba888 100644
--- a/drivers/gpu/drm/i915/intel_overlay2.c
+++ b/drivers/gpu/drm/i915/intel_overlay2.c
@@ -193,6 +193,22 @@ snb_update_plane(struct drm_plane *plane, struct drm_crtc 
*crtc,
                return -EINVAL;
 
        /* Clamp the width & height into the visible area */
+       if ((crtc_x < 0) && ((crtc_x + crtc_w)>0)) {
+               crtc_w += crtc_x;
+               crtc_x = 0;
+       }
+       if ((crtc_y < 0) && ((crtc_y + crtc_h)>0)) {
+               crtc_h += crtc_y;
+               crtc_y = 0;
+       }
+       if ((crtc_x +crtc_w) < 0) {
+               crtc_w = 0;
+               crtc_x = 0;
+       }
+       if ((crtc_y +crtc_h) < 0) {
+               crtc_h = 0;
+               crtc_y = 0;
+       }
        if (crtc_x + crtc_w > active_w)
                crtc_w = active_w - crtc_x - 1;
        if (crtc_y + crtc_h > active_h)
-- 
1.7.0.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to