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@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.lan@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)