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.lan@xxxxxxxxx> 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.lan@xxxxxxxxx> --- 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@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel