[Intel-gfx] [PATCH v5 11/11] drm/i915: Calling rotate and inverse rotate transformations after clipping
Sagar Arun Kamble
sagar.a.kamble at intel.com
Tue Feb 11 12:32:31 CET 2014
On Mon, 2014-02-10 at 15:32 +0200, Ville Syrjälä wrote:
> On Mon, Feb 10, 2014 at 01:01:18PM +0530, sagar.a.kamble at intel.com wrote:
> > From: Sagar Kamble <sagar.a.kamble at intel.com>
> >
> > With clipped sprites these transformations are not working. these
> > functions transform complete sprite irrespective of clipping present.
> > This leads to invisible portion of sprite show up when rotate 180 if
> > it was out of visible area before.
> >
> > v4: Moved rotate transform for source rectangle after clipping.
> > Added rotate and inverse rotate transform for destination rect.
>
> Still NAK.
>
> I just pushed rotation support to my glplane test app [1], and with
> with that my rotated clipping code works exactly as intended.
>
> [1] git://gitorious.org/vsyrjala/glplane.git
I tried this app. I think I am considering 180 degree rotation of
clipped sprite plane differently. I have captured output with these
rotate transforms moved before(clip-rotated) and after(rotate-clipped)
clipping code.
Which is valid? Rotating entire sprite and then clipping or Rotating
clipped portion?
Reference and Rotated output is attached FYI.
If rotating entire sprite is correct then this patch 11/11 is not needed
and can be abandoned.
thanks,
Sagar
> >
> > Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> > Cc: Jani Nikula <jani.nikula at linux.intel.com>
> > Cc: David Airlie <airlied at linux.ie>
> > Cc: dri-devel at lists.freedesktop.org
> > Cc: linux-kernel at vger.kernel.org
> > Cc: vijay.a.purushothaman at intel.com
> > Signed-off-by: Sagar Kamble <sagar.a.kamble at intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_sprite.c | 16 ++++++++++++----
> > 1 file changed, 12 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> > index 62b9f84..799f6a9 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -769,9 +769,6 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
> > max_scale = intel_plane->max_downscale << 16;
> > min_scale = intel_plane->can_scale ? 1 : (1 << 16);
> >
> > - drm_rect_rotate(&src, fb->width << 16, fb->height << 16,
> > - intel_plane->rotation);
> > -
> > hscale = drm_rect_calc_hscale_relaxed(&src, &dst, min_scale, max_scale);
> > BUG_ON(hscale < 0);
> >
> > @@ -785,6 +782,13 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
> > crtc_w = drm_rect_width(&dst);
> > crtc_h = drm_rect_height(&dst);
> >
> > + drm_rect_rotate(&src, fb->width << 16, fb->height << 16,
> > + intel_plane->rotation);
> > +
> > + drm_rect_rotate(&dst, intel_crtc->config.pipe_src_w,
> > + intel_crtc->config.pipe_src_h,
> > + intel_plane->rotation);
> > +
> > if (visible) {
> > /* check again in case clipping clamped the results */
> > hscale = drm_rect_calc_hscale(&src, &dst, min_scale, max_scale);
> > @@ -811,7 +815,11 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
> > drm_rect_height(&dst) * vscale - drm_rect_height(&src));
> >
> > drm_rect_rotate_inv(&src, fb->width << 16, fb->height << 16,
> > - intel_plane->rotation);
> > + intel_plane->rotation);
> > +
> > + drm_rect_rotate_inv(&dst, intel_crtc->config.pipe_src_w,
> > + intel_crtc->config.pipe_src_h,
> > + intel_plane->rotation);
> >
> > /* sanity check to make sure the src viewport wasn't enlarged */
> > WARN_ON(src.x1 < (int) src_x ||
> > --
> > 1.8.5
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 180-rotated-clip-rotated.png
Type: image/png
Size: 711457 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20140211/abe03bec/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 180-rotated-rotate-clipped.png
Type: image/png
Size: 828346 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20140211/abe03bec/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ref-clip-rotated.png
Type: image/png
Size: 830797 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20140211/abe03bec/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ref-rotate-clipped.png
Type: image/png
Size: 809112 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20140211/abe03bec/attachment-0003.png>
More information about the Intel-gfx
mailing list